@signalwire/web-components 4.0.0-beta.8 → 4.0.0-dev-20260515133934
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/README.md +48 -55
- package/dist/_virtual/_commonjsHelpers.js +9 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/prism-python.js +28 -0
- package/dist/_virtual/prism-python.js.map +1 -0
- package/dist/_virtual/prism-python2.js +5 -0
- package/dist/_virtual/prism-python2.js.map +1 -0
- package/dist/_virtual/prism-typescript.js +28 -0
- package/dist/_virtual/prism-typescript.js.map +1 -0
- package/dist/_virtual/prism-typescript2.js +5 -0
- package/dist/_virtual/prism-typescript2.js.map +1 -0
- package/dist/_virtual/prism.js +28 -0
- package/dist/_virtual/prism.js.map +1 -0
- package/dist/_virtual/prism2.js +5 -0
- package/dist/_virtual/prism2.js.map +1 -0
- package/dist/assets/sw_background.webp.js +5 -0
- package/dist/assets/sw_background.webp.js.map +1 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.d.ts +4 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.d.ts.map +1 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.js +5 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-control-bar.d.ts +114 -0
- package/dist/components/UI/controls/sw-ui-control-bar.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-control-bar.js +324 -0
- package/dist/components/UI/controls/sw-ui-control-bar.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-dialpad.d.ts +67 -0
- package/dist/components/UI/controls/sw-ui-dialpad.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-dialpad.js +360 -0
- package/dist/components/UI/controls/sw-ui-dialpad.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-dropup.d.ts +42 -0
- package/dist/components/UI/controls/sw-ui-dropup.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-dropup.js +138 -0
- package/dist/components/UI/controls/sw-ui-dropup.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-split-button.d.ts +44 -0
- package/dist/components/UI/controls/sw-ui-split-button.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-split-button.js +178 -0
- package/dist/components/UI/controls/sw-ui-split-button.js.map +1 -0
- package/dist/components/UI/host-reset.d.ts +16 -0
- package/dist/components/UI/host-reset.d.ts.map +1 -0
- package/dist/components/UI/host-reset.js +20 -0
- package/dist/components/UI/host-reset.js.map +1 -0
- package/dist/components/UI/icons/backspace.svg.js +10 -0
- package/dist/components/UI/icons/backspace.svg.js.map +1 -0
- package/dist/components/UI/icons/camera-off.svg.js +8 -0
- package/dist/components/UI/icons/camera-off.svg.js.map +1 -0
- package/dist/components/UI/icons/camera-on.svg.js +8 -0
- package/dist/components/UI/icons/camera-on.svg.js.map +1 -0
- package/dist/components/UI/icons/check-circle.svg.js +6 -0
- package/dist/components/UI/icons/check-circle.svg.js.map +1 -0
- package/dist/components/UI/icons/chevron-up.svg.js +8 -0
- package/dist/components/UI/icons/chevron-up.svg.js.map +1 -0
- package/dist/components/UI/icons/close.svg.js +6 -0
- package/dist/components/UI/icons/close.svg.js.map +1 -0
- package/dist/components/UI/icons/copy.svg.js +6 -0
- package/dist/components/UI/icons/copy.svg.js.map +1 -0
- package/dist/components/UI/icons/download.svg.js +6 -0
- package/dist/components/UI/icons/download.svg.js.map +1 -0
- package/dist/components/UI/icons/fullscreen-exit.svg.js +8 -0
- package/dist/components/UI/icons/fullscreen-exit.svg.js.map +1 -0
- package/dist/components/UI/icons/fullscreen.svg.js +8 -0
- package/dist/components/UI/icons/fullscreen.svg.js.map +1 -0
- package/dist/components/UI/icons/hand-raise.svg.js +6 -0
- package/dist/components/UI/icons/hand-raise.svg.js.map +1 -0
- package/dist/components/UI/icons/icons.d.ts +31 -0
- package/dist/components/UI/icons/icons.d.ts.map +1 -0
- package/dist/components/UI/icons/icons.js +60 -0
- package/dist/components/UI/icons/icons.js.map +1 -0
- package/dist/components/UI/icons/index.d.ts +4 -0
- package/dist/components/UI/icons/index.d.ts.map +1 -0
- package/dist/components/UI/icons/info-circle.svg.js +6 -0
- package/dist/components/UI/icons/info-circle.svg.js.map +1 -0
- package/dist/components/UI/icons/mic-off.svg.js +8 -0
- package/dist/components/UI/icons/mic-off.svg.js.map +1 -0
- package/dist/components/UI/icons/mic-on.svg.js +8 -0
- package/dist/components/UI/icons/mic-on.svg.js.map +1 -0
- package/dist/components/UI/icons/person.svg.js +8 -0
- package/dist/components/UI/icons/person.svg.js.map +1 -0
- package/dist/components/UI/icons/phone-call.svg.js +8 -0
- package/dist/components/UI/icons/phone-call.svg.js.map +1 -0
- package/dist/components/UI/icons/phone-end.svg.js +8 -0
- package/dist/components/UI/icons/phone-end.svg.js.map +1 -0
- package/dist/components/UI/icons/room.svg.js +8 -0
- package/dist/components/UI/icons/room.svg.js.map +1 -0
- package/dist/components/UI/icons/screen-share-off.svg.js +9 -0
- package/dist/components/UI/icons/screen-share-off.svg.js.map +1 -0
- package/dist/components/UI/icons/screen-share.svg.js +9 -0
- package/dist/components/UI/icons/screen-share.svg.js.map +1 -0
- package/dist/components/UI/icons/sendIcon.svg.js +9 -0
- package/dist/components/UI/icons/sendIcon.svg.js.map +1 -0
- package/dist/components/UI/icons/settings.svg.js +8 -0
- package/dist/components/UI/icons/settings.svg.js.map +1 -0
- package/dist/components/UI/icons/speaker-off.svg.js +8 -0
- package/dist/components/UI/icons/speaker-off.svg.js.map +1 -0
- package/dist/components/UI/icons/speaker-on.svg.js +8 -0
- package/dist/components/UI/icons/speaker-on.svg.js.map +1 -0
- package/dist/components/UI/icons/spinner.svg.js +9 -0
- package/dist/components/UI/icons/spinner.svg.js.map +1 -0
- package/dist/components/UI/icons/sw-logo.svg.js +11 -0
- package/dist/components/UI/icons/sw-logo.svg.js.map +1 -0
- package/dist/components/UI/icons/sw-ui-icon.d.ts +28 -0
- package/dist/components/UI/icons/sw-ui-icon.d.ts.map +1 -0
- package/dist/components/UI/icons/sw-ui-icon.js +47 -0
- package/dist/components/UI/icons/sw-ui-icon.js.map +1 -0
- package/dist/components/UI/icons/transcript.svg.js +10 -0
- package/dist/components/UI/icons/transcript.svg.js.map +1 -0
- package/dist/components/UI/index.d.ts +18 -0
- package/dist/components/UI/index.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-background.d.ts +33 -0
- package/dist/components/UI/layout/sw-ui-background.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-background.js +106 -0
- package/dist/components/UI/layout/sw-ui-background.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-call-layout.d.ts +69 -0
- package/dist/components/UI/layout/sw-ui-call-layout.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-call-layout.js +278 -0
- package/dist/components/UI/layout/sw-ui-call-layout.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.d.ts +50 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.js +413 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-modal.d.ts +31 -0
- package/dist/components/UI/layout/sw-ui-modal.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-modal.js +150 -0
- package/dist/components/UI/layout/sw-ui-modal.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.d.ts +15 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.js +78 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.js.map +1 -0
- package/dist/components/UI/sw-ui-alert.d.ts +37 -0
- package/dist/components/UI/sw-ui-alert.d.ts.map +1 -0
- package/dist/components/UI/sw-ui-alert.js +127 -0
- package/dist/components/UI/sw-ui-alert.js.map +1 -0
- package/dist/components/UI/sw-ui-transcript-view.d.ts +56 -0
- package/dist/components/UI/sw-ui-transcript-view.d.ts.map +1 -0
- package/dist/components/UI/sw-ui-transcript-view.js +342 -0
- package/dist/components/UI/sw-ui-transcript-view.js.map +1 -0
- package/dist/components/{audio-level.d.ts → sw-audio-level.d.ts} +44 -4
- package/dist/components/sw-audio-level.d.ts.map +1 -0
- package/dist/components/sw-audio-level.js +252 -0
- package/dist/components/sw-audio-level.js.map +1 -0
- package/dist/components/sw-call-controls.d.ts +58 -0
- package/dist/components/sw-call-controls.d.ts.map +1 -0
- package/dist/components/sw-call-controls.js +186 -0
- package/dist/components/sw-call-controls.js.map +1 -0
- package/dist/components/sw-call-dialpad.d.ts +52 -0
- package/dist/components/sw-call-dialpad.d.ts.map +1 -0
- package/dist/components/sw-call-dialpad.js +70 -0
- package/dist/components/sw-call-dialpad.js.map +1 -0
- package/dist/components/sw-call-media.d.ts +59 -0
- package/dist/components/sw-call-media.d.ts.map +1 -0
- package/dist/components/sw-call-media.js +178 -0
- package/dist/components/sw-call-media.js.map +1 -0
- package/dist/components/sw-call-provider.d.ts +41 -0
- package/dist/components/sw-call-provider.d.ts.map +1 -0
- package/dist/components/sw-call-provider.js +37 -0
- package/dist/components/sw-call-provider.js.map +1 -0
- package/dist/components/sw-call-status.d.ts +50 -0
- package/dist/components/sw-call-status.d.ts.map +1 -0
- package/dist/components/sw-call-status.js +204 -0
- package/dist/components/sw-call-status.js.map +1 -0
- package/dist/components/sw-call-widget/client-factory.d.ts +6 -0
- package/dist/components/sw-call-widget/client-factory.d.ts.map +1 -0
- package/dist/components/sw-call-widget/client-factory.js +25 -0
- package/dist/components/sw-call-widget/client-factory.js.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.d.ts +110 -0
- package/dist/components/sw-call-widget/sw-call-widget.d.ts.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.js +251 -0
- package/dist/components/sw-call-widget/sw-call-widget.js.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts +17 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.js +80 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.js.map +1 -0
- package/dist/components/sw-click-to-call.d.ts +39 -0
- package/dist/components/sw-click-to-call.d.ts.map +1 -0
- package/dist/components/sw-click-to-call.js +88 -0
- package/dist/components/sw-click-to-call.js.map +1 -0
- package/dist/components/sw-device-selector/index.d.ts +2 -0
- package/dist/components/sw-device-selector/index.d.ts.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.d.ts +69 -0
- package/dist/components/sw-device-selector/sw-device-selector.d.ts.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.js +278 -0
- package/dist/components/sw-device-selector/sw-device-selector.js.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts +2 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.js +238 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.js.map +1 -0
- package/dist/components/{directory.d.ts → sw-directory.d.ts} +18 -4
- package/dist/components/sw-directory.d.ts.map +1 -0
- package/dist/components/sw-directory.js +435 -0
- package/dist/components/sw-directory.js.map +1 -0
- package/dist/components/sw-local-camera.d.ts +53 -0
- package/dist/components/sw-local-camera.d.ts.map +1 -0
- package/dist/components/sw-local-camera.js +147 -0
- package/dist/components/sw-local-camera.js.map +1 -0
- package/dist/components/sw-participant-controls.d.ts +58 -0
- package/dist/components/sw-participant-controls.d.ts.map +1 -0
- package/dist/components/sw-participant-controls.js +306 -0
- package/dist/components/sw-participant-controls.js.map +1 -0
- package/dist/components/sw-participants.d.ts +55 -0
- package/dist/components/sw-participants.d.ts.map +1 -0
- package/dist/components/sw-participants.js +320 -0
- package/dist/components/sw-participants.js.map +1 -0
- package/dist/components/sw-self-media.d.ts +46 -0
- package/dist/components/sw-self-media.d.ts.map +1 -0
- package/dist/components/sw-self-media.js +106 -0
- package/dist/components/sw-self-media.js.map +1 -0
- package/dist/context/CallStateContextController.d.ts +31 -0
- package/dist/context/CallStateContextController.d.ts.map +1 -0
- package/dist/context/CallStateContextController.js +125 -0
- package/dist/context/CallStateContextController.js.map +1 -0
- package/dist/context/DevicesContextController.d.ts +38 -0
- package/dist/context/DevicesContextController.d.ts.map +1 -0
- package/dist/context/DevicesContextController.js +124 -0
- package/dist/context/DevicesContextController.js.map +1 -0
- package/dist/context/TranscriptController.d.ts +32 -0
- package/dist/context/TranscriptController.d.ts.map +1 -0
- package/dist/context/TranscriptController.js +113 -0
- package/dist/context/TranscriptController.js.map +1 -0
- package/dist/context/UserEventController.d.ts +26 -0
- package/dist/context/UserEventController.d.ts.map +1 -0
- package/dist/context/UserEventController.js +55 -0
- package/dist/context/UserEventController.js.map +1 -0
- package/dist/context/call-state-context.d.ts +75 -0
- package/dist/context/call-state-context.d.ts.map +1 -0
- package/dist/context/call-state-context.js +39 -0
- package/dist/context/call-state-context.js.map +1 -0
- package/dist/context/chat-state.d.ts +41 -0
- package/dist/context/chat-state.d.ts.map +1 -0
- package/dist/context/chat-state.js +61 -0
- package/dist/context/chat-state.js.map +1 -0
- package/dist/context/devices-context.d.ts +28 -0
- package/dist/context/devices-context.d.ts.map +1 -0
- package/dist/context/devices-context.js +6 -0
- package/dist/context/devices-context.js.map +1 -0
- package/dist/context/index.d.ts +9 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/transcript-context.d.ts +9 -0
- package/dist/context/transcript-context.d.ts.map +1 -0
- package/dist/context/transcript-context.js +6 -0
- package/dist/context/transcript-context.js.map +1 -0
- package/dist/context/types.d.ts +9 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/embed/signalwire-web-components-embed.iife.js +3237 -0
- package/dist/embed/signalwire-web-components-embed.iife.js.map +1 -0
- package/dist/embed/signalwire-web-components-embed.umd.cjs +3237 -0
- package/dist/embed/signalwire-web-components-embed.umd.cjs.map +1 -0
- package/dist/embed.d.ts +20 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/index.d.ts +19 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -35
- package/dist/index.js.map +1 -1
- package/dist/node_modules/dompurify/dist/purify.es.js +597 -0
- package/dist/node_modules/dompurify/dist/purify.es.js.map +1 -0
- package/dist/node_modules/marked/lib/marked.esm.js +1475 -0
- package/dist/node_modules/marked/lib/marked.esm.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-bash.js +220 -0
- package/dist/node_modules/prismjs/components/prism-bash.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-css.js +56 -0
- package/dist/node_modules/prismjs/components/prism-css.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-javascript.js +138 -0
- package/dist/node_modules/prismjs/components/prism-javascript.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-json.js +26 -0
- package/dist/node_modules/prismjs/components/prism-json.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-markdown.js +301 -0
- package/dist/node_modules/prismjs/components/prism-markdown.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-python.js +69 -0
- package/dist/node_modules/prismjs/components/prism-python.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-sql.js +34 -0
- package/dist/node_modules/prismjs/components/prism-sql.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-typescript.js +53 -0
- package/dist/node_modules/prismjs/components/prism-typescript.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-yaml.js +67 -0
- package/dist/node_modules/prismjs/components/prism-yaml.js.map +1 -0
- package/dist/node_modules/prismjs/prism.js +1165 -0
- package/dist/node_modules/prismjs/prism.js.map +1 -0
- package/dist/react.d.ts +96 -46
- package/dist/theme.css +451 -0
- package/dist/theme.css.js +5 -0
- package/dist/theme.css.js.map +1 -0
- package/dist/types/index.d.ts +9 -33
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/prism.d.ts +4 -0
- package/dist/utils/prism.d.ts.map +1 -0
- package/dist/utils/prism.js +34 -0
- package/dist/utils/prism.js.map +1 -0
- package/dist/utils/theme-loader.d.ts +11 -0
- package/dist/utils/theme-loader.d.ts.map +1 -0
- package/dist/utils/theme-loader.js +17 -0
- package/dist/utils/theme-loader.js.map +1 -0
- package/dist/utils/transcriptToMarkdown.d.ts +14 -0
- package/dist/utils/transcriptToMarkdown.d.ts.map +1 -0
- package/dist/utils/transcriptToMarkdown.js +59 -0
- package/dist/utils/transcriptToMarkdown.js.map +1 -0
- package/dist/utils/use-google-font.d.ts +18 -0
- package/dist/utils/use-google-font.d.ts.map +1 -0
- package/dist/utils/use-google-font.js +12 -0
- package/dist/utils/use-google-font.js.map +1 -0
- package/dist/utils/user-variables.d.ts +20 -0
- package/dist/utils/user-variables.d.ts.map +1 -0
- package/dist/utils/user-variables.js +37 -0
- package/dist/utils/user-variables.js.map +1 -0
- package/dist/utils/video.js +6 -21
- package/dist/utils/video.js.map +1 -1
- package/package.json +105 -42
- package/dist/components/audio-level.d.ts.map +0 -1
- package/dist/components/audio-level.js +0 -203
- package/dist/components/audio-level.js.map +0 -1
- package/dist/components/call-controls.d.ts +0 -163
- package/dist/components/call-controls.d.ts.map +0 -1
- package/dist/components/call-controls.js +0 -606
- package/dist/components/call-controls.js.map +0 -1
- package/dist/components/call-media.d.ts +0 -114
- package/dist/components/call-media.d.ts.map +0 -1
- package/dist/components/call-media.js +0 -219
- package/dist/components/call-media.js.map +0 -1
- package/dist/components/call-status.d.ts +0 -68
- package/dist/components/call-status.d.ts.map +0 -1
- package/dist/components/call-status.js +0 -254
- package/dist/components/call-status.js.map +0 -1
- package/dist/components/click-to-call.d.ts +0 -123
- package/dist/components/click-to-call.d.ts.map +0 -1
- package/dist/components/click-to-call.js +0 -428
- package/dist/components/click-to-call.js.map +0 -1
- package/dist/components/device-selector.d.ts +0 -224
- package/dist/components/device-selector.d.ts.map +0 -1
- package/dist/components/device-selector.js +0 -685
- package/dist/components/device-selector.js.map +0 -1
- package/dist/components/dialpad.d.ts +0 -60
- package/dist/components/dialpad.d.ts.map +0 -1
- package/dist/components/dialpad.js +0 -372
- package/dist/components/dialpad.js.map +0 -1
- package/dist/components/directory.d.ts.map +0 -1
- package/dist/components/directory.js +0 -503
- package/dist/components/directory.js.map +0 -1
- package/dist/components/example-button.d.ts +0 -20
- package/dist/components/example-button.d.ts.map +0 -1
- package/dist/components/example-button.js +0 -74
- package/dist/components/example-button.js.map +0 -1
- package/dist/components/participant-controls.d.ts +0 -94
- package/dist/components/participant-controls.d.ts.map +0 -1
- package/dist/components/participant-controls.js +0 -468
- package/dist/components/participant-controls.js.map +0 -1
- package/dist/components/participants.d.ts +0 -116
- package/dist/components/participants.d.ts.map +0 -1
- package/dist/components/participants.js +0 -394
- package/dist/components/participants.js.map +0 -1
- package/dist/components/self-media.d.ts +0 -78
- package/dist/components/self-media.d.ts.map +0 -1
- package/dist/components/self-media.js +0 -129
- package/dist/components/self-media.js.map +0 -1
- package/dist/constants.js +0 -5
- package/dist/constants.js.map +0 -1
- package/dist/context/call-context.d.ts +0 -13
- package/dist/context/call-context.d.ts.map +0 -1
- package/dist/context/call-context.js +0 -6
- package/dist/context/call-context.js.map +0 -1
- package/dist/types/index.js +0 -12
- package/dist/types/index.js.map +0 -1
- package/dist/utils/debounce.js +0 -13
- package/dist/utils/debounce.js.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import o from "../theme.css.js";
|
|
2
|
+
import { useGoogleFont as e } from "./use-google-font.js";
|
|
3
|
+
let n = !1;
|
|
4
|
+
function i() {
|
|
5
|
+
if (typeof document > "u" || n) return;
|
|
6
|
+
n = !0;
|
|
7
|
+
const t = new CSSStyleSheet();
|
|
8
|
+
t.replaceSync(o), document.adoptedStyleSheets = [...document.adoptedStyleSheets, t];
|
|
9
|
+
}
|
|
10
|
+
function d() {
|
|
11
|
+
e("Lexend", { weights: [300, 400, 500, 600, 700] }), e("Instrument Sans", { weights: [400, 500, 600, 700] }), e("JetBrains Mono", { weights: [400, 500] });
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
d as ensureSignalWireFonts,
|
|
15
|
+
i as ensureSignalWireTheme
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=theme-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-loader.js","sources":["../../src/utils/theme-loader.ts"],"sourcesContent":["import themeCss from '../theme.css?inline';\nimport { useGoogleFont } from './use-google-font.js';\n\nlet themeAdopted = false;\n\n/**\n * Inject the SignalWire design-token stylesheet into the document so all\n * components — including those in shadow roots — can resolve `--bg-page`,\n * `--fg-default`, `--interactive-button-primary-bg`, etc.\n *\n * Idempotent. Calling twice is a no-op.\n */\nexport function ensureSignalWireTheme(): void {\n if (typeof document === 'undefined' || themeAdopted) return;\n themeAdopted = true;\n\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(themeCss);\n document.adoptedStyleSheets = [...document.adoptedStyleSheets, sheet];\n}\n\n/** Load the three SignalWire brand font families via Google Fonts. */\nexport function ensureSignalWireFonts(): void {\n useGoogleFont('Lexend', { weights: [300, 400, 500, 600, 700] });\n useGoogleFont('Instrument Sans', { weights: [400, 500, 600, 700] });\n useGoogleFont('JetBrains Mono', { weights: [400, 500] });\n}\n"],"names":["themeAdopted","ensureSignalWireTheme","sheet","themeCss","ensureSignalWireFonts","useGoogleFont"],"mappings":";;AAGA,IAAIA,IAAe;AASZ,SAASC,IAA8B;AAC5C,MAAI,OAAO,WAAa,OAAeD,EAAc;AACrD,EAAAA,IAAe;AAEf,QAAME,IAAQ,IAAI,cAAA;AAClB,EAAAA,EAAM,YAAYC,CAAQ,GAC1B,SAAS,qBAAqB,CAAC,GAAG,SAAS,oBAAoBD,CAAK;AACtE;AAGO,SAASE,IAA8B;AAC5C,EAAAC,EAAc,UAAU,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,GAC9DA,EAAc,mBAAmB,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,GAClEA,EAAc,kBAAkB,EAAE,SAAS,CAAC,KAAK,GAAG,GAAG;AACzD;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TranscriptEntry } from '../components/UI/sw-ui-transcript-view.js';
|
|
2
|
+
/**
|
|
3
|
+
* Serializes a transcript entry list to a Markdown string.
|
|
4
|
+
*
|
|
5
|
+
* Format per entry type:
|
|
6
|
+
* user → **You:** text
|
|
7
|
+
* agent → **Agent:** text
|
|
8
|
+
* system → *text*
|
|
9
|
+
*
|
|
10
|
+
* meta.code → fenced code block (with language tag when present)
|
|
11
|
+
* meta.links → markdown link list appended after the message text
|
|
12
|
+
*/
|
|
13
|
+
export declare function transcriptToMarkdown(entries: TranscriptEntry[]): string;
|
|
14
|
+
//# sourceMappingURL=transcriptToMarkdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptToMarkdown.d.ts","sourceRoot":"","sources":["../../src/utils/transcriptToMarkdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,2CAA2C,CAAC;AAEtG;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAuBvE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
function r(t) {
|
|
2
|
+
const n = ["# Transcript", "", `*Generated: ${(/* @__PURE__ */ new Date()).toLocaleString(void 0, {
|
|
3
|
+
year: "numeric",
|
|
4
|
+
month: "long",
|
|
5
|
+
day: "numeric",
|
|
6
|
+
hour: "2-digit",
|
|
7
|
+
minute: "2-digit"
|
|
8
|
+
})}*`, ""], a = t.filter((s) => s.state === "complete");
|
|
9
|
+
for (const s of a)
|
|
10
|
+
n.push("---", ""), n.push(...u(s), "");
|
|
11
|
+
return a.length > 0 && n.push("---", ""), n.join(`
|
|
12
|
+
`);
|
|
13
|
+
}
|
|
14
|
+
function u(t) {
|
|
15
|
+
var n, a, s, i;
|
|
16
|
+
const e = [];
|
|
17
|
+
switch (t.type) {
|
|
18
|
+
case "user":
|
|
19
|
+
e.push(`**You:** ${t.text}`);
|
|
20
|
+
break;
|
|
21
|
+
case "agent":
|
|
22
|
+
e.push(`**Agent:** ${t.text}`);
|
|
23
|
+
break;
|
|
24
|
+
case "system":
|
|
25
|
+
e.push(`*${t.text}*`);
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
if ((n = t.meta) != null && n.code) {
|
|
29
|
+
const { language: o = "", content: c } = t.meta.code;
|
|
30
|
+
e.push("", `\`\`\`${o}`, c, "```");
|
|
31
|
+
}
|
|
32
|
+
if ((s = (a = t.meta) == null ? void 0 : a.links) != null && s.length) {
|
|
33
|
+
e.push("");
|
|
34
|
+
for (const o of t.meta.links)
|
|
35
|
+
e.push(`- [${o.label}](${o.url})`);
|
|
36
|
+
}
|
|
37
|
+
return (i = t.meta) != null && i.displayContent && e.push(...l(t.meta.displayContent)), e;
|
|
38
|
+
}
|
|
39
|
+
function l(t) {
|
|
40
|
+
const e = [""];
|
|
41
|
+
switch (t.format) {
|
|
42
|
+
case "code":
|
|
43
|
+
e.push(`\`\`\`${t.language ?? ""}`, t.content, "```");
|
|
44
|
+
break;
|
|
45
|
+
case "markdown":
|
|
46
|
+
e.push(t.content);
|
|
47
|
+
break;
|
|
48
|
+
case "html":
|
|
49
|
+
e.push("<!-- html content -->", t.content, "<!-- /html content -->");
|
|
50
|
+
break;
|
|
51
|
+
default:
|
|
52
|
+
e.push(t.content);
|
|
53
|
+
}
|
|
54
|
+
return e;
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
r as transcriptToMarkdown
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=transcriptToMarkdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptToMarkdown.js","sources":["../../src/utils/transcriptToMarkdown.ts"],"sourcesContent":["import type { TranscriptEntry, TranscriptEntryMeta } from '../components/UI/sw-ui-transcript-view.js';\n\n/**\n * Serializes a transcript entry list to a Markdown string.\n *\n * Format per entry type:\n * user → **You:** text\n * agent → **Agent:** text\n * system → *text*\n *\n * meta.code → fenced code block (with language tag when present)\n * meta.links → markdown link list appended after the message text\n */\nexport function transcriptToMarkdown(entries: TranscriptEntry[]): string {\n const timestamp = new Date().toLocaleString(undefined, {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n\n const lines: string[] = [`# Transcript`, ``, `*Generated: ${timestamp}*`, ``];\n\n const completed = entries.filter((e) => e.state === 'complete');\n\n for (const entry of completed) {\n lines.push('---', '');\n lines.push(...serializeEntry(entry), '');\n }\n\n if (completed.length > 0) {\n lines.push('---', '');\n }\n\n return lines.join('\\n');\n}\n\nfunction serializeEntry(entry: TranscriptEntry): string[] {\n const lines: string[] = [];\n\n switch (entry.type) {\n case 'user':\n lines.push(`**You:** ${entry.text}`);\n break;\n case 'agent':\n lines.push(`**Agent:** ${entry.text}`);\n break;\n case 'system':\n lines.push(`*${entry.text}*`);\n break;\n }\n\n if (entry.meta?.code) {\n const { language = '', content } = entry.meta.code;\n lines.push('', `\\`\\`\\`${language}`, content, '```');\n }\n\n if (entry.meta?.links?.length) {\n lines.push('');\n for (const link of entry.meta.links) {\n lines.push(`- [${link.label}](${link.url})`);\n }\n }\n\n if (entry.meta?.displayContent) {\n lines.push(...serializeDisplayContent(entry.meta.displayContent));\n }\n\n return lines;\n}\n\nfunction serializeDisplayContent(\n dc: NonNullable<TranscriptEntryMeta['displayContent']>\n): string[] {\n const lines: string[] = [''];\n\n switch (dc.format) {\n case 'code':\n lines.push(`\\`\\`\\`${dc.language ?? ''}`, dc.content, '```');\n break;\n case 'markdown':\n lines.push(dc.content);\n break;\n case 'html':\n // Wrap in an HTML comment so the file stays valid markdown while\n // preserving the raw payload for anyone who needs it.\n lines.push('<!-- html content -->', dc.content, '<!-- /html content -->');\n break;\n default:\n lines.push(dc.content);\n }\n\n return lines;\n}\n"],"names":["transcriptToMarkdown","entries","lines","completed","e","entry","serializeEntry","_a","_b","_c","_d","language","content","link","serializeDisplayContent","dc"],"mappings":"AAaO,SAASA,EAAqBC,GAAoC;AASvE,QAAMC,IAAkB,CAAC,gBAAgB,IAAI,gBAR3B,oBAAI,KAAA,GAAO,eAAe,QAAW;AAAA,IACrD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA,CACT,CAEoE,KAAK,EAAE,GAEtEC,IAAYF,EAAQ,OAAO,CAACG,MAAMA,EAAE,UAAU,UAAU;AAE9D,aAAWC,KAASF;AAClB,IAAAD,EAAM,KAAK,OAAO,EAAE,GACpBA,EAAM,KAAK,GAAGI,EAAeD,CAAK,GAAG,EAAE;AAGzC,SAAIF,EAAU,SAAS,KACrBD,EAAM,KAAK,OAAO,EAAE,GAGfA,EAAM,KAAK;AAAA,CAAI;AACxB;AAEA,SAASI,EAAeD,GAAkC;AAzBnD,MAAAE,GAAAC,GAAAC,GAAAC;AA0BL,QAAMR,IAAkB,CAAA;AAExB,UAAQG,EAAM,MAAA;AAAA,IACZ,KAAK;AACH,MAAAH,EAAM,KAAK,YAAYG,EAAM,IAAI,EAAE;AACnC;AAAA,IACF,KAAK;AACH,MAAAH,EAAM,KAAK,cAAcG,EAAM,IAAI,EAAE;AACrC;AAAA,IACF,KAAK;AACH,MAAAH,EAAM,KAAK,IAAIG,EAAM,IAAI,GAAG;AAC5B;AAAA,EAAA;AAGJ,OAAIE,IAAAF,EAAM,SAAN,QAAAE,EAAY,MAAM;AACpB,UAAM,EAAE,UAAAI,IAAW,IAAI,SAAAC,EAAA,IAAYP,EAAM,KAAK;AAC9C,IAAAH,EAAM,KAAK,IAAI,SAASS,CAAQ,IAAIC,GAAS,KAAK;AAAA,EACpD;AAEA,OAAIH,KAAAD,IAAAH,EAAM,SAAN,gBAAAG,EAAY,UAAZ,QAAAC,EAAmB,QAAQ;AAC7B,IAAAP,EAAM,KAAK,EAAE;AACb,eAAWW,KAAQR,EAAM,KAAK;AAC5B,MAAAH,EAAM,KAAK,MAAMW,EAAK,KAAK,KAAKA,EAAK,GAAG,GAAG;AAAA,EAE/C;AAEA,UAAIH,IAAAL,EAAM,SAAN,QAAAK,EAAY,kBACdR,EAAM,KAAK,GAAGY,EAAwBT,EAAM,KAAK,cAAc,CAAC,GAG3DH;AACT;AAEA,SAASY,EACPC,GACU;AACV,QAAMb,IAAkB,CAAC,EAAE;AAE3B,UAAQa,EAAG,QAAA;AAAA,IACT,KAAK;AACH,MAAAb,EAAM,KAAK,SAASa,EAAG,YAAY,EAAE,IAAIA,EAAG,SAAS,KAAK;AAC1D;AAAA,IACF,KAAK;AACH,MAAAb,EAAM,KAAKa,EAAG,OAAO;AACrB;AAAA,IACF,KAAK;AAGH,MAAAb,EAAM,KAAK,yBAAyBa,EAAG,SAAS,wBAAwB;AACxE;AAAA,IACF;AACE,MAAAb,EAAM,KAAKa,EAAG,OAAO;AAAA,EAAA;AAGzB,SAAOb;AACT;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load a Google Font into the document. Idempotent — calling twice with the
|
|
3
|
+
* same arguments injects only one `<link>`.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* useGoogleFont('Lexend', { weights: [400, 500, 700] });
|
|
7
|
+
* useGoogleFont('JetBrains Mono');
|
|
8
|
+
*/
|
|
9
|
+
export interface UseGoogleFontOptions {
|
|
10
|
+
/** Font weights to load. Defaults to `[400]`. */
|
|
11
|
+
weights?: number[];
|
|
12
|
+
/** `font-display` strategy. Defaults to `'swap'`. */
|
|
13
|
+
display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';
|
|
14
|
+
/** Whether to load italic variants alongside the upright weights. */
|
|
15
|
+
italic?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function useGoogleFont(name: string, options?: UseGoogleFontOptions): void;
|
|
18
|
+
//# sourceMappingURL=use-google-font.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-google-font.d.ts","sourceRoot":"","sources":["../../src/utils/use-google-font.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9D,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,IAAI,CAmBpF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const r = "https://fonts.googleapis.com/css2";
|
|
2
|
+
function d(o, e = {}) {
|
|
3
|
+
if (typeof document > "u") return;
|
|
4
|
+
const n = e.weights ?? [400], l = e.display ?? "swap", c = o.replace(/\s+/g, "+"), a = e.italic ? `ital,wght@${n.flatMap((i) => [`0,${i}`, `1,${i}`]).join(";")}` : `wght@${n.join(";")}`, s = `${r}?family=${c}:${a}&display=${l}`;
|
|
5
|
+
if (document.querySelector(`link[href="${s}"]`)) return;
|
|
6
|
+
const t = document.createElement("link");
|
|
7
|
+
t.rel = "stylesheet", t.href = s, document.head.appendChild(t);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
d as useGoogleFont
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=use-google-font.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-google-font.js","sources":["../../src/utils/use-google-font.ts"],"sourcesContent":["/**\n * Load a Google Font into the document. Idempotent — calling twice with the\n * same arguments injects only one `<link>`.\n *\n * @example\n * useGoogleFont('Lexend', { weights: [400, 500, 700] });\n * useGoogleFont('JetBrains Mono');\n */\nexport interface UseGoogleFontOptions {\n /** Font weights to load. Defaults to `[400]`. */\n weights?: number[];\n /** `font-display` strategy. Defaults to `'swap'`. */\n display?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n /** Whether to load italic variants alongside the upright weights. */\n italic?: boolean;\n}\n\nconst GOOGLE_FONTS_BASE = 'https://fonts.googleapis.com/css2';\n\nexport function useGoogleFont(name: string, options: UseGoogleFontOptions = {}): void {\n if (typeof document === 'undefined') return;\n\n const weights = options.weights ?? [400];\n const display = options.display ?? 'swap';\n const family = name.replace(/\\s+/g, '+');\n\n const axis = options.italic\n ? `ital,wght@${weights.flatMap((w) => [`0,${w}`, `1,${w}`]).join(';')}`\n : `wght@${weights.join(';')}`;\n\n const href = `${GOOGLE_FONTS_BASE}?family=${family}:${axis}&display=${display}`;\n\n if (document.querySelector(`link[href=\"${href}\"]`)) return;\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n document.head.appendChild(link);\n}\n"],"names":["GOOGLE_FONTS_BASE","useGoogleFont","name","options","weights","display","family","axis","w","href","link"],"mappings":"AAiBA,MAAMA,IAAoB;AAEnB,SAASC,EAAcC,GAAcC,IAAgC,IAAU;AACpF,MAAI,OAAO,WAAa,IAAa;AAErC,QAAMC,IAAUD,EAAQ,WAAW,CAAC,GAAG,GACjCE,IAAUF,EAAQ,WAAW,QAC7BG,IAASJ,EAAK,QAAQ,QAAQ,GAAG,GAEjCK,IAAOJ,EAAQ,SACjB,aAAaC,EAAQ,QAAQ,CAACI,MAAM,CAAC,KAAKA,CAAC,IAAI,KAAKA,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,KACnE,QAAQJ,EAAQ,KAAK,GAAG,CAAC,IAEvBK,IAAO,GAAGT,CAAiB,WAAWM,CAAM,IAAIC,CAAI,YAAYF,CAAO;AAE7E,MAAI,SAAS,cAAc,cAAcI,CAAI,IAAI,EAAG;AAEpD,QAAMC,IAAO,SAAS,cAAc,MAAM;AAC1C,EAAAA,EAAK,MAAM,cACXA,EAAK,OAAOD,GACZ,SAAS,KAAK,YAAYC,CAAI;AAChC;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Formats the widget's content drawer can render. */
|
|
2
|
+
export declare const WIDGET_DISPLAY_FORMATS: readonly ["text", "markdown", "code", "html"];
|
|
3
|
+
/**
|
|
4
|
+
* Parse a user-supplied JSON string into a userVariables object. Returns an
|
|
5
|
+
* empty object on null/undefined/empty input, and on parse failure logs a
|
|
6
|
+
* warning and returns an empty object — never throws.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseUserVariablesAttribute(raw: string | null | undefined): Record<string, unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* Merge widget self-advertisement (display_content capability + opened_at
|
|
11
|
+
* timestamp) into a userVariables object. User-supplied keys win on shallow
|
|
12
|
+
* conflict; capability and metadata sub-objects are deep-merged one level so
|
|
13
|
+
* callers can add their own keys without losing the widget's signal.
|
|
14
|
+
*
|
|
15
|
+
* The shape matches what `Sigmond2Agent._caller_has_display` looks for:
|
|
16
|
+
* - `capabilities.display_content` (signal #1)
|
|
17
|
+
* - `metadata.widget.opened_at` (signal #2)
|
|
18
|
+
*/
|
|
19
|
+
export declare function withWidgetCapabilities(base: Record<string, unknown>, now?: () => string): Record<string, unknown>;
|
|
20
|
+
//# sourceMappingURL=user-variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-variables.d.ts","sourceRoot":"","sources":["../../src/utils/user-variables.ts"],"names":[],"mappings":"AAIA,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,+CAAgD,CAAC;AAMpF;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,GAAE,MAAM,MAAuC,GACjD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmBzB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { getLogger as s } from "@signalwire/js";
|
|
2
|
+
const i = s(), c = ["text", "markdown", "code", "html"];
|
|
3
|
+
function a(t) {
|
|
4
|
+
return typeof t == "object" && t !== null && !Array.isArray(t);
|
|
5
|
+
}
|
|
6
|
+
function g(t) {
|
|
7
|
+
if (!t) return {};
|
|
8
|
+
try {
|
|
9
|
+
const e = JSON.parse(t);
|
|
10
|
+
return a(e) ? e : (i.warn("[CallWidget] user-variables must be a JSON object; ignoring"), {});
|
|
11
|
+
} catch (e) {
|
|
12
|
+
return i.warn("[CallWidget] Failed to parse user-variables JSON; ignoring", e), {};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function d(t, e = () => (/* @__PURE__ */ new Date()).toISOString()) {
|
|
16
|
+
const n = a(t.capabilities) ? t.capabilities : {}, r = a(t.metadata) ? t.metadata : {}, o = a(r.widget) ? r.widget : {};
|
|
17
|
+
return {
|
|
18
|
+
...t,
|
|
19
|
+
capabilities: {
|
|
20
|
+
display_content: { formats: [...c] },
|
|
21
|
+
...n
|
|
22
|
+
},
|
|
23
|
+
metadata: {
|
|
24
|
+
...r,
|
|
25
|
+
widget: {
|
|
26
|
+
opened_at: e(),
|
|
27
|
+
...o
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
c as WIDGET_DISPLAY_FORMATS,
|
|
34
|
+
g as parseUserVariablesAttribute,
|
|
35
|
+
d as withWidgetCapabilities
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=user-variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-variables.js","sources":["../../src/utils/user-variables.ts"],"sourcesContent":["import { getLogger } from '@signalwire/js';\n\nconst logger = getLogger();\n\n/** Formats the widget's content drawer can render. */\nexport const WIDGET_DISPLAY_FORMATS = ['text', 'markdown', 'code', 'html'] as const;\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\n/**\n * Parse a user-supplied JSON string into a userVariables object. Returns an\n * empty object on null/undefined/empty input, and on parse failure logs a\n * warning and returns an empty object — never throws.\n */\nexport function parseUserVariablesAttribute(\n raw: string | null | undefined\n): Record<string, unknown> {\n if (!raw) return {};\n try {\n const parsed = JSON.parse(raw);\n if (!isPlainObject(parsed)) {\n logger.warn('[CallWidget] user-variables must be a JSON object; ignoring');\n return {};\n }\n return parsed;\n } catch (err) {\n logger.warn('[CallWidget] Failed to parse user-variables JSON; ignoring', err);\n return {};\n }\n}\n\n/**\n * Merge widget self-advertisement (display_content capability + opened_at\n * timestamp) into a userVariables object. User-supplied keys win on shallow\n * conflict; capability and metadata sub-objects are deep-merged one level so\n * callers can add their own keys without losing the widget's signal.\n *\n * The shape matches what `Sigmond2Agent._caller_has_display` looks for:\n * - `capabilities.display_content` (signal #1)\n * - `metadata.widget.opened_at` (signal #2)\n */\nexport function withWidgetCapabilities(\n base: Record<string, unknown>,\n now: () => string = () => new Date().toISOString()\n): Record<string, unknown> {\n const baseCaps = isPlainObject(base['capabilities']) ? base['capabilities'] : {};\n const baseMeta = isPlainObject(base['metadata']) ? base['metadata'] : {};\n const baseWidget = isPlainObject(baseMeta['widget']) ? baseMeta['widget'] : {};\n\n return {\n ...base,\n capabilities: {\n display_content: { formats: [...WIDGET_DISPLAY_FORMATS] },\n ...baseCaps,\n },\n metadata: {\n ...baseMeta,\n widget: {\n opened_at: now(),\n ...baseWidget,\n },\n },\n };\n}\n"],"names":["logger","getLogger","WIDGET_DISPLAY_FORMATS","isPlainObject","v","parseUserVariablesAttribute","raw","parsed","err","withWidgetCapabilities","base","now","baseCaps","baseMeta","baseWidget"],"mappings":";AAEA,MAAMA,IAASC,EAAA,GAGFC,IAAyB,CAAC,QAAQ,YAAY,QAAQ,MAAM;AAEzE,SAASC,EAAcC,GAA0C;AAC/D,SAAO,OAAOA,KAAM,YAAYA,MAAM,QAAQ,CAAC,MAAM,QAAQA,CAAC;AAChE;AAOO,SAASC,EACdC,GACyB;AACzB,MAAI,CAACA,EAAK,QAAO,CAAA;AACjB,MAAI;AACF,UAAMC,IAAS,KAAK,MAAMD,CAAG;AAC7B,WAAKH,EAAcI,CAAM,IAIlBA,KAHLP,EAAO,KAAK,6DAA6D,GAClE,CAAA;AAAA,EAGX,SAASQ,GAAK;AACZ,WAAAR,EAAO,KAAK,8DAA8DQ,CAAG,GACtE,CAAA;AAAA,EACT;AACF;AAYO,SAASC,EACdC,GACAC,IAAoB,2BAAU,KAAA,GAAO,eACZ;AACzB,QAAMC,IAAWT,EAAcO,EAAK,YAAe,IAAIA,EAAK,eAAkB,CAAA,GACxEG,IAAWV,EAAcO,EAAK,QAAW,IAAIA,EAAK,WAAc,CAAA,GAChEI,IAAaX,EAAcU,EAAS,MAAS,IAAIA,EAAS,SAAY,CAAA;AAE5E,SAAO;AAAA,IACL,GAAGH;AAAA,IACH,cAAc;AAAA,MACZ,iBAAiB,EAAE,SAAS,CAAC,GAAGR,CAAsB,EAAA;AAAA,MACtD,GAAGU;AAAA,IAAA;AAAA,IAEL,UAAU;AAAA,MACR,GAAGC;AAAA,MACH,QAAQ;AAAA,QACN,WAAWF,EAAA;AAAA,QACX,GAAGG;AAAA,MAAA;AAAA,IACL;AAAA,EACF;AAEJ;"}
|
package/dist/utils/video.js
CHANGED
|
@@ -1,26 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return new Promise((r) => {
|
|
4
|
-
if (e.readyState >= HTMLMediaElement.HAVE_METADATA) {
|
|
5
|
-
r();
|
|
6
|
-
return;
|
|
7
|
-
}
|
|
8
|
-
let i = !1;
|
|
9
|
-
const t = () => {
|
|
10
|
-
i || (i = !0, clearTimeout(a), e.removeEventListener("canplay", t), e.removeEventListener("resize", t), r());
|
|
11
|
-
}, a = setTimeout(t, n);
|
|
12
|
-
e.addEventListener("canplay", t), e.addEventListener("resize", t);
|
|
13
|
-
});
|
|
1
|
+
function a(c, t) {
|
|
2
|
+
c.srcObject = t;
|
|
14
3
|
}
|
|
15
|
-
function
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
function s(e) {
|
|
19
|
-
e.srcObject && (e.srcObject = null);
|
|
4
|
+
function e(c) {
|
|
5
|
+
c.srcObject && (c.srcObject = null);
|
|
20
6
|
}
|
|
21
7
|
export {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
c as waitForVideoReady
|
|
8
|
+
a as attachMediaStream,
|
|
9
|
+
e as detachMediaStream
|
|
25
10
|
};
|
|
26
11
|
//# sourceMappingURL=video.js.map
|
package/dist/utils/video.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sources":["../../src/utils/video.ts"],"sourcesContent":["/**\n * Video element utilities for creating and managing video elements\n * with proper configuration for WebRTC streams.\n */\n\nimport { VIDEO_READY_TIMEOUT_MS } from '../constants.js';\n\n/**\n * Creates a video element configured for WebRTC streams.\n * The video is muted, autoplays, and plays inline (mobile Safari support).\n * Prevents pause events which can occur on camera switches or PiP mode.\n *\n * @returns A configured HTMLVideoElement\n */\nexport function createVideoElement(): HTMLVideoElement {\n const video = document.createElement('video');\n video.muted = true;\n video.autoplay = true;\n video.playsInline = true;\n\n // Prevent pause (Safari/Firefox pause on PiP, camera switch)\n video.addEventListener('pause', () => {\n video.play().catch((error) => {\n console.error('Video Element Paused', error);\n });\n });\n\n return video;\n}\n\n/**\n * Waits for a video element to be ready for playback.\n * Resolves when the video has metadata or when it can play.\n *\n * @param element - The video element to wait for\n * @returns A promise that resolves when the video is ready\n */\nexport function waitForVideoReady(element: HTMLVideoElement): Promise<void> {\n return new Promise<void>((resolve) => {\n if (element.readyState >= HTMLMediaElement.HAVE_METADATA) {\n resolve();\n return;\n }\n\n let resolved = false;\n\n const done = () => {\n if (resolved) return;\n resolved = true;\n clearTimeout(timeoutId);\n element.removeEventListener('canplay', done);\n element.removeEventListener('resize', done);\n resolve();\n };\n\n // Timeout fallback for audio-only streams where resize/canplay may never fire\n const timeoutId = setTimeout(done, VIDEO_READY_TIMEOUT_MS);\n element.addEventListener('canplay', done);\n element.addEventListener('resize', done);\n });\n}\n\n/**\n * Attaches a MediaStream to a video element.\n *\n * @param element - The video element to attach the stream to\n * @param stream - The MediaStream to attach, or null to detach\n */\nexport function attachMediaStream(element: HTMLVideoElement, stream: MediaStream | null): void {\n element.srcObject = stream;\n}\n\n/**\n * Detaches any MediaStream from a video element.\n *\n * @param element - The video element to detach the stream from\n */\nexport function detachMediaStream(element: HTMLVideoElement): void {\n if (element.srcObject) {\n element.srcObject = null;\n }\n}\n"],"names":["
|
|
1
|
+
{"version":3,"file":"video.js","sources":["../../src/utils/video.ts"],"sourcesContent":["/**\n * Video element utilities for creating and managing video elements\n * with proper configuration for WebRTC streams.\n */\n\nimport { VIDEO_READY_TIMEOUT_MS } from '../constants.js';\n\n/**\n * Creates a video element configured for WebRTC streams.\n * The video is muted, autoplays, and plays inline (mobile Safari support).\n * Prevents pause events which can occur on camera switches or PiP mode.\n *\n * @returns A configured HTMLVideoElement\n */\nexport function createVideoElement(): HTMLVideoElement {\n const video = document.createElement('video');\n video.muted = true;\n video.autoplay = true;\n video.playsInline = true;\n\n // Prevent pause (Safari/Firefox pause on PiP, camera switch)\n video.addEventListener('pause', () => {\n video.play().catch((error) => {\n console.error('Video Element Paused', error);\n });\n });\n\n return video;\n}\n\n/**\n * Waits for a video element to be ready for playback.\n * Resolves when the video has metadata or when it can play.\n *\n * @param element - The video element to wait for\n * @returns A promise that resolves when the video is ready\n */\nexport function waitForVideoReady(element: HTMLVideoElement): Promise<void> {\n return new Promise<void>((resolve) => {\n if (element.readyState >= HTMLMediaElement.HAVE_METADATA) {\n resolve();\n return;\n }\n\n let resolved = false;\n\n const done = () => {\n if (resolved) return;\n resolved = true;\n clearTimeout(timeoutId);\n element.removeEventListener('canplay', done);\n element.removeEventListener('resize', done);\n resolve();\n };\n\n // Timeout fallback for audio-only streams where resize/canplay may never fire\n const timeoutId = setTimeout(done, VIDEO_READY_TIMEOUT_MS);\n element.addEventListener('canplay', done);\n element.addEventListener('resize', done);\n });\n}\n\n/**\n * Attaches a MediaStream to a video element.\n *\n * @param element - The video element to attach the stream to\n * @param stream - The MediaStream to attach, or null to detach\n */\nexport function attachMediaStream(element: HTMLVideoElement, stream: MediaStream | null): void {\n element.srcObject = stream;\n}\n\n/**\n * Detaches any MediaStream from a video element.\n *\n * @param element - The video element to detach the stream from\n */\nexport function detachMediaStream(element: HTMLVideoElement): void {\n if (element.srcObject) {\n element.srcObject = null;\n }\n}\n"],"names":["attachMediaStream","element","stream","detachMediaStream"],"mappings":"AAoEO,SAASA,EAAkBC,GAA2BC,GAAkC;AAC7F,EAAAD,EAAQ,YAAYC;AACtB;AAOO,SAASC,EAAkBF,GAAiC;AACjE,EAAIA,EAAQ,cACVA,EAAQ,YAAY;AAExB;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signalwire/web-components",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-dev-20260515133934",
|
|
4
4
|
"description": "UI components library built with Lit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
9
|
"sideEffects": [
|
|
10
10
|
"./dist/index.js",
|
|
11
|
-
"./dist/components
|
|
11
|
+
"./dist/components/**/*.js"
|
|
12
12
|
],
|
|
13
13
|
"exports": {
|
|
14
14
|
".": {
|
|
@@ -16,53 +16,109 @@
|
|
|
16
16
|
"import": "./dist/index.js",
|
|
17
17
|
"default": "./dist/index.js"
|
|
18
18
|
},
|
|
19
|
-
"./call-media": {
|
|
20
|
-
"types": "./dist/components/call-media.d.ts",
|
|
21
|
-
"import": "./dist/components/call-media.js"
|
|
19
|
+
"./sw-call-media": {
|
|
20
|
+
"types": "./dist/components/sw-call-media.d.ts",
|
|
21
|
+
"import": "./dist/components/sw-call-media.js"
|
|
22
22
|
},
|
|
23
|
-
"./self-media": {
|
|
24
|
-
"types": "./dist/components/self-media.d.ts",
|
|
25
|
-
"import": "./dist/components/self-media.js"
|
|
23
|
+
"./sw-self-media": {
|
|
24
|
+
"types": "./dist/components/sw-self-media.d.ts",
|
|
25
|
+
"import": "./dist/components/sw-self-media.js"
|
|
26
26
|
},
|
|
27
|
-
"./
|
|
28
|
-
"types": "./dist/components/
|
|
29
|
-
"import": "./dist/components/
|
|
27
|
+
"./sw-local-camera": {
|
|
28
|
+
"types": "./dist/components/sw-local-camera.d.ts",
|
|
29
|
+
"import": "./dist/components/sw-local-camera.js"
|
|
30
30
|
},
|
|
31
|
-
"./
|
|
32
|
-
"types": "./dist/components/
|
|
33
|
-
"import": "./dist/components/
|
|
31
|
+
"./sw-participants": {
|
|
32
|
+
"types": "./dist/components/sw-participants.d.ts",
|
|
33
|
+
"import": "./dist/components/sw-participants.js"
|
|
34
34
|
},
|
|
35
|
-
"./
|
|
36
|
-
"types": "./dist/components/
|
|
37
|
-
"import": "./dist/components/
|
|
35
|
+
"./sw-participant-controls": {
|
|
36
|
+
"types": "./dist/components/sw-participant-controls.d.ts",
|
|
37
|
+
"import": "./dist/components/sw-participant-controls.js"
|
|
38
38
|
},
|
|
39
|
-
"./
|
|
40
|
-
"types": "./dist/components/
|
|
41
|
-
"import": "./dist/components/
|
|
39
|
+
"./sw-call-controls": {
|
|
40
|
+
"types": "./dist/components/sw-call-controls.d.ts",
|
|
41
|
+
"import": "./dist/components/sw-call-controls.js"
|
|
42
42
|
},
|
|
43
|
-
"./
|
|
44
|
-
"types": "./dist/components/
|
|
45
|
-
"import": "./dist/components/
|
|
43
|
+
"./sw-call-status": {
|
|
44
|
+
"types": "./dist/components/sw-call-status.d.ts",
|
|
45
|
+
"import": "./dist/components/sw-call-status.js"
|
|
46
46
|
},
|
|
47
|
-
"./
|
|
48
|
-
"types": "./dist/components/
|
|
49
|
-
"import": "./dist/components/
|
|
47
|
+
"./sw-call-provider": {
|
|
48
|
+
"types": "./dist/components/sw-call-provider.d.ts",
|
|
49
|
+
"import": "./dist/components/sw-call-provider.js"
|
|
50
50
|
},
|
|
51
|
-
"./
|
|
52
|
-
"types": "./dist/components/
|
|
53
|
-
"import": "./dist/components/
|
|
51
|
+
"./sw-call-dialpad": {
|
|
52
|
+
"types": "./dist/components/sw-call-dialpad.d.ts",
|
|
53
|
+
"import": "./dist/components/sw-call-dialpad.js"
|
|
54
54
|
},
|
|
55
|
-
"./
|
|
56
|
-
"types": "./dist/components/
|
|
57
|
-
"import": "./dist/components/
|
|
55
|
+
"./sw-call-widget": {
|
|
56
|
+
"types": "./dist/components/sw-call-widget/sw-call-widget.d.ts",
|
|
57
|
+
"import": "./dist/components/sw-call-widget/sw-call-widget.js"
|
|
58
58
|
},
|
|
59
|
-
"./
|
|
60
|
-
"types": "./dist/components/
|
|
61
|
-
"import": "./dist/components/
|
|
59
|
+
"./sw-audio-level": {
|
|
60
|
+
"types": "./dist/components/sw-audio-level.d.ts",
|
|
61
|
+
"import": "./dist/components/sw-audio-level.js"
|
|
62
62
|
},
|
|
63
|
-
"./
|
|
64
|
-
"types": "./dist/components/
|
|
65
|
-
"import": "./dist/components/
|
|
63
|
+
"./sw-device-selector": {
|
|
64
|
+
"types": "./dist/components/sw-device-selector/index.d.ts",
|
|
65
|
+
"import": "./dist/components/sw-device-selector/index.js"
|
|
66
|
+
},
|
|
67
|
+
"./sw-click-to-call": {
|
|
68
|
+
"types": "./dist/components/sw-click-to-call.d.ts",
|
|
69
|
+
"import": "./dist/components/sw-click-to-call.js"
|
|
70
|
+
},
|
|
71
|
+
"./sw-directory": {
|
|
72
|
+
"types": "./dist/components/sw-directory.d.ts",
|
|
73
|
+
"import": "./dist/components/sw-directory.js"
|
|
74
|
+
},
|
|
75
|
+
"./sw-ui-icon": {
|
|
76
|
+
"types": "./dist/components/UI/icons/sw-ui-icon.d.ts",
|
|
77
|
+
"import": "./dist/components/UI/icons/sw-ui-icon.js"
|
|
78
|
+
},
|
|
79
|
+
"./sw-ui-dropup": {
|
|
80
|
+
"types": "./dist/components/UI/controls/sw-ui-dropup.d.ts",
|
|
81
|
+
"import": "./dist/components/UI/controls/sw-ui-dropup.js"
|
|
82
|
+
},
|
|
83
|
+
"./sw-ui-split-button": {
|
|
84
|
+
"types": "./dist/components/UI/controls/sw-ui-split-button.d.ts",
|
|
85
|
+
"import": "./dist/components/UI/controls/sw-ui-split-button.js"
|
|
86
|
+
},
|
|
87
|
+
"./sw-ui-control-bar": {
|
|
88
|
+
"types": "./dist/components/UI/controls/sw-ui-control-bar.d.ts",
|
|
89
|
+
"import": "./dist/components/UI/controls/sw-ui-control-bar.js"
|
|
90
|
+
},
|
|
91
|
+
"./sw-ui-dialpad": {
|
|
92
|
+
"types": "./dist/components/UI/controls/sw-ui-dialpad.d.ts",
|
|
93
|
+
"import": "./dist/components/UI/controls/sw-ui-dialpad.js"
|
|
94
|
+
},
|
|
95
|
+
"./sw-ui-call-layout": {
|
|
96
|
+
"types": "./dist/components/UI/layout/sw-ui-call-layout.d.ts",
|
|
97
|
+
"import": "./dist/components/UI/layout/sw-ui-call-layout.js"
|
|
98
|
+
},
|
|
99
|
+
"./sw-ui-background": {
|
|
100
|
+
"types": "./dist/components/UI/layout/sw-ui-background.d.ts",
|
|
101
|
+
"import": "./dist/components/UI/layout/sw-ui-background.js"
|
|
102
|
+
},
|
|
103
|
+
"./sw-ui-modal": {
|
|
104
|
+
"types": "./dist/components/UI/layout/sw-ui-modal.d.ts",
|
|
105
|
+
"import": "./dist/components/UI/layout/sw-ui-modal.js"
|
|
106
|
+
},
|
|
107
|
+
"./sw-ui-content-drawer": {
|
|
108
|
+
"types": "./dist/components/UI/layout/sw-ui-content-drawer.d.ts",
|
|
109
|
+
"import": "./dist/components/UI/layout/sw-ui-content-drawer.js"
|
|
110
|
+
},
|
|
111
|
+
"./sw-ui-responsive-container": {
|
|
112
|
+
"types": "./dist/components/UI/layout/sw-ui-responsive-container.d.ts",
|
|
113
|
+
"import": "./dist/components/UI/layout/sw-ui-responsive-container.js"
|
|
114
|
+
},
|
|
115
|
+
"./sw-ui-alert": {
|
|
116
|
+
"types": "./dist/components/UI/sw-ui-alert.d.ts",
|
|
117
|
+
"import": "./dist/components/UI/sw-ui-alert.js"
|
|
118
|
+
},
|
|
119
|
+
"./sw-ui-transcript-view": {
|
|
120
|
+
"types": "./dist/components/UI/sw-ui-transcript-view.d.ts",
|
|
121
|
+
"import": "./dist/components/UI/sw-ui-transcript-view.js"
|
|
66
122
|
},
|
|
67
123
|
"./context": {
|
|
68
124
|
"types": "./dist/context/index.d.ts",
|
|
@@ -78,7 +134,8 @@
|
|
|
78
134
|
},
|
|
79
135
|
"./react": {
|
|
80
136
|
"types": "./dist/react.d.ts"
|
|
81
|
-
}
|
|
137
|
+
},
|
|
138
|
+
"./theme.css": "./dist/theme.css"
|
|
82
139
|
},
|
|
83
140
|
"files": [
|
|
84
141
|
"dist"
|
|
@@ -86,7 +143,8 @@
|
|
|
86
143
|
"scripts": {
|
|
87
144
|
"dev": "vite",
|
|
88
145
|
"dev:test": "vite --port 3000",
|
|
89
|
-
"build": "vite build && tsc --project tsconfig.build.json && cp src/react.d.ts dist/",
|
|
146
|
+
"build": "vite build && vite build --config vite.embed.config.ts && tsc --project tsconfig.build.json && cp src/react.d.ts dist/ && cp src/theme.css dist/theme.css && vite build --config vite.stories.config.ts",
|
|
147
|
+
"build:stories": "vite build --config vite.stories.config.ts",
|
|
90
148
|
"preview": "vite preview",
|
|
91
149
|
"type-check": "tsc --noEmit",
|
|
92
150
|
"lint": "eslint src --ext .ts",
|
|
@@ -111,19 +169,24 @@
|
|
|
111
169
|
"license": "MIT",
|
|
112
170
|
"dependencies": {
|
|
113
171
|
"@lit/context": "^1.1.0",
|
|
172
|
+
"dompurify": "^3.4.0",
|
|
114
173
|
"lit": "^3.2.1",
|
|
174
|
+
"marked": "^9.1.6",
|
|
175
|
+
"prismjs": "^1.30.0",
|
|
115
176
|
"rxjs": "^7.8.2"
|
|
116
177
|
},
|
|
117
178
|
"peerDependencies": {
|
|
118
|
-
"@signalwire/js": "4.0.0-
|
|
179
|
+
"@signalwire/js": "4.0.0-dev-20260515133934"
|
|
119
180
|
},
|
|
120
181
|
"devDependencies": {
|
|
121
182
|
"@playwright/test": "^1.56.1",
|
|
122
183
|
"@types/node": "^20.19.24",
|
|
184
|
+
"@types/prismjs": "^1.26.6",
|
|
123
185
|
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
186
|
+
"@vaadin/router": "^2.0.1",
|
|
124
187
|
"@vitest/coverage-v8": "^3.2.4",
|
|
125
188
|
"eslint": "^9.39.1",
|
|
126
|
-
"happy-dom": "^20.
|
|
189
|
+
"happy-dom": "^20.9.0",
|
|
127
190
|
"prettier": "^3.6.2",
|
|
128
191
|
"typescript": "^5.9.3",
|
|
129
192
|
"vite": "^6.0.5",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audio-level.d.ts","sourceRoot":"","sources":["../../src/components/audio-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C,qBACa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,MAAM,0BAiEX;IAEF;;OAEG;IACyB,MAAM,CAAC,EAAE,WAAW,CAAC;IAEjD;;OAEG;IACyB,IAAI,SAAK;IAErC;;OAEG;IACwC,WAAW,EAAE,UAAU,GAAG,YAAY,CAAc;IAE/F;;OAEG;IACyB,OAAO,SAAM;IAEzC;;OAEG;IACM,OAAO,CAAC,OAAO,CAAgB;IAExC;;OAEG;IACH,OAAO,CAAC,aAAa,CAAC,CAAe;IAErC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAC,CAAe;IAEjC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,CAA6B;IAE7C;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAC,CAAS;IAEnC;;OAEG;IACH,OAAO,CAAC,UAAU,CAAC,CAA0B;IAE7C;;OAEG;IACH,iBAAiB;IAQjB;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAehE;;OAEG;IACH,oBAAoB;IAKpB;;;OAGG;IACI,gBAAgB,IAAI,IAAI;IAK/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,MAAM;CA0BP;AAED;;GAEG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,UAAU,CAAC;KAC9B;CACF"}
|