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>
73 lines
3.1 KiB
TypeScript
73 lines
3.1 KiB
TypeScript
export type DOM = import('./dom.js').DOM;
|
|
export type DetailsRenderer = import('./details-renderer.js').DetailsRenderer;
|
|
export type CRCSegment = {
|
|
node: LH.Audit.Details.SimpleCriticalRequestNode[string];
|
|
isLastChild: boolean;
|
|
hasChildren: boolean;
|
|
startTime: number;
|
|
transferSize: number;
|
|
treeMarkers: boolean[];
|
|
};
|
|
/** @typedef {import('./dom.js').DOM} DOM */
|
|
/** @typedef {import('./details-renderer.js').DetailsRenderer} DetailsRenderer */
|
|
/**
|
|
* @typedef CRCSegment
|
|
* @property {LH.Audit.Details.SimpleCriticalRequestNode[string]} node
|
|
* @property {boolean} isLastChild
|
|
* @property {boolean} hasChildren
|
|
* @property {number} startTime
|
|
* @property {number} transferSize
|
|
* @property {boolean[]} treeMarkers
|
|
*/
|
|
export class CriticalRequestChainRenderer {
|
|
/**
|
|
* Create render context for critical-request-chain tree display.
|
|
* @param {LH.Audit.Details.SimpleCriticalRequestNode} tree
|
|
* @return {{tree: LH.Audit.Details.SimpleCriticalRequestNode, startTime: number, transferSize: number}}
|
|
*/
|
|
static initTree(tree: LH.Audit.Details.SimpleCriticalRequestNode): {
|
|
tree: LH.Audit.Details.SimpleCriticalRequestNode;
|
|
startTime: number;
|
|
transferSize: number;
|
|
};
|
|
/**
|
|
* Helper to create context for each critical-request-chain node based on its
|
|
* parent. Calculates if this node is the last child, whether it has any
|
|
* children itself and what the tree looks like all the way back up to the root,
|
|
* so the tree markers can be drawn correctly.
|
|
* @param {LH.Audit.Details.SimpleCriticalRequestNode} parent
|
|
* @param {string} id
|
|
* @param {number} startTime
|
|
* @param {number} transferSize
|
|
* @param {Array<boolean>=} treeMarkers
|
|
* @param {boolean=} parentIsLastChild
|
|
* @return {CRCSegment}
|
|
*/
|
|
static createSegment(parent: LH.Audit.Details.SimpleCriticalRequestNode, id: string, startTime: number, transferSize: number, treeMarkers?: Array<boolean> | undefined, parentIsLastChild?: boolean | undefined): CRCSegment;
|
|
/**
|
|
* Creates the DOM for a tree segment.
|
|
* @param {DOM} dom
|
|
* @param {CRCSegment} segment
|
|
* @param {DetailsRenderer} detailsRenderer
|
|
* @return {Node}
|
|
*/
|
|
static createChainNode(dom: DOM, segment: CRCSegment, detailsRenderer: DetailsRenderer): Node;
|
|
/**
|
|
* Recursively builds a tree from segments.
|
|
* @param {DOM} dom
|
|
* @param {DocumentFragment} tmpl
|
|
* @param {CRCSegment} segment
|
|
* @param {Element} elem Parent element.
|
|
* @param {LH.Audit.Details.CriticalRequestChain} details
|
|
* @param {DetailsRenderer} detailsRenderer
|
|
*/
|
|
static buildTree(dom: DOM, tmpl: DocumentFragment, segment: CRCSegment, elem: Element, details: LH.Audit.Details.CriticalRequestChain, detailsRenderer: DetailsRenderer): void;
|
|
/**
|
|
* @param {DOM} dom
|
|
* @param {LH.Audit.Details.CriticalRequestChain} details
|
|
* @param {DetailsRenderer} detailsRenderer
|
|
* @return {Element}
|
|
*/
|
|
static render(dom: DOM, details: LH.Audit.Details.CriticalRequestChain, detailsRenderer: DetailsRenderer): Element;
|
|
}
|
|
//# sourceMappingURL=crc-details-renderer.d.ts.map
|