Files
formipay/node_modules/expect-puppeteer/lib/matchers/toMatchElement.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

73 lines
2.3 KiB
JavaScript

"use strict";
exports.__esModule = true;
exports.default = void 0;
var _utils = require("../utils");
var _options = require("../options");
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
async function toMatchElement(instance, selector, _ref = {}) {
let {
text: searchExpr,
visible = false
} = _ref,
options = _objectWithoutPropertiesLoose(_ref, ["text", "visible"]);
options = (0, _options.defaultOptions)(options);
const {
page,
handle
} = await (0, _utils.getContext)(instance, () => document);
const {
text,
regexp
} = (0, _utils.expandSearchExpr)(searchExpr);
const getElement = (handle, selector, text, regexp, visible) => {
function hasVisibleBoundingBox(element) {
const rect = element.getBoundingClientRect();
return !!(rect.top || rect.bottom || rect.width || rect.height);
}
const isVisible = element => {
if (visible) {
const style = window.getComputedStyle(element);
return style && style.visibility !== 'hidden' && hasVisibleBoundingBox(element);
}
return true;
};
const elements = [...handle.querySelectorAll(selector)].filter(isVisible);
if (regexp !== null) {
const [, pattern, flags] = regexp.match(/\/(.*)\/(.*)?/);
return elements.find(({
textContent
}) => textContent.replace(/\s+/g, ' ').trim().match(new RegExp(pattern, flags)));
}
if (text !== null) {
return elements.find(({
textContent
}) => textContent.replace(/\s+/g, ' ').trim().includes(text));
}
return elements[0];
};
try {
await page.waitForFunction(getElement, options, handle, selector, text, regexp, visible);
} catch (error) {
throw (0, _utils.enhanceError)(error, `Element ${selector}${text !== null || regexp !== null ? ` (text: "${text || regexp}") ` : ' '}not found`);
}
const jsHandle = await page.evaluateHandle(getElement, handle, selector, text, regexp, visible);
return jsHandle.asElement();
}
var _default = toMatchElement;
exports.default = _default;