@blcklab/anyo-player 0.5.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.
Files changed (181) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -0
  3. package/README.md +304 -0
  4. package/dist/createAnyoPlayer.d.ts +3 -0
  5. package/dist/createAnyoPlayer.d.ts.map +1 -0
  6. package/dist/createAnyoPlayer.js +5 -0
  7. package/dist/createAnyoPlayer.js.map +1 -0
  8. package/dist/element-define.d.ts +2 -0
  9. package/dist/element-define.d.ts.map +1 -0
  10. package/dist/element-define.js +4 -0
  11. package/dist/element-define.js.map +1 -0
  12. package/dist/element.d.ts +66 -0
  13. package/dist/element.d.ts.map +1 -0
  14. package/dist/element.js +363 -0
  15. package/dist/element.js.map +1 -0
  16. package/dist/errors.d.ts +11 -0
  17. package/dist/errors.d.ts.map +1 -0
  18. package/dist/errors.js +21 -0
  19. package/dist/errors.js.map +1 -0
  20. package/dist/index.d.ts +13 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +10 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/inputBindings.d.ts +3 -0
  25. package/dist/inputBindings.d.ts.map +1 -0
  26. package/dist/inputBindings.js +3 -0
  27. package/dist/inputBindings.js.map +1 -0
  28. package/dist/internal/AccessibilityController.d.ts +50 -0
  29. package/dist/internal/AccessibilityController.d.ts.map +1 -0
  30. package/dist/internal/AccessibilityController.js +212 -0
  31. package/dist/internal/AccessibilityController.js.map +1 -0
  32. package/dist/internal/AnyoPlayerCore.d.ts +357 -0
  33. package/dist/internal/AnyoPlayerCore.d.ts.map +1 -0
  34. package/dist/internal/AnyoPlayerCore.js +3880 -0
  35. package/dist/internal/AnyoPlayerCore.js.map +1 -0
  36. package/dist/internal/AudioController.d.ts +37 -0
  37. package/dist/internal/AudioController.d.ts.map +1 -0
  38. package/dist/internal/AudioController.js +167 -0
  39. package/dist/internal/AudioController.js.map +1 -0
  40. package/dist/internal/CaptionController.d.ts +16 -0
  41. package/dist/internal/CaptionController.d.ts.map +1 -0
  42. package/dist/internal/CaptionController.js +83 -0
  43. package/dist/internal/CaptionController.js.map +1 -0
  44. package/dist/internal/ContainerHost.d.ts +17 -0
  45. package/dist/internal/ContainerHost.d.ts.map +1 -0
  46. package/dist/internal/ContainerHost.js +110 -0
  47. package/dist/internal/ContainerHost.js.map +1 -0
  48. package/dist/internal/DesktopInputController.d.ts +80 -0
  49. package/dist/internal/DesktopInputController.d.ts.map +1 -0
  50. package/dist/internal/DesktopInputController.js +367 -0
  51. package/dist/internal/DesktopInputController.js.map +1 -0
  52. package/dist/internal/EmbeddingController.d.ts +33 -0
  53. package/dist/internal/EmbeddingController.d.ts.map +1 -0
  54. package/dist/internal/EmbeddingController.js +161 -0
  55. package/dist/internal/EmbeddingController.js.map +1 -0
  56. package/dist/internal/EventHub.d.ts +7 -0
  57. package/dist/internal/EventHub.d.ts.map +1 -0
  58. package/dist/internal/EventHub.js +27 -0
  59. package/dist/internal/EventHub.js.map +1 -0
  60. package/dist/internal/FrameworkAdapterController.d.ts +46 -0
  61. package/dist/internal/FrameworkAdapterController.d.ts.map +1 -0
  62. package/dist/internal/FrameworkAdapterController.js +165 -0
  63. package/dist/internal/FrameworkAdapterController.js.map +1 -0
  64. package/dist/internal/FullscreenController.d.ts +29 -0
  65. package/dist/internal/FullscreenController.d.ts.map +1 -0
  66. package/dist/internal/FullscreenController.js +122 -0
  67. package/dist/internal/FullscreenController.js.map +1 -0
  68. package/dist/internal/GamepadController.d.ts +54 -0
  69. package/dist/internal/GamepadController.d.ts.map +1 -0
  70. package/dist/internal/GamepadController.js +276 -0
  71. package/dist/internal/GamepadController.js.map +1 -0
  72. package/dist/internal/InputBindingsController.d.ts +34 -0
  73. package/dist/internal/InputBindingsController.d.ts.map +1 -0
  74. package/dist/internal/InputBindingsController.js +223 -0
  75. package/dist/internal/InputBindingsController.js.map +1 -0
  76. package/dist/internal/InteractionPresentationController.d.ts +38 -0
  77. package/dist/internal/InteractionPresentationController.d.ts.map +1 -0
  78. package/dist/internal/InteractionPresentationController.js +208 -0
  79. package/dist/internal/InteractionPresentationController.js.map +1 -0
  80. package/dist/internal/MapController.d.ts +16 -0
  81. package/dist/internal/MapController.d.ts.map +1 -0
  82. package/dist/internal/MapController.js +68 -0
  83. package/dist/internal/MapController.js.map +1 -0
  84. package/dist/internal/PerformanceController.d.ts +94 -0
  85. package/dist/internal/PerformanceController.d.ts.map +1 -0
  86. package/dist/internal/PerformanceController.js +455 -0
  87. package/dist/internal/PerformanceController.js.map +1 -0
  88. package/dist/internal/PlayerCameraController.d.ts +79 -0
  89. package/dist/internal/PlayerCameraController.d.ts.map +1 -0
  90. package/dist/internal/PlayerCameraController.js +551 -0
  91. package/dist/internal/PlayerCameraController.js.map +1 -0
  92. package/dist/internal/ResponsiveController.d.ts +37 -0
  93. package/dist/internal/ResponsiveController.d.ts.map +1 -0
  94. package/dist/internal/ResponsiveController.js +143 -0
  95. package/dist/internal/ResponsiveController.js.map +1 -0
  96. package/dist/internal/RuntimeFactory.d.ts +42 -0
  97. package/dist/internal/RuntimeFactory.d.ts.map +1 -0
  98. package/dist/internal/RuntimeFactory.js +93 -0
  99. package/dist/internal/RuntimeFactory.js.map +1 -0
  100. package/dist/internal/ScreenshotController.d.ts +8 -0
  101. package/dist/internal/ScreenshotController.d.ts.map +1 -0
  102. package/dist/internal/ScreenshotController.js +47 -0
  103. package/dist/internal/ScreenshotController.js.map +1 -0
  104. package/dist/internal/SessionController.d.ts +44 -0
  105. package/dist/internal/SessionController.d.ts.map +1 -0
  106. package/dist/internal/SessionController.js +411 -0
  107. package/dist/internal/SessionController.js.map +1 -0
  108. package/dist/internal/SourceResolver.d.ts +31 -0
  109. package/dist/internal/SourceResolver.d.ts.map +1 -0
  110. package/dist/internal/SourceResolver.js +362 -0
  111. package/dist/internal/SourceResolver.js.map +1 -0
  112. package/dist/internal/StateMachine.d.ts +10 -0
  113. package/dist/internal/StateMachine.d.ts.map +1 -0
  114. package/dist/internal/StateMachine.js +35 -0
  115. package/dist/internal/StateMachine.js.map +1 -0
  116. package/dist/internal/StyleController.d.ts +14 -0
  117. package/dist/internal/StyleController.d.ts.map +1 -0
  118. package/dist/internal/StyleController.js +116 -0
  119. package/dist/internal/StyleController.js.map +1 -0
  120. package/dist/internal/TelemetryController.d.ts +28 -0
  121. package/dist/internal/TelemetryController.d.ts.map +1 -0
  122. package/dist/internal/TelemetryController.js +113 -0
  123. package/dist/internal/TelemetryController.js.map +1 -0
  124. package/dist/internal/TouchInputController.d.ts +73 -0
  125. package/dist/internal/TouchInputController.d.ts.map +1 -0
  126. package/dist/internal/TouchInputController.js +379 -0
  127. package/dist/internal/TouchInputController.js.map +1 -0
  128. package/dist/internal/VfxController.d.ts +11 -0
  129. package/dist/internal/VfxController.d.ts.map +1 -0
  130. package/dist/internal/VfxController.js +23 -0
  131. package/dist/internal/VfxController.js.map +1 -0
  132. package/dist/internal/ViewPreferenceController.d.ts +40 -0
  133. package/dist/internal/ViewPreferenceController.d.ts.map +1 -0
  134. package/dist/internal/ViewPreferenceController.js +132 -0
  135. package/dist/internal/ViewPreferenceController.js.map +1 -0
  136. package/dist/internal/VisibilityController.d.ts +26 -0
  137. package/dist/internal/VisibilityController.d.ts.map +1 -0
  138. package/dist/internal/VisibilityController.js +62 -0
  139. package/dist/internal/VisibilityController.js.map +1 -0
  140. package/dist/internal/XRController.d.ts +42 -0
  141. package/dist/internal/XRController.d.ts.map +1 -0
  142. package/dist/internal/XRController.js +169 -0
  143. package/dist/internal/XRController.js.map +1 -0
  144. package/dist/internal/sourceUrls.d.ts +6 -0
  145. package/dist/internal/sourceUrls.d.ts.map +1 -0
  146. package/dist/internal/sourceUrls.js +79 -0
  147. package/dist/internal/sourceUrls.js.map +1 -0
  148. package/dist/react.d.ts +44 -0
  149. package/dist/react.d.ts.map +1 -0
  150. package/dist/react.js +115 -0
  151. package/dist/react.js.map +1 -0
  152. package/dist/session.d.ts +3 -0
  153. package/dist/session.d.ts.map +1 -0
  154. package/dist/session.js +3 -0
  155. package/dist/session.js.map +1 -0
  156. package/dist/styleText.d.ts +2 -0
  157. package/dist/styleText.d.ts.map +1 -0
  158. package/dist/styleText.js +2 -0
  159. package/dist/styleText.js.map +1 -0
  160. package/dist/styles.css +573 -0
  161. package/dist/types.d.ts +1476 -0
  162. package/dist/types.d.ts.map +1 -0
  163. package/dist/types.js +2 -0
  164. package/dist/types.js.map +1 -0
  165. package/dist/ui/PlayerUI.d.ts +193 -0
  166. package/dist/ui/PlayerUI.d.ts.map +1 -0
  167. package/dist/ui/PlayerUI.js +1201 -0
  168. package/dist/ui/PlayerUI.js.map +1 -0
  169. package/dist/vue.d.ts +97 -0
  170. package/dist/vue.d.ts.map +1 -0
  171. package/dist/vue.js +126 -0
  172. package/dist/vue.js.map +1 -0
  173. package/dist/worldCache.d.ts +16 -0
  174. package/dist/worldCache.d.ts.map +1 -0
  175. package/dist/worldCache.js +46 -0
  176. package/dist/worldCache.js.map +1 -0
  177. package/dist/worldSources.d.ts +19 -0
  178. package/dist/worldSources.d.ts.map +1 -0
  179. package/dist/worldSources.js +51 -0
  180. package/dist/worldSources.js.map +1 -0
  181. package/package.json +114 -0
@@ -0,0 +1,46 @@
1
+ import { AnyoPlayerError } from '../errors.js';
2
+ import type { AnyoPlayer, AnyoPlayerEventMap, AnyoPlayerOptions, AnyoPlayerSource } from '../types.js';
3
+ export type AnyoPlayerAdapterOptions = Omit<AnyoPlayerOptions, 'container' | 'canvas' | 'source'>;
4
+ export type AnyoPlayerFactory = (options: AnyoPlayerOptions) => AnyoPlayer;
5
+ export interface FrameworkAdapterCallbacks {
6
+ playerchange?: (player: AnyoPlayer | null) => void;
7
+ ready?: (event: AnyoPlayerEventMap['ready']) => void;
8
+ error?: (error: AnyoPlayerError) => void;
9
+ statechange?: (event: AnyoPlayerEventMap['statechange']) => void;
10
+ phasechange?: (event: AnyoPlayerEventMap['phasechange']) => void;
11
+ worldreplaced?: (event: AnyoPlayerEventMap['worldreplaced']) => void;
12
+ themechange?: (event: AnyoPlayerEventMap['themechange']) => void;
13
+ disposed?: () => void;
14
+ }
15
+ /**
16
+ * Shared lifecycle authority for framework adapters.
17
+ *
18
+ * The controller deliberately owns no rendering or input behavior. It only
19
+ * constructs the framework-neutral Player, forwards a small event surface,
20
+ * serializes source replacement, and awaits teardown between generations.
21
+ */
22
+ export declare class FrameworkAdapterController {
23
+ private readonly factory;
24
+ private callbacks;
25
+ private playerValue;
26
+ private generation;
27
+ private sourceRevision;
28
+ private sourceValue;
29
+ private disposalPromise;
30
+ private sourceQueue;
31
+ private eventCleanups;
32
+ constructor(callbacks?: FrameworkAdapterCallbacks, factory?: AnyoPlayerFactory);
33
+ get player(): AnyoPlayer | null;
34
+ get source(): AnyoPlayerSource | null;
35
+ setCallbacks(callbacks: FrameworkAdapterCallbacks): void;
36
+ mount(container: HTMLElement, source: AnyoPlayerSource | null | undefined, options?: AnyoPlayerAdapterOptions): Promise<AnyoPlayer | null>;
37
+ requirePlayer(): Promise<AnyoPlayer>;
38
+ setSource(source: AnyoPlayerSource | null | undefined): Promise<void>;
39
+ load(source?: AnyoPlayerSource): Promise<void>;
40
+ activate(): Promise<void>;
41
+ replaceWorld(source: AnyoPlayerSource): Promise<void>;
42
+ disposeAsync(): Promise<void>;
43
+ private bindPlayerEvents;
44
+ private clearPlayerEvents;
45
+ }
46
+ //# sourceMappingURL=FrameworkAdapterController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameworkAdapterController.d.ts","sourceRoot":"","sources":["../../src/internal/FrameworkAdapterController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAiB,MAAM,cAAc,CAAA;AAC7D,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,iBAAiB,EACjB,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,UAAU,CAAA;AAE1E,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAA;IAClD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IACpD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;IAChE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,IAAI,CAAA;IACpE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;IAChE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAMD;;;;;;GAMG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,cAAc,CAAI;IAC1B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,aAAa,CAAwB;gBAG3C,SAAS,GAAE,yBAA8B,EACzC,OAAO,GAAE,iBAAoC;IAM/C,IAAI,MAAM,IAAI,UAAU,GAAG,IAAI,CAE9B;IAED,IAAI,MAAM,IAAI,gBAAgB,GAAG,IAAI,CAEpC;IAED,YAAY,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI;IAIlD,KAAK,CACT,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoCvB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAU1C,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC/D,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC7B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,iBAAiB;CAG1B"}
@@ -0,0 +1,165 @@
1
+ import { createAnyoPlayer } from '../createAnyoPlayer.js';
2
+ import { AnyoPlayerError, toPlayerError } from '../errors.js';
3
+ function hasSource(source) {
4
+ return source !== null && source !== undefined;
5
+ }
6
+ /**
7
+ * Shared lifecycle authority for framework adapters.
8
+ *
9
+ * The controller deliberately owns no rendering or input behavior. It only
10
+ * constructs the framework-neutral Player, forwards a small event surface,
11
+ * serializes source replacement, and awaits teardown between generations.
12
+ */
13
+ export class FrameworkAdapterController {
14
+ factory;
15
+ callbacks;
16
+ playerValue = null;
17
+ generation = 0;
18
+ sourceRevision = 0;
19
+ sourceValue = null;
20
+ disposalPromise = null;
21
+ sourceQueue = Promise.resolve();
22
+ eventCleanups = [];
23
+ constructor(callbacks = {}, factory = createAnyoPlayer) {
24
+ this.callbacks = callbacks;
25
+ this.factory = factory;
26
+ }
27
+ get player() {
28
+ return this.playerValue;
29
+ }
30
+ get source() {
31
+ return this.sourceValue;
32
+ }
33
+ setCallbacks(callbacks) {
34
+ this.callbacks = callbacks;
35
+ }
36
+ async mount(container, source, options = {}) {
37
+ this.sourceValue = source ?? null;
38
+ if (this.playerValue)
39
+ return this.playerValue;
40
+ const generation = ++this.generation;
41
+ if (this.disposalPromise)
42
+ await this.disposalPromise;
43
+ if (generation !== this.generation)
44
+ return null;
45
+ let player;
46
+ try {
47
+ player = this.factory({
48
+ ...options,
49
+ container,
50
+ ...(hasSource(this.sourceValue) ? { source: this.sourceValue } : {}),
51
+ });
52
+ }
53
+ catch (cause) {
54
+ const error = toPlayerError(cause, 'PLAYER_INVALID_STATE', 'The framework adapter could not create Anyo Player.');
55
+ this.callbacks.error?.(error);
56
+ throw error;
57
+ }
58
+ if (generation !== this.generation) {
59
+ await player.disposeAsync();
60
+ return null;
61
+ }
62
+ this.playerValue = player;
63
+ this.bindPlayerEvents(player);
64
+ this.callbacks.playerchange?.(player);
65
+ return player;
66
+ }
67
+ async requirePlayer() {
68
+ if (this.playerValue)
69
+ return this.playerValue;
70
+ if (this.disposalPromise)
71
+ await this.disposalPromise;
72
+ if (this.playerValue)
73
+ return this.playerValue;
74
+ throw new AnyoPlayerError('PLAYER_INVALID_STATE', 'The framework adapter is not mounted.');
75
+ }
76
+ setSource(source) {
77
+ this.sourceValue = source ?? null;
78
+ const revision = ++this.sourceRevision;
79
+ const player = this.playerValue;
80
+ if (!player || !hasSource(this.sourceValue))
81
+ return Promise.resolve();
82
+ const nextSource = this.sourceValue;
83
+ const operation = this.sourceQueue
84
+ .catch(() => undefined)
85
+ .then(async () => {
86
+ if (revision !== this.sourceRevision ||
87
+ player !== this.playerValue ||
88
+ this.generation <= 0)
89
+ return;
90
+ try {
91
+ await player.replaceWorld(nextSource);
92
+ }
93
+ catch (cause) {
94
+ if (revision !== this.sourceRevision || player !== this.playerValue)
95
+ return;
96
+ const error = toPlayerError(cause, 'PLAYER_WORLD_REPLACE_FAILED', 'The framework adapter could not replace the active Anyo world.');
97
+ this.callbacks.error?.(error);
98
+ throw error;
99
+ }
100
+ });
101
+ this.sourceQueue = operation;
102
+ return operation;
103
+ }
104
+ async load(source) {
105
+ if (source !== undefined)
106
+ this.sourceValue = source;
107
+ const player = await this.requirePlayer();
108
+ await player.load(source);
109
+ }
110
+ async activate() {
111
+ const player = await this.requirePlayer();
112
+ await player.activate();
113
+ }
114
+ async replaceWorld(source) {
115
+ this.sourceValue = source;
116
+ const player = await this.requirePlayer();
117
+ await player.replaceWorld(source);
118
+ }
119
+ disposeAsync() {
120
+ if (this.disposalPromise)
121
+ return this.disposalPromise;
122
+ ++this.generation;
123
+ ++this.sourceRevision;
124
+ const player = this.playerValue;
125
+ this.playerValue = null;
126
+ this.clearPlayerEvents();
127
+ this.callbacks.playerchange?.(null);
128
+ if (!player)
129
+ return Promise.resolve();
130
+ const disposal = player.disposeAsync()
131
+ .catch(cause => {
132
+ const error = toPlayerError(cause, 'PLAYER_DISPOSED', 'The framework adapter could not dispose Anyo Player cleanly.');
133
+ this.callbacks.error?.(error);
134
+ })
135
+ .then(() => {
136
+ this.callbacks.disposed?.();
137
+ })
138
+ .finally(() => {
139
+ if (this.disposalPromise === disposal)
140
+ this.disposalPromise = null;
141
+ });
142
+ this.disposalPromise = disposal;
143
+ return disposal;
144
+ }
145
+ bindPlayerEvents(player) {
146
+ this.clearPlayerEvents();
147
+ const forward = (event) => {
148
+ this.eventCleanups.push(player.on(event, payload => {
149
+ const callback = this.callbacks[event];
150
+ callback?.(payload);
151
+ }));
152
+ };
153
+ forward('ready');
154
+ forward('error');
155
+ forward('statechange');
156
+ forward('phasechange');
157
+ forward('worldreplaced');
158
+ forward('themechange');
159
+ }
160
+ clearPlayerEvents() {
161
+ for (const cleanup of this.eventCleanups.splice(0))
162
+ cleanup();
163
+ }
164
+ }
165
+ //# sourceMappingURL=FrameworkAdapterController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrameworkAdapterController.js","sourceRoot":"","sources":["../../src/internal/FrameworkAdapterController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AA0B7D,SAAS,SAAS,CAAC,MAA2C;IAC5D,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,CAAA;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,0BAA0B;IACpB,OAAO,CAAmB;IACnC,SAAS,CAA2B;IACpC,WAAW,GAAsB,IAAI,CAAA;IACrC,UAAU,GAAG,CAAC,CAAA;IACd,cAAc,GAAG,CAAC,CAAA;IAClB,WAAW,GAA4B,IAAI,CAAA;IAC3C,eAAe,GAAyB,IAAI,CAAA;IAC5C,WAAW,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAC9C,aAAa,GAAsB,EAAE,CAAA;IAE7C,YACE,YAAuC,EAAE,EACzC,UAA6B,gBAAgB;QAE7C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,YAAY,CAAC,SAAoC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK,CACT,SAAsB,EACtB,MAA2C,EAC3C,UAAoC,EAAE;QAEtC,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,IAAI,CAAA;QACjC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAA;QAE7C,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,UAAU,CAAA;QACpC,IAAI,IAAI,CAAC,eAAe;YAAE,MAAM,IAAI,CAAC,eAAe,CAAA;QACpD,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAA;QAE/C,IAAI,MAAkB,CAAA;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;gBACpB,GAAG,OAAO;gBACV,SAAS;gBACT,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrE,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,aAAa,CACzB,KAAK,EACL,sBAAsB,EACtB,qDAAqD,CACtD,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;YAC7B,MAAM,KAAK,CAAA;QACb,CAAC;QAED,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAA;YAC3B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;QACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAA;QACrC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAA;QAC7C,IAAI,IAAI,CAAC,eAAe;YAAE,MAAM,IAAI,CAAC,eAAe,CAAA;QACpD,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAA;QAC7C,MAAM,IAAI,eAAe,CACvB,sBAAsB,EACtB,uCAAuC,CACxC,CAAA;IACH,CAAC;IAED,SAAS,CAAC,MAA2C;QACnD,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,IAAI,CAAA;QACjC,MAAM,QAAQ,GAAG,EAAE,IAAI,CAAC,cAAc,CAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;QAC/B,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAA;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW;aAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;aACtB,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,IACE,QAAQ,KAAK,IAAI,CAAC,cAAc;gBAChC,MAAM,KAAK,IAAI,CAAC,WAAW;gBAC3B,IAAI,CAAC,UAAU,IAAI,CAAC;gBACpB,OAAM;YACR,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,QAAQ,KAAK,IAAI,CAAC,cAAc,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW;oBAAE,OAAM;gBAC3E,MAAM,KAAK,GAAG,aAAa,CACzB,KAAK,EACL,6BAA6B,EAC7B,gEAAgE,CACjE,CAAA;gBACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;gBAC7B,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAC5B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QACzC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QACzC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAwB;QACzC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QACzC,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,eAAe,CAAA;QAErD,EAAE,IAAI,CAAC,UAAU,CAAA;QACjB,EAAE,IAAI,CAAC,cAAc,CAAA;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAA;QAEnC,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAErC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE;aACnC,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,MAAM,KAAK,GAAG,aAAa,CACzB,KAAK,EACL,iBAAiB,EACjB,8DAA8D,CAC/D,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAA;QAC7B,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ;gBAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QACpE,CAAC,CAAC,CAAA;QAEJ,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAA;QAC/B,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,gBAAgB,CAAC,MAAkB;QACzC,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,MAAM,OAAO,GAAG,CAGb,KAAW,EAAQ,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAkD,CAAA;gBACvF,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAA;YACrB,CAAC,CAAC,CAAC,CAAA;QACL,CAAC,CAAA;QAED,OAAO,CAAC,OAAO,CAAC,CAAA;QAChB,OAAO,CAAC,OAAO,CAAC,CAAA;QAChB,OAAO,CAAC,aAAa,CAAC,CAAA;QACtB,OAAO,CAAC,aAAa,CAAC,CAAA;QACtB,OAAO,CAAC,eAAe,CAAC,CAAA;QACxB,OAAO,CAAC,aAAa,CAAC,CAAA;IACxB,CAAC;IAEO,iBAAiB;QACvB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAA;IAC/D,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import { AnyoPlayerError } from '../errors.js';
2
+ import type { AnyoPlayerFullscreenOptions } from '../types.js';
3
+ export interface FullscreenControllerCallbacks {
4
+ onChange(fullscreen: boolean): void;
5
+ onError(error: AnyoPlayerError): void;
6
+ }
7
+ export declare class FullscreenController {
8
+ private readonly document;
9
+ private readonly target;
10
+ private readonly enabled;
11
+ private readonly callbacks;
12
+ private lastValue;
13
+ private requestPending;
14
+ private disposed;
15
+ constructor(container: HTMLElement, canvas: HTMLCanvasElement, options: false | AnyoPlayerFullscreenOptions | undefined, callbacks: FullscreenControllerCallbacks);
16
+ get fullscreen(): boolean;
17
+ get available(): boolean;
18
+ enter(): Promise<void>;
19
+ exit(): Promise<void>;
20
+ toggle(): Promise<void>;
21
+ dispose(): void;
22
+ private get fullscreenElement();
23
+ private assertUsable;
24
+ private emitChange;
25
+ private readonly handleChange;
26
+ private readonly handleNativeError;
27
+ private createFailure;
28
+ }
29
+ //# sourceMappingURL=FullscreenController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullscreenController.d.ts","sourceRoot":"","sources":["../../src/internal/FullscreenController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAW9D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;CACtC;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAQ;gBAGtB,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,KAAK,GAAG,2BAA2B,GAAG,SAAS,EACxD,SAAS,EAAE,6BAA6B;IAc1C,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,SAAS,IAAI,OAAO,CAKvB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,OAAO,IAAI,IAAI;IAWf,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAG5B;IAED,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAGjC;IAED,OAAO,CAAC,aAAa;CAOtB"}
@@ -0,0 +1,122 @@
1
+ import { AnyoPlayerError } from '../errors.js';
2
+ export class FullscreenController {
3
+ document;
4
+ target;
5
+ enabled;
6
+ callbacks;
7
+ lastValue = false;
8
+ requestPending = false;
9
+ disposed = false;
10
+ constructor(container, canvas, options, callbacks) {
11
+ this.document = container.ownerDocument;
12
+ this.target = (options !== false && options?.target === 'canvas' ? canvas : container);
13
+ this.enabled = options !== false && options?.enabled !== false;
14
+ this.callbacks = callbacks;
15
+ if (this.enabled) {
16
+ this.document.addEventListener('fullscreenchange', this.handleChange);
17
+ this.document.addEventListener('fullscreenerror', this.handleNativeError);
18
+ this.document.addEventListener('webkitfullscreenchange', this.handleChange);
19
+ this.document.addEventListener('webkitfullscreenerror', this.handleNativeError);
20
+ }
21
+ }
22
+ get fullscreen() {
23
+ return this.fullscreenElement === this.target;
24
+ }
25
+ get available() {
26
+ return this.enabled && (typeof this.target.requestFullscreen === 'function'
27
+ || typeof this.target.webkitRequestFullscreen === 'function');
28
+ }
29
+ async enter() {
30
+ this.assertUsable();
31
+ if (this.fullscreen)
32
+ return;
33
+ const request = this.target.requestFullscreen?.bind(this.target)
34
+ ?? this.target.webkitRequestFullscreen?.bind(this.target);
35
+ if (!request) {
36
+ throw new AnyoPlayerError('PLAYER_FULLSCREEN_UNAVAILABLE', 'Fullscreen is not available for this Anyo Player in the current browser or embedding context.');
37
+ }
38
+ this.requestPending = true;
39
+ try {
40
+ await request();
41
+ this.emitChange();
42
+ }
43
+ catch (cause) {
44
+ throw this.createFailure(cause);
45
+ }
46
+ finally {
47
+ this.requestPending = false;
48
+ }
49
+ }
50
+ async exit() {
51
+ this.assertUsable();
52
+ if (!this.fullscreen)
53
+ return;
54
+ const exit = this.document.exitFullscreen?.bind(this.document)
55
+ ?? this.document.webkitExitFullscreen?.bind(this.document);
56
+ if (!exit) {
57
+ const error = new AnyoPlayerError('PLAYER_FULLSCREEN_UNAVAILABLE', 'The browser cannot exit fullscreen for this Anyo Player.');
58
+ this.callbacks.onError(error);
59
+ throw error;
60
+ }
61
+ this.requestPending = true;
62
+ try {
63
+ await exit();
64
+ this.emitChange();
65
+ }
66
+ catch (cause) {
67
+ throw this.createFailure(cause);
68
+ }
69
+ finally {
70
+ this.requestPending = false;
71
+ }
72
+ }
73
+ async toggle() {
74
+ if (this.fullscreen)
75
+ await this.exit();
76
+ else
77
+ await this.enter();
78
+ }
79
+ dispose() {
80
+ if (this.disposed)
81
+ return;
82
+ this.disposed = true;
83
+ if (this.enabled) {
84
+ this.document.removeEventListener('fullscreenchange', this.handleChange);
85
+ this.document.removeEventListener('fullscreenerror', this.handleNativeError);
86
+ this.document.removeEventListener('webkitfullscreenchange', this.handleChange);
87
+ this.document.removeEventListener('webkitfullscreenerror', this.handleNativeError);
88
+ }
89
+ }
90
+ get fullscreenElement() {
91
+ return this.document.fullscreenElement ?? this.document.webkitFullscreenElement ?? null;
92
+ }
93
+ assertUsable() {
94
+ if (this.disposed) {
95
+ throw new AnyoPlayerError('PLAYER_DISPOSED', 'Anyo Player fullscreen controls were disposed.');
96
+ }
97
+ if (!this.enabled) {
98
+ throw new AnyoPlayerError('PLAYER_FULLSCREEN_UNAVAILABLE', 'Fullscreen is disabled for this Anyo Player.');
99
+ }
100
+ }
101
+ emitChange() {
102
+ const fullscreen = this.fullscreen;
103
+ if (fullscreen === this.lastValue)
104
+ return;
105
+ this.lastValue = fullscreen;
106
+ this.callbacks.onChange(fullscreen);
107
+ }
108
+ handleChange = () => {
109
+ if (this.disposed)
110
+ return;
111
+ this.emitChange();
112
+ };
113
+ handleNativeError = (event) => {
114
+ if (this.disposed || this.requestPending)
115
+ return;
116
+ this.callbacks.onError(this.createFailure(event));
117
+ };
118
+ createFailure(cause) {
119
+ return new AnyoPlayerError('PLAYER_FULLSCREEN_FAILED', 'Anyo Player could not change fullscreen mode. Check browser permissions and iframe allow policies.', { cause });
120
+ }
121
+ }
122
+ //# sourceMappingURL=FullscreenController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullscreenController.js","sourceRoot":"","sources":["../../src/internal/FullscreenController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { AnyoPlayerGamepadOptions, AnyoPlayerGamepadState, AnyoPlayerInputAction, AnyoPlayerInputBindingMap } from '../types.js';
2
+ import type { ExplorationInputTarget } from './DesktopInputController.js';
3
+ interface GamepadControllerCallbacks {
4
+ onEnterRequest(index: number): boolean;
5
+ onExitRequest(): void;
6
+ onAction(action: 'interact' | 'pause'): void;
7
+ onActionValue(action: AnyoPlayerInputAction, value: number, pressed: boolean): void;
8
+ onGamepadsChange(gamepads: readonly AnyoPlayerGamepadState[], activeGamepad: number | null): void;
9
+ onWarning(message: string): void;
10
+ }
11
+ export declare class GamepadController {
12
+ private readonly callbacks;
13
+ private readonly window;
14
+ private readonly navigator;
15
+ private bindings;
16
+ private target;
17
+ private active;
18
+ private disposed;
19
+ private frameHandle;
20
+ private gamepadsValue;
21
+ private activeGamepadValue;
22
+ private reportedActiveGamepadValue;
23
+ private previousActions;
24
+ private lastTimestamp;
25
+ private awaitNeutral;
26
+ private readonly enabledValue;
27
+ private readonly requestedIndex;
28
+ private readonly deadZone;
29
+ private lookSensitivity;
30
+ private invertY;
31
+ constructor(canvas: HTMLCanvasElement, options: boolean | AnyoPlayerGamepadOptions | undefined, bindings: AnyoPlayerInputBindingMap, callbacks: GamepadControllerCallbacks);
32
+ get enabled(): boolean;
33
+ get entered(): boolean;
34
+ get gamepads(): readonly AnyoPlayerGamepadState[];
35
+ get activeGamepad(): number | null;
36
+ setLookSettings(scale: number, invertY: boolean): void;
37
+ configure(bindings: AnyoPlayerInputBindingMap): void;
38
+ bind(target: ExplorationInputTarget): void;
39
+ unbind(): void;
40
+ activate(index: number): boolean;
41
+ deactivate(): void;
42
+ pollNow(timestamp?: number): void;
43
+ dispose(): void;
44
+ private emitGamepadsChange;
45
+ private actionValue;
46
+ private selectGamepad;
47
+ private install;
48
+ private uninstall;
49
+ private readonly handleConnection;
50
+ private schedule;
51
+ private cancelSchedule;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=GamepadController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GamepadController.d.ts","sourceRoot":"","sources":["../../src/internal/GamepadController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EAErB,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEzE,UAAU,0BAA0B;IAClC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IACtC,aAAa,IAAI,IAAI,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAAA;IAC5C,aAAa,CAAC,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACnF,gBAAgB,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IACjG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAwDD,qBAAa,iBAAiB;IAwB1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAvB5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,0BAA0B,CAA2B;IAC7D,OAAO,CAAC,eAAe,CAA2C;IAClE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,OAAO,CAAQ;gBAGrB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,OAAO,GAAG,wBAAwB,GAAG,SAAS,EACvD,QAAQ,EAAE,yBAAyB,EAClB,SAAS,EAAE,0BAA0B;IAaxD,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,OAAO,IAAI,OAAO,CAAuB;IAC7C,IAAI,QAAQ,IAAI,SAAS,sBAAsB,EAAE,CAA2D;IAC5G,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAAmC;IAErE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAKtD,SAAS,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAKpD,IAAI,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAS1C,MAAM,IAAI,IAAI;IAMd,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAUhC,UAAU,IAAI,IAAI;IAYlB,OAAO,CAAC,SAAS,SAAa,GAAG,IAAI;IA+ErC,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAEhC;IAED,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,cAAc;CAKvB"}