Files
formipay/node_modules/@svgr/babel-plugin-add-jsx-attribute/dist/index.js
dwindown e8fbfb14c1 fix: prevent asset conflicts between React and Grid.js versions
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>
2026-04-18 17:02:14 +07:00

80 lines
2.3 KiB
JavaScript

'use strict';
var core = require('@babel/core');
const positionMethod = {
start: "unshiftContainer",
end: "pushContainer"
};
const addJSXAttribute = (_, opts) => {
function getAttributeValue({
literal,
value
}) {
if (typeof value === "boolean") {
return core.types.jsxExpressionContainer(core.types.booleanLiteral(value));
}
if (typeof value === "number") {
return core.types.jsxExpressionContainer(core.types.numericLiteral(value));
}
if (typeof value === "string" && literal) {
return core.types.jsxExpressionContainer(
core.template.ast(value).expression
);
}
if (typeof value === "string") {
return core.types.stringLiteral(value);
}
return null;
}
function getAttribute({ spread, name, value, literal }) {
if (spread) {
return core.types.jsxSpreadAttribute(core.types.identifier(name));
}
return core.types.jsxAttribute(
core.types.jsxIdentifier(name),
getAttributeValue({ value, literal })
);
}
return {
visitor: {
JSXOpeningElement(path) {
if (!core.types.isJSXIdentifier(path.node.name))
return;
if (!opts.elements.includes(path.node.name.name))
return;
opts.attributes.forEach(
({
name,
value = null,
spread = false,
literal = false,
position = "end"
}) => {
const method = positionMethod[position];
const newAttribute = getAttribute({ spread, name, value, literal });
const attributes = path.get("attributes");
const isEqualAttribute = (attribute) => {
if (spread)
return attribute.isJSXSpreadAttribute() && attribute.get("argument").isIdentifier({ name });
return attribute.isJSXAttribute() && attribute.get("name").isJSXIdentifier({ name });
};
const replaced = attributes.some((attribute) => {
if (!isEqualAttribute(attribute))
return false;
attribute.replaceWith(newAttribute);
return true;
});
if (!replaced) {
path[method]("attributes", newAttribute);
}
}
);
}
}
};
};
module.exports = addJSXAttribute;
//# sourceMappingURL=index.js.map