@chatlychat/world 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +120 -2
- package/dist/agent.d.ts +59 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +232 -0
- package/dist/agent.js.map +1 -0
- package/dist/bubble.d.ts +36 -0
- package/dist/bubble.d.ts.map +1 -0
- package/dist/bubble.js +108 -0
- package/dist/bubble.js.map +1 -0
- package/dist/capabilities.d.ts +77 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +118 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cards.d.ts +51 -0
- package/dist/cards.d.ts.map +1 -0
- package/dist/cards.js +136 -0
- package/dist/cards.js.map +1 -0
- package/dist/composer.d.ts +25 -0
- package/dist/composer.d.ts.map +1 -0
- package/dist/composer.js +53 -0
- package/dist/composer.js.map +1 -0
- package/dist/examples/tsconfig.tsbuildinfo +1 -0
- package/dist/handlers.d.ts +26 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +41 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +46 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +89 -0
- package/dist/input.js.map +1 -0
- package/dist/layout.d.ts +24 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +69 -0
- package/dist/layout.js.map +1 -0
- package/dist/model.d.ts +25 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +60 -0
- package/dist/model.js.map +1 -0
- package/dist/motion.d.ts +27 -0
- package/dist/motion.d.ts.map +1 -0
- package/dist/motion.js +65 -0
- package/dist/motion.js.map +1 -0
- package/dist/panel.d.ts +77 -0
- package/dist/panel.d.ts.map +1 -0
- package/dist/panel.js +214 -0
- package/dist/panel.js.map +1 -0
- package/dist/selection.d.ts +14 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +21 -0
- package/dist/selection.js.map +1 -0
- package/dist/text.d.ts +26 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +100 -0
- package/dist/text.js.map +1 -0
- package/dist/theme-apply.d.ts +19 -0
- package/dist/theme-apply.d.ts.map +1 -0
- package/dist/theme-apply.js +88 -0
- package/dist/theme-apply.js.map +1 -0
- package/dist/types.d.ts +102 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +41 -0
- package/dist/types.js.map +1 -0
- package/dist/visemes.d.ts +28 -0
- package/dist/visemes.d.ts.map +1 -0
- package/dist/visemes.js +42 -0
- package/dist/visemes.js.map +1 -0
- package/dist/world-api.d.ts +39 -0
- package/dist/world-api.d.ts.map +1 -0
- package/dist/world-api.js +2 -0
- package/dist/world-api.js.map +1 -0
- package/dist/world.d.ts +5 -0
- package/dist/world.d.ts.map +1 -0
- package/dist/world.js +573 -0
- package/dist/world.js.map +1 -0
- package/package.json +67 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../core/dist/host-surface.d.ts","../../../core/dist/types.d.ts","../../../core/dist/message.d.ts","../../../core/dist/world-theme.d.ts","../../../core/dist/session.d.ts","../../../core/dist/speech.d.ts","../../../core/dist/visitor-api.d.ts","../../../core/dist/conversation.d.ts","../../../core/dist/core.d.ts","../../../core/dist/realtime.d.ts","../../../core/dist/voice-signals.d.ts","../../../core/dist/voice-turn.d.ts","../../../core/dist/voice-types.d.ts","../../../core/dist/voice.d.ts","../../../core/dist/storage.d.ts","../../../core/dist/spaces.d.ts","../../../core/dist/blocks.d.ts","../../../core/dist/errors.d.ts","../../../core/dist/world-embodiment.d.ts","../../../core/dist/world-presence.d.ts","../../../core/dist/world-placement.d.ts","../../../core/dist/world-renderers.d.ts","../../../core/dist/index.d.ts","../../src/model.ts","../../src/input.ts","../../src/text.ts","../../src/theme-apply.ts","../../src/types.ts","../../src/panel.ts","../../src/visemes.ts","../../src/agent.ts","../../src/bubble.ts","../../src/capabilities.ts","../../src/layout.ts","../../src/cards.ts","../../src/composer.ts","../../src/handlers.ts","../../src/motion.ts","../../src/selection.ts","../../src/world-api.ts","../../src/world.ts","../../src/index.ts","../../examples/fake-conversation.ts","../../examples/main.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/assert.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/header.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/readable.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/file.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/fetch.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/formdata.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/connector.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/client.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/errors.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/global-origin.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/pool.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/handlers.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/agent.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/mock-client.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/api.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/cookies.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/patch.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/filereader.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/websocket.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/content-type.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/cache.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/interceptors.d.ts","../../../../node_modules/.pnpm/undici-types@5.26.5/node_modules/undici-types/index.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/globals.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/buffer.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/child_process.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/cluster.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/console.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/constants.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/crypto.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/dgram.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/dns.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/domain.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/dom-events.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/events.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/fs.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/http.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/http2.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/https.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/inspector.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/module.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/net.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/os.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/path.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/process.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/punycode.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/querystring.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/readline.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/repl.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/sea.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/stream.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/stream/web.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/test.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/timers.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/tls.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/trace_events.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/tty.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/url.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/util.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/v8.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/vm.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/wasi.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/zlib.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/globals.global.d.ts","../../../../node_modules/.pnpm/@types+node@20.14.10/node_modules/@types/node/index.d.ts","../../../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../../../../node_modules/.pnpm/rollup@4.60.4/node_modules/rollup/dist/rollup.d.ts","../../../../node_modules/.pnpm/rollup@4.60.4/node_modules/rollup/dist/parseast.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/types/hmrpayload.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/types/customevent.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/types/hot.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/dist/node/types.d-agj9qkwt.d.ts","../../../../node_modules/.pnpm/esbuild@0.21.5/node_modules/esbuild/lib/main.d.ts","../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/previous-map.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/input.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/css-syntax-error.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/declaration.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/root.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/warning.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/lazy-result.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/no-work-result.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/processor.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/result.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/document.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/rule.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/node.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/comment.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/container.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/at-rule.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/list.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/postcss.d.ts","../../../../node_modules/.pnpm/postcss@8.5.15/node_modules/postcss/lib/postcss.d.mts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/dist/node/runtime.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/types/importglob.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/types/metadata.d.ts","../../../../node_modules/.pnpm/vite@5.4.8_@types+node@20.14.10_terser@5.51.2/node_modules/vite/dist/node/index.d.ts","../../examples/vite.config.ts","../../src/three.d.ts"],"fileIdsList":[[105],[141],[142,147,176],[143,148,154,155,162,173,184],[143,144,154,162],[145,185],[146,147,155,163],[147,173,181],[148,150,154,162],[141,149],[150,151],[154],[152,154],[141,154],[154,155,156,173,184],[154,155,156,169,173,176],[139,142,189],[150,154,157,162,173,184],[154,155,157,158,162,173,181,184],[157,159,173,181,184],[105,106,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191],[154,160],[161,184,189],[150,154,162,173],[163],[164],[141,165],[162,163,166,183,189],[167],[168],[154,169,170],[169,171,185,187],[142,154,173,174,175,176],[142,173,175],[173,174],[176],[177],[141,173],[154,179,180],[179,180],[147,162,173,181],[182],[162,183],[142,157,168,184],[147,185],[173,186],[161,187],[188],[142,147,154,156,165,173,184,187,189],[173,190],[216],[214,216],[205,213,214,215,217,219],[203],[206,211,216,219],[202,219],[206,207,210,211,212,219],[206,207,208,210,211,219],[203,204,205,206,207,211,212,213,215,216,217,219],[219],[201,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218],[201,219],[206,208,209,211,212,219],[210,219],[211,212,216,219],[204,214],[194,223],[193,194],[116,120,184],[116,173,184],[111],[113,116,181,184],[162,181],[192],[111,192],[113,116,162,184],[108,109,112,115,142,154,173,184],[108,114],[112,116,142,176,184,192],[142,192],[132,142,192],[110,111,192],[116],[110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138],[116,123,124],[114,116,124,125],[115],[108,111,116],[116,120,124,125],[120],[114,116,119,184],[108,113,114,116,120,123],[142,173],[111,116,132,142,189,192],[154,155,157,158,159,162,173,181,184,190,192,194,195,196,197,198,199,200,220,221,222,223],[196,197,198,199],[196,197,198],[196],[197],[194],[62],[61,62,63,65,67],[61,62,64,65,67,68],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82],[62,64],[61,62,65,66],[71,73],[65,71,72],[62,80],[68,79],[62,64,68,79,80,81],[83,102],[102,103,226],[184,224],[83,84,86,87,88,89,90,226],[83,86,87,88,226],[83,88],[83,84,86,87,88,94,226],[88],[84,85,88,89,90,91,92,93,94,95,96,98,99,100,101],[226],[83,85,86,87,88,226],[83,226],[83,84,226],[83],[83,85,91,93,96,99,226],[83,84,85,86,88,89,90,91,92,93,94,95,96,97,98,99,100,226]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true,"impliedFormat":1},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true,"impliedFormat":1},{"version":"15c1c3d7b2e46e0025417ed6d5f03f419e57e6751f87925ca19dc88297053fe6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"fc4ad9cec709f6a891f01b1f9ed8003dc4b5924604773305baa2fb8193a95cf7","baa86bbedbcba00d938ba3dd63224358d39430849244e9b4e49fbeaf8f9f8980","bac858f95ffd1b99d3d5f84f83a8e58428c00a7cf3a154204a6bbd90c9635774","33067ae6fcadf5ed579bfd2c5d9c8ebfe6df497e990d2fced8825e15eaacfc80","5f5e9d1bacbe3fcad65ea4a0a440591e0a2eaad45eb6275d9f8f005d21e29760","c25b75489bb605adb5a0f4e7f072d80711c5f24d98df862799d192f657147c4d","7fc97e8878366107cbabab5d3b764c9227b06c9bec695dafebead5a1e46faa79","08fe09f423b9b94cded50def881c03edb1752a52bb8d0977bb51c96d97617882","579140304f6f95439d2b5a6efaf5a73d21bf0e0051f100d7fe202a72f19808f3","a885e40e9a38dc94f00fbf5a8bc0bd95f4028289e4fd2a713abbff014db1a9f6","fabc2653c11ab686150da387986312cd05844f1818335374b6066f787dd01a7a","564610d4d68c9cd12771ad1cdd7ef941a93a4f1a2f8dc16540b1393543a65711","f107a4e6610d17decd4a40eee954aa3689921ca9685270d7b8e59b657afb557f","096043362ecffc7f77fbeb944031fed553ee8bba22b51ad3e01f9b7eb9e7ddda","6e05ffbb22a22828f228993777c2f257c2081d6f7b21639d1b164c393bb384c9","dfa44f80a5c1782d91f5c21a5dd7c1038ff1bf8e99523fff5a232d0064d52105","4ce10ae799b27e7a0f1362f680ac19c48d6ef7109ef0a8b0481127370a8166e9","15238beaf59444778bf27c6d9e89bf26284c9f6f4ad7e133db8254d7079b9890","bdfdfbc457845c1488fc38294df03b1edf24d4704ec9932d6823b7e5a34e3133","9bf9ac56c83a774608fc0d5d47d72563905ee6084acc909bfab0f30469e9939c","23cd50f80fd26f3f739d7b461890e177b7c86b33b0320337f569f2a3068d46bd","522e06ab22ed8f65a6cbd9841c437806d58fa4f800fd511a76f0aac8882a9b88","85eca0761ce1693fc7c27c007a4c34ac6771e75bf3b38fef182d9d00440c7273","2d47e517b1b2b5242a981d07b423e85f7963cb2168e17a349511bd8d5d4f1686","2625033c974b78981ea7af36431e86b029a2fa8023015d9f0fcd2d43bcf5e810","7d17ed1474b7ab1293610f5c4b2dd4809c424a0a49c2998ea99ce215ba60a6c9","8ae6e6cf9e453dd3716565cebc42209ac4809665158fb94f1ad7a710a13ef76b","16227a3a39a3c11ad92761348b35e6b7b1dfa47cadd236d719f6361c9edf512a","ebb322f593931fd99672571e622b682b9079df63d253faee114c2ec7e9e60b87","414e625305d9363e876f04416d7f5b0e7f85640a1787ec43c353f0b093df07b7","69dee85be0110dcdb5f887d36a763f3e430d2e2c62278e610ae16ba5ee1eaa41","e2695ce26ced8e9495b30d75f08acfaeae69d0900f68cc9068bb94a368cd9668","a14dd3e689bf73412a28d4c5af094bf6c31c35160241d3bb4e1f4a0667af4521","a24a04e44d6f5cad8880202256475169adb361f250ad0bc5231780901fead446","b2f3835c8e3a4ba4c12b2c7f0e29457a61a185a97c5b76641a7c03e2d9c948dc","3e5b759fc178f067ddcc93e07c22f1a16a0cbdc61b65c5183d4c75da5060b2b1","006eb492e10a1bf259a76c3d270ac67eaa7d3855d8330f2cae37f0cd019cd237","bf8af9e5b7d8cf16bc6cb79b9926711d44b5b3f821b8803b2e017d6ca23f1edd","f816751b707d0f66cdeed703aad9842d4ec65eb17020f96dcfa5f3681b5dfd06","3e8027e63b93daff7b0ea987d78da102e137798d373235c6e22488c3181f117c","b04a7f1f2ed21776f44751fa60893d1ea6e55bfbf4503ca1fe99f75471f59967","4b4bd924a51cae2576cff26f2139f172e5592fc36daca6c3caeea1efd0a2dc07","4fb2261f7a8e4c48d76a4ff3966ebf3ad1aa0884ee202ddc252c50e703a50072","8ded9c347d165735e2f2903e85309a40ed0fc8ad91c9424c934a3122d36c97cc",{"version":"2db0dd3aaa2ed285950273ce96ae8a450b45423aa9da2d10e194570f1233fa6b","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","impliedFormat":1},{"version":"3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","impliedFormat":1},{"version":"e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","impliedFormat":1},{"version":"471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","impliedFormat":1},{"version":"c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","impliedFormat":1},{"version":"40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","impliedFormat":1},{"version":"339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","impliedFormat":1},{"version":"9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","impliedFormat":1},{"version":"8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","impliedFormat":1},{"version":"4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1","impliedFormat":1},{"version":"e7be367719c613d580d4b27fdf8fe64c9736f48217f4b322c0d63b2971460918","affectsGlobalScope":true,"impliedFormat":1},{"version":"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36","impliedFormat":1},{"version":"392eadc2af403dd10b4debfbc655c089a7fa6a9750caeb770cfb30051e55e848","affectsGlobalScope":true,"impliedFormat":1},{"version":"62f1c00d3d246e0e3cf0224f91e122d560428ec1ccc36bb51d4574a84f1dbad0","impliedFormat":1},{"version":"53f0960fdcc53d097918adfd8861ffbe0db989c56ffc16c052197bf115da5ed6","impliedFormat":1},{"version":"662163e5327f260b23ca0a1a1ad8a74078aabb587c904fcb5ef518986987eaff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"c48c503c6b3f63baf18257e9a87559b5602a4e960107c762586d2a6a62b64a18","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0c0d1d13be149f790a75b381b413490f98558649428bb916fd2d71a3f47a134","impliedFormat":1},{"version":"3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","impliedFormat":1},{"version":"0364f8bb461d6e84252412d4e5590feda4eb582f77d47f7a024a7a9ff105dfdc","impliedFormat":1},{"version":"5433f7f77cd1fd53f45bd82445a4e437b2f6a72a32070e907530a4fea56c30c8","impliedFormat":1},{"version":"d0ca5d7df114035258a9d01165be309371fcccf0cccd9d57b1453204686d1ed0","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"9a30b7fefd7f8abbca4828d481c61c18e40fe5ff107e113b1c1fcd2c8dcf2743","affectsGlobalScope":true,"impliedFormat":1},{"version":"173b6275a81ebdb283b180654890f46516c21199734fed01a773b1c168b8c45c","impliedFormat":1},{"version":"304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","impliedFormat":1},{"version":"1b9adafe8a7fefaeaf9099a0e06f602903f6268438147b843a33a5233ac71745","impliedFormat":1},{"version":"98273274f2dbb79b0b2009b20f74eca4a7146a3447c912d580cd5d2d94a7ae30","impliedFormat":1},{"version":"c933f7ba4b201c98b14275fd11a14abb950178afd2074703250fe3654fc10cd2","impliedFormat":1},{"version":"2eaa31492906bc8525aff3c3ec2236e22d90b0dfeee77089f196cd0adf0b3e3b","impliedFormat":1},{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f5814f29dbaf8bacd1764aebdf1c8a6eb86381f6a188ddbac0fcbaab855ce52","impliedFormat":1},{"version":"a63d03de72adfb91777784015bd3b4125abd2f5ef867fc5a13920b5649e8f52b","impliedFormat":1},{"version":"d20e003f3d518a7c1f749dbe27c6ab5e3be7b3c905a48361b04a9557de4a6900","impliedFormat":1},{"version":"1d4d78c8b23c9ddaaaa49485e6adc2ec01086dfe5d8d4d36ca4cdc98d2f7e74a","affectsGlobalScope":true,"impliedFormat":1},{"version":"44fc16356b81c0463cc7d7b2b35dcf324d8144136f5bc5ce73ced86f2b3475b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"575fb200043b11b464db8e42cc64379c5fd322b6d787638e005b5ee98a64486d","impliedFormat":1},{"version":"6de2f225d942562733e231a695534b30039bdf1875b377bb7255881f0df8ede8","impliedFormat":1},{"version":"56249fd3ef1f6b90888e606f4ea648c43978ef43a7263aafad64f8d83cd3b8aa","impliedFormat":1},{"version":"139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","impliedFormat":1},{"version":"7b166975fdbd3b37afb64707b98bca88e46577bbc6c59871f9383a7df2daacd1","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"81505c54d7cad0009352eaa21bd923ab7cdee7ec3405357a54d9a5da033a2084","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","impliedFormat":1},{"version":"2ee1645e0df9d84467cfe1d67b0ad3003c2f387de55874d565094464ee6f2927","impliedFormat":1},{"version":"7da97d603bf3dd0000f56467c56cb6efaf5f94692980474925fae6c33412b12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"9cf780e96b687e4bdfd1907ed26a688c18b89797490a00598fa8b8ab683335dd","affectsGlobalScope":true,"impliedFormat":1},{"version":"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","impliedFormat":1},{"version":"9ae88ce9f73446c24b2d2452e993b676da1b31fca5ceb7276e7f36279f693ed1","impliedFormat":1},{"version":"e49d7625faff2a7842e4e7b9b197f972633fca685afcf6b4403400c97d087c36","impliedFormat":1},{"version":"b82c38abc53922b1b3670c3af6f333c21b735722a8f156e7d357a2da7c53a0a0","impliedFormat":1},{"version":"b423f53647708043299ded4daa68d95c967a2ac30aa1437adc4442129d7d0a6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"7245af181218216bacb01fbdf51095617a51661f20d77178c69a377e16fb69ed","affectsGlobalScope":true,"impliedFormat":1},{"version":"4f0fc7b7f54422bd97cfaf558ddb4bca86893839367b746a8f86b60ac7619673","impliedFormat":1},{"version":"4cdd8b6b51599180a387cc7c1c50f49eca5ce06595d781638fd0216520d98246","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"8704423bf338bff381ebc951ed819935d0252d90cd6de7dffe5b0a5debb65d07","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c6929fd7cbf38499b6a600b91c3b603d1d78395046dc3499b2b92d01418b94b","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ee70b8037ecdf0de6c04f35277f253663a536d7e38f1539d270e4e916d225a3f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"282f98006ed7fa9bb2cd9bdbe2524595cfc4bcd58a0bb3232e4519f2138df811","impliedFormat":1},{"version":"6222e987b58abfe92597e1273ad7233626285bc2d78409d4a7b113d81a83496b","impliedFormat":1},{"version":"cbe726263ae9a7bf32352380f7e8ab66ee25b3457137e316929269c19e18a2be","impliedFormat":1},{"version":"8b96046bf5fb0a815cba6b0880d9f97b7f3a93cf187e8dcfe8e2792e97f38f87","impliedFormat":99},{"version":"bacf2c84cf448b2cd02c717ad46c3d7fd530e0c91282888c923ad64810a4d511","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"cc4a4903fb698ca1d961d4c10dce658aa3a479faf40509d526f122b044eaf6a4","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"370bde134aa8c2abc926d0e99d3a4d5d5dba65c6ee65459137e4f02670cbf841","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"2977b7884aedc895a1d0c9c210c7cf3272c29d6959a08a6fa3ff71e0aff08175","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"e3cf0611709328b449ec13f8c436712d62003620ce480139fae46ce001c2ee9f","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"82e687ebd99518bc63ea04b0c3810fb6e50aa6942decd0ca6f7a56d9b9a212a6","impliedFormat":99},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"8f07f2b6514744ac96e51d7cb8518c0f4de319471237ea10cf688b8d0e9d0225","impliedFormat":1},{"version":"9ae0ca65717af0d3b554a26fd333ad9c78ad3910ad4b22140ff02acb63076927","impliedFormat":99},"b90284f588b4981e7e0846d4ab645cd6b68c5204f656af5782e03a255675a4b5","fe77c8d048839e011646d17b3071a813946e30adefce5599d89a75cd40583359"],"root":[103,104,225,226],"options":{"allowSyntheticDefaultImports":true,"alwaysStrict":true,"composite":false,"declaration":false,"declarationMap":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"exactOptionalPropertyTypes":false,"experimentalDecorators":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitThis":true,"noPropertyAccessFromIndexSignature":false,"noUncheckedIndexedAccess":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"..","rootDir":"../..","skipLibCheck":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[105,1],[106,1],[141,2],[142,3],[143,4],[144,5],[145,6],[146,7],[147,8],[148,9],[149,10],[150,11],[151,11],[153,12],[152,13],[154,14],[155,15],[156,16],[140,17],[157,18],[158,19],[159,20],[192,21],[160,22],[161,23],[162,24],[163,25],[164,26],[165,27],[166,28],[167,29],[168,30],[169,31],[170,31],[171,32],[173,33],[175,34],[174,35],[176,36],[177,37],[178,38],[179,39],[180,40],[181,41],[182,42],[183,43],[184,44],[185,45],[186,46],[187,47],[188,48],[189,49],[190,50],[217,51],[215,52],[216,53],[204,54],[205,52],[212,55],[203,56],[208,57],[209,58],[214,59],[220,60],[219,61],[202,62],[210,63],[211,64],[206,65],[213,51],[207,66],[195,67],[194,68],[123,69],[130,70],[122,69],[137,71],[114,72],[113,73],[136,74],[131,75],[134,76],[116,77],[115,78],[111,79],[110,80],[133,81],[112,82],[117,83],[121,83],[139,84],[138,83],[125,85],[126,86],[128,87],[124,88],[127,89],[132,74],[119,90],[120,91],[129,92],[109,93],[135,94],[224,95],[221,96],[199,97],[197,98],[198,99],[223,100],[77,101],[68,102],[69,103],[83,104],[63,101],[70,101],[65,105],[76,101],[75,101],[67,106],[72,107],[73,108],[74,107],[79,109],[80,110],[82,111],[103,112],[104,113],[225,114],[91,115],[92,116],[93,117],[95,118],[96,119],[97,117],[102,120],[85,121],[84,121],[98,121],[89,122],[86,123],[87,123],[226,121],[88,124],[90,125],[100,126],[101,127]],"semanticDiagnosticsPerFile":[[104,[{"start":11,"length":12,"messageText":"Module '\"three\"' has no exported member 'AmbientLight'.","category":1,"code":2305},{"start":38,"length":5,"messageText":"Module '\"three\"' has no exported member 'Clock'.","category":1,"code":2305},{"start":45,"length":5,"messageText":"Module '\"three\"' has no exported member 'Color'.","category":1,"code":2305},{"start":52,"length":16,"messageText":"Module '\"three\"' has no exported member 'DirectionalLight'.","category":1,"code":2305},{"start":70,"length":10,"messageText":"Module '\"three\"' has no exported member 'GridHelper'.","category":1,"code":2305},{"start":129,"length":5,"messageText":"Module '\"three\"' has no exported member 'Scene'.","category":1,"code":2305},{"start":136,"length":13,"messageText":"Module '\"three\"' has no exported member 'WebGLRenderer'.","category":1,"code":2305},{"start":2515,"length":8,"code":2339,"category":1,"messageText":"Property 'emissive' does not exist on type 'MeshStandardMaterial'."},{"start":3042,"length":1,"messageText":"Parameter 'e' implicitly has an 'any' type.","category":1,"code":7006},{"start":3289,"length":6,"code":2339,"category":1,"messageText":"Property 'aspect' does not exist on type 'PerspectiveCamera'."},{"start":3333,"length":22,"code":2339,"category":1,"messageText":"Property 'updateProjectionMatrix' does not exist on type 'PerspectiveCamera'."}]]],"affectedFilesPendingEmit":[103,104,225,91,92,93,95,96,97,102,85,94,84,98,89,99,86,87,88,90,100,101],"version":"5.6.2"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ConversationLike } from './types.js';
|
|
2
|
+
import type { BlockHandlers, ConversationMessage } from '@chatlychat/core';
|
|
3
|
+
export interface CardAction {
|
|
4
|
+
readonly kind: string;
|
|
5
|
+
readonly id?: string;
|
|
6
|
+
readonly value?: string;
|
|
7
|
+
readonly payload?: Readonly<Record<string, unknown>>;
|
|
8
|
+
readonly silent?: boolean;
|
|
9
|
+
readonly event?: string;
|
|
10
|
+
readonly data?: Readonly<Record<string, unknown>>;
|
|
11
|
+
readonly href?: string;
|
|
12
|
+
readonly canvasId?: string;
|
|
13
|
+
readonly params?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface HandlerHooks {
|
|
16
|
+
/** A host_event press. Resolves to whether something claimed it. */
|
|
17
|
+
readonly hostEvent: (event: string, data: Readonly<Record<string, unknown>>, action: {
|
|
18
|
+
readonly messageId: string;
|
|
19
|
+
readonly actionId: string;
|
|
20
|
+
}) => Promise<boolean>;
|
|
21
|
+
readonly openUrl: (href: string) => void;
|
|
22
|
+
}
|
|
23
|
+
/** A card's own actions, by explicit `id` or by position (`a0`, `a1`…). */
|
|
24
|
+
export declare function cardActions(block: Readonly<Record<string, unknown>>): readonly CardAction[];
|
|
25
|
+
export declare function makeHandlers(conversation: ConversationLike, message: ConversationMessage, title: string, actions: readonly CardAction[], hooks: HandlerHooks): BlockHandlers;
|
|
26
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,MAAM,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,UAAU,EAAE,CAE3F;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,KAAK,EAAE,YAAY,GAClB,aAAa,CA2Bf"}
|
package/dist/handlers.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three things a visitor can do to a block, as the calls the core already
|
|
3
|
+
* makes. Handed to every renderer — default or override — unchanged.
|
|
4
|
+
*/
|
|
5
|
+
import { WorldError } from './types.js';
|
|
6
|
+
/** A card's own actions, by explicit `id` or by position (`a0`, `a1`…). */
|
|
7
|
+
export function cardActions(block) {
|
|
8
|
+
return Array.isArray(block['actions']) ? block['actions'] : [];
|
|
9
|
+
}
|
|
10
|
+
export function makeHandlers(conversation, message, title, actions, hooks) {
|
|
11
|
+
return {
|
|
12
|
+
select: (payload) => conversation.postback({ body: title, payload: { ...payload } }),
|
|
13
|
+
react: async (emoji) => {
|
|
14
|
+
await conversation.react(message.id, emoji);
|
|
15
|
+
},
|
|
16
|
+
press: async (actionId) => {
|
|
17
|
+
const idx = actions.findIndex((a, i) => (a.id ?? `a${String(i)}`) === actionId);
|
|
18
|
+
const a = idx < 0 ? undefined : actions[idx];
|
|
19
|
+
if (a === undefined) {
|
|
20
|
+
throw new WorldError('unknown_action', `no action "${actionId}" on this block`);
|
|
21
|
+
}
|
|
22
|
+
if (a.kind === 'postback' && a.value !== undefined) {
|
|
23
|
+
await conversation.postback({
|
|
24
|
+
body: a.value,
|
|
25
|
+
...(a.payload === undefined ? {} : { payload: { ...a.payload } }),
|
|
26
|
+
...(a.silent === true ? { silent: true } : {}),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else if (a.kind === 'host_event' && a.event !== undefined) {
|
|
30
|
+
await hooks.hostEvent(a.event, a.data ?? {}, { messageId: message.id, actionId });
|
|
31
|
+
}
|
|
32
|
+
else if (a.kind === 'url' && a.href !== undefined) {
|
|
33
|
+
hooks.openUrl(a.href);
|
|
34
|
+
}
|
|
35
|
+
else if (a.kind === 'step' && a.canvasId !== undefined) {
|
|
36
|
+
await conversation.requestStep(a.canvasId, a.params);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4BxC,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,KAAwC;IAClE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,KAAK,CAAC,SAAS,CAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,YAA8B,EAC9B,OAA4B,EAC5B,KAAa,EACb,OAA8B,EAC9B,KAAmB;IAEnB,OAAO;QACL,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;QACpF,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;YAChF,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,cAAc,QAAQ,iBAAiB,CAAC,CAAC;YAClF,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,YAAY,CAAC,QAAQ,CAAC;oBAC1B,IAAI,EAAE,CAAC,CAAC,KAAK;oBACb,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;oBACjE,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/C,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5D,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpF,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzD,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@chatlychat/world` — a Chatly conversation in a three.js scene.
|
|
3
|
+
*
|
|
4
|
+
* const world = createWorld({ conversation, camera, theme: core.worldTheme });
|
|
5
|
+
* scene.add(world.root);
|
|
6
|
+
* renderer.setAnimationLoop(() => world.update(clock.getDelta()));
|
|
7
|
+
*
|
|
8
|
+
* `three` and `@chatlychat/core` are peer dependencies; this package has no
|
|
9
|
+
* others.
|
|
10
|
+
*/
|
|
11
|
+
export { createWorld } from './world.js';
|
|
12
|
+
export type { ChatlyWorld } from './world-api.js';
|
|
13
|
+
export type { Composer } from './composer.js';
|
|
14
|
+
export { WORLD_CONTRACT, WorldError, type ConversationLike, type PanelFollow, type SoundCue, type SoundKind, type WorldAnchors, type WorldErrorCode, type WorldNodeRenderers, type WorldObjectName, type WorldOptions, } from './types.js';
|
|
15
|
+
export { CapabilityRegistry, type ActionContext, type ActionHandler, type ActionOutcome, type ActionReport, type RegisterOptions, type StandardAction, type WorldActionMap, } from './capabilities.js';
|
|
16
|
+
export { GRID_PLACEMENTS, layoutCards, type GridLayout, type GridPlacement, type Mount, type Pose, } from './layout.js';
|
|
17
|
+
export { bubbleScale } from './bubble.js';
|
|
18
|
+
export { DEAD_METRES, DEAD_YAW, lazyStep, type FollowPose, type FollowState } from './panel.js';
|
|
19
|
+
export { buildGrid, defaultCard, formatPrice, isHighlighted, readCard, type CardData, } from './cards.js';
|
|
20
|
+
export { anchorOffset, fitModel, gltfLoader, type LoadedModel, type ModelAnchor, type ModelLoader, } from './model.js';
|
|
21
|
+
export { readVisemes, visemeAt, type Viseme, type VisemeTrack } from './visemes.js';
|
|
22
|
+
export { Selection } from './selection.js';
|
|
23
|
+
export { Motion } from './motion.js';
|
|
24
|
+
export { AgentBody, type GazeTarget } from './agent.js';
|
|
25
|
+
export { interactive, pickRay, type Hit, type Interactive, type InteractiveKind } from './input.js';
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,IAAI,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,EACR,KAAK,QAAQ,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@chatlychat/world` — a Chatly conversation in a three.js scene.
|
|
3
|
+
*
|
|
4
|
+
* const world = createWorld({ conversation, camera, theme: core.worldTheme });
|
|
5
|
+
* scene.add(world.root);
|
|
6
|
+
* renderer.setAnimationLoop(() => world.update(clock.getDelta()));
|
|
7
|
+
*
|
|
8
|
+
* `three` and `@chatlychat/core` are peer dependencies; this package has no
|
|
9
|
+
* others.
|
|
10
|
+
*/
|
|
11
|
+
export { createWorld } from './world.js';
|
|
12
|
+
export { WORLD_CONTRACT, WorldError, } from './types.js';
|
|
13
|
+
export { CapabilityRegistry, } from './capabilities.js';
|
|
14
|
+
export { GRID_PLACEMENTS, layoutCards, } from './layout.js';
|
|
15
|
+
export { bubbleScale } from './bubble.js';
|
|
16
|
+
export { DEAD_METRES, DEAD_YAW, lazyStep } from './panel.js';
|
|
17
|
+
export { buildGrid, defaultCard, formatPrice, isHighlighted, readCard, } from './cards.js';
|
|
18
|
+
export { anchorOffset, fitModel, gltfLoader, } from './model.js';
|
|
19
|
+
export { readVisemes, visemeAt } from './visemes.js';
|
|
20
|
+
export { Selection } from './selection.js';
|
|
21
|
+
export { Motion } from './motion.js';
|
|
22
|
+
export { AgentBody } from './agent.js';
|
|
23
|
+
export { interactive, pickRay } from './input.js';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,OAAO,EACL,cAAc,EACd,UAAU,GAUX,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,GAQnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,WAAW,GAKZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AAChG,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,GAET,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,UAAU,GAIX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAiC,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAmB,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAoD,MAAM,YAAY,CAAC"}
|
package/dist/input.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Picking: a ray in, an interactive thing out. The host owns input — its
|
|
3
|
+
* controllers, hands, gaze and mouse — so this is only the part that knows
|
|
4
|
+
* which of OUR objects a ray hit.
|
|
5
|
+
*
|
|
6
|
+
* Anything a renderer wants tappable is marked with `interactive(obj, kind,
|
|
7
|
+
* activate)`; `pick` walks up from whatever mesh the ray struck to the first
|
|
8
|
+
* marked ancestor, so a renderer marks the root of its node and every child
|
|
9
|
+
* works. An override can opt out of the world's default tap by setting
|
|
10
|
+
* `userData.cl3Handled`.
|
|
11
|
+
*/
|
|
12
|
+
import { Vector3, type Camera, type Object3D } from 'three';
|
|
13
|
+
export type InteractiveKind = 'card' | 'release' | 'send' | 'field';
|
|
14
|
+
export interface Interactive {
|
|
15
|
+
readonly kind: InteractiveKind;
|
|
16
|
+
readonly activate: () => void;
|
|
17
|
+
}
|
|
18
|
+
export interface Hit extends Interactive {
|
|
19
|
+
readonly object: Object3D;
|
|
20
|
+
readonly distance: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function interactive(obj: Object3D, kind: InteractiveKind, activate: () => void): void;
|
|
23
|
+
export declare function pickRay(root: Object3D, origin: Vector3, direction: Vector3, maxMetres?: number): Hit | null;
|
|
24
|
+
/** The pointing ray of a controller or hand: its world position, along its -z. */
|
|
25
|
+
export declare function rayOf(source: Object3D): {
|
|
26
|
+
origin: Vector3;
|
|
27
|
+
direction: Vector3;
|
|
28
|
+
};
|
|
29
|
+
/** Listen for `select` on a three XR controller (a trigger or a hand pinch). */
|
|
30
|
+
export declare function attachController(root: Object3D, controller: Object3D, onHit: (h: Hit) => void): () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Gaze with dwell: looking at one thing for `dwellMs` activates it. Returns a
|
|
33
|
+
* stepper to call each frame; its result is progress 0..1 for a reticle.
|
|
34
|
+
*/
|
|
35
|
+
export declare class Gaze {
|
|
36
|
+
private readonly root;
|
|
37
|
+
private readonly camera;
|
|
38
|
+
private readonly dwellMs;
|
|
39
|
+
private readonly onHit;
|
|
40
|
+
private target;
|
|
41
|
+
private elapsed;
|
|
42
|
+
progress: number;
|
|
43
|
+
constructor(root: Object3D, camera: Camera, dwellMs: number, onHit: (h: Hit) => void);
|
|
44
|
+
update(dtMs: number): void;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAyB,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,GAAI,SAAQ,WAAW;IACtC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAE5F;AAKD,wBAAgB,OAAO,CACrB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,OAAO,EAClB,SAAS,SAAK,GACb,GAAG,GAAG,IAAI,CAYZ;AAID,kFAAkF;AAClF,wBAAgB,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAO/E;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,QAAQ,EACpB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,GACtB,MAAM,IAAI,CAcZ;AAED;;;GAGG;AACH,qBAAa,IAAI;IAMb,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAK;IACb,QAAQ,SAAK;gBAGD,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI;IAGnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAiBlC"}
|
package/dist/input.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Picking: a ray in, an interactive thing out. The host owns input — its
|
|
3
|
+
* controllers, hands, gaze and mouse — so this is only the part that knows
|
|
4
|
+
* which of OUR objects a ray hit.
|
|
5
|
+
*
|
|
6
|
+
* Anything a renderer wants tappable is marked with `interactive(obj, kind,
|
|
7
|
+
* activate)`; `pick` walks up from whatever mesh the ray struck to the first
|
|
8
|
+
* marked ancestor, so a renderer marks the root of its node and every child
|
|
9
|
+
* works. An override can opt out of the world's default tap by setting
|
|
10
|
+
* `userData.cl3Handled`.
|
|
11
|
+
*/
|
|
12
|
+
import { Quaternion, Raycaster, Vector3 } from 'three';
|
|
13
|
+
export function interactive(obj, kind, activate) {
|
|
14
|
+
obj.userData['cl3'] = { kind, activate };
|
|
15
|
+
}
|
|
16
|
+
const marked = (o) => o.userData['cl3'];
|
|
17
|
+
export function pickRay(root, origin, direction, maxMetres = 10) {
|
|
18
|
+
const ray = new Raycaster(origin, direction.clone().normalize(), 0, maxMetres);
|
|
19
|
+
root.updateMatrixWorld(true);
|
|
20
|
+
for (const h of ray.intersectObject(root, true)) {
|
|
21
|
+
for (let o = h.object; o !== null; o = o.parent) {
|
|
22
|
+
const m = marked(o);
|
|
23
|
+
if (m !== undefined) {
|
|
24
|
+
return { ...m, object: o, distance: h.distance };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const FORWARD = new Vector3(0, 0, -1);
|
|
31
|
+
/** The pointing ray of a controller or hand: its world position, along its -z. */
|
|
32
|
+
export function rayOf(source) {
|
|
33
|
+
source.updateWorldMatrix(true, false);
|
|
34
|
+
const q = source.getWorldQuaternion(new Quaternion());
|
|
35
|
+
return {
|
|
36
|
+
origin: source.getWorldPosition(new Vector3()),
|
|
37
|
+
direction: FORWARD.clone().applyQuaternion(q),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** Listen for `select` on a three XR controller (a trigger or a hand pinch). */
|
|
41
|
+
export function attachController(root, controller, onHit) {
|
|
42
|
+
const listener = () => {
|
|
43
|
+
const { origin, direction } = rayOf(controller);
|
|
44
|
+
const h = pickRay(root, origin, direction);
|
|
45
|
+
if (h !== null) {
|
|
46
|
+
onHit(h);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const c = controller;
|
|
50
|
+
c.addEventListener('select', listener);
|
|
51
|
+
return () => c.removeEventListener('select', listener);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Gaze with dwell: looking at one thing for `dwellMs` activates it. Returns a
|
|
55
|
+
* stepper to call each frame; its result is progress 0..1 for a reticle.
|
|
56
|
+
*/
|
|
57
|
+
export class Gaze {
|
|
58
|
+
root;
|
|
59
|
+
camera;
|
|
60
|
+
dwellMs;
|
|
61
|
+
onHit;
|
|
62
|
+
target = null;
|
|
63
|
+
elapsed = 0;
|
|
64
|
+
progress = 0;
|
|
65
|
+
constructor(root, camera, dwellMs, onHit) {
|
|
66
|
+
this.root = root;
|
|
67
|
+
this.camera = camera;
|
|
68
|
+
this.dwellMs = dwellMs;
|
|
69
|
+
this.onHit = onHit;
|
|
70
|
+
}
|
|
71
|
+
update(dtMs) {
|
|
72
|
+
const { origin, direction } = rayOf(this.camera);
|
|
73
|
+
const h = pickRay(this.root, origin, direction);
|
|
74
|
+
if (h === null || h.object !== this.target) {
|
|
75
|
+
this.target = h?.object ?? null;
|
|
76
|
+
this.elapsed = 0;
|
|
77
|
+
this.progress = 0;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
this.elapsed += dtMs;
|
|
81
|
+
this.progress = Math.min(1, this.elapsed / this.dwellMs);
|
|
82
|
+
if (this.progress >= 1) {
|
|
83
|
+
this.elapsed = 0;
|
|
84
|
+
this.progress = 0;
|
|
85
|
+
this.onHit(h);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
|
package/dist/layout.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a `card_grid` puts its cards — pure math, no three.js.
|
|
3
|
+
*
|
|
4
|
+
* Frame: the grid's own origin, the viewer standing at (0, 0, 0) looking down
|
|
5
|
+
* -z, +y up. A card's FRONT is its local +z, so `yaw` rotates it about y to
|
|
6
|
+
* face the viewer and `pitch` tips it onto its back (a table). The world
|
|
7
|
+
* parents the result wherever the resolved placement says; none of this knows
|
|
8
|
+
* about the scene it ends up in.
|
|
9
|
+
*/
|
|
10
|
+
export declare const GRID_PLACEMENTS: readonly ["arc", "shelf", "wall", "table"];
|
|
11
|
+
export type GridPlacement = (typeof GRID_PLACEMENTS)[number];
|
|
12
|
+
/** `stand` objects need a pedestal, `hang` ones a hanger, `lay` ones a surface. */
|
|
13
|
+
export type Mount = 'stand' | 'hang' | 'lay';
|
|
14
|
+
export interface Pose {
|
|
15
|
+
readonly position: readonly [number, number, number];
|
|
16
|
+
readonly yaw: number;
|
|
17
|
+
readonly pitch: number;
|
|
18
|
+
}
|
|
19
|
+
export interface GridLayout {
|
|
20
|
+
readonly poses: readonly Pose[];
|
|
21
|
+
readonly mount: Mount;
|
|
22
|
+
}
|
|
23
|
+
export declare function layoutCards(placement: GridPlacement, count: number, spacing: number): GridLayout;
|
|
24
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,4CAA6C,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,mFAAmF;AACnF,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7C,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAYD,wBAAgB,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAiDhG"}
|
package/dist/layout.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a `card_grid` puts its cards — pure math, no three.js.
|
|
3
|
+
*
|
|
4
|
+
* Frame: the grid's own origin, the viewer standing at (0, 0, 0) looking down
|
|
5
|
+
* -z, +y up. A card's FRONT is its local +z, so `yaw` rotates it about y to
|
|
6
|
+
* face the viewer and `pitch` tips it onto its back (a table). The world
|
|
7
|
+
* parents the result wherever the resolved placement says; none of this knows
|
|
8
|
+
* about the scene it ends up in.
|
|
9
|
+
*/
|
|
10
|
+
export const GRID_PLACEMENTS = ['arc', 'shelf', 'wall', 'table'];
|
|
11
|
+
const ARC_RADIUS = 1.2;
|
|
12
|
+
/** 160 degrees: past that the outer cards are behind the viewer's shoulders. */
|
|
13
|
+
const ARC_MAX_SPAN = (160 * Math.PI) / 180;
|
|
14
|
+
const SHELF_COLUMNS = 4;
|
|
15
|
+
const WALL_COLUMNS = 5;
|
|
16
|
+
const ROW_HEIGHT = 0.4;
|
|
17
|
+
/** Index `i` of `n` as an offset from the centre, in steps. */
|
|
18
|
+
const centred = (i, n) => i - (n - 1) / 2;
|
|
19
|
+
export function layoutCards(placement, count, spacing) {
|
|
20
|
+
const n = Math.max(0, Math.floor(count));
|
|
21
|
+
const poses = [];
|
|
22
|
+
if (placement === 'arc') {
|
|
23
|
+
// Widen the circle rather than overshoot the span, so spacing is honoured.
|
|
24
|
+
const radius = Math.max(ARC_RADIUS, n > 1 ? ((n - 1) * spacing) / ARC_MAX_SPAN : 0);
|
|
25
|
+
const step = spacing / radius;
|
|
26
|
+
for (let i = 0; i < n; i += 1) {
|
|
27
|
+
const a = centred(i, n) * step;
|
|
28
|
+
const x = radius * Math.sin(a);
|
|
29
|
+
const z = -radius * Math.cos(a);
|
|
30
|
+
poses.push({ position: [x, 0, z], yaw: Math.atan2(-x, -z), pitch: 0 });
|
|
31
|
+
}
|
|
32
|
+
return { poses, mount: 'stand' };
|
|
33
|
+
}
|
|
34
|
+
if (placement === 'table') {
|
|
35
|
+
// Flat on a surface below eye height, rows coming toward the viewer.
|
|
36
|
+
const cols = Math.max(1, Math.ceil(Math.sqrt(n)));
|
|
37
|
+
const rows = Math.ceil(n / cols);
|
|
38
|
+
for (let i = 0; i < n; i += 1) {
|
|
39
|
+
const c = i % cols;
|
|
40
|
+
const r = Math.floor(i / cols);
|
|
41
|
+
poses.push({
|
|
42
|
+
position: [
|
|
43
|
+
centred(c, Math.min(cols, n - r * cols)) * spacing,
|
|
44
|
+
-0.4,
|
|
45
|
+
-0.7 - (rows - 1 - r) * spacing,
|
|
46
|
+
],
|
|
47
|
+
yaw: 0,
|
|
48
|
+
pitch: -Math.PI / 2,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return { poses, mount: 'lay' };
|
|
52
|
+
}
|
|
53
|
+
const cols = placement === 'shelf' ? SHELF_COLUMNS : WALL_COLUMNS;
|
|
54
|
+
const rows = Math.ceil(n / cols);
|
|
55
|
+
for (let i = 0; i < n; i += 1) {
|
|
56
|
+
const c = i % cols;
|
|
57
|
+
const r = Math.floor(i / cols);
|
|
58
|
+
const inRow = Math.min(cols, n - r * cols);
|
|
59
|
+
// A shelf fills from the bottom; a wall reads top-left to bottom-right.
|
|
60
|
+
const y = placement === 'shelf' ? r * ROW_HEIGHT : 0.3 + (rows - 1 - r) * ROW_HEIGHT;
|
|
61
|
+
poses.push({
|
|
62
|
+
position: [centred(c, inRow) * spacing, y, placement === 'shelf' ? -1.4 : -1.8],
|
|
63
|
+
yaw: 0,
|
|
64
|
+
pitch: 0,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return { poses, mount: placement === 'shelf' ? 'stand' : 'hang' };
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
|
package/dist/model.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glTF loading and the `anchor` a model asks for.
|
|
3
|
+
*
|
|
4
|
+
* Chatly references a model and never fetches, validates or sizes one, so
|
|
5
|
+
* this is where the host's world does: three's own GLTFLoader (imported
|
|
6
|
+
* lazily, so a conversation with no models never pays for it), the block's
|
|
7
|
+
* `scale` as a multiplier on the file's own size, and `anchor` as the named
|
|
8
|
+
* point of the model that sits at the placement's origin.
|
|
9
|
+
*/
|
|
10
|
+
import { Box3, Group, Vector3, type AnimationClip, type Object3D } from 'three';
|
|
11
|
+
export declare const MODEL_ANCHORS: readonly ["center", "base", "top", "back"];
|
|
12
|
+
export type ModelAnchor = (typeof MODEL_ANCHORS)[number];
|
|
13
|
+
export interface LoadedModel {
|
|
14
|
+
readonly scene: Object3D;
|
|
15
|
+
readonly animations: readonly AnimationClip[];
|
|
16
|
+
}
|
|
17
|
+
export type ModelLoader = (url: string) => Promise<LoadedModel>;
|
|
18
|
+
export declare const gltfLoader: () => ModelLoader;
|
|
19
|
+
/** Load each URL once; every caller gets its own clone, because a scene can have one parent. */
|
|
20
|
+
export declare const cachedLoader: (load: ModelLoader) => ModelLoader;
|
|
21
|
+
/** The translation that moves `anchor` of `box` to the origin. */
|
|
22
|
+
export declare function anchorOffset(box: Box3, anchor: ModelAnchor): Vector3;
|
|
23
|
+
/** Wrap a loaded scene so its scale and anchor are applied and the wrapper sits at the origin. */
|
|
24
|
+
export declare function fitModel(model: Object3D, scale?: number, anchor?: ModelAnchor): Group;
|
|
25
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEhF,eAAO,MAAM,aAAa,4CAA6C,CAAC;AACxE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;CAC/C;AACD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAEhE,eAAO,MAAM,UAAU,QAAO,WAS7B,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,YAAY,SAAU,WAAW,KAAG,WAahD,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAWpE;AAED,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,SAAI,EAAE,MAAM,GAAE,WAAsB,GAAG,KAAK,CAS1F"}
|