@liforma/client 0.2.1
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 +28 -0
- package/LICENSE +21 -0
- package/README.md +103 -0
- package/dist/next/index.js +5186 -0
- package/dist/next/index.js.map +1 -0
- package/dist/next/next/createLiformaSessionRouteHandler.d.ts +45 -0
- package/dist/next/next/createLiformaSessionRouteHandler.d.ts.map +1 -0
- package/dist/next/next/index.d.ts +8 -0
- package/dist/next/next/index.d.ts.map +1 -0
- package/dist/next/react/ExperienceThumbnail.d.ts +22 -0
- package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -0
- package/dist/next/react/ExperienceWidget.d.ts +35 -0
- package/dist/next/react/ExperienceWidget.d.ts.map +1 -0
- package/dist/next/shims/apiBaseUrl.d.ts +14 -0
- package/dist/next/shims/apiBaseUrl.d.ts.map +1 -0
- package/dist/next/shims/localStack.d.ts +6 -0
- package/dist/next/shims/localStack.d.ts.map +1 -0
- package/dist/next/thumbnail/attachThumbnailParallax.d.ts +7 -0
- package/dist/next/thumbnail/attachThumbnailParallax.d.ts.map +1 -0
- package/dist/next/thumbnail/ensureStyles.d.ts +3 -0
- package/dist/next/thumbnail/ensureStyles.d.ts.map +1 -0
- package/dist/next/thumbnail/hostedLaunchUrl.d.ts +23 -0
- package/dist/next/thumbnail/hostedLaunchUrl.d.ts.map +1 -0
- package/dist/next/thumbnail/index.d.ts +9 -0
- package/dist/next/thumbnail/index.d.ts.map +1 -0
- package/dist/next/thumbnail/lazyLoad.d.ts +8 -0
- package/dist/next/thumbnail/lazyLoad.d.ts.map +1 -0
- package/dist/next/thumbnail/scrollParallax.d.ts +13 -0
- package/dist/next/thumbnail/scrollParallax.d.ts.map +1 -0
- package/dist/next/thumbnail/styles.d.ts +3 -0
- package/dist/next/thumbnail/styles.d.ts.map +1 -0
- package/dist/next/thumbnail/toGalleryThumbUrl.d.ts +23 -0
- package/dist/next/thumbnail/toGalleryThumbUrl.d.ts.map +1 -0
- package/dist/next/thumbnail/toGalleryThumbUrl.test.d.ts +2 -0
- package/dist/next/thumbnail/toGalleryThumbUrl.test.d.ts.map +1 -0
- package/dist/next/thumbnail/types.d.ts +37 -0
- package/dist/next/thumbnail/types.d.ts.map +1 -0
- package/dist/next/v2/api/fetchExperiencePreview.d.ts +15 -0
- package/dist/next/v2/api/fetchExperiencePreview.d.ts.map +1 -0
- package/dist/next/v2/api/mintPublicSession.d.ts +25 -0
- package/dist/next/v2/api/mintPublicSession.d.ts.map +1 -0
- package/dist/next/v2/api/sessionEndpointRequest.d.ts +16 -0
- package/dist/next/v2/api/sessionEndpointRequest.d.ts.map +1 -0
- package/dist/next/v2/conversationProcessor.d.ts +6 -0
- package/dist/next/v2/conversationProcessor.d.ts.map +1 -0
- package/dist/next/v2/embed/iframeHost.d.ts +70 -0
- package/dist/next/v2/embed/iframeHost.d.ts.map +1 -0
- package/dist/next/v2/embed/playerReachability.d.ts +4 -0
- package/dist/next/v2/embed/playerReachability.d.ts.map +1 -0
- package/dist/next/v2/embed/protocol.d.ts +181 -0
- package/dist/next/v2/embed/protocol.d.ts.map +1 -0
- package/dist/next/v2/embed/readyGate.d.ts +7 -0
- package/dist/next/v2/embed/readyGate.d.ts.map +1 -0
- package/dist/next/v2/experience.d.ts +133 -0
- package/dist/next/v2/experience.d.ts.map +1 -0
- package/dist/next/v2/experienceEvents.d.ts +27 -0
- package/dist/next/v2/experienceEvents.d.ts.map +1 -0
- package/dist/next/v2/shims/embedBaseUrl.d.ts +19 -0
- package/dist/next/v2/shims/embedBaseUrl.d.ts.map +1 -0
- package/dist/next/v2/speechOnlyManifest.d.ts +7 -0
- package/dist/next/v2/speechOnlyManifest.d.ts.map +1 -0
- package/dist/next/v2/types/sessionInteraction.d.ts +120 -0
- package/dist/next/v2/types/sessionInteraction.d.ts.map +1 -0
- package/dist/next/v2/types/sessionManifest.d.ts +93 -0
- package/dist/next/v2/types/sessionManifest.d.ts.map +1 -0
- package/dist/next/v2/types/sessionManifestSchema.d.ts +183 -0
- package/dist/next/v2/types/sessionManifestSchema.d.ts.map +1 -0
- package/dist/next/v2/types/sessionPipeline.d.ts +23 -0
- package/dist/next/v2/types/sessionPipeline.d.ts.map +1 -0
- package/dist/next/widget/dockGeometry.d.ts +26 -0
- package/dist/next/widget/dockGeometry.d.ts.map +1 -0
- package/dist/next/widget/index.d.ts +5 -0
- package/dist/next/widget/index.d.ts.map +1 -0
- package/dist/next/widget/mountExperienceWidget.d.ts +13 -0
- package/dist/next/widget/mountExperienceWidget.d.ts.map +1 -0
- package/dist/next/widget/styles.d.ts +4 -0
- package/dist/next/widget/styles.d.ts.map +1 -0
- package/dist/next/widget/types.d.ts +62 -0
- package/dist/next/widget/types.d.ts.map +1 -0
- package/dist/npm/index.js +4859 -0
- package/dist/npm/index.js.map +1 -0
- package/dist/npm/shims/apiBaseUrl.d.ts +14 -0
- package/dist/npm/shims/apiBaseUrl.d.ts.map +1 -0
- package/dist/npm/shims/localStack.d.ts +6 -0
- package/dist/npm/shims/localStack.d.ts.map +1 -0
- package/dist/npm/svelte/experienceLoadError.d.ts +16 -0
- package/dist/npm/svelte/experienceLoadError.d.ts.map +1 -0
- package/dist/npm/svelte/experienceLoadErrorOverlay.d.ts +8 -0
- package/dist/npm/svelte/experienceLoadErrorOverlay.d.ts.map +1 -0
- package/dist/npm/svelte/experienceLoadErrorStyles.d.ts +5 -0
- package/dist/npm/svelte/experienceLoadErrorStyles.d.ts.map +1 -0
- package/dist/npm/thumbnail/attachThumbnailParallax.d.ts +7 -0
- package/dist/npm/thumbnail/attachThumbnailParallax.d.ts.map +1 -0
- package/dist/npm/thumbnail/ensureStyles.d.ts +3 -0
- package/dist/npm/thumbnail/ensureStyles.d.ts.map +1 -0
- package/dist/npm/thumbnail/hostedLaunchUrl.d.ts +23 -0
- package/dist/npm/thumbnail/hostedLaunchUrl.d.ts.map +1 -0
- package/dist/npm/thumbnail/index.d.ts +9 -0
- package/dist/npm/thumbnail/index.d.ts.map +1 -0
- package/dist/npm/thumbnail/lazyLoad.d.ts +8 -0
- package/dist/npm/thumbnail/lazyLoad.d.ts.map +1 -0
- package/dist/npm/thumbnail/scrollParallax.d.ts +13 -0
- package/dist/npm/thumbnail/scrollParallax.d.ts.map +1 -0
- package/dist/npm/thumbnail/styles.d.ts +3 -0
- package/dist/npm/thumbnail/styles.d.ts.map +1 -0
- package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts +23 -0
- package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts.map +1 -0
- package/dist/npm/thumbnail/types.d.ts +37 -0
- package/dist/npm/thumbnail/types.d.ts.map +1 -0
- package/dist/npm/v2/api/fetchExperiencePreview.d.ts +15 -0
- package/dist/npm/v2/api/fetchExperiencePreview.d.ts.map +1 -0
- package/dist/npm/v2/api/mintPublicSession.d.ts +25 -0
- package/dist/npm/v2/api/mintPublicSession.d.ts.map +1 -0
- package/dist/npm/v2/api/sessionEndpointRequest.d.ts +16 -0
- package/dist/npm/v2/api/sessionEndpointRequest.d.ts.map +1 -0
- package/dist/npm/v2/conversationProcessor.d.ts +6 -0
- package/dist/npm/v2/conversationProcessor.d.ts.map +1 -0
- package/dist/npm/v2/embed/iframeHost.d.ts +70 -0
- package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -0
- package/dist/npm/v2/embed/playerReachability.d.ts +4 -0
- package/dist/npm/v2/embed/playerReachability.d.ts.map +1 -0
- package/dist/npm/v2/embed/protocol.d.ts +181 -0
- package/dist/npm/v2/embed/protocol.d.ts.map +1 -0
- package/dist/npm/v2/embed/readyGate.d.ts +7 -0
- package/dist/npm/v2/embed/readyGate.d.ts.map +1 -0
- package/dist/npm/v2/embed/returnNavigation.d.ts +4 -0
- package/dist/npm/v2/embed/returnNavigation.d.ts.map +1 -0
- package/dist/npm/v2/experience.d.ts +133 -0
- package/dist/npm/v2/experience.d.ts.map +1 -0
- package/dist/npm/v2/experienceEvents.d.ts +27 -0
- package/dist/npm/v2/experienceEvents.d.ts.map +1 -0
- package/dist/npm/v2/index.d.ts +21 -0
- package/dist/npm/v2/index.d.ts.map +1 -0
- package/dist/npm/v2/liforma-experience-thumbnail.d.ts +9 -0
- package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -0
- package/dist/npm/v2/liforma-experience-widget.d.ts +8 -0
- package/dist/npm/v2/liforma-experience-widget.d.ts.map +1 -0
- package/dist/npm/v2/liforma-experience.d.ts +15 -0
- package/dist/npm/v2/liforma-experience.d.ts.map +1 -0
- package/dist/npm/v2/npm.d.ts +10 -0
- package/dist/npm/v2/npm.d.ts.map +1 -0
- package/dist/npm/v2/shims/embedBaseUrl.d.ts +19 -0
- package/dist/npm/v2/shims/embedBaseUrl.d.ts.map +1 -0
- package/dist/npm/v2/speechOnlyManifest.d.ts +7 -0
- package/dist/npm/v2/speechOnlyManifest.d.ts.map +1 -0
- package/dist/npm/v2/types/index.d.ts +3 -0
- package/dist/npm/v2/types/index.d.ts.map +1 -0
- package/dist/npm/v2/types/sessionInteraction.d.ts +120 -0
- package/dist/npm/v2/types/sessionInteraction.d.ts.map +1 -0
- package/dist/npm/v2/types/sessionManifest.d.ts +93 -0
- package/dist/npm/v2/types/sessionManifest.d.ts.map +1 -0
- package/dist/npm/v2/types/sessionManifestSchema.d.ts +183 -0
- package/dist/npm/v2/types/sessionManifestSchema.d.ts.map +1 -0
- package/dist/npm/v2/types/sessionPipeline.d.ts +23 -0
- package/dist/npm/v2/types/sessionPipeline.d.ts.map +1 -0
- package/dist/npm/widget/dockGeometry.d.ts +26 -0
- package/dist/npm/widget/dockGeometry.d.ts.map +1 -0
- package/dist/npm/widget/index.d.ts +5 -0
- package/dist/npm/widget/index.d.ts.map +1 -0
- package/dist/npm/widget/mountExperienceWidget.d.ts +13 -0
- package/dist/npm/widget/mountExperienceWidget.d.ts.map +1 -0
- package/dist/npm/widget/styles.d.ts +4 -0
- package/dist/npm/widget/styles.d.ts.map +1 -0
- package/dist/npm/widget/types.d.ts +62 -0
- package/dist/npm/widget/types.d.ts.map +1 -0
- package/dist/react/component/experienceComponentLaunch.d.ts +7 -0
- package/dist/react/component/experienceComponentLaunch.d.ts.map +1 -0
- package/dist/react/component/experienceComponentRuntime.d.ts +55 -0
- package/dist/react/component/experienceComponentRuntime.d.ts.map +1 -0
- package/dist/react/component/experienceComponentTypes.d.ts +60 -0
- package/dist/react/component/experienceComponentTypes.d.ts.map +1 -0
- package/dist/react/index.js +5499 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/react/Experience.d.ts +4 -0
- package/dist/react/react/Experience.d.ts.map +1 -0
- package/dist/react/react/ExperienceThumbnail.d.ts +22 -0
- package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -0
- package/dist/react/react/ExperienceWidget.d.ts +35 -0
- package/dist/react/react/ExperienceWidget.d.ts.map +1 -0
- package/dist/react/react/index.d.ts +8 -0
- package/dist/react/react/index.d.ts.map +1 -0
- package/dist/react/shims/apiBaseUrl.d.ts +14 -0
- package/dist/react/shims/apiBaseUrl.d.ts.map +1 -0
- package/dist/react/shims/localStack.d.ts +6 -0
- package/dist/react/shims/localStack.d.ts.map +1 -0
- package/dist/react/svelte/experienceLoadError.d.ts +16 -0
- package/dist/react/svelte/experienceLoadError.d.ts.map +1 -0
- package/dist/react/svelte/experienceLoadErrorOverlay.d.ts +8 -0
- package/dist/react/svelte/experienceLoadErrorOverlay.d.ts.map +1 -0
- package/dist/react/svelte/experienceLoadErrorStyles.d.ts +5 -0
- package/dist/react/svelte/experienceLoadErrorStyles.d.ts.map +1 -0
- package/dist/react/thumbnail/attachThumbnailParallax.d.ts +7 -0
- package/dist/react/thumbnail/attachThumbnailParallax.d.ts.map +1 -0
- package/dist/react/thumbnail/ensureStyles.d.ts +3 -0
- package/dist/react/thumbnail/ensureStyles.d.ts.map +1 -0
- package/dist/react/thumbnail/hostedLaunchUrl.d.ts +23 -0
- package/dist/react/thumbnail/hostedLaunchUrl.d.ts.map +1 -0
- package/dist/react/thumbnail/index.d.ts +9 -0
- package/dist/react/thumbnail/index.d.ts.map +1 -0
- package/dist/react/thumbnail/lazyLoad.d.ts +8 -0
- package/dist/react/thumbnail/lazyLoad.d.ts.map +1 -0
- package/dist/react/thumbnail/scrollParallax.d.ts +13 -0
- package/dist/react/thumbnail/scrollParallax.d.ts.map +1 -0
- package/dist/react/thumbnail/styles.d.ts +3 -0
- package/dist/react/thumbnail/styles.d.ts.map +1 -0
- package/dist/react/thumbnail/toGalleryThumbUrl.d.ts +23 -0
- package/dist/react/thumbnail/toGalleryThumbUrl.d.ts.map +1 -0
- package/dist/react/thumbnail/toGalleryThumbUrl.test.d.ts +2 -0
- package/dist/react/thumbnail/toGalleryThumbUrl.test.d.ts.map +1 -0
- package/dist/react/thumbnail/types.d.ts +37 -0
- package/dist/react/thumbnail/types.d.ts.map +1 -0
- package/dist/react/v2/api/fetchExperiencePreview.d.ts +15 -0
- package/dist/react/v2/api/fetchExperiencePreview.d.ts.map +1 -0
- package/dist/react/v2/api/mintPublicSession.d.ts +25 -0
- package/dist/react/v2/api/mintPublicSession.d.ts.map +1 -0
- package/dist/react/v2/api/sessionEndpointRequest.d.ts +16 -0
- package/dist/react/v2/api/sessionEndpointRequest.d.ts.map +1 -0
- package/dist/react/v2/conversationProcessor.d.ts +6 -0
- package/dist/react/v2/conversationProcessor.d.ts.map +1 -0
- package/dist/react/v2/embed/iframeHost.d.ts +70 -0
- package/dist/react/v2/embed/iframeHost.d.ts.map +1 -0
- package/dist/react/v2/embed/playerReachability.d.ts +4 -0
- package/dist/react/v2/embed/playerReachability.d.ts.map +1 -0
- package/dist/react/v2/embed/protocol.d.ts +181 -0
- package/dist/react/v2/embed/protocol.d.ts.map +1 -0
- package/dist/react/v2/embed/readyGate.d.ts +7 -0
- package/dist/react/v2/embed/readyGate.d.ts.map +1 -0
- package/dist/react/v2/experience.d.ts +133 -0
- package/dist/react/v2/experience.d.ts.map +1 -0
- package/dist/react/v2/experienceEvents.d.ts +27 -0
- package/dist/react/v2/experienceEvents.d.ts.map +1 -0
- package/dist/react/v2/shims/embedBaseUrl.d.ts +19 -0
- package/dist/react/v2/shims/embedBaseUrl.d.ts.map +1 -0
- package/dist/react/v2/speechOnlyManifest.d.ts +7 -0
- package/dist/react/v2/speechOnlyManifest.d.ts.map +1 -0
- package/dist/react/v2/types/sessionInteraction.d.ts +120 -0
- package/dist/react/v2/types/sessionInteraction.d.ts.map +1 -0
- package/dist/react/v2/types/sessionManifest.d.ts +93 -0
- package/dist/react/v2/types/sessionManifest.d.ts.map +1 -0
- package/dist/react/v2/types/sessionManifestSchema.d.ts +183 -0
- package/dist/react/v2/types/sessionManifestSchema.d.ts.map +1 -0
- package/dist/react/v2/types/sessionPipeline.d.ts +23 -0
- package/dist/react/v2/types/sessionPipeline.d.ts.map +1 -0
- package/dist/react/widget/dockGeometry.d.ts +26 -0
- package/dist/react/widget/dockGeometry.d.ts.map +1 -0
- package/dist/react/widget/index.d.ts +5 -0
- package/dist/react/widget/index.d.ts.map +1 -0
- package/dist/react/widget/mountExperienceWidget.d.ts +13 -0
- package/dist/react/widget/mountExperienceWidget.d.ts.map +1 -0
- package/dist/react/widget/styles.d.ts +4 -0
- package/dist/react/widget/styles.d.ts.map +1 -0
- package/dist/react/widget/types.d.ts +62 -0
- package/dist/react/widget/types.d.ts.map +1 -0
- package/dist/sdk/v2/client.js +806 -0
- package/dist/sdk/v2/client.js.map +1 -0
- package/dist/svelte/Experience.svelte +522 -0
- package/dist/svelte/Experience.svelte.d.ts +15 -0
- package/dist/svelte/ExperienceThumbnail.svelte +376 -0
- package/dist/svelte/ExperienceThumbnail.svelte.d.ts +22 -0
- package/dist/svelte/ExperienceWidget.svelte +146 -0
- package/dist/svelte/ExperienceWidget.svelte.d.ts +35 -0
- package/dist/svelte/experienceLoadError.d.ts +15 -0
- package/dist/svelte/experienceLoadError.js +82 -0
- package/dist/svelte/experienceLoadError.test.d.ts +1 -0
- package/dist/svelte/experienceLoadError.test.js +18 -0
- package/dist/svelte/experienceLoadErrorOverlay.d.ts +7 -0
- package/dist/svelte/experienceLoadErrorOverlay.js +48 -0
- package/dist/svelte/experienceLoadErrorStyles.d.ts +4 -0
- package/dist/svelte/experienceLoadErrorStyles.js +112 -0
- package/dist/svelte/index.d.ts +7 -0
- package/dist/svelte/index.js +5 -0
- package/dist/svelte/types.d.ts +1 -0
- package/dist/svelte/types.js +1 -0
- package/package.json +154 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { injectExperienceLoadErrorStyles } from './experienceLoadErrorStyles';
|
|
2
|
+
export function createExperienceLoadErrorOverlay(container, initial) {
|
|
3
|
+
injectExperienceLoadErrorStyles();
|
|
4
|
+
let presentation = initial;
|
|
5
|
+
let advancedOpen = false;
|
|
6
|
+
const root = document.createElement('div');
|
|
7
|
+
root.className = 'liforma-loading-screen liforma-loading-screen-absolute';
|
|
8
|
+
root.setAttribute('role', 'alert');
|
|
9
|
+
root.setAttribute('aria-live', 'assertive');
|
|
10
|
+
const card = document.createElement('div');
|
|
11
|
+
card.className = 'liforma-loading-card liforma-loading-card-error';
|
|
12
|
+
const kicker = document.createElement('p');
|
|
13
|
+
kicker.className = 'liforma-loading-kicker';
|
|
14
|
+
kicker.textContent = 'Avatar experience';
|
|
15
|
+
const title = document.createElement('p');
|
|
16
|
+
title.className = 'liforma-loading-error-title';
|
|
17
|
+
const advancedBtn = document.createElement('button');
|
|
18
|
+
advancedBtn.type = 'button';
|
|
19
|
+
advancedBtn.className = 'liforma-loading-error-advanced';
|
|
20
|
+
const detail = document.createElement('p');
|
|
21
|
+
detail.className = 'liforma-loading-error-detail';
|
|
22
|
+
advancedBtn.addEventListener('click', () => {
|
|
23
|
+
advancedOpen = !advancedOpen;
|
|
24
|
+
render();
|
|
25
|
+
});
|
|
26
|
+
card.append(kicker, title, advancedBtn, detail);
|
|
27
|
+
root.append(card);
|
|
28
|
+
container.append(root);
|
|
29
|
+
function render() {
|
|
30
|
+
title.textContent = presentation.title;
|
|
31
|
+
detail.textContent = presentation.detail;
|
|
32
|
+
detail.hidden = !advancedOpen;
|
|
33
|
+
advancedBtn.textContent = advancedOpen ? 'Hide details' : 'Advanced';
|
|
34
|
+
advancedBtn.setAttribute('aria-expanded', advancedOpen ? 'true' : 'false');
|
|
35
|
+
}
|
|
36
|
+
render();
|
|
37
|
+
return {
|
|
38
|
+
root,
|
|
39
|
+
setPresentation(next) {
|
|
40
|
+
presentation = next;
|
|
41
|
+
advancedOpen = false;
|
|
42
|
+
render();
|
|
43
|
+
},
|
|
44
|
+
remove() {
|
|
45
|
+
root.remove();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Subset of session loading overlay styles for pre-attach Experience load errors. */
|
|
2
|
+
export declare const EXPERIENCE_LOAD_ERROR_STYLE_ID = "liforma-experience-load-error-styles";
|
|
3
|
+
export declare function injectExperienceLoadErrorStyles(): void;
|
|
4
|
+
export declare const EXPERIENCE_LOAD_ERROR_CSS = "\n\t.liforma-loading-screen {\n\t\tinset: 0;\n\t\tz-index: 20;\n\t\tbox-sizing: border-box;\n\t\toverflow-x: clip;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmax-width: 100vw;\n\t\tbackground:\n\t\t\tradial-gradient(circle at 50% 60%, rgba(79, 126, 196, 0.18), transparent 38%),\n\t\t\t#030508;\n\t\tfont-family: system-ui, -apple-system, sans-serif;\n\t\tcolor: #e8f0ff;\n\t\ttext-align: center;\n\t}\n\t.liforma-loading-screen-absolute {\n\t\tposition: absolute;\n\t}\n\t.liforma-loading-card {\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 60%;\n\t\ttransform: translate(-50%, -50%);\n\t\twidth: min(22rem, calc(100% - 2.5rem));\n\t\tmax-width: calc(100% - max(1.25rem, env(safe-area-inset-left, 0px)) - max(1.25rem, env(safe-area-inset-right, 0px)));\n\t\tbox-sizing: border-box;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tborder: 0;\n\t\tbackground: transparent;\n\t\tbox-shadow: none;\n\t}\n\t.liforma-loading-card-error {\n\t\tdisplay: block;\n\t\ttext-align: center;\n\t\tpadding: 1rem 1.05rem;\n\t\tborder-radius: 14px;\n\t\tborder: 1px solid rgba(255, 154, 154, 0.28);\n\t\tbackground:\n\t\t\tlinear-gradient(180deg, rgba(21, 29, 42, 0.92), rgba(9, 13, 20, 0.92));\n\t}\n\t.liforma-loading-kicker {\n\t\tmargin: 0 0 0.18rem;\n\t\tcolor: #8ba4c5;\n\t\tfont-size: 0.68rem;\n\t\tfont-weight: 700;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 0.08em;\n\t}\n\t.liforma-loading-error {\n\t\tmargin: 0;\n\t\tmax-width: 28rem;\n\t\tcolor: #ffb4b4;\n\t\tfont-size: 0.92rem;\n\t\tline-height: 1.4;\n\t}\n\t.liforma-loading-error-title {\n\t\tmargin: 0;\n\t\tcolor: #f6ebe8;\n\t\tfont-size: 0.98rem;\n\t\tfont-weight: 650;\n\t\tline-height: 1.35;\n\t}\n\t.liforma-loading-error-advanced {\n\t\tmargin: 0.85rem 0 0;\n\t\tpadding: 0;\n\t\tborder: 0;\n\t\tbackground: transparent;\n\t\tcolor: #9eb7d8;\n\t\tfont: inherit;\n\t\tfont-size: 0.78rem;\n\t\tfont-weight: 650;\n\t\tletter-spacing: 0.02em;\n\t\ttext-decoration: underline;\n\t\ttext-underline-offset: 0.18em;\n\t\tcursor: pointer;\n\t}\n\t.liforma-loading-error-advanced:hover,\n\t.liforma-loading-error-advanced:focus-visible {\n\t\tcolor: #d7e6ff;\n\t\toutline: none;\n\t}\n\t.liforma-loading-error-detail {\n\t\tmargin: 0.7rem 0 0;\n\t\tpadding: 0.65rem 0.7rem;\n\t\tborder-radius: 10px;\n\t\tborder: 1px solid rgba(158, 191, 255, 0.16);\n\t\tbackground: rgba(3, 5, 8, 0.45);\n\t\tcolor: #c6d4e8;\n\t\tfont-size: 0.78rem;\n\t\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n\t\tline-height: 1.4;\n\t\ttext-align: left;\n\t\tword-break: break-word;\n\t}\n\t.liforma-loading-error-detail[hidden] {\n\t\tdisplay: none;\n\t}\n";
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/** Subset of session loading overlay styles for pre-attach Experience load errors. */
|
|
2
|
+
export const EXPERIENCE_LOAD_ERROR_STYLE_ID = 'liforma-experience-load-error-styles';
|
|
3
|
+
export function injectExperienceLoadErrorStyles() {
|
|
4
|
+
if (typeof document === 'undefined')
|
|
5
|
+
return;
|
|
6
|
+
if (document.getElementById(EXPERIENCE_LOAD_ERROR_STYLE_ID))
|
|
7
|
+
return;
|
|
8
|
+
const style = document.createElement('style');
|
|
9
|
+
style.id = EXPERIENCE_LOAD_ERROR_STYLE_ID;
|
|
10
|
+
style.textContent = EXPERIENCE_LOAD_ERROR_CSS;
|
|
11
|
+
document.head.append(style);
|
|
12
|
+
}
|
|
13
|
+
export const EXPERIENCE_LOAD_ERROR_CSS = `
|
|
14
|
+
.liforma-loading-screen {
|
|
15
|
+
inset: 0;
|
|
16
|
+
z-index: 20;
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
overflow-x: clip;
|
|
19
|
+
width: 100%;
|
|
20
|
+
height: 100%;
|
|
21
|
+
max-width: 100vw;
|
|
22
|
+
background:
|
|
23
|
+
radial-gradient(circle at 50% 60%, rgba(79, 126, 196, 0.18), transparent 38%),
|
|
24
|
+
#030508;
|
|
25
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
26
|
+
color: #e8f0ff;
|
|
27
|
+
text-align: center;
|
|
28
|
+
}
|
|
29
|
+
.liforma-loading-screen-absolute {
|
|
30
|
+
position: absolute;
|
|
31
|
+
}
|
|
32
|
+
.liforma-loading-card {
|
|
33
|
+
position: absolute;
|
|
34
|
+
left: 50%;
|
|
35
|
+
top: 60%;
|
|
36
|
+
transform: translate(-50%, -50%);
|
|
37
|
+
width: min(22rem, calc(100% - 2.5rem));
|
|
38
|
+
max-width: calc(100% - max(1.25rem, env(safe-area-inset-left, 0px)) - max(1.25rem, env(safe-area-inset-right, 0px)));
|
|
39
|
+
box-sizing: border-box;
|
|
40
|
+
margin: 0;
|
|
41
|
+
padding: 0;
|
|
42
|
+
border: 0;
|
|
43
|
+
background: transparent;
|
|
44
|
+
box-shadow: none;
|
|
45
|
+
}
|
|
46
|
+
.liforma-loading-card-error {
|
|
47
|
+
display: block;
|
|
48
|
+
text-align: center;
|
|
49
|
+
padding: 1rem 1.05rem;
|
|
50
|
+
border-radius: 14px;
|
|
51
|
+
border: 1px solid rgba(255, 154, 154, 0.28);
|
|
52
|
+
background:
|
|
53
|
+
linear-gradient(180deg, rgba(21, 29, 42, 0.92), rgba(9, 13, 20, 0.92));
|
|
54
|
+
}
|
|
55
|
+
.liforma-loading-kicker {
|
|
56
|
+
margin: 0 0 0.18rem;
|
|
57
|
+
color: #8ba4c5;
|
|
58
|
+
font-size: 0.68rem;
|
|
59
|
+
font-weight: 700;
|
|
60
|
+
text-transform: uppercase;
|
|
61
|
+
letter-spacing: 0.08em;
|
|
62
|
+
}
|
|
63
|
+
.liforma-loading-error {
|
|
64
|
+
margin: 0;
|
|
65
|
+
max-width: 28rem;
|
|
66
|
+
color: #ffb4b4;
|
|
67
|
+
font-size: 0.92rem;
|
|
68
|
+
line-height: 1.4;
|
|
69
|
+
}
|
|
70
|
+
.liforma-loading-error-title {
|
|
71
|
+
margin: 0;
|
|
72
|
+
color: #f6ebe8;
|
|
73
|
+
font-size: 0.98rem;
|
|
74
|
+
font-weight: 650;
|
|
75
|
+
line-height: 1.35;
|
|
76
|
+
}
|
|
77
|
+
.liforma-loading-error-advanced {
|
|
78
|
+
margin: 0.85rem 0 0;
|
|
79
|
+
padding: 0;
|
|
80
|
+
border: 0;
|
|
81
|
+
background: transparent;
|
|
82
|
+
color: #9eb7d8;
|
|
83
|
+
font: inherit;
|
|
84
|
+
font-size: 0.78rem;
|
|
85
|
+
font-weight: 650;
|
|
86
|
+
letter-spacing: 0.02em;
|
|
87
|
+
text-decoration: underline;
|
|
88
|
+
text-underline-offset: 0.18em;
|
|
89
|
+
cursor: pointer;
|
|
90
|
+
}
|
|
91
|
+
.liforma-loading-error-advanced:hover,
|
|
92
|
+
.liforma-loading-error-advanced:focus-visible {
|
|
93
|
+
color: #d7e6ff;
|
|
94
|
+
outline: none;
|
|
95
|
+
}
|
|
96
|
+
.liforma-loading-error-detail {
|
|
97
|
+
margin: 0.7rem 0 0;
|
|
98
|
+
padding: 0.65rem 0.7rem;
|
|
99
|
+
border-radius: 10px;
|
|
100
|
+
border: 1px solid rgba(158, 191, 255, 0.16);
|
|
101
|
+
background: rgba(3, 5, 8, 0.45);
|
|
102
|
+
color: #c6d4e8;
|
|
103
|
+
font-size: 0.78rem;
|
|
104
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
105
|
+
line-height: 1.4;
|
|
106
|
+
text-align: left;
|
|
107
|
+
word-break: break-word;
|
|
108
|
+
}
|
|
109
|
+
.liforma-loading-error-detail[hidden] {
|
|
110
|
+
display: none;
|
|
111
|
+
}
|
|
112
|
+
`;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as Experience } from './Experience.svelte';
|
|
2
|
+
export { default as ExperienceThumbnail } from './ExperienceThumbnail.svelte';
|
|
3
|
+
export { default as ExperienceWidget } from './ExperienceWidget.svelte';
|
|
4
|
+
export type { ExperienceHandle, ExperienceProps } from './types';
|
|
5
|
+
export type { GalleryThumb } from '@liforma/client';
|
|
6
|
+
/** @deprecated Use `Experience` from `@liforma/client/svelte`. */
|
|
7
|
+
export { default as LiformaExperience } from './Experience.svelte';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as Experience } from './Experience.svelte';
|
|
2
|
+
export { default as ExperienceThumbnail } from './ExperienceThumbnail.svelte';
|
|
3
|
+
export { default as ExperienceWidget } from './ExperienceWidget.svelte';
|
|
4
|
+
/** @deprecated Use `Experience` from `@liforma/client/svelte`. */
|
|
5
|
+
export { default as LiformaExperience } from './Experience.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { ExperienceHandle, ExperienceProps } from '../component/experienceComponentTypes';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@liforma/client",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Liforma browser SDK — Experience sessions, speech API, and Svelte embed component.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://docs.liforma.ai",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/LiformaLtd/cdn.liforma.ai.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/LiformaLtd/cdn.liforma.ai/issues"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/npm/v2/npm.d.ts",
|
|
21
|
+
"import": "./dist/npm/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./svelte": {
|
|
24
|
+
"types": "./dist/svelte/index.d.ts",
|
|
25
|
+
"import": "./dist/svelte/index.js",
|
|
26
|
+
"svelte": "./dist/svelte/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./react": {
|
|
29
|
+
"types": "./dist/react/react/index.d.ts",
|
|
30
|
+
"import": "./dist/react/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./next": {
|
|
33
|
+
"types": "./dist/next/next/index.d.ts",
|
|
34
|
+
"import": "./dist/next/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist/npm",
|
|
39
|
+
"dist/svelte",
|
|
40
|
+
"dist/react",
|
|
41
|
+
"dist/next",
|
|
42
|
+
"dist/sdk",
|
|
43
|
+
"README.md",
|
|
44
|
+
"CHANGELOG.md",
|
|
45
|
+
"LICENSE"
|
|
46
|
+
],
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"svelte": "^5.0.0",
|
|
49
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
50
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
51
|
+
},
|
|
52
|
+
"peerDependenciesMeta": {
|
|
53
|
+
"svelte": {
|
|
54
|
+
"optional": true
|
|
55
|
+
},
|
|
56
|
+
"react": {
|
|
57
|
+
"optional": true
|
|
58
|
+
},
|
|
59
|
+
"react-dom": {
|
|
60
|
+
"optional": true
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "npm run build:v2 && npm run build:npm && npm run build:svelte && npm run build:react && npm run build:next && npm run copy:preview",
|
|
65
|
+
"build:react": "vite build --config vite.config.react.ts && tsc -p tsconfig.react.json",
|
|
66
|
+
"build:next": "vite build --config vite.config.next.ts && tsc -p tsconfig.next.json",
|
|
67
|
+
"copy:preview": "mkdir -p dist/preview && cp preview/v2-embed-test.html dist/preview/ && cp preview/v2-embed-test-redirect.html dist/preview/",
|
|
68
|
+
"build:v2": "vite build --config vite.config.v2.ts",
|
|
69
|
+
"build:npm": "vite build --config vite.config.npm.ts && tsc -p tsconfig.npm.json",
|
|
70
|
+
"build:svelte": "svelte-package -i src/svelte -o dist/svelte && vite build --config vite.config.svelte.ts",
|
|
71
|
+
"check:consumer": "svelte-check --workspace test/consumer --tsconfig ./tsconfig.json",
|
|
72
|
+
"test": "vitest run",
|
|
73
|
+
"preview": "node scripts/preview-local.mjs",
|
|
74
|
+
"dev:sdk": "npm run build:v2 && npm run copy:preview && npm run preview",
|
|
75
|
+
"dev": "npm run build && npm run preview",
|
|
76
|
+
"publish:sdk": "node scripts/publish-sdk.mjs",
|
|
77
|
+
"publish:npm": "node scripts/publish-npm.mjs",
|
|
78
|
+
"publish:avatar": "node scripts/publish-avatar.mjs",
|
|
79
|
+
"publish:avatars-dist": "node scripts/publish-avatars.mjs",
|
|
80
|
+
"publish:avatars": "node scripts/republish-avatars.mjs",
|
|
81
|
+
"build:avatars": "node scripts/build-avatars.mjs",
|
|
82
|
+
"republish:avatars": "node scripts/republish-avatars.mjs",
|
|
83
|
+
"catalogue:avatars": "node ../labs.liforma.ai/scripts/generate-avatar-index.mjs",
|
|
84
|
+
"verify:avatars-dist": "node scripts/verify-avatars-dist.mjs",
|
|
85
|
+
"verify:avatar-pack": "node scripts/verify-avatar-pack.mjs",
|
|
86
|
+
"repair:render-plate-metadata": "node scripts/repair-render-plate-metadata.mjs",
|
|
87
|
+
"verify:render-plate-crop": "node scripts/verify-render-plate-crop.mjs",
|
|
88
|
+
"migrate:avatar-render-prep": "npm run migrate:avatar-render-prep --prefix ../labs.liforma.ai --",
|
|
89
|
+
"convert:avatar-teeth": "node scripts/convert-avatar-teeth-webp.mjs",
|
|
90
|
+
"warm:avatar-composites": "node scripts/warm-avatar-composites.mjs",
|
|
91
|
+
"test:compose-costume": "node scripts/test-compose-costume-layers.mjs",
|
|
92
|
+
"test:compose-costume-wasm": "node scripts/test-compose-costume-wasm.mjs",
|
|
93
|
+
"test:parse-composite-filename": "node scripts/test-parse-composite-filename.mjs",
|
|
94
|
+
"test:avatar-composite-rendered-path": "node scripts/test-avatar-composite-rendered-path.mjs",
|
|
95
|
+
"test:avatar-compose-worker-cors": "node scripts/test-avatar-compose-worker-cors.mjs",
|
|
96
|
+
"test:location-depth-paths": "node scripts/test-location-depth-paths.mjs",
|
|
97
|
+
"test:location-interactions": "node scripts/test-location-interactions.mjs",
|
|
98
|
+
"test:render-plate-chroma-key": "node scripts/test-render-plate-chroma-key.mjs",
|
|
99
|
+
"test:sparse-plate": "node scripts/test-sparse-plate.mjs",
|
|
100
|
+
"test:face-meshes-publish-depth": "node scripts/test-face-meshes-publish-depth.mjs",
|
|
101
|
+
"test:avatar-avif-sibling": "node scripts/test-avatar-avif-sibling.mjs",
|
|
102
|
+
"test:screen-chroma-key": "node scripts/test-screen-chroma-key.mjs",
|
|
103
|
+
"pull:sources": "node scripts/sync-authoring-sources.mjs",
|
|
104
|
+
"push:sources": "node scripts/sync-authoring-sources.mjs",
|
|
105
|
+
"catalogue:locations": "node scripts/catalogue-locations.mjs",
|
|
106
|
+
"generate:location-interactions": "node scripts/generate-location-interactions.mjs",
|
|
107
|
+
"generate:location-depth": "node scripts/generate-location-depth.mjs",
|
|
108
|
+
"build:locations": "node scripts/build-locations.mjs",
|
|
109
|
+
"publish:locations": "node scripts/publish-locations.mjs",
|
|
110
|
+
"verify:locations": "node scripts/verify-location-sources.mjs",
|
|
111
|
+
"publish:models": "node scripts/publish-models.mjs",
|
|
112
|
+
"fetch:depth-anything-v2": "node scripts/fetch-depth-anything-v2.mjs",
|
|
113
|
+
"fetch:video-depth-anything": "node scripts/fetch-video-depth-anything.mjs",
|
|
114
|
+
"fetch:depth-pro": "node scripts/fetch-depth-pro.mjs",
|
|
115
|
+
"fetch:face-landmarker": "node scripts/fetch-face-landmarker.mjs",
|
|
116
|
+
"fetch:anime-face-detector": "node scripts/fetch-anime-face-detector.mjs",
|
|
117
|
+
"fetch:face-parsing": "node scripts/fetch-face-parsing.mjs",
|
|
118
|
+
"fetch:models": "npm run fetch:depth-anything-v2 && npm run fetch:video-depth-anything && npm run fetch:depth-pro && npm run fetch:face-landmarker && npm run fetch:anime-face-detector && npm run fetch:face-parsing",
|
|
119
|
+
"locations": "npm run catalogue:locations && npm run build:locations",
|
|
120
|
+
"configure:cors": "node scripts/configure-r2-cors.mjs",
|
|
121
|
+
"verify:cors": "node scripts/verify-cdn-cors.mjs",
|
|
122
|
+
"deploy:worker:avatar-compose": "node scripts/deploy-avatar-compose-worker.mjs",
|
|
123
|
+
"deploy": "npm run build && npm run publish:sdk",
|
|
124
|
+
"verify": "npm run build && node scripts/check-sdk-size.mjs && node scripts/test-embed-protocol.mjs && node scripts/test-manifest-embed-url.mjs && node scripts/test-player-reachability.mjs && node scripts/test-session-endpoint.mjs && node scripts/verify-package.mjs",
|
|
125
|
+
"preview:test": "npm run build && npm run preview"
|
|
126
|
+
},
|
|
127
|
+
"dependencies": {
|
|
128
|
+
"@jsquash/webp": "^1.5.0",
|
|
129
|
+
"zod": "^4.4.3"
|
|
130
|
+
},
|
|
131
|
+
"devDependencies": {
|
|
132
|
+
"@aws-sdk/client-s3": "^3.1000.0",
|
|
133
|
+
"@sveltejs/package": "^2.5.8",
|
|
134
|
+
"@sveltejs/vite-plugin-svelte": "^7.0.0",
|
|
135
|
+
"@testing-library/react": "^16.3.0",
|
|
136
|
+
"@testing-library/svelte": "^5.4.2",
|
|
137
|
+
"@types/react": "^19.1.12",
|
|
138
|
+
"@types/react-dom": "^19.1.9",
|
|
139
|
+
"@vitejs/plugin-react": "^5.0.2",
|
|
140
|
+
"@types/node": "^25.9.3",
|
|
141
|
+
"@webgpu/types": "^0.1.70",
|
|
142
|
+
"dotenv": "^17.2.3",
|
|
143
|
+
"jsdom": "^30.0.1",
|
|
144
|
+
"sharp": "^0.34.2",
|
|
145
|
+
"react": "^19.1.1",
|
|
146
|
+
"react-dom": "^19.1.1",
|
|
147
|
+
"svelte": "^5.55.2",
|
|
148
|
+
"svelte-check": "^4.7.4",
|
|
149
|
+
"typescript": "^6.0.3",
|
|
150
|
+
"vite": "^8.0.16",
|
|
151
|
+
"vitest": "^4.1.10",
|
|
152
|
+
"wrangler": "^4.101.0"
|
|
153
|
+
}
|
|
154
|
+
}
|