@combos-fun/plugin-a11y 0.0.54 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/plugin-a11y.cjs.js
CHANGED
|
@@ -283,7 +283,7 @@ let A11ySystem$1 = class A11ySystem extends engine.System {
|
|
|
283
283
|
changed.componentName === 'A11y' && this.add(changed);
|
|
284
284
|
break;
|
|
285
285
|
case engine.OBSERVER_TYPE.CHANGE:
|
|
286
|
-
changed.componentName === '
|
|
286
|
+
changed.componentName === 'GameObject' && this.transformChange(changed);
|
|
287
287
|
changed.componentName === 'A11y' && this.change(changed);
|
|
288
288
|
break;
|
|
289
289
|
case engine.OBSERVER_TYPE.REMOVE:
|
|
@@ -297,7 +297,8 @@ let A11ySystem$1 = class A11ySystem extends engine.System {
|
|
|
297
297
|
if (changed.prop.prop[0] === 'hint') {
|
|
298
298
|
const dom = this.cache.get(component.a11yId);
|
|
299
299
|
dom?.setAttribute('aria-label', component.hint);
|
|
300
|
-
|
|
300
|
+
const pose = changed.gameObject.getComponent(pluginRenderer.Transform2D);
|
|
301
|
+
pose && this.setPosition(dom, pose);
|
|
301
302
|
}
|
|
302
303
|
}
|
|
303
304
|
remove(changed) {
|
|
@@ -322,7 +323,7 @@ let A11ySystem$1 = class A11ySystem extends engine.System {
|
|
|
322
323
|
let { event } = component;
|
|
323
324
|
if (!gameObject)
|
|
324
325
|
return;
|
|
325
|
-
const
|
|
326
|
+
const transform = gameObject.getComponent(pluginRenderer.Transform2D);
|
|
326
327
|
if (!transform)
|
|
327
328
|
return;
|
|
328
329
|
const element = document.createElement('div');
|
|
@@ -343,13 +344,12 @@ let A11ySystem$1 = class A11ySystem extends engine.System {
|
|
|
343
344
|
}
|
|
344
345
|
// React to scene changes.
|
|
345
346
|
transformChange(changed) {
|
|
346
|
-
const component = changed.component;
|
|
347
347
|
const { gameObject } = changed;
|
|
348
348
|
const a11yComponent = gameObject.getComponent(A11y);
|
|
349
349
|
if (!a11yComponent)
|
|
350
350
|
return;
|
|
351
351
|
const { a11yId } = a11yComponent;
|
|
352
|
-
if (!
|
|
352
|
+
if (!gameObject.inScene) {
|
|
353
353
|
// GameObject removed from the scene.
|
|
354
354
|
const dom = this.div.querySelector(`#${a11yId}`);
|
|
355
355
|
dom && this.div.removeChild(dom);
|
|
@@ -466,7 +466,7 @@ let A11ySystem$1 = class A11ySystem extends engine.System {
|
|
|
466
466
|
A11ySystem$1 = tslib.__decorate([
|
|
467
467
|
engine.decorators.componentObserver({
|
|
468
468
|
A11y: ['hint'],
|
|
469
|
-
|
|
469
|
+
GameObject: ['inScene'],
|
|
470
470
|
Event: [],
|
|
471
471
|
})
|
|
472
472
|
], A11ySystem$1);
|
|
@@ -475,7 +475,7 @@ var A11ySystem = A11ySystem$1;
|
|
|
475
475
|
/** Auto-generated by scripts/build-package.mjs — do not edit. */
|
|
476
476
|
Object.assign(A11ySystem, {
|
|
477
477
|
packageName: "@combos-fun/plugin-a11y",
|
|
478
|
-
packageVersion: "0.0
|
|
478
|
+
packageVersion: "0.2.0",
|
|
479
479
|
});
|
|
480
480
|
|
|
481
481
|
exports.A11y = A11y;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-a11y.cjs.js","sources":["../lib/utils.ts","../lib/A11y.ts","../lib/constant.ts","../lib/A11ySystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { A11yMaskStyle } from './constant';\n\n/**\n * Generate a unique identifier.\n * @param len length\n */\nfunction uuid(len: number) {\n let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n let uuid = [];\n let radix = chars.length;\n for (let i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)];\n return uuid.join('');\n}\n\n/**\n * Apply styles to a DOM element.\n * @param element the DOM element to style\n * @param style style properties\n */\nconst setStyle = (element: HTMLElement, style: A11yMaskStyle) => {\n const { width, height, position, left = 0, top = 0, zIndex, pointerEvents, background } = style;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n element.style.position = position;\n element.style.left = `${left}`;\n element.style.top = `${top}`;\n element.style.zIndex = `${zIndex}`;\n element.style.pointerEvents = pointerEvents;\n element.style.background = background;\n element.style.border = 'none';\n element.style.overflow = 'hidden';\n};\n\nconst setTransform = (element: HTMLElement, transform, ratioX, ratioY) => {\n const { worldTransform } = transform;\n const { a, b, c, d, tx, ty } = worldTransform;\n const matrix = `matrix(${a}, ${b}, ${c}, ${d}, ${tx * ratioX}, ${ty * ratioY})`;\n element.style.transform = `${matrix}`;\n element.style.webkitTransform = `${matrix}`;\n element.style.transformOrigin = 'left top';\n element.style.webkitTransformOrigin = 'left top';\n};\n\nexport { setStyle, setTransform, uuid };\n","import {Component} from '@combos-fun/engine';\nimport {type, step} from '@combos-fun/inspector-decorator';\nimport {uuid} from './utils';\n\nexport interface A11yParams {\n hint: string;\n event?: Component;\n delay?: number;\n role?: string;\n props?: object;\n state?: object;\n attr?: object;\n a11yId?: string;\n [propName: string]: string | object | number;\n}\n\nexport default class A11y extends Component<A11yParams> {\n static componentName: string = 'A11y';\n\n /**\n * Whether the element is interactive.\n */\n @type('boolean') interactive: boolean;\n /**\n * Text read aloud for the accessibility label.\n */\n @type('string') hint: string;\n /**\n * Deprecated: added automatically based on the Event component.\n * The event object.\n */\n event: Component;\n /**\n * Delayed load time (milliseconds).\n */\n @type('number') @step(1) delay: number;\n\n /**\n * The `role` attribute.\n */\n @type('string') role: string;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria-*` value attributes.\n * @example\n * aria-valuemin = \"0\"\n */\n props: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria` state attributes.\n * @example\n * aria-hidden = \"true\"\n */\n state: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * Custom attributes.\n */\n attr: object;\n\n /**\n * Auto-generated id for the helper DOM.\n */\n @type('string') a11yId: string;\n\n /**\n * Accessibility component constructor.\n * @param param `interactive` defaults to false; pass true if the GameObject is interactive.\n * @example\n * // Provide read-aloud support for a GameObject\n * new A11y({hint: 'This is a div'})\n * // The GameObject has an event; pass the event object\n * new A11y({hint: 'Click event object', event: event})\n * // Accessibility attributes\n * new A11y({hint:'Button', role: 'button', state: {aria-hidden=\"true\"}})\n * // Custom attributes\n * new A11y({hint: 'Custom attribute', attr: {key: '1'}})\n */\n constructor(param: A11yParams) {\n super();\n Object.assign(this, param);\n const { hint = '', event, delay = 0, attr = {}, role = '', props = {}, state = {} } = param;\n this.hint = hint;\n this.event = event;\n this.delay = delay;\n this.attr = attr;\n this.role = role;\n this.props = props;\n this.state = state;\n this.a11yId = `_${uuid(6)}`;\n }\n}\n","export const POSITION = 'absolute';\nexport const ZINDEX = 3;\n\nexport enum A11yActivate {\n ENABLE = 0,\n DISABLE = 1,\n CHECK = 2,\n}\n\n/**\n * Pointer events for the accessibility DOM.\n */\nexport enum PointerEvents {\n NONE = 'none', // The element is not a mouse-event target; events pass through.\n AUTO = 'auto', // Default behavior.\n}\n\n/**\n * Style of the accessibility DOM layer.\n */\nexport enum MaskBackground {\n DEBUG = 'rgba(255,0,0,0.5)',\n NONE = 'transparent',\n}\n\n/**\n * Type of the accessibility DOM element.\n */\nexport enum ElementType {\n BUTTON = 'button',\n DIV = 'div',\n}\n\n/**\n * Style of the accessibility mask layer.\n */\nexport interface A11yMaskStyle {\n width: number;\n height: number;\n background: string;\n position: string;\n left?: string;\n top?: string;\n zIndex: number;\n pointerEvents: PointerEvents;\n}\n\n/**\n * Click event position.\n */\nexport interface EventPosition {\n x: number;\n y: number;\n}\n","import { System, decorators, ComponentChanged, Transform, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { GameObject } from '@combos-fun/engine';\nimport { RendererSystem } from '@combos-fun/plugin-renderer';\nimport EE from 'eventemitter3';\n\nimport A11y from './A11y';\nimport { setStyle, setTransform } from './utils';\nimport {\n POSITION,\n ZINDEX,\n PointerEvents,\n MaskBackground,\n EventPosition,\n A11yMaskStyle,\n A11yActivate,\n} from './constant';\n\ninterface SystemParam {\n debug?: boolean;\n activate?: A11yActivate;\n delay?: number;\n zIndex?: number;\n checkA11yOpen?: () => Promise<boolean>;\n}\n\nconst notAttr = ['hint', 'event', 'delay', 'attr', 'role', 'props', 'state', 'a11yId', 'name'];\n\nconst getEventFunc = function (event: EE, gameObject: GameObject, e: MouseEvent) {\n ['touchstart', 'touchend', 'tap'].forEach(name => {\n event.emit(name, {\n stopPropagation: () => e.stopPropagation(),\n data: {\n position: this.eventPosition,\n },\n gameObject,\n });\n });\n};\n\n@decorators.componentObserver({\n A11y: ['hint'],\n Transform: ['inScene'],\n Event: [],\n})\nexport default class A11ySystem extends System {\n static systemName = 'A11ySystem';\n\n /**\n * Accessibility overlay layer.\n */\n div: HTMLDivElement;\n /**\n * Whether debug mode is enabled.\n */\n debug: boolean;\n /**\n * Horizontal scale ratio.\n */\n _ratioX: number;\n /**\n * Vertical scale ratio.\n */\n _ratioY: number;\n /**\n * Event coordinates.\n */\n eventPosition: EventPosition;\n /**\n * Whether accessibility is enabled.\n */\n activate: boolean;\n /**\n * Delay before placing the DOM.\n */\n delay: number;\n cache: Map<string, HTMLElement> = new Map();\n eventCache: Map<string, (e: MouseEvent) => void> = new Map();\n /**\n * The DOM `zIndex`.\n */\n zIndex: number = ZINDEX;\n\n /**\n * Accessibility plugin initializer.\n * @param opt accessibility plugin options\n * @param opt.activate whether to enable accessibility; defaults to AUTO based on the\n * system's screen-reader capability. One of AUTO | ENABLE | DISABLE.\n * @example\n * // Enable debug: accessibility regions show a red translucent background\n * new A11ySystem({debug: true})\n * // Disable accessibility\n * new A11ySystem({activate: A11yActivate.DISABLE})\n */\n constructor(opt?: SystemParam) {\n super(opt);\n }\n\n get ratioX() {\n if (this._ratioX) {\n return this._ratioX;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioX;\n } else {\n return 0;\n }\n }\n }\n get ratioY() {\n if (this._ratioY) {\n return this._ratioY;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioY;\n } else {\n return 0;\n }\n }\n }\n\n async init(opt: SystemParam = {}) {\n const { activate = A11yActivate.CHECK, delay = 100, checkA11yOpen = () => Promise.resolve(false), zIndex } = opt;\n this.delay = delay;\n this.zIndex = zIndex || this.zIndex\n switch (activate) {\n case A11yActivate.CHECK:\n try {\n this.activate = await checkA11yOpen();\n } catch (error) {\n this.activate = false;\n }\n break;\n case A11yActivate.DISABLE:\n this.activate = false;\n break;\n case A11yActivate.ENABLE:\n this.activate = true;\n break;\n }\n this.debug = opt.debug || false;\n if (this.debug) {\n this.activate = true;\n }\n\n if (!this.activate) return;\n // Render the parent container.\n const div = document.createElement('div');\n this.div = div;\n // If a parent node exists, mount this div so children position relative to it;\n // otherwise children position relative to the body.\n if (this.game.canvas.parentNode) {\n this.game.canvas.parentNode.insertBefore(this.div, this.game.canvas);\n }\n }\n setRatio() {\n const { width, height } = this.getCanvasBoundingClientRect();\n const { renderWidth, renderHeight } = this.getRenderRect();\n this._ratioX = width / renderWidth;\n this._ratioY = height / renderHeight;\n if (width || height) {\n this.initDiv();\n return true;\n } else {\n return false;\n }\n }\n getRenderRect() {\n const { params = { width: 300, height: 300 } } = this.game.getSystem(RendererSystem);\n const { height: renderHeight, width: renderWidth } = params;\n return { renderWidth, renderHeight };\n }\n getCanvasBoundingClientRect() {\n // Actual pixel width/height and position of the render canvas relative to the viewport.\n const { width, height, left, top } = this.game.canvas.getBoundingClientRect();\n return { width, height, left, top };\n }\n initDiv() {\n const { pageXOffset, pageYOffset } = window;\n\n const { width, height, left, top } = this.getCanvasBoundingClientRect();\n // Parent container position.\n const style: A11yMaskStyle = {\n width,\n height,\n left: `${left + pageXOffset}px`,\n top: `${top + pageYOffset}px`,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.NONE,\n background: MaskBackground.NONE,\n };\n setStyle(this.div, style);\n // Attach a capture-phase listener on the parent container to track event coordinates.\n this.div.addEventListener(\n 'click',\n e => {\n const currentTarget = e.currentTarget as HTMLDivElement;\n const { left, top } = currentTarget.getBoundingClientRect();\n const x = (e.pageX - left) / this.ratioX;\n const y = (e.pageY - top) / this.ratioY;\n this.eventPosition = { x, y };\n },\n true,\n );\n }\n\n /**\n * Handle plugin updates.\n */\n async update() {\n const changes = this.componentObserver.clear();\n if (!this.activate) {\n return;\n }\n for (const changed of changes) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n changed.componentName === 'Event' && this.addEvent(changed.gameObject);\n changed.componentName === 'A11y' && this.add(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n changed.componentName === 'Transform' && this.transformChange(changed);\n changed.componentName === 'A11y' && this.change(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n changed.componentName === 'Event' && this.removeEvent(changed);\n changed.componentName === 'A11y' && this.remove(changed);\n }\n }\n }\n\n change(changed: ComponentChanged) {\n const component = changed.component as A11y\n if (changed.prop.prop[0] === 'hint') {\n const dom = this.cache.get(component.a11yId)\n dom?.setAttribute('aria-label', component.hint)\n dom && this.setPosition(dom, changed.gameObject.transform)\n }\n }\n\n remove(changed: ComponentChanged) {\n const component = changed.component as A11y;\n if (!component) return;\n const { a11yId } = component;\n const element = this.div.querySelector(`#${a11yId}`);\n element && this.div.removeChild(element);\n this.cache.delete(a11yId);\n }\n\n /**\n * Handle a component being added to a GameObject.\n * @param changed the changed component\n */\n add(changed: ComponentChanged) {\n if (!this.activate) return;\n const component = changed.component as A11y;\n const { gameObject } = changed;\n const { delay, a11yId: id } = component;\n let { event } = component;\n if (!gameObject) return;\n const { transform } = gameObject;\n if (!transform) return;\n const element = document.createElement('div');\n this.cache.set(id, element);\n if (!event) {\n event = gameObject.getComponent('Event');\n }\n setTimeout(() => {\n this.setPosition(element, transform);\n this.setA11yAttr(element, component);\n if (event) {\n this.addEvent(gameObject);\n }\n if (gameObject.scene) {\n this.div.appendChild(element);\n }\n }, delay || this.delay);\n }\n\n // React to scene changes.\n transformChange(changed: ComponentChanged) {\n const component = changed.component as Transform;\n const { gameObject } = changed;\n const a11yComponent = gameObject.getComponent(A11y) as A11y;\n if (!a11yComponent) return;\n const { a11yId } = a11yComponent;\n if (!component.inScene) {\n // GameObject removed from the scene.\n const dom = this.div.querySelector(`#${a11yId}`);\n dom && this.div.removeChild(dom);\n // this.cache.delete(a11yId)\n } else {\n // GameObject added to the scene.\n // this.div.appendChild(this.cache)\n if (this.cache.has(a11yId)) {\n const addDom = this.cache.get(a11yId);\n addDom && this.div.appendChild(addDom);\n }\n }\n }\n\n /**\n * Attach a listener for the accessibility component.\n * @param element DOM element\n * @param event event component object\n * @param gameObject the GameObject\n */\n setEvent(element: HTMLElement, event: EE, gameObject: GameObject, id) {\n if (!event) {\n return;\n }\n const func = getEventFunc.bind(this, event, gameObject) as (e: MouseEvent) => void;\n this.eventCache.set(id, func);\n element.addEventListener('click', func);\n }\n\n addEvent(gameObject: GameObject) {\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = gameObject.getComponent('Event');\n if (!event) return;\n const element = this.cache.get(a11y.a11yId);\n element && this.setEvent(element, event, gameObject, a11y.a11yId);\n }\n\n removeEvent(changed: ComponentChanged) {\n const { gameObject } = changed;\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = changed.component;\n if (!event) return;\n const { a11yId } = a11y;\n const func = this.eventCache.get(a11yId);\n const element = this.cache.get(a11yId);\n element && element.removeEventListener('click', func);\n }\n\n /**\n * Set accessibility attribute tags.\n * @param element DOM element\n * @param hint accessibility read-aloud text\n * @param interactive whether it is interactive\n */\n setA11yAttr(element: HTMLElement, component: A11y) {\n const { hint, props = {}, state = {}, role, a11yId: id } = component;\n const realRole = role || 'text';\n element.setAttribute('role', realRole);\n element.setAttribute('aria-label', hint);\n element.id = id;\n\n // Backward-compatibility handling.\n const ariaProps = Object.keys(props);\n for (const key of ariaProps) {\n element.setAttribute(key, props[key]);\n }\n const ariaState = Object.keys(state);\n for (const key of ariaState) {\n element.setAttribute(key, state[key]);\n }\n\n for (const key of Object.keys(component)) {\n if (typeof component[key] === 'string' && notAttr.indexOf(key) === -1 && key.indexOf('_') !== 1) {\n element.setAttribute(key, component[key]);\n }\n }\n }\n\n /**\n * Position the accessibility element accordingly.\n * @param element DOM element\n * @param transform position properties\n */\n setPosition(element: HTMLElement, transform: Transform) {\n // Positioned relative to the canvas.\n // const { x: anchorX, y: anchorY } = transform.anchor\n // GameObject width/height.\n const { width, height } = transform.size;\n // position\n // const { x: positionX, y: positionY } = transform.position\n // Set the accessibility DOM style; DragonBones animations default to 2px.\n const style: A11yMaskStyle = {\n width: width === 0 ? 1 : width * this.ratioX,\n height: height === 0 ? 1 : height * this.ratioY,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.AUTO,\n background: this.debug ? MaskBackground.DEBUG : MaskBackground.NONE,\n };\n const transformProps = {\n ...transform,\n };\n setStyle(element, style);\n // Adjust the DOM position.\n setTransform(element, transformProps, this.ratioX, this.ratioY);\n }\n onDestroy() {\n this.div.parentElement.removeChild(this.div);\n this.cache = null;\n this.eventCache = null;\n this.div = null\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport A11ySystem from './A11ySystem';\n\nObject.assign(A11ySystem, {\n packageName: \"@combos-fun/plugin-a11y\",\n packageVersion: \"0.0.54\",\n});\n"],"names":["Component","__decorate","type","step","A11yActivate","A11ySystem","System","RendererSystem","OBSERVER_TYPE","decorators"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-a11y.cjs.js","sources":["../lib/utils.ts","../lib/A11y.ts","../lib/constant.ts","../lib/A11ySystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { A11yMaskStyle } from './constant';\n\n/**\n * Generate a unique identifier.\n * @param len length\n */\nfunction uuid(len: number) {\n let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n let uuid = [];\n let radix = chars.length;\n for (let i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)];\n return uuid.join('');\n}\n\n/**\n * Apply styles to a DOM element.\n * @param element the DOM element to style\n * @param style style properties\n */\nconst setStyle = (element: HTMLElement, style: A11yMaskStyle) => {\n const { width, height, position, left = 0, top = 0, zIndex, pointerEvents, background } = style;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n element.style.position = position;\n element.style.left = `${left}`;\n element.style.top = `${top}`;\n element.style.zIndex = `${zIndex}`;\n element.style.pointerEvents = pointerEvents;\n element.style.background = background;\n element.style.border = 'none';\n element.style.overflow = 'hidden';\n};\n\nconst setTransform = (element: HTMLElement, transform, ratioX, ratioY) => {\n const { worldTransform } = transform;\n const { a, b, c, d, tx, ty } = worldTransform;\n const matrix = `matrix(${a}, ${b}, ${c}, ${d}, ${tx * ratioX}, ${ty * ratioY})`;\n element.style.transform = `${matrix}`;\n element.style.webkitTransform = `${matrix}`;\n element.style.transformOrigin = 'left top';\n element.style.webkitTransformOrigin = 'left top';\n};\n\nexport { setStyle, setTransform, uuid };\n","import {Component} from '@combos-fun/engine';\nimport {type, step} from '@combos-fun/inspector-decorator';\nimport {uuid} from './utils';\n\nexport interface A11yParams {\n hint: string;\n event?: Component;\n delay?: number;\n role?: string;\n props?: object;\n state?: object;\n attr?: object;\n a11yId?: string;\n [propName: string]: string | object | number;\n}\n\nexport default class A11y extends Component<A11yParams> {\n static componentName: string = 'A11y';\n\n /**\n * Whether the element is interactive.\n */\n @type('boolean') interactive: boolean;\n /**\n * Text read aloud for the accessibility label.\n */\n @type('string') hint: string;\n /**\n * Deprecated: added automatically based on the Event component.\n * The event object.\n */\n event: Component;\n /**\n * Delayed load time (milliseconds).\n */\n @type('number') @step(1) delay: number;\n\n /**\n * The `role` attribute.\n */\n @type('string') role: string;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria-*` value attributes.\n * @example\n * aria-valuemin = \"0\"\n */\n props: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria` state attributes.\n * @example\n * aria-hidden = \"true\"\n */\n state: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * Custom attributes.\n */\n attr: object;\n\n /**\n * Auto-generated id for the helper DOM.\n */\n @type('string') a11yId: string;\n\n /**\n * Accessibility component constructor.\n * @param param `interactive` defaults to false; pass true if the GameObject is interactive.\n * @example\n * // Provide read-aloud support for a GameObject\n * new A11y({hint: 'This is a div'})\n * // The GameObject has an event; pass the event object\n * new A11y({hint: 'Click event object', event: event})\n * // Accessibility attributes\n * new A11y({hint:'Button', role: 'button', state: {aria-hidden=\"true\"}})\n * // Custom attributes\n * new A11y({hint: 'Custom attribute', attr: {key: '1'}})\n */\n constructor(param: A11yParams) {\n super();\n Object.assign(this, param);\n const { hint = '', event, delay = 0, attr = {}, role = '', props = {}, state = {} } = param;\n this.hint = hint;\n this.event = event;\n this.delay = delay;\n this.attr = attr;\n this.role = role;\n this.props = props;\n this.state = state;\n this.a11yId = `_${uuid(6)}`;\n }\n}\n","export const POSITION = 'absolute';\nexport const ZINDEX = 3;\n\nexport enum A11yActivate {\n ENABLE = 0,\n DISABLE = 1,\n CHECK = 2,\n}\n\n/**\n * Pointer events for the accessibility DOM.\n */\nexport enum PointerEvents {\n NONE = 'none', // The element is not a mouse-event target; events pass through.\n AUTO = 'auto', // Default behavior.\n}\n\n/**\n * Style of the accessibility DOM layer.\n */\nexport enum MaskBackground {\n DEBUG = 'rgba(255,0,0,0.5)',\n NONE = 'transparent',\n}\n\n/**\n * Type of the accessibility DOM element.\n */\nexport enum ElementType {\n BUTTON = 'button',\n DIV = 'div',\n}\n\n/**\n * Style of the accessibility mask layer.\n */\nexport interface A11yMaskStyle {\n width: number;\n height: number;\n background: string;\n position: string;\n left?: string;\n top?: string;\n zIndex: number;\n pointerEvents: PointerEvents;\n}\n\n/**\n * Click event position.\n */\nexport interface EventPosition {\n x: number;\n y: number;\n}\n","import { System, decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { GameObject } from '@combos-fun/engine';\nimport { RendererSystem, Transform2D } from '@combos-fun/plugin-renderer';\nimport EE from 'eventemitter3';\n\nimport A11y from './A11y';\nimport { setStyle, setTransform } from './utils';\nimport {\n POSITION,\n ZINDEX,\n PointerEvents,\n MaskBackground,\n EventPosition,\n A11yMaskStyle,\n A11yActivate,\n} from './constant';\n\ninterface SystemParam {\n debug?: boolean;\n activate?: A11yActivate;\n delay?: number;\n zIndex?: number;\n checkA11yOpen?: () => Promise<boolean>;\n}\n\nconst notAttr = ['hint', 'event', 'delay', 'attr', 'role', 'props', 'state', 'a11yId', 'name'];\n\nconst getEventFunc = function (event: EE, gameObject: GameObject, e: MouseEvent) {\n ['touchstart', 'touchend', 'tap'].forEach(name => {\n event.emit(name, {\n stopPropagation: () => e.stopPropagation(),\n data: {\n position: this.eventPosition,\n },\n gameObject,\n });\n });\n};\n\n@decorators.componentObserver({\n A11y: ['hint'],\n GameObject: ['inScene'],\n Event: [],\n})\nexport default class A11ySystem extends System {\n static systemName = 'A11ySystem';\n\n /**\n * Accessibility overlay layer.\n */\n div: HTMLDivElement;\n /**\n * Whether debug mode is enabled.\n */\n debug: boolean;\n /**\n * Horizontal scale ratio.\n */\n _ratioX: number;\n /**\n * Vertical scale ratio.\n */\n _ratioY: number;\n /**\n * Event coordinates.\n */\n eventPosition: EventPosition;\n /**\n * Whether accessibility is enabled.\n */\n activate: boolean;\n /**\n * Delay before placing the DOM.\n */\n delay: number;\n cache: Map<string, HTMLElement> = new Map();\n eventCache: Map<string, (e: MouseEvent) => void> = new Map();\n /**\n * The DOM `zIndex`.\n */\n zIndex: number = ZINDEX;\n\n /**\n * Accessibility plugin initializer.\n * @param opt accessibility plugin options\n * @param opt.activate whether to enable accessibility; defaults to AUTO based on the\n * system's screen-reader capability. One of AUTO | ENABLE | DISABLE.\n * @example\n * // Enable debug: accessibility regions show a red translucent background\n * new A11ySystem({debug: true})\n * // Disable accessibility\n * new A11ySystem({activate: A11yActivate.DISABLE})\n */\n constructor(opt?: SystemParam) {\n super(opt);\n }\n\n get ratioX() {\n if (this._ratioX) {\n return this._ratioX;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioX;\n } else {\n return 0;\n }\n }\n }\n get ratioY() {\n if (this._ratioY) {\n return this._ratioY;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioY;\n } else {\n return 0;\n }\n }\n }\n\n async init(opt: SystemParam = {}) {\n const { activate = A11yActivate.CHECK, delay = 100, checkA11yOpen = () => Promise.resolve(false), zIndex } = opt;\n this.delay = delay;\n this.zIndex = zIndex || this.zIndex\n switch (activate) {\n case A11yActivate.CHECK:\n try {\n this.activate = await checkA11yOpen();\n } catch (error) {\n this.activate = false;\n }\n break;\n case A11yActivate.DISABLE:\n this.activate = false;\n break;\n case A11yActivate.ENABLE:\n this.activate = true;\n break;\n }\n this.debug = opt.debug || false;\n if (this.debug) {\n this.activate = true;\n }\n\n if (!this.activate) return;\n // Render the parent container.\n const div = document.createElement('div');\n this.div = div;\n // If a parent node exists, mount this div so children position relative to it;\n // otherwise children position relative to the body.\n if (this.game.canvas.parentNode) {\n this.game.canvas.parentNode.insertBefore(this.div, this.game.canvas);\n }\n }\n setRatio() {\n const { width, height } = this.getCanvasBoundingClientRect();\n const { renderWidth, renderHeight } = this.getRenderRect();\n this._ratioX = width / renderWidth;\n this._ratioY = height / renderHeight;\n if (width || height) {\n this.initDiv();\n return true;\n } else {\n return false;\n }\n }\n getRenderRect() {\n const { params = { width: 300, height: 300 } } = this.game.getSystem(RendererSystem);\n const { height: renderHeight, width: renderWidth } = params;\n return { renderWidth, renderHeight };\n }\n getCanvasBoundingClientRect() {\n // Actual pixel width/height and position of the render canvas relative to the viewport.\n const { width, height, left, top } = this.game.canvas.getBoundingClientRect();\n return { width, height, left, top };\n }\n initDiv() {\n const { pageXOffset, pageYOffset } = window;\n\n const { width, height, left, top } = this.getCanvasBoundingClientRect();\n // Parent container position.\n const style: A11yMaskStyle = {\n width,\n height,\n left: `${left + pageXOffset}px`,\n top: `${top + pageYOffset}px`,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.NONE,\n background: MaskBackground.NONE,\n };\n setStyle(this.div, style);\n // Attach a capture-phase listener on the parent container to track event coordinates.\n this.div.addEventListener(\n 'click',\n e => {\n const currentTarget = e.currentTarget as HTMLDivElement;\n const { left, top } = currentTarget.getBoundingClientRect();\n const x = (e.pageX - left) / this.ratioX;\n const y = (e.pageY - top) / this.ratioY;\n this.eventPosition = { x, y };\n },\n true,\n );\n }\n\n /**\n * Handle plugin updates.\n */\n async update() {\n const changes = this.componentObserver.clear();\n if (!this.activate) {\n return;\n }\n for (const changed of changes) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n changed.componentName === 'Event' && this.addEvent(changed.gameObject);\n changed.componentName === 'A11y' && this.add(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n changed.componentName === 'GameObject' && this.transformChange(changed);\n changed.componentName === 'A11y' && this.change(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n changed.componentName === 'Event' && this.removeEvent(changed);\n changed.componentName === 'A11y' && this.remove(changed);\n }\n }\n }\n\n change(changed: ComponentChanged) {\n const component = changed.component as A11y\n if (changed.prop.prop[0] === 'hint') {\n const dom = this.cache.get(component.a11yId)\n dom?.setAttribute('aria-label', component.hint)\n const pose = changed.gameObject.getComponent(Transform2D);\n pose && this.setPosition(dom, pose)\n }\n }\n\n remove(changed: ComponentChanged) {\n const component = changed.component as A11y;\n if (!component) return;\n const { a11yId } = component;\n const element = this.div.querySelector(`#${a11yId}`);\n element && this.div.removeChild(element);\n this.cache.delete(a11yId);\n }\n\n /**\n * Handle a component being added to a GameObject.\n * @param changed the changed component\n */\n add(changed: ComponentChanged) {\n if (!this.activate) return;\n const component = changed.component as A11y;\n const { gameObject } = changed;\n const { delay, a11yId: id } = component;\n let { event } = component;\n if (!gameObject) return;\n const transform = gameObject.getComponent(Transform2D);\n if (!transform) return;\n const element = document.createElement('div');\n this.cache.set(id, element);\n if (!event) {\n event = gameObject.getComponent('Event');\n }\n setTimeout(() => {\n this.setPosition(element, transform);\n this.setA11yAttr(element, component);\n if (event) {\n this.addEvent(gameObject);\n }\n if (gameObject.scene) {\n this.div.appendChild(element);\n }\n }, delay || this.delay);\n }\n\n // React to scene changes.\n transformChange(changed: ComponentChanged) {\n const { gameObject } = changed;\n const a11yComponent = gameObject.getComponent(A11y) as A11y;\n if (!a11yComponent) return;\n const { a11yId } = a11yComponent;\n if (!gameObject.inScene) {\n // GameObject removed from the scene.\n const dom = this.div.querySelector(`#${a11yId}`);\n dom && this.div.removeChild(dom);\n // this.cache.delete(a11yId)\n } else {\n // GameObject added to the scene.\n // this.div.appendChild(this.cache)\n if (this.cache.has(a11yId)) {\n const addDom = this.cache.get(a11yId);\n addDom && this.div.appendChild(addDom);\n }\n }\n }\n\n /**\n * Attach a listener for the accessibility component.\n * @param element DOM element\n * @param event event component object\n * @param gameObject the GameObject\n */\n setEvent(element: HTMLElement, event: EE, gameObject: GameObject, id) {\n if (!event) {\n return;\n }\n const func = getEventFunc.bind(this, event, gameObject) as (e: MouseEvent) => void;\n this.eventCache.set(id, func);\n element.addEventListener('click', func);\n }\n\n addEvent(gameObject: GameObject) {\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = gameObject.getComponent('Event');\n if (!event) return;\n const element = this.cache.get(a11y.a11yId);\n element && this.setEvent(element, event, gameObject, a11y.a11yId);\n }\n\n removeEvent(changed: ComponentChanged) {\n const { gameObject } = changed;\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = changed.component;\n if (!event) return;\n const { a11yId } = a11y;\n const func = this.eventCache.get(a11yId);\n const element = this.cache.get(a11yId);\n element && element.removeEventListener('click', func);\n }\n\n /**\n * Set accessibility attribute tags.\n * @param element DOM element\n * @param hint accessibility read-aloud text\n * @param interactive whether it is interactive\n */\n setA11yAttr(element: HTMLElement, component: A11y) {\n const { hint, props = {}, state = {}, role, a11yId: id } = component;\n const realRole = role || 'text';\n element.setAttribute('role', realRole);\n element.setAttribute('aria-label', hint);\n element.id = id;\n\n // Backward-compatibility handling.\n const ariaProps = Object.keys(props);\n for (const key of ariaProps) {\n element.setAttribute(key, props[key]);\n }\n const ariaState = Object.keys(state);\n for (const key of ariaState) {\n element.setAttribute(key, state[key]);\n }\n\n for (const key of Object.keys(component)) {\n if (typeof component[key] === 'string' && notAttr.indexOf(key) === -1 && key.indexOf('_') !== 1) {\n element.setAttribute(key, component[key]);\n }\n }\n }\n\n /**\n * Position the accessibility element accordingly.\n * @param element DOM element\n * @param transform position properties\n */\n setPosition(element: HTMLElement, transform: Transform2D) {\n // Positioned relative to the canvas.\n // const { x: anchorX, y: anchorY } = transform.anchor\n // GameObject width/height.\n const { width, height } = transform.size;\n // position\n // const { x: positionX, y: positionY } = transform.position\n // Set the accessibility DOM style; DragonBones animations default to 2px.\n const style: A11yMaskStyle = {\n width: width === 0 ? 1 : width * this.ratioX,\n height: height === 0 ? 1 : height * this.ratioY,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.AUTO,\n background: this.debug ? MaskBackground.DEBUG : MaskBackground.NONE,\n };\n const transformProps = {\n ...transform,\n };\n setStyle(element, style);\n // Adjust the DOM position.\n setTransform(element, transformProps, this.ratioX, this.ratioY);\n }\n onDestroy() {\n this.div.parentElement.removeChild(this.div);\n this.cache = null;\n this.eventCache = null;\n this.div = null\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport A11ySystem from './A11ySystem';\n\nObject.assign(A11ySystem, {\n packageName: \"@combos-fun/plugin-a11y\",\n packageVersion: \"0.2.0\",\n});\n"],"names":["Component","__decorate","type","step","A11yActivate","A11ySystem","System","RendererSystem","OBSERVER_TYPE","Transform2D","decorators"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t=require("tslib"),e=require("@combos-fun/engine"),i=require("@combos-fun/plugin-renderer"),n=require("@combos-fun/inspector-decorator");const s=(t,e)=>{const{width:i,height:n,position:s,left:o=0,top:r=0,zIndex:a,pointerEvents:c,background:h}=e;t.style.width=`${i}px`,t.style.height=`${n}px`,t.style.position=s,t.style.left=`${o}`,t.style.top=`${r}`,t.style.zIndex=`${a}`,t.style.pointerEvents=c,t.style.background=h,t.style.border="none",t.style.overflow="hidden"};class o extends e.Component{static{this.componentName="A11y"}constructor(t){super(),Object.assign(this,t);const{hint:e="",event:i,delay:n=0,attr:s={},role:o="",props:r={},state:a={}}=t;this.hint=e,this.event=i,this.delay=n,this.attr=s,this.role=o,this.props=r,this.state=a,this.a11yId=`_${function(t){let e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=[],n=e.length;for(let s=0;s<t;s++)i[s]=e[0|Math.random()*n];return i.join("")}(6)}`}}t.__decorate([n.type("boolean")],o.prototype,"interactive",void 0),t.__decorate([n.type("string")],o.prototype,"hint",void 0),t.__decorate([n.type("number"),n.step(1)],o.prototype,"delay",void 0),t.__decorate([n.type("string")],o.prototype,"role",void 0),t.__decorate([n.type("string")],o.prototype,"a11yId",void 0);const r="absolute";var a,c,h,d;exports.A11yActivate=void 0,(a=exports.A11yActivate||(exports.A11yActivate={}))[a.ENABLE=0]="ENABLE",a[a.DISABLE=1]="DISABLE",a[a.CHECK=2]="CHECK",function(t){t.NONE="none",t.AUTO="auto"}(c||(c={})),function(t){t.DEBUG="rgba(255,0,0,0.5)",t.NONE="transparent"}(h||(h={})),function(t){t.BUTTON="button",t.DIV="div"}(d||(d={}));const p=["hint","event","delay","attr","role","props","state","a11yId","name"],v=function(t,e,i){["touchstart","touchend","tap"].forEach(n=>{t.emit(n,{stopPropagation:()=>i.stopPropagation(),data:{position:this.eventPosition},gameObject:e})})};let
|
|
1
|
+
"use strict";var t=require("tslib"),e=require("@combos-fun/engine"),i=require("@combos-fun/plugin-renderer"),n=require("@combos-fun/inspector-decorator");const s=(t,e)=>{const{width:i,height:n,position:s,left:o=0,top:r=0,zIndex:a,pointerEvents:c,background:h}=e;t.style.width=`${i}px`,t.style.height=`${n}px`,t.style.position=s,t.style.left=`${o}`,t.style.top=`${r}`,t.style.zIndex=`${a}`,t.style.pointerEvents=c,t.style.background=h,t.style.border="none",t.style.overflow="hidden"};class o extends e.Component{static{this.componentName="A11y"}constructor(t){super(),Object.assign(this,t);const{hint:e="",event:i,delay:n=0,attr:s={},role:o="",props:r={},state:a={}}=t;this.hint=e,this.event=i,this.delay=n,this.attr=s,this.role=o,this.props=r,this.state=a,this.a11yId=`_${function(t){let e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),i=[],n=e.length;for(let s=0;s<t;s++)i[s]=e[0|Math.random()*n];return i.join("")}(6)}`}}t.__decorate([n.type("boolean")],o.prototype,"interactive",void 0),t.__decorate([n.type("string")],o.prototype,"hint",void 0),t.__decorate([n.type("number"),n.step(1)],o.prototype,"delay",void 0),t.__decorate([n.type("string")],o.prototype,"role",void 0),t.__decorate([n.type("string")],o.prototype,"a11yId",void 0);const r="absolute";var a,c,h,d;exports.A11yActivate=void 0,(a=exports.A11yActivate||(exports.A11yActivate={}))[a.ENABLE=0]="ENABLE",a[a.DISABLE=1]="DISABLE",a[a.CHECK=2]="CHECK",function(t){t.NONE="none",t.AUTO="auto"}(c||(c={})),function(t){t.DEBUG="rgba(255,0,0,0.5)",t.NONE="transparent"}(h||(h={})),function(t){t.BUTTON="button",t.DIV="div"}(d||(d={}));const p=["hint","event","delay","attr","role","props","state","a11yId","name"],v=function(t,e,i){["touchstart","touchend","tap"].forEach(n=>{t.emit(n,{stopPropagation:()=>i.stopPropagation(),data:{position:this.eventPosition},gameObject:e})})};let g=class extends e.System{static{this.systemName="A11ySystem"}constructor(t){super(t),this.cache=new Map,this.eventCache=new Map,this.zIndex=3}get ratioX(){if(this._ratioX)return this._ratioX;return this.setRatio()?this._ratioX:0}get ratioY(){if(this._ratioY)return this._ratioY;return this.setRatio()?this._ratioY:0}async init(t={}){const{activate:e=exports.A11yActivate.CHECK,delay:i=100,checkA11yOpen:n=()=>Promise.resolve(!1),zIndex:s}=t;switch(this.delay=i,this.zIndex=s||this.zIndex,e){case exports.A11yActivate.CHECK:try{this.activate=await n()}catch(t){this.activate=!1}break;case exports.A11yActivate.DISABLE:this.activate=!1;break;case exports.A11yActivate.ENABLE:this.activate=!0}if(this.debug=t.debug||!1,this.debug&&(this.activate=!0),!this.activate)return;const o=document.createElement("div");this.div=o,this.game.canvas.parentNode&&this.game.canvas.parentNode.insertBefore(this.div,this.game.canvas)}setRatio(){const{width:t,height:e}=this.getCanvasBoundingClientRect(),{renderWidth:i,renderHeight:n}=this.getRenderRect();return this._ratioX=t/i,this._ratioY=e/n,!(!t&&!e)&&(this.initDiv(),!0)}getRenderRect(){const{params:t={width:300,height:300}}=this.game.getSystem(i.RendererSystem),{height:e,width:n}=t;return{renderWidth:n,renderHeight:e}}getCanvasBoundingClientRect(){const{width:t,height:e,left:i,top:n}=this.game.canvas.getBoundingClientRect();return{width:t,height:e,left:i,top:n}}initDiv(){const{pageXOffset:t,pageYOffset:e}=window,{width:i,height:n,left:o,top:a}=this.getCanvasBoundingClientRect(),d={width:i,height:n,left:`${o+t}px`,top:`${a+e}px`,position:r,zIndex:this.zIndex,pointerEvents:c.NONE,background:h.NONE};s(this.div,d),this.div.addEventListener("click",t=>{const e=t.currentTarget,{left:i,top:n}=e.getBoundingClientRect(),s=(t.pageX-i)/this.ratioX,o=(t.pageY-n)/this.ratioY;this.eventPosition={x:s,y:o}},!0)}async update(){const t=this.componentObserver.clear();if(this.activate)for(const i of t)switch(i.type){case e.OBSERVER_TYPE.ADD:"Event"===i.componentName&&this.addEvent(i.gameObject),"A11y"===i.componentName&&this.add(i);break;case e.OBSERVER_TYPE.CHANGE:"GameObject"===i.componentName&&this.transformChange(i),"A11y"===i.componentName&&this.change(i);break;case e.OBSERVER_TYPE.REMOVE:"Event"===i.componentName&&this.removeEvent(i),"A11y"===i.componentName&&this.remove(i)}}change(t){const e=t.component;if("hint"===t.prop.prop[0]){const n=this.cache.get(e.a11yId);n?.setAttribute("aria-label",e.hint);const s=t.gameObject.getComponent(i.Transform2D);s&&this.setPosition(n,s)}}remove(t){const e=t.component;if(!e)return;const{a11yId:i}=e,n=this.div.querySelector(`#${i}`);n&&this.div.removeChild(n),this.cache.delete(i)}add(t){if(!this.activate)return;const e=t.component,{gameObject:n}=t,{delay:s,a11yId:o}=e;let{event:r}=e;if(!n)return;const a=n.getComponent(i.Transform2D);if(!a)return;const c=document.createElement("div");this.cache.set(o,c),r||(r=n.getComponent("Event")),setTimeout(()=>{this.setPosition(c,a),this.setA11yAttr(c,e),r&&this.addEvent(n),n.scene&&this.div.appendChild(c)},s||this.delay)}transformChange(t){const{gameObject:e}=t,i=e.getComponent(o);if(!i)return;const{a11yId:n}=i;if(e.inScene){if(this.cache.has(n)){const t=this.cache.get(n);t&&this.div.appendChild(t)}}else{const t=this.div.querySelector(`#${n}`);t&&this.div.removeChild(t)}}setEvent(t,e,i,n){if(!e)return;const s=v.bind(this,e,i);this.eventCache.set(n,s),t.addEventListener("click",s)}addEvent(t){const e=t.getComponent(o);if(!e)return;const i=t.getComponent("Event");if(!i)return;const n=this.cache.get(e.a11yId);n&&this.setEvent(n,i,t,e.a11yId)}removeEvent(t){const{gameObject:e}=t,i=e.getComponent(o);if(!i)return;if(!t.component)return;const{a11yId:n}=i,s=this.eventCache.get(n),r=this.cache.get(n);r&&r.removeEventListener("click",s)}setA11yAttr(t,e){const{hint:i,props:n={},state:s={},role:o,a11yId:r}=e,a=o||"text";t.setAttribute("role",a),t.setAttribute("aria-label",i),t.id=r;const c=Object.keys(n);for(const e of c)t.setAttribute(e,n[e]);const h=Object.keys(s);for(const e of h)t.setAttribute(e,s[e]);for(const i of Object.keys(e))"string"==typeof e[i]&&-1===p.indexOf(i)&&1!==i.indexOf("_")&&t.setAttribute(i,e[i])}setPosition(t,e){const{width:i,height:n}=e.size,o={width:0===i?1:i*this.ratioX,height:0===n?1:n*this.ratioY,position:r,zIndex:this.zIndex,pointerEvents:c.AUTO,background:this.debug?h.DEBUG:h.NONE},a={...e};s(t,o),((t,e,i,n)=>{const{worldTransform:s}=e,{a:o,b:r,c:a,d:c,tx:h,ty:d}=s,p=`matrix(${o}, ${r}, ${a}, ${c}, ${h*i}, ${d*n})`;t.style.transform=`${p}`,t.style.webkitTransform=`${p}`,t.style.transformOrigin="left top",t.style.webkitTransformOrigin="left top"})(t,a,this.ratioX,this.ratioY)}onDestroy(){this.div.parentElement.removeChild(this.div),this.cache=null,this.eventCache=null,this.div=null}};g=t.__decorate([e.decorators.componentObserver({A11y:["hint"],GameObject:["inScene"],Event:[]})],g);var l=g;Object.assign(l,{packageName:"@combos-fun/plugin-a11y",packageVersion:"0.2.0"}),exports.A11y=o,exports.A11ySystem=l;
|
package/dist/plugin-a11y.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Component, System, ComponentChanged, GameObject
|
|
1
|
+
import { Component, System, ComponentChanged, GameObject } from '@combos-fun/engine';
|
|
2
|
+
import { Transform2D } from '@combos-fun/plugin-renderer';
|
|
2
3
|
import EE from 'eventemitter3';
|
|
3
4
|
|
|
4
5
|
interface A11yParams {
|
|
@@ -190,7 +191,7 @@ declare class A11ySystem extends System {
|
|
|
190
191
|
* @param element DOM element
|
|
191
192
|
* @param transform position properties
|
|
192
193
|
*/
|
|
193
|
-
setPosition(element: HTMLElement, transform:
|
|
194
|
+
setPosition(element: HTMLElement, transform: Transform2D): void;
|
|
194
195
|
onDestroy(): void;
|
|
195
196
|
}
|
|
196
197
|
|
package/dist/plugin-a11y.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
2
|
import { Component, System, OBSERVER_TYPE, decorators } from '@combos-fun/engine';
|
|
3
|
-
import { RendererSystem } from '@combos-fun/plugin-renderer';
|
|
3
|
+
import { RendererSystem, Transform2D } from '@combos-fun/plugin-renderer';
|
|
4
4
|
import { type, step } from '@combos-fun/inspector-decorator';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -281,7 +281,7 @@ let A11ySystem = class A11ySystem extends System {
|
|
|
281
281
|
changed.componentName === 'A11y' && this.add(changed);
|
|
282
282
|
break;
|
|
283
283
|
case OBSERVER_TYPE.CHANGE:
|
|
284
|
-
changed.componentName === '
|
|
284
|
+
changed.componentName === 'GameObject' && this.transformChange(changed);
|
|
285
285
|
changed.componentName === 'A11y' && this.change(changed);
|
|
286
286
|
break;
|
|
287
287
|
case OBSERVER_TYPE.REMOVE:
|
|
@@ -295,7 +295,8 @@ let A11ySystem = class A11ySystem extends System {
|
|
|
295
295
|
if (changed.prop.prop[0] === 'hint') {
|
|
296
296
|
const dom = this.cache.get(component.a11yId);
|
|
297
297
|
dom?.setAttribute('aria-label', component.hint);
|
|
298
|
-
|
|
298
|
+
const pose = changed.gameObject.getComponent(Transform2D);
|
|
299
|
+
pose && this.setPosition(dom, pose);
|
|
299
300
|
}
|
|
300
301
|
}
|
|
301
302
|
remove(changed) {
|
|
@@ -320,7 +321,7 @@ let A11ySystem = class A11ySystem extends System {
|
|
|
320
321
|
let { event } = component;
|
|
321
322
|
if (!gameObject)
|
|
322
323
|
return;
|
|
323
|
-
const
|
|
324
|
+
const transform = gameObject.getComponent(Transform2D);
|
|
324
325
|
if (!transform)
|
|
325
326
|
return;
|
|
326
327
|
const element = document.createElement('div');
|
|
@@ -341,13 +342,12 @@ let A11ySystem = class A11ySystem extends System {
|
|
|
341
342
|
}
|
|
342
343
|
// React to scene changes.
|
|
343
344
|
transformChange(changed) {
|
|
344
|
-
const component = changed.component;
|
|
345
345
|
const { gameObject } = changed;
|
|
346
346
|
const a11yComponent = gameObject.getComponent(A11y);
|
|
347
347
|
if (!a11yComponent)
|
|
348
348
|
return;
|
|
349
349
|
const { a11yId } = a11yComponent;
|
|
350
|
-
if (!
|
|
350
|
+
if (!gameObject.inScene) {
|
|
351
351
|
// GameObject removed from the scene.
|
|
352
352
|
const dom = this.div.querySelector(`#${a11yId}`);
|
|
353
353
|
dom && this.div.removeChild(dom);
|
|
@@ -464,7 +464,7 @@ let A11ySystem = class A11ySystem extends System {
|
|
|
464
464
|
A11ySystem = __decorate([
|
|
465
465
|
decorators.componentObserver({
|
|
466
466
|
A11y: ['hint'],
|
|
467
|
-
|
|
467
|
+
GameObject: ['inScene'],
|
|
468
468
|
Event: [],
|
|
469
469
|
})
|
|
470
470
|
], A11ySystem);
|
|
@@ -473,7 +473,7 @@ var A11ySystem$1 = A11ySystem;
|
|
|
473
473
|
/** Auto-generated by scripts/build-package.mjs — do not edit. */
|
|
474
474
|
Object.assign(A11ySystem$1, {
|
|
475
475
|
packageName: "@combos-fun/plugin-a11y",
|
|
476
|
-
packageVersion: "0.0
|
|
476
|
+
packageVersion: "0.2.0",
|
|
477
477
|
});
|
|
478
478
|
|
|
479
479
|
export { A11y, A11yActivate, A11ySystem$1 as A11ySystem };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-a11y.esm.js","sources":["../lib/utils.ts","../lib/A11y.ts","../lib/constant.ts","../lib/A11ySystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { A11yMaskStyle } from './constant';\n\n/**\n * Generate a unique identifier.\n * @param len length\n */\nfunction uuid(len: number) {\n let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n let uuid = [];\n let radix = chars.length;\n for (let i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)];\n return uuid.join('');\n}\n\n/**\n * Apply styles to a DOM element.\n * @param element the DOM element to style\n * @param style style properties\n */\nconst setStyle = (element: HTMLElement, style: A11yMaskStyle) => {\n const { width, height, position, left = 0, top = 0, zIndex, pointerEvents, background } = style;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n element.style.position = position;\n element.style.left = `${left}`;\n element.style.top = `${top}`;\n element.style.zIndex = `${zIndex}`;\n element.style.pointerEvents = pointerEvents;\n element.style.background = background;\n element.style.border = 'none';\n element.style.overflow = 'hidden';\n};\n\nconst setTransform = (element: HTMLElement, transform, ratioX, ratioY) => {\n const { worldTransform } = transform;\n const { a, b, c, d, tx, ty } = worldTransform;\n const matrix = `matrix(${a}, ${b}, ${c}, ${d}, ${tx * ratioX}, ${ty * ratioY})`;\n element.style.transform = `${matrix}`;\n element.style.webkitTransform = `${matrix}`;\n element.style.transformOrigin = 'left top';\n element.style.webkitTransformOrigin = 'left top';\n};\n\nexport { setStyle, setTransform, uuid };\n","import {Component} from '@combos-fun/engine';\nimport {type, step} from '@combos-fun/inspector-decorator';\nimport {uuid} from './utils';\n\nexport interface A11yParams {\n hint: string;\n event?: Component;\n delay?: number;\n role?: string;\n props?: object;\n state?: object;\n attr?: object;\n a11yId?: string;\n [propName: string]: string | object | number;\n}\n\nexport default class A11y extends Component<A11yParams> {\n static componentName: string = 'A11y';\n\n /**\n * Whether the element is interactive.\n */\n @type('boolean') interactive: boolean;\n /**\n * Text read aloud for the accessibility label.\n */\n @type('string') hint: string;\n /**\n * Deprecated: added automatically based on the Event component.\n * The event object.\n */\n event: Component;\n /**\n * Delayed load time (milliseconds).\n */\n @type('number') @step(1) delay: number;\n\n /**\n * The `role` attribute.\n */\n @type('string') role: string;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria-*` value attributes.\n * @example\n * aria-valuemin = \"0\"\n */\n props: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria` state attributes.\n * @example\n * aria-hidden = \"true\"\n */\n state: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * Custom attributes.\n */\n attr: object;\n\n /**\n * Auto-generated id for the helper DOM.\n */\n @type('string') a11yId: string;\n\n /**\n * Accessibility component constructor.\n * @param param `interactive` defaults to false; pass true if the GameObject is interactive.\n * @example\n * // Provide read-aloud support for a GameObject\n * new A11y({hint: 'This is a div'})\n * // The GameObject has an event; pass the event object\n * new A11y({hint: 'Click event object', event: event})\n * // Accessibility attributes\n * new A11y({hint:'Button', role: 'button', state: {aria-hidden=\"true\"}})\n * // Custom attributes\n * new A11y({hint: 'Custom attribute', attr: {key: '1'}})\n */\n constructor(param: A11yParams) {\n super();\n Object.assign(this, param);\n const { hint = '', event, delay = 0, attr = {}, role = '', props = {}, state = {} } = param;\n this.hint = hint;\n this.event = event;\n this.delay = delay;\n this.attr = attr;\n this.role = role;\n this.props = props;\n this.state = state;\n this.a11yId = `_${uuid(6)}`;\n }\n}\n","export const POSITION = 'absolute';\nexport const ZINDEX = 3;\n\nexport enum A11yActivate {\n ENABLE = 0,\n DISABLE = 1,\n CHECK = 2,\n}\n\n/**\n * Pointer events for the accessibility DOM.\n */\nexport enum PointerEvents {\n NONE = 'none', // The element is not a mouse-event target; events pass through.\n AUTO = 'auto', // Default behavior.\n}\n\n/**\n * Style of the accessibility DOM layer.\n */\nexport enum MaskBackground {\n DEBUG = 'rgba(255,0,0,0.5)',\n NONE = 'transparent',\n}\n\n/**\n * Type of the accessibility DOM element.\n */\nexport enum ElementType {\n BUTTON = 'button',\n DIV = 'div',\n}\n\n/**\n * Style of the accessibility mask layer.\n */\nexport interface A11yMaskStyle {\n width: number;\n height: number;\n background: string;\n position: string;\n left?: string;\n top?: string;\n zIndex: number;\n pointerEvents: PointerEvents;\n}\n\n/**\n * Click event position.\n */\nexport interface EventPosition {\n x: number;\n y: number;\n}\n","import { System, decorators, ComponentChanged, Transform, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { GameObject } from '@combos-fun/engine';\nimport { RendererSystem } from '@combos-fun/plugin-renderer';\nimport EE from 'eventemitter3';\n\nimport A11y from './A11y';\nimport { setStyle, setTransform } from './utils';\nimport {\n POSITION,\n ZINDEX,\n PointerEvents,\n MaskBackground,\n EventPosition,\n A11yMaskStyle,\n A11yActivate,\n} from './constant';\n\ninterface SystemParam {\n debug?: boolean;\n activate?: A11yActivate;\n delay?: number;\n zIndex?: number;\n checkA11yOpen?: () => Promise<boolean>;\n}\n\nconst notAttr = ['hint', 'event', 'delay', 'attr', 'role', 'props', 'state', 'a11yId', 'name'];\n\nconst getEventFunc = function (event: EE, gameObject: GameObject, e: MouseEvent) {\n ['touchstart', 'touchend', 'tap'].forEach(name => {\n event.emit(name, {\n stopPropagation: () => e.stopPropagation(),\n data: {\n position: this.eventPosition,\n },\n gameObject,\n });\n });\n};\n\n@decorators.componentObserver({\n A11y: ['hint'],\n Transform: ['inScene'],\n Event: [],\n})\nexport default class A11ySystem extends System {\n static systemName = 'A11ySystem';\n\n /**\n * Accessibility overlay layer.\n */\n div: HTMLDivElement;\n /**\n * Whether debug mode is enabled.\n */\n debug: boolean;\n /**\n * Horizontal scale ratio.\n */\n _ratioX: number;\n /**\n * Vertical scale ratio.\n */\n _ratioY: number;\n /**\n * Event coordinates.\n */\n eventPosition: EventPosition;\n /**\n * Whether accessibility is enabled.\n */\n activate: boolean;\n /**\n * Delay before placing the DOM.\n */\n delay: number;\n cache: Map<string, HTMLElement> = new Map();\n eventCache: Map<string, (e: MouseEvent) => void> = new Map();\n /**\n * The DOM `zIndex`.\n */\n zIndex: number = ZINDEX;\n\n /**\n * Accessibility plugin initializer.\n * @param opt accessibility plugin options\n * @param opt.activate whether to enable accessibility; defaults to AUTO based on the\n * system's screen-reader capability. One of AUTO | ENABLE | DISABLE.\n * @example\n * // Enable debug: accessibility regions show a red translucent background\n * new A11ySystem({debug: true})\n * // Disable accessibility\n * new A11ySystem({activate: A11yActivate.DISABLE})\n */\n constructor(opt?: SystemParam) {\n super(opt);\n }\n\n get ratioX() {\n if (this._ratioX) {\n return this._ratioX;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioX;\n } else {\n return 0;\n }\n }\n }\n get ratioY() {\n if (this._ratioY) {\n return this._ratioY;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioY;\n } else {\n return 0;\n }\n }\n }\n\n async init(opt: SystemParam = {}) {\n const { activate = A11yActivate.CHECK, delay = 100, checkA11yOpen = () => Promise.resolve(false), zIndex } = opt;\n this.delay = delay;\n this.zIndex = zIndex || this.zIndex\n switch (activate) {\n case A11yActivate.CHECK:\n try {\n this.activate = await checkA11yOpen();\n } catch (error) {\n this.activate = false;\n }\n break;\n case A11yActivate.DISABLE:\n this.activate = false;\n break;\n case A11yActivate.ENABLE:\n this.activate = true;\n break;\n }\n this.debug = opt.debug || false;\n if (this.debug) {\n this.activate = true;\n }\n\n if (!this.activate) return;\n // Render the parent container.\n const div = document.createElement('div');\n this.div = div;\n // If a parent node exists, mount this div so children position relative to it;\n // otherwise children position relative to the body.\n if (this.game.canvas.parentNode) {\n this.game.canvas.parentNode.insertBefore(this.div, this.game.canvas);\n }\n }\n setRatio() {\n const { width, height } = this.getCanvasBoundingClientRect();\n const { renderWidth, renderHeight } = this.getRenderRect();\n this._ratioX = width / renderWidth;\n this._ratioY = height / renderHeight;\n if (width || height) {\n this.initDiv();\n return true;\n } else {\n return false;\n }\n }\n getRenderRect() {\n const { params = { width: 300, height: 300 } } = this.game.getSystem(RendererSystem);\n const { height: renderHeight, width: renderWidth } = params;\n return { renderWidth, renderHeight };\n }\n getCanvasBoundingClientRect() {\n // Actual pixel width/height and position of the render canvas relative to the viewport.\n const { width, height, left, top } = this.game.canvas.getBoundingClientRect();\n return { width, height, left, top };\n }\n initDiv() {\n const { pageXOffset, pageYOffset } = window;\n\n const { width, height, left, top } = this.getCanvasBoundingClientRect();\n // Parent container position.\n const style: A11yMaskStyle = {\n width,\n height,\n left: `${left + pageXOffset}px`,\n top: `${top + pageYOffset}px`,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.NONE,\n background: MaskBackground.NONE,\n };\n setStyle(this.div, style);\n // Attach a capture-phase listener on the parent container to track event coordinates.\n this.div.addEventListener(\n 'click',\n e => {\n const currentTarget = e.currentTarget as HTMLDivElement;\n const { left, top } = currentTarget.getBoundingClientRect();\n const x = (e.pageX - left) / this.ratioX;\n const y = (e.pageY - top) / this.ratioY;\n this.eventPosition = { x, y };\n },\n true,\n );\n }\n\n /**\n * Handle plugin updates.\n */\n async update() {\n const changes = this.componentObserver.clear();\n if (!this.activate) {\n return;\n }\n for (const changed of changes) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n changed.componentName === 'Event' && this.addEvent(changed.gameObject);\n changed.componentName === 'A11y' && this.add(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n changed.componentName === 'Transform' && this.transformChange(changed);\n changed.componentName === 'A11y' && this.change(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n changed.componentName === 'Event' && this.removeEvent(changed);\n changed.componentName === 'A11y' && this.remove(changed);\n }\n }\n }\n\n change(changed: ComponentChanged) {\n const component = changed.component as A11y\n if (changed.prop.prop[0] === 'hint') {\n const dom = this.cache.get(component.a11yId)\n dom?.setAttribute('aria-label', component.hint)\n dom && this.setPosition(dom, changed.gameObject.transform)\n }\n }\n\n remove(changed: ComponentChanged) {\n const component = changed.component as A11y;\n if (!component) return;\n const { a11yId } = component;\n const element = this.div.querySelector(`#${a11yId}`);\n element && this.div.removeChild(element);\n this.cache.delete(a11yId);\n }\n\n /**\n * Handle a component being added to a GameObject.\n * @param changed the changed component\n */\n add(changed: ComponentChanged) {\n if (!this.activate) return;\n const component = changed.component as A11y;\n const { gameObject } = changed;\n const { delay, a11yId: id } = component;\n let { event } = component;\n if (!gameObject) return;\n const { transform } = gameObject;\n if (!transform) return;\n const element = document.createElement('div');\n this.cache.set(id, element);\n if (!event) {\n event = gameObject.getComponent('Event');\n }\n setTimeout(() => {\n this.setPosition(element, transform);\n this.setA11yAttr(element, component);\n if (event) {\n this.addEvent(gameObject);\n }\n if (gameObject.scene) {\n this.div.appendChild(element);\n }\n }, delay || this.delay);\n }\n\n // React to scene changes.\n transformChange(changed: ComponentChanged) {\n const component = changed.component as Transform;\n const { gameObject } = changed;\n const a11yComponent = gameObject.getComponent(A11y) as A11y;\n if (!a11yComponent) return;\n const { a11yId } = a11yComponent;\n if (!component.inScene) {\n // GameObject removed from the scene.\n const dom = this.div.querySelector(`#${a11yId}`);\n dom && this.div.removeChild(dom);\n // this.cache.delete(a11yId)\n } else {\n // GameObject added to the scene.\n // this.div.appendChild(this.cache)\n if (this.cache.has(a11yId)) {\n const addDom = this.cache.get(a11yId);\n addDom && this.div.appendChild(addDom);\n }\n }\n }\n\n /**\n * Attach a listener for the accessibility component.\n * @param element DOM element\n * @param event event component object\n * @param gameObject the GameObject\n */\n setEvent(element: HTMLElement, event: EE, gameObject: GameObject, id) {\n if (!event) {\n return;\n }\n const func = getEventFunc.bind(this, event, gameObject) as (e: MouseEvent) => void;\n this.eventCache.set(id, func);\n element.addEventListener('click', func);\n }\n\n addEvent(gameObject: GameObject) {\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = gameObject.getComponent('Event');\n if (!event) return;\n const element = this.cache.get(a11y.a11yId);\n element && this.setEvent(element, event, gameObject, a11y.a11yId);\n }\n\n removeEvent(changed: ComponentChanged) {\n const { gameObject } = changed;\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = changed.component;\n if (!event) return;\n const { a11yId } = a11y;\n const func = this.eventCache.get(a11yId);\n const element = this.cache.get(a11yId);\n element && element.removeEventListener('click', func);\n }\n\n /**\n * Set accessibility attribute tags.\n * @param element DOM element\n * @param hint accessibility read-aloud text\n * @param interactive whether it is interactive\n */\n setA11yAttr(element: HTMLElement, component: A11y) {\n const { hint, props = {}, state = {}, role, a11yId: id } = component;\n const realRole = role || 'text';\n element.setAttribute('role', realRole);\n element.setAttribute('aria-label', hint);\n element.id = id;\n\n // Backward-compatibility handling.\n const ariaProps = Object.keys(props);\n for (const key of ariaProps) {\n element.setAttribute(key, props[key]);\n }\n const ariaState = Object.keys(state);\n for (const key of ariaState) {\n element.setAttribute(key, state[key]);\n }\n\n for (const key of Object.keys(component)) {\n if (typeof component[key] === 'string' && notAttr.indexOf(key) === -1 && key.indexOf('_') !== 1) {\n element.setAttribute(key, component[key]);\n }\n }\n }\n\n /**\n * Position the accessibility element accordingly.\n * @param element DOM element\n * @param transform position properties\n */\n setPosition(element: HTMLElement, transform: Transform) {\n // Positioned relative to the canvas.\n // const { x: anchorX, y: anchorY } = transform.anchor\n // GameObject width/height.\n const { width, height } = transform.size;\n // position\n // const { x: positionX, y: positionY } = transform.position\n // Set the accessibility DOM style; DragonBones animations default to 2px.\n const style: A11yMaskStyle = {\n width: width === 0 ? 1 : width * this.ratioX,\n height: height === 0 ? 1 : height * this.ratioY,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.AUTO,\n background: this.debug ? MaskBackground.DEBUG : MaskBackground.NONE,\n };\n const transformProps = {\n ...transform,\n };\n setStyle(element, style);\n // Adjust the DOM position.\n setTransform(element, transformProps, this.ratioX, this.ratioY);\n }\n onDestroy() {\n this.div.parentElement.removeChild(this.div);\n this.cache = null;\n this.eventCache = null;\n this.div = null\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport A11ySystem from './A11ySystem';\n\nObject.assign(A11ySystem, {\n packageName: \"@combos-fun/plugin-a11y\",\n packageVersion: \"0.0.54\",\n});\n"],"names":["A11ySystem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-a11y.esm.js","sources":["../lib/utils.ts","../lib/A11y.ts","../lib/constant.ts","../lib/A11ySystem.ts","../lib/__combosPackageMeta.gen.ts"],"sourcesContent":["import { A11yMaskStyle } from './constant';\n\n/**\n * Generate a unique identifier.\n * @param len length\n */\nfunction uuid(len: number) {\n let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n let uuid = [];\n let radix = chars.length;\n for (let i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)];\n return uuid.join('');\n}\n\n/**\n * Apply styles to a DOM element.\n * @param element the DOM element to style\n * @param style style properties\n */\nconst setStyle = (element: HTMLElement, style: A11yMaskStyle) => {\n const { width, height, position, left = 0, top = 0, zIndex, pointerEvents, background } = style;\n element.style.width = `${width}px`;\n element.style.height = `${height}px`;\n element.style.position = position;\n element.style.left = `${left}`;\n element.style.top = `${top}`;\n element.style.zIndex = `${zIndex}`;\n element.style.pointerEvents = pointerEvents;\n element.style.background = background;\n element.style.border = 'none';\n element.style.overflow = 'hidden';\n};\n\nconst setTransform = (element: HTMLElement, transform, ratioX, ratioY) => {\n const { worldTransform } = transform;\n const { a, b, c, d, tx, ty } = worldTransform;\n const matrix = `matrix(${a}, ${b}, ${c}, ${d}, ${tx * ratioX}, ${ty * ratioY})`;\n element.style.transform = `${matrix}`;\n element.style.webkitTransform = `${matrix}`;\n element.style.transformOrigin = 'left top';\n element.style.webkitTransformOrigin = 'left top';\n};\n\nexport { setStyle, setTransform, uuid };\n","import {Component} from '@combos-fun/engine';\nimport {type, step} from '@combos-fun/inspector-decorator';\nimport {uuid} from './utils';\n\nexport interface A11yParams {\n hint: string;\n event?: Component;\n delay?: number;\n role?: string;\n props?: object;\n state?: object;\n attr?: object;\n a11yId?: string;\n [propName: string]: string | object | number;\n}\n\nexport default class A11y extends Component<A11yParams> {\n static componentName: string = 'A11y';\n\n /**\n * Whether the element is interactive.\n */\n @type('boolean') interactive: boolean;\n /**\n * Text read aloud for the accessibility label.\n */\n @type('string') hint: string;\n /**\n * Deprecated: added automatically based on the Event component.\n * The event object.\n */\n event: Component;\n /**\n * Delayed load time (milliseconds).\n */\n @type('number') @step(1) delay: number;\n\n /**\n * The `role` attribute.\n */\n @type('string') role: string;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria-*` value attributes.\n * @example\n * aria-valuemin = \"0\"\n */\n props: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * `aria` state attributes.\n * @example\n * aria-hidden = \"true\"\n */\n state: object;\n\n /**\n * Deprecated: set the attribute on the component instead.\n * Custom attributes.\n */\n attr: object;\n\n /**\n * Auto-generated id for the helper DOM.\n */\n @type('string') a11yId: string;\n\n /**\n * Accessibility component constructor.\n * @param param `interactive` defaults to false; pass true if the GameObject is interactive.\n * @example\n * // Provide read-aloud support for a GameObject\n * new A11y({hint: 'This is a div'})\n * // The GameObject has an event; pass the event object\n * new A11y({hint: 'Click event object', event: event})\n * // Accessibility attributes\n * new A11y({hint:'Button', role: 'button', state: {aria-hidden=\"true\"}})\n * // Custom attributes\n * new A11y({hint: 'Custom attribute', attr: {key: '1'}})\n */\n constructor(param: A11yParams) {\n super();\n Object.assign(this, param);\n const { hint = '', event, delay = 0, attr = {}, role = '', props = {}, state = {} } = param;\n this.hint = hint;\n this.event = event;\n this.delay = delay;\n this.attr = attr;\n this.role = role;\n this.props = props;\n this.state = state;\n this.a11yId = `_${uuid(6)}`;\n }\n}\n","export const POSITION = 'absolute';\nexport const ZINDEX = 3;\n\nexport enum A11yActivate {\n ENABLE = 0,\n DISABLE = 1,\n CHECK = 2,\n}\n\n/**\n * Pointer events for the accessibility DOM.\n */\nexport enum PointerEvents {\n NONE = 'none', // The element is not a mouse-event target; events pass through.\n AUTO = 'auto', // Default behavior.\n}\n\n/**\n * Style of the accessibility DOM layer.\n */\nexport enum MaskBackground {\n DEBUG = 'rgba(255,0,0,0.5)',\n NONE = 'transparent',\n}\n\n/**\n * Type of the accessibility DOM element.\n */\nexport enum ElementType {\n BUTTON = 'button',\n DIV = 'div',\n}\n\n/**\n * Style of the accessibility mask layer.\n */\nexport interface A11yMaskStyle {\n width: number;\n height: number;\n background: string;\n position: string;\n left?: string;\n top?: string;\n zIndex: number;\n pointerEvents: PointerEvents;\n}\n\n/**\n * Click event position.\n */\nexport interface EventPosition {\n x: number;\n y: number;\n}\n","import { System, decorators, ComponentChanged, OBSERVER_TYPE } from '@combos-fun/engine';\nimport type { GameObject } from '@combos-fun/engine';\nimport { RendererSystem, Transform2D } from '@combos-fun/plugin-renderer';\nimport EE from 'eventemitter3';\n\nimport A11y from './A11y';\nimport { setStyle, setTransform } from './utils';\nimport {\n POSITION,\n ZINDEX,\n PointerEvents,\n MaskBackground,\n EventPosition,\n A11yMaskStyle,\n A11yActivate,\n} from './constant';\n\ninterface SystemParam {\n debug?: boolean;\n activate?: A11yActivate;\n delay?: number;\n zIndex?: number;\n checkA11yOpen?: () => Promise<boolean>;\n}\n\nconst notAttr = ['hint', 'event', 'delay', 'attr', 'role', 'props', 'state', 'a11yId', 'name'];\n\nconst getEventFunc = function (event: EE, gameObject: GameObject, e: MouseEvent) {\n ['touchstart', 'touchend', 'tap'].forEach(name => {\n event.emit(name, {\n stopPropagation: () => e.stopPropagation(),\n data: {\n position: this.eventPosition,\n },\n gameObject,\n });\n });\n};\n\n@decorators.componentObserver({\n A11y: ['hint'],\n GameObject: ['inScene'],\n Event: [],\n})\nexport default class A11ySystem extends System {\n static systemName = 'A11ySystem';\n\n /**\n * Accessibility overlay layer.\n */\n div: HTMLDivElement;\n /**\n * Whether debug mode is enabled.\n */\n debug: boolean;\n /**\n * Horizontal scale ratio.\n */\n _ratioX: number;\n /**\n * Vertical scale ratio.\n */\n _ratioY: number;\n /**\n * Event coordinates.\n */\n eventPosition: EventPosition;\n /**\n * Whether accessibility is enabled.\n */\n activate: boolean;\n /**\n * Delay before placing the DOM.\n */\n delay: number;\n cache: Map<string, HTMLElement> = new Map();\n eventCache: Map<string, (e: MouseEvent) => void> = new Map();\n /**\n * The DOM `zIndex`.\n */\n zIndex: number = ZINDEX;\n\n /**\n * Accessibility plugin initializer.\n * @param opt accessibility plugin options\n * @param opt.activate whether to enable accessibility; defaults to AUTO based on the\n * system's screen-reader capability. One of AUTO | ENABLE | DISABLE.\n * @example\n * // Enable debug: accessibility regions show a red translucent background\n * new A11ySystem({debug: true})\n * // Disable accessibility\n * new A11ySystem({activate: A11yActivate.DISABLE})\n */\n constructor(opt?: SystemParam) {\n super(opt);\n }\n\n get ratioX() {\n if (this._ratioX) {\n return this._ratioX;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioX;\n } else {\n return 0;\n }\n }\n }\n get ratioY() {\n if (this._ratioY) {\n return this._ratioY;\n } else {\n const success = this.setRatio();\n if (success) {\n return this._ratioY;\n } else {\n return 0;\n }\n }\n }\n\n async init(opt: SystemParam = {}) {\n const { activate = A11yActivate.CHECK, delay = 100, checkA11yOpen = () => Promise.resolve(false), zIndex } = opt;\n this.delay = delay;\n this.zIndex = zIndex || this.zIndex\n switch (activate) {\n case A11yActivate.CHECK:\n try {\n this.activate = await checkA11yOpen();\n } catch (error) {\n this.activate = false;\n }\n break;\n case A11yActivate.DISABLE:\n this.activate = false;\n break;\n case A11yActivate.ENABLE:\n this.activate = true;\n break;\n }\n this.debug = opt.debug || false;\n if (this.debug) {\n this.activate = true;\n }\n\n if (!this.activate) return;\n // Render the parent container.\n const div = document.createElement('div');\n this.div = div;\n // If a parent node exists, mount this div so children position relative to it;\n // otherwise children position relative to the body.\n if (this.game.canvas.parentNode) {\n this.game.canvas.parentNode.insertBefore(this.div, this.game.canvas);\n }\n }\n setRatio() {\n const { width, height } = this.getCanvasBoundingClientRect();\n const { renderWidth, renderHeight } = this.getRenderRect();\n this._ratioX = width / renderWidth;\n this._ratioY = height / renderHeight;\n if (width || height) {\n this.initDiv();\n return true;\n } else {\n return false;\n }\n }\n getRenderRect() {\n const { params = { width: 300, height: 300 } } = this.game.getSystem(RendererSystem);\n const { height: renderHeight, width: renderWidth } = params;\n return { renderWidth, renderHeight };\n }\n getCanvasBoundingClientRect() {\n // Actual pixel width/height and position of the render canvas relative to the viewport.\n const { width, height, left, top } = this.game.canvas.getBoundingClientRect();\n return { width, height, left, top };\n }\n initDiv() {\n const { pageXOffset, pageYOffset } = window;\n\n const { width, height, left, top } = this.getCanvasBoundingClientRect();\n // Parent container position.\n const style: A11yMaskStyle = {\n width,\n height,\n left: `${left + pageXOffset}px`,\n top: `${top + pageYOffset}px`,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.NONE,\n background: MaskBackground.NONE,\n };\n setStyle(this.div, style);\n // Attach a capture-phase listener on the parent container to track event coordinates.\n this.div.addEventListener(\n 'click',\n e => {\n const currentTarget = e.currentTarget as HTMLDivElement;\n const { left, top } = currentTarget.getBoundingClientRect();\n const x = (e.pageX - left) / this.ratioX;\n const y = (e.pageY - top) / this.ratioY;\n this.eventPosition = { x, y };\n },\n true,\n );\n }\n\n /**\n * Handle plugin updates.\n */\n async update() {\n const changes = this.componentObserver.clear();\n if (!this.activate) {\n return;\n }\n for (const changed of changes) {\n switch (changed.type) {\n case OBSERVER_TYPE.ADD:\n changed.componentName === 'Event' && this.addEvent(changed.gameObject);\n changed.componentName === 'A11y' && this.add(changed);\n break;\n case OBSERVER_TYPE.CHANGE:\n changed.componentName === 'GameObject' && this.transformChange(changed);\n changed.componentName === 'A11y' && this.change(changed);\n break;\n case OBSERVER_TYPE.REMOVE:\n changed.componentName === 'Event' && this.removeEvent(changed);\n changed.componentName === 'A11y' && this.remove(changed);\n }\n }\n }\n\n change(changed: ComponentChanged) {\n const component = changed.component as A11y\n if (changed.prop.prop[0] === 'hint') {\n const dom = this.cache.get(component.a11yId)\n dom?.setAttribute('aria-label', component.hint)\n const pose = changed.gameObject.getComponent(Transform2D);\n pose && this.setPosition(dom, pose)\n }\n }\n\n remove(changed: ComponentChanged) {\n const component = changed.component as A11y;\n if (!component) return;\n const { a11yId } = component;\n const element = this.div.querySelector(`#${a11yId}`);\n element && this.div.removeChild(element);\n this.cache.delete(a11yId);\n }\n\n /**\n * Handle a component being added to a GameObject.\n * @param changed the changed component\n */\n add(changed: ComponentChanged) {\n if (!this.activate) return;\n const component = changed.component as A11y;\n const { gameObject } = changed;\n const { delay, a11yId: id } = component;\n let { event } = component;\n if (!gameObject) return;\n const transform = gameObject.getComponent(Transform2D);\n if (!transform) return;\n const element = document.createElement('div');\n this.cache.set(id, element);\n if (!event) {\n event = gameObject.getComponent('Event');\n }\n setTimeout(() => {\n this.setPosition(element, transform);\n this.setA11yAttr(element, component);\n if (event) {\n this.addEvent(gameObject);\n }\n if (gameObject.scene) {\n this.div.appendChild(element);\n }\n }, delay || this.delay);\n }\n\n // React to scene changes.\n transformChange(changed: ComponentChanged) {\n const { gameObject } = changed;\n const a11yComponent = gameObject.getComponent(A11y) as A11y;\n if (!a11yComponent) return;\n const { a11yId } = a11yComponent;\n if (!gameObject.inScene) {\n // GameObject removed from the scene.\n const dom = this.div.querySelector(`#${a11yId}`);\n dom && this.div.removeChild(dom);\n // this.cache.delete(a11yId)\n } else {\n // GameObject added to the scene.\n // this.div.appendChild(this.cache)\n if (this.cache.has(a11yId)) {\n const addDom = this.cache.get(a11yId);\n addDom && this.div.appendChild(addDom);\n }\n }\n }\n\n /**\n * Attach a listener for the accessibility component.\n * @param element DOM element\n * @param event event component object\n * @param gameObject the GameObject\n */\n setEvent(element: HTMLElement, event: EE, gameObject: GameObject, id) {\n if (!event) {\n return;\n }\n const func = getEventFunc.bind(this, event, gameObject) as (e: MouseEvent) => void;\n this.eventCache.set(id, func);\n element.addEventListener('click', func);\n }\n\n addEvent(gameObject: GameObject) {\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = gameObject.getComponent('Event');\n if (!event) return;\n const element = this.cache.get(a11y.a11yId);\n element && this.setEvent(element, event, gameObject, a11y.a11yId);\n }\n\n removeEvent(changed: ComponentChanged) {\n const { gameObject } = changed;\n const a11y = gameObject.getComponent(A11y) as A11y;\n if (!a11y) return;\n const event = changed.component;\n if (!event) return;\n const { a11yId } = a11y;\n const func = this.eventCache.get(a11yId);\n const element = this.cache.get(a11yId);\n element && element.removeEventListener('click', func);\n }\n\n /**\n * Set accessibility attribute tags.\n * @param element DOM element\n * @param hint accessibility read-aloud text\n * @param interactive whether it is interactive\n */\n setA11yAttr(element: HTMLElement, component: A11y) {\n const { hint, props = {}, state = {}, role, a11yId: id } = component;\n const realRole = role || 'text';\n element.setAttribute('role', realRole);\n element.setAttribute('aria-label', hint);\n element.id = id;\n\n // Backward-compatibility handling.\n const ariaProps = Object.keys(props);\n for (const key of ariaProps) {\n element.setAttribute(key, props[key]);\n }\n const ariaState = Object.keys(state);\n for (const key of ariaState) {\n element.setAttribute(key, state[key]);\n }\n\n for (const key of Object.keys(component)) {\n if (typeof component[key] === 'string' && notAttr.indexOf(key) === -1 && key.indexOf('_') !== 1) {\n element.setAttribute(key, component[key]);\n }\n }\n }\n\n /**\n * Position the accessibility element accordingly.\n * @param element DOM element\n * @param transform position properties\n */\n setPosition(element: HTMLElement, transform: Transform2D) {\n // Positioned relative to the canvas.\n // const { x: anchorX, y: anchorY } = transform.anchor\n // GameObject width/height.\n const { width, height } = transform.size;\n // position\n // const { x: positionX, y: positionY } = transform.position\n // Set the accessibility DOM style; DragonBones animations default to 2px.\n const style: A11yMaskStyle = {\n width: width === 0 ? 1 : width * this.ratioX,\n height: height === 0 ? 1 : height * this.ratioY,\n position: POSITION,\n zIndex: this.zIndex,\n pointerEvents: PointerEvents.AUTO,\n background: this.debug ? MaskBackground.DEBUG : MaskBackground.NONE,\n };\n const transformProps = {\n ...transform,\n };\n setStyle(element, style);\n // Adjust the DOM position.\n setTransform(element, transformProps, this.ratioX, this.ratioY);\n }\n onDestroy() {\n this.div.parentElement.removeChild(this.div);\n this.cache = null;\n this.eventCache = null;\n this.div = null\n }\n}\n","/** Auto-generated by scripts/build-package.mjs — do not edit. */\n\nimport A11ySystem from './A11ySystem';\n\nObject.assign(A11ySystem, {\n packageName: \"@combos-fun/plugin-a11y\",\n packageVersion: \"0.2.0\",\n});\n"],"names":["A11ySystem"],"mappings":";;;;;AAEA;;;AAGG;AACH,SAAS,IAAI,CAAC,GAAW,EAAA;IACvB,IAAI,KAAK,GAAG,gEAAgE,CAAC,KAAK,CAAC,EAAE,CAAC;IACtF,IAAI,IAAI,GAAG,EAAE;AACb,IAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;AAAE,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AAC1E,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB;AAEA;;;;AAIG;AACH,MAAM,QAAQ,GAAG,CAAC,OAAoB,EAAE,KAAoB,KAAI;IAC9D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK;IAC/F,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,KAAK,IAAI;IAClC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,MAAM,IAAI;AACpC,IAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;IACjC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,MAAM,EAAE;AAClC,IAAA,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,aAAa;AAC3C,IAAA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU;AACrC,IAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AAC7B,IAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACnC,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAI;AACvE,IAAA,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS;AACpC,IAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,cAAc;AAC7C,IAAA,MAAM,MAAM,GAAG,CAAA,OAAA,EAAU,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,EAAE,GAAG,MAAM,CAAA,EAAA,EAAK,EAAE,GAAG,MAAM,GAAG;IAC/E,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,MAAM,EAAE;IACrC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,EAAG,MAAM,EAAE;AAC3C,IAAA,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU;AAC1C,IAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,UAAU;AAClD,CAAC;;ACzBa,MAAO,IAAK,SAAQ,SAAqB,CAAA;aAC9C,IAAA,CAAA,aAAa,GAAW,MAAM,CAAC;AAoDtC;;;;;;;;;;;;AAYG;AACH,IAAA,WAAA,CAAY,KAAiB,EAAA;AAC3B,QAAA,KAAK,EAAE;AACP,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1B,QAAA,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,KAAK;AAC3F,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,MAAM,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,CAAC,CAAC,CAAA,CAAE;IAC7B;;AAxEiB,UAAA,CAAA;IAAhB,IAAI,CAAC,SAAS;AAAuB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,aAAA,EAAA,MAAA,CAAA;AAItB,UAAA,CAAA;IAAf,IAAI,CAAC,QAAQ;AAAe,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AASJ,UAAA,CAAA;IAAxB,IAAI,CAAC,QAAQ,CAAC;IAAE,IAAI,CAAC,CAAC;AAAgB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAKvB,UAAA,CAAA;IAAf,IAAI,CAAC,QAAQ;AAAe,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AA2Bb,UAAA,CAAA;IAAf,IAAI,CAAC,QAAQ;AAAiB,CAAA,EAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;;ACnE1B,MAAM,QAAQ,GAAG,UAAU;AAC3B,MAAM,MAAM,GAAG,CAAC;IAEX;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,YAAA,CAAA,YAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;AACX,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACX,CAAC,EAJW,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;AAMxB;;AAEG;AACH,IAAY,aAGX;AAHD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;AAKzB;;AAEG;AACH,IAAY,cAGX;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,mBAA2B;AAC3B,IAAA,cAAA,CAAA,MAAA,CAAA,GAAA,aAAoB;AACtB,CAAC,EAHW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;AAK1B;;AAEG;AACH,IAAY,WAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;ACHvB,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AAE9F,MAAM,YAAY,GAAG,UAAU,KAAS,EAAE,UAAsB,EAAE,CAAa,EAAA;IAC7E,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC/C,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACf,YAAA,eAAe,EAAE,MAAM,CAAC,CAAC,eAAe,EAAE;AAC1C,YAAA,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC,aAAa;AAC7B,aAAA;YACD,UAAU;AACX,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ,CAAC;AAOc,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,MAAM,CAAA;aACrC,IAAA,CAAA,UAAU,GAAG,YAAH,CAAgB;AAqCjC;;;;;;;;;;AAUG;AACH,IAAA,WAAA,CAAY,GAAiB,EAAA;QAC3B,KAAK,CAAC,GAAG,CAAC;AAnBZ,QAAA,IAAA,CAAA,KAAK,GAA6B,IAAI,GAAG,EAAE;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAyC,IAAI,GAAG,EAAE;AAC5D;;AAEG;QACH,IAAA,CAAA,MAAM,GAAW,MAAM;IAevB;AAEA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,OAAO;QACrB;aAAO;AACL,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,OAAO,EAAE;gBACX,OAAO,IAAI,CAAC,OAAO;YACrB;iBAAO;AACL,gBAAA,OAAO,CAAC;YACV;QACF;IACF;AACA,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,IAAI,CAAC,OAAO;QACrB;aAAO;AACL,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,OAAO,EAAE;gBACX,OAAO,IAAI,CAAC,OAAO;YACrB;iBAAO;AACL,gBAAA,OAAO,CAAC;YACV;QACF;IACF;AAEA,IAAA,MAAM,IAAI,CAAC,GAAA,GAAmB,EAAE,EAAA;QAC9B,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG;AAChH,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM;QACnC,QAAQ,QAAQ;YACd,KAAK,YAAY,CAAC,KAAK;AACrB,gBAAA,IAAI;AACF,oBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,aAAa,EAAE;gBACvC;gBAAE,OAAO,KAAK,EAAE;AACd,oBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;gBACvB;gBACA;YACF,KAAK,YAAY,CAAC,OAAO;AACvB,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;gBACrB;YACF,KAAK,YAAY,CAAC,MAAM;AACtB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB;;QAEJ,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,KAAK;AAC/B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;QAEA,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;;QAEpB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;;;QAGd,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QACtE;IACF;IACA,QAAQ,GAAA;QACN,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE;QAC5D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,WAAW;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,YAAY;AACpC,QAAA,IAAI,KAAK,IAAI,MAAM,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,OAAO,IAAI;QACb;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;IACA,aAAa,GAAA;QACX,MAAM,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QACpF,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;AAC3D,QAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE;IACtC;IACA,2BAA2B,GAAA;;AAEzB,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;QAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;IACrC;IACA,OAAO,GAAA;AACL,QAAA,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM;AAE3C,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE;;AAEvE,QAAA,MAAM,KAAK,GAAkB;YAC3B,KAAK;YACL,MAAM;AACN,YAAA,IAAI,EAAE,CAAA,EAAG,IAAI,GAAG,WAAW,CAAA,EAAA,CAAI;AAC/B,YAAA,GAAG,EAAE,CAAA,EAAG,GAAG,GAAG,WAAW,CAAA,EAAA,CAAI;AAC7B,YAAA,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,aAAa,CAAC,IAAI;YACjC,UAAU,EAAE,cAAc,CAAC,IAAI;SAChC;AACD,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;;QAEzB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CACvB,OAAO,EACP,CAAC,IAAG;AACF,YAAA,MAAM,aAAa,GAAG,CAAC,CAAC,aAA+B;YACvD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,qBAAqB,EAAE;AAC3D,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM;AACxC,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM;YACvC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;QAC/B,CAAC,EACD,IAAI,CACL;IACH;AAEA;;AAEG;AACH,IAAA,MAAM,MAAM,GAAA;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AACA,QAAA,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE;AAC7B,YAAA,QAAQ,OAAO,CAAC,IAAI;gBAClB,KAAK,aAAa,CAAC,GAAG;AACpB,oBAAA,OAAO,CAAC,aAAa,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;oBACtE,OAAO,CAAC,aAAa,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;oBACrD;gBACF,KAAK,aAAa,CAAC,MAAM;oBACvB,OAAO,CAAC,aAAa,KAAK,YAAY,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;oBACvE,OAAO,CAAC,aAAa,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;oBACxD;gBACF,KAAK,aAAa,CAAC,MAAM;oBACvB,OAAO,CAAC,aAAa,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBAC9D,OAAO,CAAC,aAAa,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;QAE9D;IACF;AAEA,IAAA,MAAM,CAAC,OAAyB,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAiB;QAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5C,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,IAAI,CAAC;YAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;YACzD,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC;QACrC;IACF;AAEA,IAAA,MAAM,CAAC,OAAyB,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAiB;AAC3C,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC;QACpD,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3B;AAEA;;;AAGG;AACH,IAAA,GAAG,CAAC,OAAyB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,SAAiB;AAC3C,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;QAC9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS;AACvC,QAAA,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS;AACzB,QAAA,IAAI,CAAC,UAAU;YAAE;QACjB,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC;AACtD,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC;QAC1C;QACA,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;YACpC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3B;AACA,YAAA,IAAI,UAAU,CAAC,KAAK,EAAE;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;YAC/B;AACF,QAAA,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IACzB;;AAGA,IAAA,eAAe,CAAC,OAAyB,EAAA;AACvC,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;QAC9B,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAS;AAC3D,QAAA,IAAI,CAAC,aAAa;YAAE;AACpB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;;AAEvB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC;YAChD,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;;QAElC;aAAO;;;YAGL,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;gBACrC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACxC;QACF;IACF;AAEA;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,OAAoB,EAAE,KAAS,EAAE,UAAsB,EAAE,EAAE,EAAA;QAClE,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AACA,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAA4B;QAClF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;AAC7B,QAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;IACzC;AAEA,IAAA,QAAQ,CAAC,UAAsB,EAAA;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAS;AAClD,QAAA,IAAI,CAAC,IAAI;YAAE;QACX,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC;AAC9C,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3C,QAAA,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACnE;AAEA,IAAA,WAAW,CAAC,OAAyB,EAAA;AACnC,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO;QAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAS;AAClD,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QACtC,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC;IACvD;AAEA;;;;;AAKG;IACH,WAAW,CAAC,OAAoB,EAAE,SAAe,EAAA;AAC/C,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,SAAS;AACpE,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,MAAM;AAC/B,QAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;AACtC,QAAA,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC;AACxC,QAAA,OAAO,CAAC,EAAE,GAAG,EAAE;;QAGf,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;YAC3B,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC;QACA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;YAC3B,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC;QAEA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACxC,IAAI,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC/F,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3C;QACF;IACF;AAEA;;;;AAIG;IACH,WAAW,CAAC,OAAoB,EAAE,SAAsB,EAAA;;;;QAItD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI;;;;AAIxC,QAAA,MAAM,KAAK,GAAkB;AAC3B,YAAA,KAAK,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM;AAC5C,YAAA,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM;AAC/C,YAAA,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,aAAa,CAAC,IAAI;AACjC,YAAA,UAAU,EAAE,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI;SACpE;AACD,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,GAAG,SAAS;SACb;AACD,QAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;;AAExB,QAAA,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACjE;IACA,SAAS,GAAA;QACP,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI;IACjB;;AAtWmB,UAAU,GAAA,UAAA,CAAA;IAL9B,UAAU,CAAC,iBAAiB,CAAC;QAC5B,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,CAAC,SAAS,CAAC;AACvB,QAAA,KAAK,EAAE,EAAE;KACV;AACoB,CAAA,EAAA,UAAU,CAuW9B;mBAvWoB,UAAU;;AC5C/B;AAIA,MAAM,CAAC,MAAM,CAACA,YAAU,EAAE;AACxB,IAAA,WAAW,EAAE,yBAAyB;AACtC,IAAA,cAAc,EAAE,OAAO;AACxB,CAAA,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@combos-fun/plugin-a11y",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Accessibility plugin",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "dist/plugin-a11y.esm.js",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"author": "sun668 <q947692259@gmail.com>",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"eventemitter3": "^5.0.4",
|
|
39
|
-
"@combos-fun/
|
|
40
|
-
"@combos-fun/plugin-renderer": "0.0
|
|
41
|
-
"@combos-fun/
|
|
42
|
-
"@combos-fun/plugin-renderer-event": "0.0
|
|
39
|
+
"@combos-fun/engine": "0.2.0",
|
|
40
|
+
"@combos-fun/plugin-renderer": "0.2.0",
|
|
41
|
+
"@combos-fun/inspector-decorator": "0.2.0",
|
|
42
|
+
"@combos-fun/plugin-renderer-event": "0.2.0"
|
|
43
43
|
},
|
|
44
44
|
"scripts": {
|
|
45
45
|
"build": "node ../../scripts/build-package.mjs"
|