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>
123 lines
3.5 KiB
JavaScript
123 lines
3.5 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.createHighlighterText = createHighlighterText;
|
|
var _memize = _interopRequireDefault(require("memize"));
|
|
var _highlightWordsCore = require("highlight-words-core");
|
|
var _element = require("@wordpress/element");
|
|
/**
|
|
* External dependencies
|
|
*/
|
|
|
|
/**
|
|
* WordPress dependencies
|
|
*/
|
|
|
|
/**
|
|
* Maps props to lowercase names.
|
|
*
|
|
* @param object Props to map.
|
|
* @return The mapped props.
|
|
*/
|
|
const lowercaseProps = object => {
|
|
const mapped = {};
|
|
for (const key in object) {
|
|
mapped[key.toLowerCase()] = object[key];
|
|
}
|
|
return mapped;
|
|
};
|
|
const memoizedLowercaseProps = (0, _memize.default)(lowercaseProps);
|
|
|
|
/**
|
|
* @param options
|
|
* @param options.activeClassName
|
|
* @param options.activeIndex
|
|
* @param options.activeStyle
|
|
* @param options.autoEscape
|
|
* @param options.caseSensitive
|
|
* @param options.children
|
|
* @param options.findChunks
|
|
* @param options.highlightClassName
|
|
* @param options.highlightStyle
|
|
* @param options.highlightTag
|
|
* @param options.sanitize
|
|
* @param options.searchWords
|
|
* @param options.unhighlightClassName
|
|
* @param options.unhighlightStyle
|
|
*/
|
|
function createHighlighterText({
|
|
activeClassName = '',
|
|
activeIndex = -1,
|
|
activeStyle,
|
|
autoEscape,
|
|
caseSensitive = false,
|
|
children,
|
|
findChunks,
|
|
highlightClassName = '',
|
|
highlightStyle = {},
|
|
highlightTag = 'mark',
|
|
sanitize,
|
|
searchWords = [],
|
|
unhighlightClassName = '',
|
|
unhighlightStyle
|
|
}) {
|
|
if (!children) return null;
|
|
if (typeof children !== 'string') return children;
|
|
const textToHighlight = children;
|
|
const chunks = (0, _highlightWordsCore.findAll)({
|
|
autoEscape,
|
|
caseSensitive,
|
|
findChunks,
|
|
sanitize,
|
|
searchWords,
|
|
textToHighlight
|
|
});
|
|
const HighlightTag = highlightTag;
|
|
let highlightIndex = -1;
|
|
let highlightClassNames = '';
|
|
let highlightStyles;
|
|
const textContent = chunks.map((chunk, index) => {
|
|
const text = textToHighlight.substr(chunk.start, chunk.end - chunk.start);
|
|
if (chunk.highlight) {
|
|
highlightIndex++;
|
|
let highlightClass;
|
|
if (typeof highlightClassName === 'object') {
|
|
if (!caseSensitive) {
|
|
highlightClassName = memoizedLowercaseProps(highlightClassName);
|
|
highlightClass = highlightClassName[text.toLowerCase()];
|
|
} else {
|
|
highlightClass = highlightClassName[text];
|
|
}
|
|
} else {
|
|
highlightClass = highlightClassName;
|
|
}
|
|
const isActive = highlightIndex === +activeIndex;
|
|
highlightClassNames = `${highlightClass} ${isActive ? activeClassName : ''}`;
|
|
highlightStyles = isActive === true && activeStyle !== null ? Object.assign({}, highlightStyle, activeStyle) : highlightStyle;
|
|
const props = {
|
|
children: text,
|
|
className: highlightClassNames,
|
|
key: index,
|
|
style: highlightStyles
|
|
};
|
|
|
|
// Don't attach arbitrary props to DOM elements; this triggers React DEV warnings (https://fb.me/react-unknown-prop)
|
|
// Only pass through the highlightIndex attribute for custom components.
|
|
if (typeof HighlightTag !== 'string') {
|
|
props.highlightIndex = highlightIndex;
|
|
}
|
|
return (0, _element.createElement)(HighlightTag, props);
|
|
}
|
|
return (0, _element.createElement)('span', {
|
|
children: text,
|
|
className: unhighlightClassName,
|
|
key: index,
|
|
style: unhighlightStyle
|
|
});
|
|
});
|
|
return textContent;
|
|
}
|
|
//# sourceMappingURL=utils.js.map
|