@combos-fun/plugin-a11y 0.0.45 → 0.0.47
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/agent-skill.md
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
# `@combos-fun/plugin-a11y` — Agent notes
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Accessibility plugin. Creates a positioned `<div>` overlay over the canvas; for each `GameObject` carrying an `A11y` component, creates a child `<div>` with `aria-label` / `role`. Click on the overlay forwards to the GameObject's `Event` component as `touchstart` / `touchend` / `tap`.
|
|
3
|
+
2D accessibility overlay for `plugin-renderer` and `plugin-renderer-event`; do not use it with the 3D renderer.
|
|
6
4
|
|
|
7
5
|
## When to read
|
|
8
6
|
|
|
9
|
-
Read for
|
|
7
|
+
Read for screen-reader labels, DOM accessibility hit regions, or A11y overlay debugging.
|
|
10
8
|
|
|
11
9
|
## Public API
|
|
12
10
|
|
|
@@ -14,67 +12,43 @@ Read for any accessibility task: screen-reader hints, keyboard-friendly DOM inte
|
|
|
14
12
|
import { A11ySystem, A11y, A11yActivate } from '@combos-fun/plugin-a11y';
|
|
15
13
|
```
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
| Field | Notes |
|
|
20
|
-
|-------|-------|
|
|
21
|
-
| `hint` | Required. Used as `aria-label` |
|
|
22
|
-
| `role` | ARIA role |
|
|
23
|
-
| `delay` | Per-element activation delay |
|
|
24
|
-
| `interactive` | Whether the overlay div is clickable |
|
|
25
|
-
| `a11yId` | Optional stable id |
|
|
26
|
-
| `event` | Forward target (defaults to the GameObject's `Event`) |
|
|
27
|
-
| `props` / `state` / `attr` | Free-form ARIA `aria-*` props |
|
|
28
|
-
|
|
29
|
-
### `A11yActivate`
|
|
15
|
+
`A11y` uses required `hint` as `aria-label`, plus optional `role` and `delay`. `a11yId` is generated and overwrites any supplied value.
|
|
30
16
|
|
|
31
|
-
|
|
32
|
-
|-------|---------|---------|
|
|
33
|
-
| `ENABLE` | `0` | Always on |
|
|
34
|
-
| `DISABLE` | `1` | Always off |
|
|
35
|
-
| `CHECK` | `2` | Use the system's `checkA11yOpen()` callback |
|
|
17
|
+
`event` is deprecated; place `Event` on the same GameObject instead. `props`, `state`, and `attr` are deprecated compatibility fields; set string attributes directly on the `A11y` instance. `attr` is not applied by the current System.
|
|
36
18
|
|
|
37
|
-
|
|
19
|
+
`interactive` also remains as a legacy property, but neither `A11y` nor `A11ySystem` reads it. Click forwarding depends only on a sibling `Event`, so setting `interactive` has no effect.
|
|
38
20
|
|
|
39
|
-
|
|
40
|
-
|-------|------|-------|
|
|
41
|
-
| `debug` | `boolean?` | Red overlay on a11y elements |
|
|
42
|
-
| `activate` | `A11yActivate?` | Default **`CHECK`**, not `ENABLE` |
|
|
43
|
-
| `checkA11yOpen` | `() => Promise<boolean>?` | Used when `activate === CHECK`. Default is `() => Promise.resolve(false)` — overlay stays **off** unless you pass `ENABLE`, `debug: true`, or a real checker |
|
|
44
|
-
| `delay` / `zIndex` | optional | |
|
|
21
|
+
`A11yActivate` is `ENABLE`, `DISABLE`, or `CHECK`. System options are `debug`, `activate`, `checkA11yOpen`, `delay`, and `zIndex`; `activate` defaults to `CHECK`, whose default checker resolves `false`.
|
|
45
22
|
|
|
46
23
|
## Required setup
|
|
47
24
|
|
|
48
|
-
|
|
25
|
+
Register `RendererSystem`, `EventSystem`, then `A11ySystem`. Use `A11yActivate.ENABLE` or provide a real checker.
|
|
49
26
|
|
|
50
27
|
## Runtime behaviour
|
|
51
28
|
|
|
52
|
-
|
|
53
|
-
canvas position and scales accordingly.
|
|
54
|
-
- Click on an overlay child forwards to the matching GameObject's `Event`
|
|
55
|
-
component as `touchstart` → `touchend` → `tap` in sequence.
|
|
56
|
-
- Use Event + A11y on the **same** GameObject. Subscribe to events on
|
|
57
|
-
`Event`, not on `A11y`.
|
|
29
|
+
The System inserts a parent overlay beside the canvas with `pointer-events: none`; each positioned A11y child uses `pointer-events: auto`. A child click forwards `touchstart`, `touchend`, then `tap` to the same GameObject's `Event`.
|
|
58
30
|
|
|
59
31
|
## Common pitfalls
|
|
60
32
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
33
|
+
- The default `CHECK` configuration leaves the overlay disabled.
|
|
34
|
+
- `interactive` does not enable or disable anything; add/remove `Event`.
|
|
35
|
+
- Keep `Event` and `A11y` on the same GameObject.
|
|
36
|
+
- Canvas and overlay parent transforms can cause visual misalignment.
|
|
37
|
+
- Do not persist generated `a11yId` values.
|
|
66
38
|
|
|
67
39
|
## Minimal example
|
|
68
40
|
|
|
69
41
|
```ts
|
|
70
|
-
import { Event, HIT_AREA_TYPE } from '@combos-fun/plugin-renderer-event';
|
|
71
42
|
import { A11y } from '@combos-fun/plugin-a11y';
|
|
43
|
+
import { Event } from '@combos-fun/plugin-renderer-event';
|
|
72
44
|
|
|
73
|
-
|
|
74
|
-
button.addComponent(new
|
|
75
|
-
|
|
45
|
+
button.addComponent(new Event());
|
|
46
|
+
button.addComponent(new A11y({
|
|
47
|
+
hint: 'Start game',
|
|
48
|
+
role: 'button',
|
|
49
|
+
}));
|
|
76
50
|
```
|
|
77
51
|
|
|
78
52
|
## Verification
|
|
79
53
|
|
|
80
|
-
`pnpm --filter @combos-fun/plugin-a11y run build`.
|
|
54
|
+
Run `pnpm --filter @combos-fun/plugin-a11y run build`.
|
package/dist/plugin-a11y.cjs.js
CHANGED
|
@@ -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.0.47",
|
|
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.45\",\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, 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.47\",\n});\n"],"names":["Component","__decorate","type","step","A11yActivate","A11ySystem","System","RendererSystem","OBSERVER_TYPE","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 l=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:"Transform"===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 i=this.cache.get(e.a11yId);i?.setAttribute("aria-label",e.hint),i&&this.setPosition(i,t.gameObject.transform)}}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:i}=t,{delay:n,a11yId:s}=e;let{event:o}=e;if(!i)return;const{transform:r}=i;if(!r)return;const a=document.createElement("div");this.cache.set(s,a),o||(o=i.getComponent("Event")),setTimeout(()=>{this.setPosition(a,r),this.setA11yAttr(a,e),o&&this.addEvent(i),i.scene&&this.div.appendChild(a)},n||this.delay)}transformChange(t){const e=t.component,{gameObject:i}=t,n=i.getComponent(o);if(!n)return;const{a11yId:s}=n;if(e.inScene){if(this.cache.has(s)){const t=this.cache.get(s);t&&this.div.appendChild(t)}}else{const t=this.div.querySelector(`#${s}`);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}};l=t.__decorate([e.decorators.componentObserver({A11y:["hint"],Transform:["inScene"],Event:[]})],l);var g=l;Object.assign(g,{packageName:"@combos-fun/plugin-a11y",packageVersion:"0.0.
|
|
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 l=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:"Transform"===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 i=this.cache.get(e.a11yId);i?.setAttribute("aria-label",e.hint),i&&this.setPosition(i,t.gameObject.transform)}}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:i}=t,{delay:n,a11yId:s}=e;let{event:o}=e;if(!i)return;const{transform:r}=i;if(!r)return;const a=document.createElement("div");this.cache.set(s,a),o||(o=i.getComponent("Event")),setTimeout(()=>{this.setPosition(a,r),this.setA11yAttr(a,e),o&&this.addEvent(i),i.scene&&this.div.appendChild(a)},n||this.delay)}transformChange(t){const e=t.component,{gameObject:i}=t,n=i.getComponent(o);if(!n)return;const{a11yId:s}=n;if(e.inScene){if(this.cache.has(s)){const t=this.cache.get(s);t&&this.div.appendChild(t)}}else{const t=this.div.querySelector(`#${s}`);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}};l=t.__decorate([e.decorators.componentObserver({A11y:["hint"],Transform:["inScene"],Event:[]})],l);var g=l;Object.assign(g,{packageName:"@combos-fun/plugin-a11y",packageVersion:"0.0.47"}),exports.A11y=o,exports.A11ySystem=g;
|
package/dist/plugin-a11y.esm.js
CHANGED
|
@@ -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.0.47",
|
|
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.45\",\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, 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.47\",\n});\n"],"names":["A11ySystem"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@combos-fun/plugin-a11y",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.47",
|
|
4
4
|
"description": "Accessibility plugin",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "dist/plugin-a11y.esm.js",
|
|
@@ -36,9 +36,10 @@
|
|
|
36
36
|
"author": "sun668 <q947692259@gmail.com>",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"eventemitter3": "^5.0.4",
|
|
39
|
-
"@combos-fun/engine": "0.0.
|
|
40
|
-
"@combos-fun/
|
|
41
|
-
"@combos-fun/
|
|
39
|
+
"@combos-fun/engine": "0.0.47",
|
|
40
|
+
"@combos-fun/inspector-decorator": "0.0.47",
|
|
41
|
+
"@combos-fun/plugin-renderer-event": "0.0.47",
|
|
42
|
+
"@combos-fun/plugin-renderer": "0.0.47"
|
|
42
43
|
},
|
|
43
44
|
"scripts": {
|
|
44
45
|
"build": "node ../../scripts/build-package.mjs"
|