@blcklab/anyo-avatar-vue 0.2.0-alpha.2

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 (49) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +9 -0
  3. package/README.md +138 -0
  4. package/dist/AnyoAvatarControls.d.ts +4 -0
  5. package/dist/AnyoAvatarControls.d.ts.map +1 -0
  6. package/dist/AnyoAvatarControls.js +239 -0
  7. package/dist/AnyoAvatarControls.js.map +1 -0
  8. package/dist/AnyoAvatarViewer.d.ts +4 -0
  9. package/dist/AnyoAvatarViewer.d.ts.map +1 -0
  10. package/dist/AnyoAvatarViewer.js +246 -0
  11. package/dist/AnyoAvatarViewer.js.map +1 -0
  12. package/dist/index.d.ts +11 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +10 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/injection.d.ts +6 -0
  17. package/dist/injection.d.ts.map +1 -0
  18. package/dist/injection.js +10 -0
  19. package/dist/injection.js.map +1 -0
  20. package/dist/plugin.d.ts +6 -0
  21. package/dist/plugin.d.ts.map +1 -0
  22. package/dist/plugin.js +16 -0
  23. package/dist/plugin.js.map +1 -0
  24. package/dist/presets.d.ts +4 -0
  25. package/dist/presets.d.ts.map +1 -0
  26. package/dist/presets.js +54 -0
  27. package/dist/presets.js.map +1 -0
  28. package/dist/scene.d.ts +42 -0
  29. package/dist/scene.d.ts.map +1 -0
  30. package/dist/scene.js +431 -0
  31. package/dist/scene.js.map +1 -0
  32. package/dist/source.d.ts +8 -0
  33. package/dist/source.d.ts.map +1 -0
  34. package/dist/source.js +53 -0
  35. package/dist/source.js.map +1 -0
  36. package/dist/style.css +68 -0
  37. package/dist/types.d.ts +252 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +2 -0
  40. package/dist/types.js.map +1 -0
  41. package/dist/useAnyoAvatarViewer.d.ts +49 -0
  42. package/dist/useAnyoAvatarViewer.d.ts.map +1 -0
  43. package/dist/useAnyoAvatarViewer.js +454 -0
  44. package/dist/useAnyoAvatarViewer.js.map +1 -0
  45. package/docs/API.md +78 -0
  46. package/docs/HIGH-END-PROPS.md +63 -0
  47. package/docs/PRESETS.md +14 -0
  48. package/docs/README.md +9 -0
  49. package/package.json +72 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,33 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0-alpha.2
4
+
5
+ - Added npm package metadata and explicit development peers.
6
+
7
+ - Add high-end prop loading controls for strict mode, retries/cache/headers, texture limits, Draco auto/self-hosted decoder paths, and explicit static batching.
8
+ - Add `load.mode: "static" | "animated"`; static props can use Sekai64 repeated-mesh batching while animated props retain embedded/external clip support.
9
+ - Share one Sekai64 AssetManager across scene props for cache/resource reuse.
10
+ - Add recursive per-prop cast/receive-shadow controls.
11
+ - Add `prop-progress` and `prop-diagnostic` events for large asset loading and glTF diagnostics.
12
+ - Preserve the existing scene config format; all additions are optional and JSON-friendly.
13
+
14
+ ## 0.2.0-alpha.1
15
+
16
+ - Add declarative `scene` configuration for host-owned GLB/glTF props with JSON position/rotation/scale/visibility.
17
+ - Add imperative prop loading/removal/transform APIs for local GLB files and remote GLB/glTF URLs.
18
+ - Add per-prop embedded animation playback and external same-rig GLB/glTF animation loading on the shared Sekai64 animation module.
19
+ - Preserve manually loaded scene props across renderer/runtime recreation.
20
+ - Fix transparent mode so `transparent: true` always clears with alpha 0 instead of inheriting the default opaque background.
21
+ - Consume Avatar Viewer 0.2.0-alpha.8, including safe non-exact quality profiles and the shared animation-module runtime hook.
22
+ - Extend the full More panel with scene prop transforms and prop animation controls while keeping minimal/portfolio modes compact.
23
+
24
+ ## 0.1.0-alpha.1
25
+
26
+ - Initial Vue 3 adapter for `@blcklab/anyo-avatar-viewer@0.2.0-alpha.7`.
27
+ - Add globally installable `AnyoAvatarVue` plugin and `createAnyoAvatarVue()` with host defaults.
28
+ - Add dynamic `AnyoAvatarViewer` component with bare, portfolio, viewer and studio presets.
29
+ - Add optional minimal/full built-in controls with advanced options behind More.
30
+ - Add `useAnyoAvatarViewer()` and `useAnyoAvatar()` for custom Vue integrations.
31
+ - Expose model/animation loading, playback, camera, expressions, look-at, visuals, recovery, screenshot and fullscreen APIs.
32
+ - Support manual `File` loading and URL/source-object loading without putting file logic into the core viewer.
33
+ - Keep scene props/multi-avatar orchestration outside the adapter; those remain application-scene responsibilities.
package/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Avelurs Tinio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,138 @@
1
+ # @blcklab/anyo-avatar-vue
2
+
3
+ Vue 3 plugin and dynamic avatar component for `@blcklab/anyo-avatar-viewer`, including portfolio/viewer/studio presets, full viewer controls, manual file loading, JSON scene props, per-prop animation, and high-end glTF loading options.
4
+
5
+ > `0.2.0-alpha.2` is a prerelease and is published under the `next` npm dist-tag.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install vue @blcklab/anyo-avatar-vue@next \
11
+ @blcklab/anyo-avatar-viewer@next \
12
+ @blcklab/anyo-avatar \
13
+ @blcklab/sekai64@next
14
+ ```
15
+
16
+ ```ts
17
+ import { createApp } from 'vue'
18
+ import App from './App.vue'
19
+ import AnyoAvatarVue from '@blcklab/anyo-avatar-vue'
20
+ import '@blcklab/anyo-avatar-vue/style.css'
21
+
22
+ createApp(App)
23
+ .use(AnyoAvatarVue)
24
+ .mount('#app')
25
+ ```
26
+
27
+ ## Portfolio
28
+
29
+ ```vue
30
+ <AnyoAvatarViewer
31
+ preset="portfolio"
32
+ model="/models/me.vrm"
33
+ animation="/animations/idle.vrma"
34
+ autoplay
35
+ transparent
36
+ />
37
+ ```
38
+
39
+ ## Config-driven usage
40
+
41
+ For larger applications, keep configuration outside the component and feed it through `v-bind`.
42
+
43
+ ```ts
44
+ import type { AnyoAvatarViewerProps } from '@blcklab/anyo-avatar-vue'
45
+
46
+ export const avatarConfig = {
47
+ preset: 'portfolio',
48
+ model: '/models/me.vrm',
49
+ animation: '/animations/idle.vrma',
50
+ autoplay: true,
51
+ transparent: true,
52
+ quality: 'sekai-viewer',
53
+ environment: 'studio',
54
+ controls: 'none',
55
+ } satisfies AnyoAvatarViewerProps
56
+ ```
57
+
58
+ ```vue
59
+ <AnyoAvatarViewer v-bind="avatarConfig" />
60
+ ```
61
+
62
+ ## Scene props
63
+
64
+ Use JSON-friendly scene configuration for desks, computers, rooms, furniture, screens, and other non-avatar GLB/glTF models.
65
+
66
+ ```ts
67
+ import type { AnyoSceneConfig } from '@blcklab/anyo-avatar-vue'
68
+
69
+ export const scene = {
70
+ version: 1,
71
+ defaults: {
72
+ load: {
73
+ draco: 'auto',
74
+ cache: true,
75
+ texture: { maxDimension: 8192 },
76
+ },
77
+ render: { castShadow: true, receiveShadow: true },
78
+ },
79
+ props: [
80
+ {
81
+ id: 'desk',
82
+ src: '/models/desk.glb',
83
+ position: [0, 0, -1.2],
84
+ rotation: [0, 0, 0],
85
+ scale: 1,
86
+ load: { mode: 'static', staticBatching: true },
87
+ },
88
+ {
89
+ id: 'computer',
90
+ src: '/models/computer.glb',
91
+ position: [0.7, 0, -1.3],
92
+ load: { mode: 'animated' },
93
+ animations: [
94
+ { clip: 'FanSpin', autoplay: true, loop: 'repeat' },
95
+ ],
96
+ },
97
+ ],
98
+ } satisfies AnyoSceneConfig
99
+ ```
100
+
101
+ ```vue
102
+ <AnyoAvatarViewer
103
+ v-bind="avatarConfig"
104
+ :scene="scene"
105
+ />
106
+ ```
107
+
108
+ Static props can use batching and shared caching. Animated props share the same Sekai64 animation module/frame owner as the avatar. External prop animation uses same-rig GLB/glTF clips; VRMA remains avatar-specific.
109
+
110
+ ## Manual files
111
+
112
+ ```ts
113
+ const handle = viewer.value
114
+ await handle?.loadModelFile(modelFile)
115
+ await handle?.loadAnimationFile(animationFile)
116
+ await handle?.loadPropFile(propFile, {
117
+ position: [0, 0, -1],
118
+ scale: 1,
119
+ })
120
+ ```
121
+
122
+ ## Presets and controls
123
+
124
+ Presets: `bare`, `portfolio`, `viewer`, `studio`. Controls: `none`, `minimal`, `full`. Every preset is overridable through component props.
125
+
126
+ ## Custom UI
127
+
128
+ Use `controls="none"`, scoped slots, or the component template ref when your application needs its own design system. The public handle exposes playback, camera navigation, visuals, expressions, look-at, recovery, fullscreen, screenshots, and scene-prop controls.
129
+
130
+ ## Documentation
131
+
132
+ - [API](docs/API.md)
133
+ - [Presets](docs/PRESETS.md)
134
+ - [High-end props](docs/HIGH-END-PROPS.md)
135
+
136
+ ## License
137
+
138
+ MIT
@@ -0,0 +1,4 @@
1
+ import { type DefineComponent } from 'vue';
2
+ import type { AnyoAvatarControlsProps } from './types.js';
3
+ export declare const AnyoAvatarControls: DefineComponent<AnyoAvatarControlsProps>;
4
+ //# sourceMappingURL=AnyoAvatarControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnyoAvatarControls.d.ts","sourceRoot":"","sources":["../src/AnyoAvatarControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,eAAe,EAAiB,MAAM,KAAK,CAAA;AAGzF,OAAO,KAAK,EAA0B,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEjF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,uBAAuB,CAwOf,CAAA"}
@@ -0,0 +1,239 @@
1
+ import { defineComponent, h, ref, watch } from 'vue';
2
+ import { useAnyoAvatar } from './injection.js';
3
+ export const AnyoAvatarControls = defineComponent({
4
+ name: 'AnyoAvatarControls',
5
+ props: {
6
+ mode: { type: String, default: 'minimal' },
7
+ allowFileLoading: { type: Boolean, default: false },
8
+ quality: { type: String, default: 'sekai-viewer' },
9
+ environment: { type: String, default: 'studio' },
10
+ background: { type: [String, Number, Array], default: '#0a0c10' },
11
+ shadows: { type: Boolean, default: true },
12
+ transparent: { type: Boolean, default: false },
13
+ },
14
+ setup(props) {
15
+ const api = useAnyoAvatar();
16
+ const more = ref(false);
17
+ const selectedClip = ref('');
18
+ const quality = ref(props.quality ?? 'sekai-viewer');
19
+ const environment = ref(props.environment ?? 'studio');
20
+ const shadows = ref(props.shadows ?? true);
21
+ const background = ref(typeof props.background === 'string' && /^#[0-9a-f]{6}$/i.test(props.background) ? props.background : '#0a0c10');
22
+ const expression = ref('');
23
+ const expressionWeight = ref(1);
24
+ const lookX = ref(0);
25
+ const lookY = ref(1.6);
26
+ const lookZ = ref(-2);
27
+ const selectedPropId = ref('');
28
+ const selectedPropClip = ref('');
29
+ watch(() => props.quality, (value) => { if (value)
30
+ quality.value = value; });
31
+ watch(() => props.environment, (value) => { if (value)
32
+ environment.value = value; });
33
+ watch(() => props.shadows, (value) => { if (value !== undefined)
34
+ shadows.value = value; });
35
+ watch(() => props.background, (value) => { if (typeof value === 'string' && /^#[0-9a-f]{6}$/i.test(value))
36
+ background.value = value; });
37
+ function viewer() { return api.state.viewer; }
38
+ function camera() { return api.state.camera; }
39
+ function currentClip() { return selectedClip.value || viewer().clip || viewer().clips[0]?.id || ''; }
40
+ function togglePlayback() { api.togglePlayback(currentClip()); }
41
+ function playSelected() { const id = currentClip(); if (id)
42
+ api.play(id); }
43
+ function activeExpression() { return expression.value || api.state.viewer.expressions.available[0] || ''; }
44
+ function setExpression() { const name = activeExpression(); if (name)
45
+ api.setExpression(name, expressionWeight.value); }
46
+ function applyLookAt() { api.setLookAt([lookX.value, lookY.value, lookZ.value], { space: 'world', eyes: true, head: true, neck: true, smoothing: 0.12 }); }
47
+ function sceneModels() { return api.state.sceneModels; }
48
+ function selectedProp() {
49
+ const models = sceneModels();
50
+ const found = models.find(model => model.id === selectedPropId.value) ?? models[0];
51
+ if (found && selectedPropId.value !== found.id)
52
+ selectedPropId.value = found.id;
53
+ return found;
54
+ }
55
+ function updatePropPosition(index, value) {
56
+ const model = selectedProp();
57
+ if (!model)
58
+ return;
59
+ const position = [...model.position];
60
+ position[index] = value;
61
+ api.updateProp(model.id, { position });
62
+ }
63
+ function updatePropRotation(index, value) {
64
+ const model = selectedProp();
65
+ if (!model)
66
+ return;
67
+ const rotation = [...model.rotation];
68
+ rotation[index] = value;
69
+ api.updateProp(model.id, { rotation });
70
+ }
71
+ function updatePropScale(value) { const model = selectedProp(); if (model)
72
+ api.updateProp(model.id, { scale: value }); }
73
+ function playSelectedProp() { const model = selectedProp(); if (model)
74
+ api.playProp(model.id, selectedPropClip.value || undefined); }
75
+ const button = (label, onClick, attrs = {}) => h('button', { type: 'button', class: 'anyo-avatar-control-button', onClick, ...attrs }, label);
76
+ const section = (title, children) => h('section', { class: 'anyo-avatar-control-section' }, [
77
+ h('div', { class: 'anyo-avatar-control-label' }, title),
78
+ ...children,
79
+ ]);
80
+ return () => {
81
+ const state = viewer();
82
+ const hasModel = state.phase === 'ready' && Boolean(state.model);
83
+ const hasAnimation = state.clips.length > 0;
84
+ const isPlaying = state.status === 'playing';
85
+ const primary = h('div', { class: 'anyo-avatar-control-bar' }, [
86
+ props.allowFileLoading ? button('Avatar', api.openModelPicker) : null,
87
+ button('−', api.zoomOut, { title: 'Zoom out', disabled: !hasModel }),
88
+ button('+', api.zoomIn, { title: 'Zoom in', disabled: !hasModel }),
89
+ button('←', api.rotateLeft, { title: 'Rotate left', disabled: !hasModel }),
90
+ button('→', api.rotateRight, { title: 'Rotate right', disabled: !hasModel }),
91
+ button(isPlaying ? 'Pause' : 'Play', togglePlayback, { disabled: !hasAnimation }),
92
+ button('Fit', api.fit, { disabled: !hasModel }),
93
+ (props.mode ?? 'minimal') === 'full' ? button('More', () => { more.value = !more.value; }, { 'aria-expanded': more.value }) : null,
94
+ ]);
95
+ if ((props.mode ?? 'minimal') !== 'full' || !more.value)
96
+ return h('div', { class: 'anyo-avatar-controls' }, [primary]);
97
+ const clipOptions = [h('option', { value: '' }, 'Choose animation'), ...state.clips.map(clip => h('option', { value: clip.id }, `${clip.name} · ${clip.duration.toFixed(2)}s`))];
98
+ const expressions = state.expressions.available;
99
+ const panel = h('div', { class: 'anyo-avatar-more-panel' }, [
100
+ section('Load', [
101
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--2' }, [
102
+ button('Choose avatar', api.openModelPicker, { disabled: !props.allowFileLoading }),
103
+ button('Add animation', api.openAnimationPicker, { disabled: !props.allowFileLoading || !hasModel }),
104
+ button('Add GLB prop', api.openPropPicker, { disabled: !props.allowFileLoading }),
105
+ ]),
106
+ ]),
107
+ section('Animation', [
108
+ h('select', {
109
+ class: 'anyo-avatar-select', value: currentClip(), disabled: !hasAnimation,
110
+ onChange: (event) => { selectedClip.value = event.target.value; },
111
+ }, clipOptions),
112
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--3' }, [
113
+ button('Play', playSelected, { disabled: !hasAnimation }),
114
+ button('Pause', api.pause, { disabled: !hasAnimation }),
115
+ button('Stop', api.stop, { disabled: !hasAnimation }),
116
+ ]),
117
+ h('label', { class: 'anyo-avatar-field' }, [
118
+ h('span', null, `Seek ${state.time.toFixed(2)} / ${state.duration.toFixed(2)}s`),
119
+ h('input', { type: 'range', min: 0, max: state.duration || 1, step: 0.01, value: state.time, disabled: !state.clip,
120
+ onInput: (event) => api.seek(Number(event.target.value)) }),
121
+ ]),
122
+ h('label', { class: 'anyo-avatar-field' }, [
123
+ h('span', null, `Speed ${state.speed.toFixed(1)}×`),
124
+ h('input', { type: 'range', min: 0, max: 2, step: 0.1, value: state.speed,
125
+ onInput: (event) => api.setSpeed(Number(event.target.value)) }),
126
+ ]),
127
+ ]),
128
+ section('Focus & camera', [
129
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--3' }, [
130
+ button('Body', () => api.focus('body'), { disabled: !hasModel }),
131
+ button('Face', () => api.focus('face'), { disabled: !hasModel }),
132
+ button('Eyes', () => api.focus('eyes'), { disabled: !hasModel }),
133
+ button('Focus ↑', () => api.focusUp(), { disabled: !hasModel }),
134
+ button('Focus ↓', () => api.focusDown(), { disabled: !hasModel }),
135
+ button('Reset', api.resetView, { disabled: !hasModel }),
136
+ ]),
137
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--4' }, [
138
+ button('Pan ←', () => api.panBy(-32, 0), { disabled: !hasModel }),
139
+ button('Pan ↑', () => api.panBy(0, 32), { disabled: !hasModel }),
140
+ button('Pan ↓', () => api.panBy(0, -32), { disabled: !hasModel }),
141
+ button('Pan →', () => api.panBy(32, 0), { disabled: !hasModel }),
142
+ ]),
143
+ h('label', { class: 'anyo-avatar-check' }, [
144
+ h('input', { type: 'checkbox', checked: camera()?.autoRotate ?? false, disabled: !hasModel,
145
+ onChange: (event) => api.setAutoRotate(event.target.checked) }),
146
+ h('span', null, 'Auto rotate'),
147
+ ]),
148
+ ]),
149
+ section('Visuals', [
150
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--2' }, [
151
+ h('label', { class: 'anyo-avatar-field' }, [h('span', null, 'Quality'), h('select', { class: 'anyo-avatar-select', value: quality.value,
152
+ onChange: (event) => { quality.value = event.target.value; api.setQuality(quality.value); } }, [
153
+ 'sekai-viewer', 'character', 'ultra', 'balanced', 'performance',
154
+ ].map(value => h('option', { value }, value === 'sekai-viewer' ? 'Sekai Viewer · Exact' : value)))]),
155
+ h('label', { class: 'anyo-avatar-field' }, [h('span', null, 'Lighting'), h('select', { class: 'anyo-avatar-select', value: environment.value,
156
+ onChange: (event) => { environment.value = event.target.value; api.setEnvironment(environment.value); } }, [
157
+ 'studio', 'soft', 'none',
158
+ ].map(value => h('option', { value }, value)))]),
159
+ ]),
160
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--2' }, [
161
+ h('label', { class: 'anyo-avatar-field' }, [h('span', null, props.transparent ? 'Background (host)' : 'Background'), h('input', { type: 'color', value: background.value, disabled: props.transparent,
162
+ onInput: (event) => { background.value = event.target.value; api.setBackground(background.value); } })]),
163
+ h('label', { class: 'anyo-avatar-check' }, [h('input', { type: 'checkbox', checked: shadows.value,
164
+ onChange: (event) => { shadows.value = event.target.checked; api.setShadows(shadows.value); } }), h('span', null, 'Shadows')]),
165
+ ]),
166
+ props.transparent ? h('p', { class: 'anyo-avatar-muted' }, 'Transparent canvas is active; the host/card supplies the background.') : null,
167
+ ]),
168
+ section('Scene props', sceneModels().length ? (() => {
169
+ const model = selectedProp();
170
+ const clips = model.clips;
171
+ return [
172
+ h('select', { class: 'anyo-avatar-select', value: model.id, onChange: (event) => { selectedPropId.value = event.target.value; selectedPropClip.value = ''; } }, sceneModels().map(item => h('option', { value: item.id }, item.name))),
173
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--3' }, [
174
+ numericValue('X', model.position[0], value => updatePropPosition(0, value)),
175
+ numericValue('Y', model.position[1], value => updatePropPosition(1, value)),
176
+ numericValue('Z', model.position[2], value => updatePropPosition(2, value)),
177
+ numericValue('Rot X', model.rotation[0], value => updatePropRotation(0, value)),
178
+ numericValue('Rot Y', model.rotation[1], value => updatePropRotation(1, value)),
179
+ numericValue('Rot Z', model.rotation[2], value => updatePropRotation(2, value)),
180
+ ]),
181
+ numericValue('Scale', model.scale[0], updatePropScale, 0.05),
182
+ h('label', { class: 'anyo-avatar-check' }, [
183
+ h('input', { type: 'checkbox', checked: model.visible, onChange: (event) => api.setPropVisible(model.id, event.target.checked) }),
184
+ h('span', null, 'Visible'),
185
+ ]),
186
+ h('select', { class: 'anyo-avatar-select', value: selectedPropClip.value || model.currentClip || '', disabled: !clips.length,
187
+ onChange: (event) => { selectedPropClip.value = event.target.value; } }, [h('option', { value: '' }, clips.length ? 'Choose prop clip' : 'No prop animation'), ...clips.map(clip => h('option', { value: clip.id }, `${clip.name} · ${clip.duration.toFixed(2)}s`))]),
188
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--3' }, [
189
+ button('Play prop', playSelectedProp, { disabled: !clips.length }),
190
+ button('Pause prop', () => { api.pauseProp(model.id); }, { disabled: !clips.length }),
191
+ button('Stop prop', () => { api.stopProp(model.id); }, { disabled: !clips.length }),
192
+ ]),
193
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--2' }, [
194
+ button('Add prop animation', () => api.openPropAnimationPicker(model.id), { disabled: !props.allowFileLoading }),
195
+ button('Remove prop', () => api.removeProp(model.id)),
196
+ ]),
197
+ ];
198
+ })() : [
199
+ h('p', { class: 'anyo-avatar-muted' }, 'No scene props loaded.'),
200
+ button('Add GLB prop', api.openPropPicker, { disabled: !props.allowFileLoading }),
201
+ ]),
202
+ section('Expressions', expressions.length ? [
203
+ h('select', { class: 'anyo-avatar-select', value: activeExpression(),
204
+ onChange: (event) => { expression.value = event.target.value; } }, expressions.map(name => h('option', { value: name }, name))),
205
+ h('label', { class: 'anyo-avatar-field' }, [h('span', null, `Weight ${expressionWeight.value.toFixed(2)}`), h('input', { type: 'range', min: 0, max: 1, step: 0.01, value: expressionWeight.value,
206
+ onInput: (event) => { expressionWeight.value = Number(event.target.value); setExpression(); } })]),
207
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--3' }, [button('Apply', setExpression), button('Clear', () => { const name = activeExpression(); if (name)
208
+ api.clearExpression(name); }), button('Reset all', api.resetExpressions)]),
209
+ ] : [h('p', { class: 'anyo-avatar-muted' }, 'No direct VRM expressions are exposed by the current model.')]),
210
+ section('Look at', [
211
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--3' }, [
212
+ numeric('X', lookX), numeric('Y', lookY), numeric('Z', lookZ),
213
+ ]),
214
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--2' }, [button('Apply target', applyLookAt, { disabled: !hasModel }), button('Clear look-at', api.clearLookAt, { disabled: !hasModel })]),
215
+ ]),
216
+ section('Runtime', [
217
+ h('div', { class: 'anyo-avatar-runtime-line' }, [h('span', null, 'Renderer'), h('strong', null, api.state.backend || '—')]),
218
+ h('div', { class: 'anyo-avatar-runtime-line' }, [h('span', null, 'Recovery'), h('strong', null, api.state.recovery?.status ?? '—')]),
219
+ h('div', { class: 'anyo-avatar-grid anyo-avatar-grid--2' }, [
220
+ button('Recover renderer', () => api.recover('Manual recovery request')),
221
+ button(api.state.fullscreen ? 'Exit fullscreen' : 'Fullscreen', api.toggleFullscreen),
222
+ button('Screenshot', () => { void api.screenshot(); }),
223
+ button('Recreate runtime', api.recreate),
224
+ ]),
225
+ ]),
226
+ ]);
227
+ return h('div', { class: 'anyo-avatar-controls' }, [panel, primary]);
228
+ };
229
+ function numericValue(label, value, onValue, step = 0.1) {
230
+ return h('label', { class: 'anyo-avatar-field' }, [h('span', null, label), h('input', { type: 'number', step, value,
231
+ onChange: (event) => onValue(Number(event.target.value)) })]);
232
+ }
233
+ function numeric(label, value) {
234
+ return h('label', { class: 'anyo-avatar-field' }, [h('span', null, label), h('input', { type: 'number', step: 0.05, value: value.value,
235
+ onInput: (event) => { value.value = Number(event.target.value); } })]);
236
+ }
237
+ },
238
+ });
239
+ //# sourceMappingURL=AnyoAvatarControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnyoAvatarControls.js","sourceRoot":"","sources":["../src/AnyoAvatarControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAuC,MAAM,KAAK,CAAA;AAEzF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,CAAC,MAAM,kBAAkB,GAA6C,eAAe,CAAC;IAC1F,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE;QACL,IAAI,EAAE,EAAE,IAAI,EAAE,MAA2D,EAAE,OAAO,EAAE,SAAS,EAAE;QAC/F,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QACnD,OAAO,EAAE,EAAE,IAAI,EAAE,MAAwC,EAAE,OAAO,EAAE,cAAc,EAAE;QACpF,WAAW,EAAE,EAAE,IAAI,EAAE,MAA4C,EAAE,OAAO,EAAE,QAAQ,EAAE;QACtF,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAkB,EAAE,OAAO,EAAE,SAAS,EAAE;QAClF,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QACzC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC/C;IACD,KAAK,CAAC,KAAwC;QAC5C,MAAM,GAAG,GAAG,aAAa,EAAE,CAAA;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACvB,MAAM,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAA;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;QAC1C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACvI,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1B,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAC9B,MAAM,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;QAEhC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAuC,EAAE,EAAE,GAAG,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;QAC7G,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAA2C,EAAE,EAAE,GAAG,IAAI,KAAK;YAAE,WAAW,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;QACzH,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAA0B,EAAE,EAAE,GAAG,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;QAC9G,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAc,EAAE,EAAE,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,CAAC,CAAC,CAAA;QAE/I,SAAS,MAAM,KAAK,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA,CAAC,CAAC;QAC7C,SAAS,MAAM,KAAK,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAA,CAAC,CAAC;QAC7C,SAAS,WAAW,KAAK,OAAO,YAAY,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAA,CAAC,CAAC;QACpG,SAAS,cAAc,KAAK,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAA,CAAC,CAAC;QAC/D,SAAS,YAAY,KAAK,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;QAC1E,SAAS,gBAAgB,KAAK,OAAO,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC;QAC1G,SAAS,aAAa,KAAK,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAC,IAAI,IAAI;YAAE,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;QACvH,SAAS,WAAW,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAC1J,SAAS,WAAW,KAAK,OAAO,GAAG,CAAC,KAAK,CAAC,WAAW,CAAA,CAAC,CAAC;QACvD,SAAS,YAAY;YACnB,MAAM,MAAM,GAAG,WAAW,EAAE,CAAA;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,cAAc,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;YAClF,IAAI,KAAK,IAAI,cAAc,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;gBAAE,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAA;YAC/E,OAAO,KAAK,CAAA;QACd,CAAC;QACD,SAAS,kBAAkB,CAAC,KAAgB,EAAE,KAAa;YACzD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAAC,IAAI,CAAC,KAAK;gBAAE,OAAM;YAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA6B,CAAC;YAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;YACzF,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,SAAS,kBAAkB,CAAC,KAAgB,EAAE,KAAa;YACzD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;YAAC,IAAI,CAAC,KAAK;gBAAE,OAAM;YAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA6B,CAAC;YAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;YACzF,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;QACxC,CAAC;QACD,SAAS,eAAe,CAAC,KAAa,IAAI,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,CAAC,IAAI,KAAK;YAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC;QAC/H,SAAS,gBAAgB,KAAK,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,CAAC,IAAI,KAAK;YAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA,CAAC,CAAC;QAEpI,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,OAAmC,EAAE,QAA6B,EAAE,EAAE,EAAE,CACrG,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,4BAA4B,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,CAAA;QAEhG,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,QAAe,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE;YACzG,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,KAAK,CAAC;YACvD,GAAG,QAAQ;SACZ,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,MAAM,EAAE,CAAA;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAChE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;YAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAA;YAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,EAAE;gBAC7D,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACpE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAClE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC1E,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC5E,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC;gBACjF,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAC/C,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAA,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;aAClI,CAAC,CAAA;YAEF,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;YAEtH,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,kBAAkB,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAChL,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,SAAS,CAAA;YAE/C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE;gBAC1D,OAAO,CAAC,MAAM,EAAE;oBACd,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;wBACnF,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACpG,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;qBAClF,CAAC;iBACH,CAAC;gBACF,OAAO,CAAC,WAAW,EAAE;oBACnB,CAAC,CAAC,QAAQ,EAAE;wBACV,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY;wBAC1E,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAA,CAAC,CAAC;qBAC/F,EAAE,WAAW,CAAC;oBACf,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC;wBACzD,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC;wBACvD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC;qBACtD,CAAC;oBACF,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;wBACzC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;wBAChF,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI;4BAChH,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;qBAC3F,CAAC;oBACF,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;wBACzC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;wBACnD,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;4BACvE,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;qBAC/F,CAAC;iBACH,CAAC;gBACF,OAAO,CAAC,gBAAgB,EAAE;oBACxB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBAChE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBAChE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBAChE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBAC/D,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACjE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;qBACxD,CAAC;oBACF,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACjE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBAChE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACjE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;qBACjE,CAAC;oBACF,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;wBACzC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC,QAAQ;4BACxF,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC9F,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC;qBAC/B,CAAC;iBACH,CAAC;gBACF,OAAO,CAAC,SAAS,EAAE;oBACjB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;gCACrI,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAA6B,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,EAAE;gCAClJ,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa;6BAChE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtG,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK;gCAC1I,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAiC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,EAAE;gCAClK,QAAQ,EAAE,MAAM,EAAE,MAAM;6BACzB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBACnD,CAAC;oBACF,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW;gCACnM,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACtI,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK;gCAC/F,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC7J,CAAC;oBACF,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,sEAAsE,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC1I,CAAC;gBACF,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;oBAClD,MAAM,KAAK,GAAG,YAAY,EAAG,CAAA;oBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;oBACzB,OAAO;wBACL,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAA,CAAC,CAAC,EAAE,EACzL,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACxE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;4BAC1D,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC3E,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC3E,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC3E,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC/E,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;4BAC/E,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;yBAChF,CAAC;wBACF,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC;wBAC5D,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE;4BACzC,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,EAAG,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;4BAC9J,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;yBAC3B,CAAC;wBACF,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM;4BAC1H,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAA,CAAC,CAAC,EAAE,EACpG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC9L,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;4BAC1D,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;4BAClE,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;4BACpF,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;yBACnF,CAAC;wBACF,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;4BAC1D,MAAM,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;4BAChH,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;yBACtD,CAAC;qBACH,CAAA;gBACH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,wBAAwB,CAAC;oBAChE,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;iBAClF,CAAC;gBACF,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC1C,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE;wBAClE,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK,CAAA,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC9J,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK;4BAC/L,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,GAAG,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAC,IAAI,IAAI;4BAAE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;iBAC1O,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,6DAA6D,CAAC,CAAC,CAAC;gBAC5G,OAAO,CAAC,SAAS,EAAE;oBACjB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;qBAC9D,CAAC;oBACF,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC/L,CAAC;gBACF,OAAO,CAAC,SAAS,EAAE;oBACjB,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;oBAC3H,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC;oBACpI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,EAAE;wBAC1D,MAAM,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;wBACxE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC;wBACrF,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,UAAU,EAAE,CAAA,CAAC,CAAC,CAAC;wBACrD,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,QAAQ,CAAC;qBACzC,CAAC;iBACH,CAAC;aACH,CAAC,CAAA;YAEF,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QACtE,CAAC,CAAA;QAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAa,EAAE,OAAgC,EAAE,IAAI,GAAG,GAAG;YAC9F,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;oBACjH,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9F,CAAC;QAED,SAAS,OAAO,CAAC,KAAa,EAAE,KAAwB;YACtD,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;oBACpI,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACtG,CAAC;IACH,CAAC;CACF,CAAwD,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { type DefineComponent } from 'vue';
2
+ import type { AnyoAvatarViewerProps } from './types.js';
3
+ export declare const AnyoAvatarViewer: DefineComponent<AnyoAvatarViewerProps>;
4
+ //# sourceMappingURL=AnyoAvatarViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnyoAvatarViewer.d.ts","sourceRoot":"","sources":["../src/AnyoAvatarViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,eAAe,EAErB,MAAM,KAAK,CAAA;AAaZ,OAAO,KAAK,EAOV,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAGnB,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,qBAAqB,CA2Mb,CAAA"}