Add coexistence checks to all enqueue methods to prevent loading both React and Grid.js assets simultaneously. Changes: - ReactAdmin.php: Only enqueue React assets when ?react=1 - Init.php: Skip Grid.js when React active on admin pages - Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0 - Customer.php, Product.php, License.php: Add coexistence checks Now the toggle between Classic and React versions works correctly. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.buildTermsTree = buildTermsTree;
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
|
|
const ensureParentsAreDefined = terms => {
|
|
return terms.every(term => term.parent !== null);
|
|
};
|
|
/**
|
|
* Returns terms in a tree form.
|
|
*
|
|
* @param flatTerms Array of terms in flat format.
|
|
*
|
|
* @return Terms in tree format.
|
|
*/
|
|
function buildTermsTree(flatTerms) {
|
|
const flatTermsWithParentAndChildren = flatTerms.map(term => ({
|
|
children: [],
|
|
parent: null,
|
|
...term,
|
|
id: String(term.id)
|
|
}));
|
|
|
|
// We use a custom type guard here to ensure that the parent property is
|
|
// defined on all terms. The type of the `parent` property is `number | null`
|
|
// and we need to ensure that it is `number`. This is because we use the
|
|
// `parent` property as a key in the `termsByParent` object.
|
|
if (!ensureParentsAreDefined(flatTermsWithParentAndChildren)) {
|
|
return flatTermsWithParentAndChildren;
|
|
}
|
|
const termsByParent = flatTermsWithParentAndChildren.reduce((acc, term) => {
|
|
const {
|
|
parent
|
|
} = term;
|
|
if (!acc[parent]) {
|
|
acc[parent] = [];
|
|
}
|
|
acc[parent].push(term);
|
|
return acc;
|
|
}, {});
|
|
const fillWithChildren = terms => {
|
|
return terms.map(term => {
|
|
const children = termsByParent[term.id];
|
|
return {
|
|
...term,
|
|
children: children && children.length ? fillWithChildren(children) : []
|
|
};
|
|
});
|
|
};
|
|
return fillWithChildren(termsByParent['0'] || []);
|
|
}
|
|
//# sourceMappingURL=terms.js.map
|