@liforma/client 0.4.9 → 0.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/next/index.js +763 -623
  3. package/dist/next/index.js.map +1 -1
  4. package/dist/next/react/ExperienceThumbnail.d.ts +2 -0
  5. package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
  6. package/dist/next/react/ExperienceWidget.d.ts +3 -0
  7. package/dist/next/react/ExperienceWidget.d.ts.map +1 -1
  8. package/dist/next/thumbnail/expandAssetUrl.d.ts +17 -0
  9. package/dist/next/thumbnail/expandAssetUrl.d.ts.map +1 -0
  10. package/dist/next/thumbnail/expandAssetUrl.test.d.ts +2 -0
  11. package/dist/next/thumbnail/expandAssetUrl.test.d.ts.map +1 -0
  12. package/dist/next/thumbnail/index.d.ts +3 -0
  13. package/dist/next/thumbnail/index.d.ts.map +1 -1
  14. package/dist/next/thumbnail/locationPlate.d.ts +13 -0
  15. package/dist/next/thumbnail/locationPlate.d.ts.map +1 -0
  16. package/dist/next/thumbnail/locationPlate.test.d.ts +2 -0
  17. package/dist/next/thumbnail/locationPlate.test.d.ts.map +1 -0
  18. package/dist/next/thumbnail/styles.d.ts.map +1 -1
  19. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts +12 -2
  20. package/dist/next/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  21. package/dist/next/thumbnail/types.d.ts +7 -1
  22. package/dist/next/thumbnail/types.d.ts.map +1 -1
  23. package/dist/next/thumbnail.js +273 -192
  24. package/dist/next/thumbnail.js.map +1 -1
  25. package/dist/next/v2/embed/iframeHost.d.ts +6 -2
  26. package/dist/next/v2/embed/iframeHost.d.ts.map +1 -1
  27. package/dist/next/v2/embed/protocol.d.ts +25 -2
  28. package/dist/next/v2/embed/protocol.d.ts.map +1 -1
  29. package/dist/next/v2/experience.d.ts +25 -3
  30. package/dist/next/v2/experience.d.ts.map +1 -1
  31. package/dist/next/v2/shims/embedBaseUrl.d.ts +15 -1
  32. package/dist/next/v2/shims/embedBaseUrl.d.ts.map +1 -1
  33. package/dist/next/v2/types/sessionInteraction.d.ts +13 -1
  34. package/dist/next/v2/types/sessionInteraction.d.ts.map +1 -1
  35. package/dist/next/v2/types/sessionManifest.d.ts +1 -0
  36. package/dist/next/v2/types/sessionManifest.d.ts.map +1 -1
  37. package/dist/next/v2/types/stage.d.ts +8 -0
  38. package/dist/next/v2/types/stage.d.ts.map +1 -0
  39. package/dist/next/widget/mountExperienceWidget.d.ts.map +1 -1
  40. package/dist/next/widget/types.d.ts +1 -0
  41. package/dist/next/widget/types.d.ts.map +1 -1
  42. package/dist/npm/index.js +566 -454
  43. package/dist/npm/index.js.map +1 -1
  44. package/dist/npm/thumbnail/expandAssetUrl.d.ts +17 -0
  45. package/dist/npm/thumbnail/expandAssetUrl.d.ts.map +1 -0
  46. package/dist/npm/thumbnail/index.d.ts +3 -0
  47. package/dist/npm/thumbnail/index.d.ts.map +1 -1
  48. package/dist/npm/thumbnail/index.js +151 -75
  49. package/dist/npm/thumbnail/index.js.map +1 -1
  50. package/dist/npm/thumbnail/locationPlate.d.ts +13 -0
  51. package/dist/npm/thumbnail/locationPlate.d.ts.map +1 -0
  52. package/dist/npm/thumbnail/styles.d.ts.map +1 -1
  53. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts +12 -2
  54. package/dist/npm/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  55. package/dist/npm/thumbnail/types.d.ts +7 -1
  56. package/dist/npm/thumbnail/types.d.ts.map +1 -1
  57. package/dist/npm/v2/embed/iframeHost.d.ts +6 -2
  58. package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -1
  59. package/dist/npm/v2/embed/protocol.d.ts +25 -2
  60. package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
  61. package/dist/npm/v2/experience.d.ts +25 -3
  62. package/dist/npm/v2/experience.d.ts.map +1 -1
  63. package/dist/npm/v2/index.d.ts +2 -1
  64. package/dist/npm/v2/index.d.ts.map +1 -1
  65. package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
  66. package/dist/npm/v2/liforma-experience.d.ts +2 -0
  67. package/dist/npm/v2/liforma-experience.d.ts.map +1 -1
  68. package/dist/npm/v2/npm.d.ts +2 -1
  69. package/dist/npm/v2/npm.d.ts.map +1 -1
  70. package/dist/npm/v2/shims/embedBaseUrl.d.ts +15 -1
  71. package/dist/npm/v2/shims/embedBaseUrl.d.ts.map +1 -1
  72. package/dist/npm/v2/types/sessionInteraction.d.ts +13 -1
  73. package/dist/npm/v2/types/sessionInteraction.d.ts.map +1 -1
  74. package/dist/npm/v2/types/sessionManifest.d.ts +1 -0
  75. package/dist/npm/v2/types/sessionManifest.d.ts.map +1 -1
  76. package/dist/npm/v2/types/sessionManifestSchema.d.ts +17 -0
  77. package/dist/npm/v2/types/sessionManifestSchema.d.ts.map +1 -1
  78. package/dist/npm/v2/types/stage.d.ts +8 -0
  79. package/dist/npm/v2/types/stage.d.ts.map +1 -0
  80. package/dist/npm/widget/mountExperienceWidget.d.ts.map +1 -1
  81. package/dist/npm/widget/types.d.ts +1 -0
  82. package/dist/npm/widget/types.d.ts.map +1 -1
  83. package/dist/react/component/experienceComponentRuntime.d.ts +4 -0
  84. package/dist/react/component/experienceComponentRuntime.d.ts.map +1 -1
  85. package/dist/react/component/experienceComponentTypes.d.ts +15 -1
  86. package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
  87. package/dist/react/index.js +884 -719
  88. package/dist/react/index.js.map +1 -1
  89. package/dist/react/react/Experience.d.ts.map +1 -1
  90. package/dist/react/react/ExperienceThumbnail.d.ts +2 -0
  91. package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
  92. package/dist/react/react/ExperienceWidget.d.ts +3 -0
  93. package/dist/react/react/ExperienceWidget.d.ts.map +1 -1
  94. package/dist/react/thumbnail/expandAssetUrl.d.ts +17 -0
  95. package/dist/react/thumbnail/expandAssetUrl.d.ts.map +1 -0
  96. package/dist/react/thumbnail/expandAssetUrl.test.d.ts +2 -0
  97. package/dist/react/thumbnail/expandAssetUrl.test.d.ts.map +1 -0
  98. package/dist/react/thumbnail/index.d.ts +3 -0
  99. package/dist/react/thumbnail/index.d.ts.map +1 -1
  100. package/dist/react/thumbnail/locationPlate.d.ts +13 -0
  101. package/dist/react/thumbnail/locationPlate.d.ts.map +1 -0
  102. package/dist/react/thumbnail/locationPlate.test.d.ts +2 -0
  103. package/dist/react/thumbnail/locationPlate.test.d.ts.map +1 -0
  104. package/dist/react/thumbnail/styles.d.ts.map +1 -1
  105. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts +12 -2
  106. package/dist/react/thumbnail/toGalleryThumbUrl.d.ts.map +1 -1
  107. package/dist/react/thumbnail/types.d.ts +7 -1
  108. package/dist/react/thumbnail/types.d.ts.map +1 -1
  109. package/dist/react/thumbnail.js +273 -192
  110. package/dist/react/thumbnail.js.map +1 -1
  111. package/dist/react/v2/embed/iframeHost.d.ts +6 -2
  112. package/dist/react/v2/embed/iframeHost.d.ts.map +1 -1
  113. package/dist/react/v2/embed/protocol.d.ts +25 -2
  114. package/dist/react/v2/embed/protocol.d.ts.map +1 -1
  115. package/dist/react/v2/experience.d.ts +25 -3
  116. package/dist/react/v2/experience.d.ts.map +1 -1
  117. package/dist/react/v2/shims/embedBaseUrl.d.ts +15 -1
  118. package/dist/react/v2/shims/embedBaseUrl.d.ts.map +1 -1
  119. package/dist/react/v2/types/sessionInteraction.d.ts +13 -1
  120. package/dist/react/v2/types/sessionInteraction.d.ts.map +1 -1
  121. package/dist/react/v2/types/sessionManifest.d.ts +1 -0
  122. package/dist/react/v2/types/sessionManifest.d.ts.map +1 -1
  123. package/dist/react/v2/types/stage.d.ts +8 -0
  124. package/dist/react/v2/types/stage.d.ts.map +1 -0
  125. package/dist/react/widget/mountExperienceWidget.d.ts.map +1 -1
  126. package/dist/react/widget/types.d.ts +1 -0
  127. package/dist/react/widget/types.d.ts.map +1 -1
  128. package/dist/sdk/v2/client.js +2 -2
  129. package/dist/sdk/v2/client.js.map +1 -1
  130. package/dist/sdk/v2/thumbnail.js +9 -2
  131. package/dist/sdk/v2/thumbnail.js.map +1 -1
  132. package/dist/svelte/Experience.svelte +43 -0
  133. package/dist/svelte/Experience.svelte.d.ts +3 -0
  134. package/dist/svelte/ExperienceThumbnail.svelte +24 -2
  135. package/dist/svelte/ExperienceThumbnail.svelte.d.ts +2 -0
  136. package/dist/svelte/ExperienceWidget.svelte +9 -0
  137. package/dist/svelte/ExperienceWidget.svelte.d.ts +3 -0
  138. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"thumbnail.js","names":[],"sources":["../../src/thumbnail/types.ts","../../src/thumbnail/toGalleryThumbUrl.ts","../../src/shims/localStack.ts","../../src/thumbnail/hostedLaunchUrl.ts","../../src/thumbnail/thumbLoadScheduler.ts","../../src/thumbnail/lazyLoad.ts","../../src/thumbnail/scrollParallax.ts","../../src/thumbnail/styles.ts","../../src/thumbnail/ensureStyles.ts","../../src/react/ExperienceThumbnail.tsx"],"sourcesContent":["/** Catalog-shaped layered gallery preview (CDN URLs). */\nexport type GalleryThumb = {\n\treadonly avatarImage: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n};\n\nexport type ThumbnailInteractionKind = 'anchor' | 'button' | 'presentational';\n\nexport type ResolveThumbnailInteractionInput = {\n\treadonly href?: string | null;\n\treadonly hasClickHandler?: boolean;\n\treadonly experienceId?: string | null;\n};\n\nexport type ThumbnailLayers = {\n\treadonly avatarImage: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly fallbackImage?: string;\n};\n\n/** Shared props across Svelte / React / Next (React uses `onClick`). */\nexport type ExperienceThumbnailBaseProps = {\n\treadonly galleryThumb?: GalleryThumb;\n\treadonly avatarImage?: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly alt: string;\n\treadonly experienceId?: string;\n\treadonly href?: string;\n\treadonly target?: string;\n\treadonly rel?: string;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n\treadonly parallax?: boolean;\n\t/** Same as `<Experience fit>`: `full` (default), `medium`, or `face`. */\n\treadonly fit?: 'full' | 'face' | 'medium';\n\treadonly lazy?: boolean;\n\treadonly className?: string;\n\treadonly fallbackImage?: string;\n};\n\nexport function thumbnailFitClass(fit?: 'full' | 'face' | 'medium'): string {\n\tif (fit === 'face') return 'liforma-et--fit-face';\n\tif (fit === 'medium') return 'liforma-et--fit-medium';\n\treturn '';\n}\n","const AVATAR_TIER_RE = /(\\/avatars\\/[^/]+\\/)(\\d+)(\\/)/i;\nconst AVATAR_CH_PLATE_RE = /_CH(\\.webp)/i;\nconst LOCATION_SIZE_RE = /(-)(\\d+x\\d+)(\\.webp)(\\?|$)/i;\n\n/**\n * Rewrite known Liforma CDN URLs to gallery thumb tiers.\n * Avatars: /{tier}/ → /256/; locations: -{WxH}.webp → -256x256.webp.\n * Unrecognized URLs are returned unchanged.\n */\nexport function toGalleryThumbUrl(url: string): string {\n\tconst raw = url.trim();\n\tif (!raw) return raw;\n\n\tlet next = raw.replace(AVATAR_TIER_RE, (_match, prefix: string, tier: string, slash: string) => {\n\t\tif (tier === '256') return `${prefix}${tier}${slash}`;\n\t\treturn `${prefix}256${slash}`;\n\t});\n\tnext = next.replace(AVATAR_CH_PLATE_RE, '_neutral$1');\n\n\tnext = next.replace(\n\t\tLOCATION_SIZE_RE,\n\t\t(_match, dash: string, size: string, ext: string, end: string) => {\n\t\t\tif (size === '256x256') return `${dash}${size}${ext}${end}`;\n\t\t\treturn `${dash}256x256${ext}${end}`;\n\t\t}\n\t);\n\n\treturn next;\n}\n\nexport function resolveThumbnailLayers(input: {\n\treadonly galleryThumb?: {\n\t\treadonly avatarImage?: string;\n\t\treadonly backgroundImage?: string;\n\t\treadonly foregroundImage?: string;\n\t};\n\treadonly avatarImage?: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly fallbackImage?: string;\n}): {\n\treadonly avatarImage: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly fallbackImage?: string;\n} | null {\n\tconst avatarSource =\n\t\tinput.avatarImage?.trim() ||\n\t\tinput.galleryThumb?.avatarImage?.trim() ||\n\t\t'';\n\tif (!avatarSource) return null;\n\n\tconst backgroundSource =\n\t\tinput.backgroundImage?.trim() || input.galleryThumb?.backgroundImage?.trim() || '';\n\tconst foregroundSource =\n\t\tinput.foregroundImage?.trim() || input.galleryThumb?.foregroundImage?.trim() || '';\n\tconst fallbackSource = input.fallbackImage?.trim() || '';\n\n\treturn {\n\t\tavatarImage: toGalleryThumbUrl(avatarSource),\n\t\t...(backgroundSource ? { backgroundImage: toGalleryThumbUrl(backgroundSource) } : {}),\n\t\t...(foregroundSource ? { foregroundImage: toGalleryThumbUrl(foregroundSource) } : {}),\n\t\t...(fallbackSource ? { fallbackImage: toGalleryThumbUrl(fallbackSource) } : {})\n\t};\n}\n","/**\n * Opt-in local monorepo stack (api :3001, player :3002).\n * Never inferred from hostname alone — third-party demos run on localhost against production.\n */\nexport function useExplicitLocalStack(): boolean {\n\tif ((globalThis as { __LIFORMA_STACK?: string }).__LIFORMA_STACK === 'local') {\n\t\treturn true;\n\t}\n\n\tif (typeof location === 'undefined') {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\treturn new URLSearchParams(location.search).get('stack') === 'local';\n\t} catch {\n\t\treturn false;\n\t}\n}\n","import { useExplicitLocalStack } from '../shims/localStack';\nimport type { ResolveThumbnailInteractionInput, ThumbnailInteractionKind } from './types';\n\nconst PRODUCTION_PLAYER_ORIGIN = 'https://player.liforma.ai';\nconst LOCAL_PLAYER_ORIGIN = 'http://localhost:3002';\n\n/** Priority: href → click-only → hosted (experienceId) → presentational. */\nexport function resolveThumbnailInteraction(\n\tinput: ResolveThumbnailInteractionInput\n): ThumbnailInteractionKind {\n\tif (input.href?.trim()) return 'anchor';\n\tif (input.hasClickHandler) return 'button';\n\tif (input.experienceId?.trim()) return 'anchor';\n\treturn 'presentational';\n}\n\nexport function resolvePlayerBaseUrl(playerBaseUrl?: string): string {\n\tconst configured = playerBaseUrl?.trim();\n\tif (configured) return configured.replace(/\\/$/, '');\n\n\tif (useExplicitLocalStack()) {\n\t\treturn LOCAL_PLAYER_ORIGIN;\n\t}\n\n\treturn PRODUCTION_PLAYER_ORIGIN;\n}\n\n/**\n * Build hosted player launch URL: `{player}/{experienceId}?returnUrl=…`\n * When `returnUrl` is omitted, callers should assign on click (SSR-safe) or pass an explicit URL.\n */\nexport function buildHostedLaunchUrl(options: {\n\treadonly experienceId: string;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n}): string {\n\tconst experienceId = options.experienceId.trim();\n\tconst base = resolvePlayerBaseUrl(options.playerBaseUrl);\n\tconst url = new URL(`${base}/${encodeURIComponent(experienceId)}`);\n\tconst returnUrl = options.returnUrl?.trim();\n\tif (returnUrl) {\n\t\turl.searchParams.set('returnUrl', returnUrl);\n\t}\n\treturn url.toString();\n}\n\n/** Resolve href for anchor mode (app link or hosted launch). */\nexport function resolveThumbnailHref(options: {\n\treadonly href?: string;\n\treadonly experienceId?: string;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n\t/** When true and returnUrl omitted, use window.location.href (browser only). */\n\treadonly useCurrentPageAsReturnUrl?: boolean;\n}): string | undefined {\n\tconst href = options.href?.trim();\n\tif (href) return href;\n\n\tconst experienceId = options.experienceId?.trim();\n\tif (!experienceId) return undefined;\n\n\tlet returnUrl = options.returnUrl?.trim();\n\tif (!returnUrl && options.useCurrentPageAsReturnUrl && typeof window !== 'undefined') {\n\t\treturnUrl = window.location.href;\n\t}\n\n\treturn buildHostedLaunchUrl({\n\t\texperienceId,\n\t\t...(returnUrl ? { returnUrl } : {}),\n\t\tplayerBaseUrl: options.playerBaseUrl\n\t});\n}\n","/** Touch / coarse pointers — limit how many thumbs start loading at once. */\nexport const COARSE_THUMB_LOAD_CONCURRENCY = 4;\n/** Delay before a started thumb frees its queue slot for the next card. */\nexport const COARSE_THUMB_LOAD_STAGGER_MS = 160;\n\nexport function prefersCoarsePointer(): boolean {\n\tif (typeof window === 'undefined') return false;\n\treturn window.matchMedia('(hover: none), (pointer: coarse)').matches;\n}\n\ntype QueuedLoad = {\n\treadonly start: () => void;\n\tcancelled: boolean;\n};\n\nlet inflight = 0;\nconst waiting: QueuedLoad[] = [];\n\nfunction maxConcurrent(): number {\n\treturn prefersCoarsePointer() ? COARSE_THUMB_LOAD_CONCURRENCY : Number.POSITIVE_INFINITY;\n}\n\nfunction staggerMs(): number {\n\treturn prefersCoarsePointer() ? COARSE_THUMB_LOAD_STAGGER_MS : 0;\n}\n\nfunction pump(): void {\n\tconst limit = maxConcurrent();\n\twhile (inflight < limit && waiting.length > 0) {\n\t\tconst next = waiting.shift();\n\t\tif (!next || next.cancelled) continue;\n\t\tinflight += 1;\n\t\tnext.start();\n\t\tconst delay = staggerMs();\n\t\tif (delay <= 0) {\n\t\t\tinflight = Math.max(0, inflight - 1);\n\t\t\tcontinue;\n\t\t}\n\t\twindow.setTimeout(() => {\n\t\t\tinflight = Math.max(0, inflight - 1);\n\t\t\tpump();\n\t\t}, delay);\n\t}\n}\n\n/**\n * On coarse pointers, start thumb image loads in small waves so old devices\n * are not hit with dozens of concurrent decodes. Fine pointers start immediately.\n * Returns a cancel function (no-op after start has run).\n */\nexport function scheduleThumbLoad(start: () => void): () => void {\n\tif (!prefersCoarsePointer()) {\n\t\tstart();\n\t\treturn () => {};\n\t}\n\n\tconst item: QueuedLoad = { start, cancelled: false };\n\twaiting.push(item);\n\tpump();\n\n\treturn () => {\n\t\titem.cancelled = true;\n\t};\n}\n\n/** Test helper — clear queue state between vitest cases. */\nexport function resetThumbLoadSchedulerForTests(): void {\n\tinflight = 0;\n\twaiting.length = 0;\n}\n","import { prefersCoarsePointer, scheduleThumbLoad } from './thumbLoadScheduler';\n\nexport type LazyThumbOptions = {\n\treadonly rootMargin?: string;\n\treadonly onVisibleChange: (visible: boolean) => void;\n};\n\n/** Desktop: prefetch earlier. Coarse/touch: tighter margin to cut burst loads. */\nexport function getDefaultLazyRootMargin(): string {\n\treturn prefersCoarsePointer() ? '96px 0px' : '280px 0px';\n}\n\nfunction parseVerticalRootMarginPx(rootMargin: string): number {\n\tconst first = rootMargin.trim().split(/\\s+/)[0] ?? '0px';\n\tconst value = Number.parseFloat(first);\n\treturn Number.isFinite(value) ? Math.abs(value) : 280;\n}\n\nfunction isNearViewport(element: HTMLElement, marginPx: number): boolean {\n\tif (typeof window === 'undefined') return false;\n\tconst rect = element.getBoundingClientRect();\n\treturn rect.bottom >= -marginPx && rect.top <= window.innerHeight + marginPx;\n}\n\n/** Observe the thumb and enable image loads when near the viewport. */\nexport function attachLazyThumb(element: HTMLElement, options: LazyThumbOptions): () => void {\n\tconst { onVisibleChange } = options;\n\tconst rootMargin = options.rootMargin ?? getDefaultLazyRootMargin();\n\tconst marginPx = parseVerticalRootMarginPx(rootMargin);\n\tlet visible = false;\n\tlet loadStarted = false;\n\tlet cancelScheduled: (() => void) | null = null;\n\n\tconst requestLoad = () => {\n\t\tif (loadStarted) return;\n\t\tcancelScheduled?.();\n\t\tcancelScheduled = scheduleThumbLoad(() => {\n\t\t\tcancelScheduled = null;\n\t\t\tloadStarted = true;\n\t\t\tonVisibleChange(true);\n\t\t});\n\t};\n\n\tconst setVisible = (next: boolean) => {\n\t\tif (next === visible) return;\n\t\tvisible = next;\n\t\tif (next) {\n\t\t\trequestLoad();\n\t\t\treturn;\n\t\t}\n\t\t// Keep images once started; only cancel a queued (not-yet-started) load.\n\t\tcancelScheduled?.();\n\t\tcancelScheduled = null;\n\t\tonVisibleChange(false);\n\t};\n\n\tif (typeof IntersectionObserver === 'undefined') {\n\t\trequestLoad();\n\t\treturn () => {\n\t\t\tcancelScheduled?.();\n\t\t\tcancelScheduled = null;\n\t\t};\n\t}\n\n\tconst observer = new IntersectionObserver(\n\t\t(entries) => {\n\t\t\tsetVisible(entries.some((entry) => entry.isIntersecting));\n\t\t},\n\t\t{ root: null, rootMargin, threshold: 0 }\n\t);\n\n\tobserver.observe(element);\n\n\tif (isNearViewport(element, marginPx)) {\n\t\tsetVisible(true);\n\t}\n\n\treturn () => {\n\t\tcancelScheduled?.();\n\t\tcancelScheduled = null;\n\t\tobserver.disconnect();\n\t};\n}\n\nexport function attachImageReady(element: HTMLImageElement, onReady: () => void): () => void {\n\tconst notify = () => onReady();\n\tif (element.complete) {\n\t\tqueueMicrotask(notify);\n\t} else {\n\t\telement.addEventListener('load', notify, { once: true });\n\t\telement.addEventListener('error', notify, { once: true });\n\t}\n\treturn () => {\n\t\telement.removeEventListener('load', notify);\n\t\telement.removeEventListener('error', notify);\n\t};\n}\n","/** Touch devices without hover — drive thumbnail parallax from scroll position. */\nexport function prefersScrollLinkedParallax(): boolean {\n\tif (typeof window === 'undefined') return false;\n\tif (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return false;\n\treturn window.matchMedia('(hover: none), (pointer: coarse)').matches;\n}\n\n/**\n * Map an element's vertical centre in the viewport to horizontal parallax in [-1, 1].\n */\nexport function horizontalParallaxFromViewportY(rect: DOMRect, viewportHeight: number): number {\n\tconst centerY = rect.top + rect.height / 2;\n\tconst t = centerY / Math.max(viewportHeight, 1);\n\treturn (t - 0.5) * 2;\n}\n\nexport type ScrollLinkedParallaxOptions = {\n\treadonly onParallax: (x: number) => void;\n\treadonly pointerActive?: () => boolean;\n};\n\ntype ScrollParallaxSubscriber = {\n\treadonly element: HTMLElement;\n\treadonly onParallax: (x: number) => void;\n\treadonly pointerActive?: () => boolean;\n};\n\nconst subscribers = new Set<ScrollParallaxSubscriber>();\nlet listening = false;\nlet frame = 0;\n\nfunction syncAll(): void {\n\tframe = 0;\n\tif (subscribers.size === 0 || typeof window === 'undefined') return;\n\tconst viewportHeight = window.innerHeight;\n\tfor (const entry of subscribers) {\n\t\tif (entry.pointerActive?.()) continue;\n\t\tconst rect = entry.element.getBoundingClientRect();\n\t\t// Skip off-screen thumbs — avoids N layout reads + framework updates per scroll.\n\t\tif (rect.bottom < -64 || rect.top > viewportHeight + 64) continue;\n\t\tentry.onParallax(horizontalParallaxFromViewportY(rect, viewportHeight));\n\t}\n}\n\nfunction scheduleSync(): void {\n\tif (frame !== 0) return;\n\tframe = requestAnimationFrame(syncAll);\n}\n\nfunction ensureListening(): void {\n\tif (listening || typeof window === 'undefined') return;\n\tlistening = true;\n\twindow.addEventListener('scroll', scheduleSync, { passive: true });\n\twindow.addEventListener('resize', scheduleSync, { passive: true });\n}\n\nfunction stopListeningIfIdle(): void {\n\tif (subscribers.size > 0 || !listening || typeof window === 'undefined') return;\n\tlistening = false;\n\tif (frame !== 0) {\n\t\tcancelAnimationFrame(frame);\n\t\tframe = 0;\n\t}\n\twindow.removeEventListener('scroll', scheduleSync);\n\twindow.removeEventListener('resize', scheduleSync);\n}\n\n/**\n * Subscribe to scroll/resize and update horizontal parallax from viewport Y.\n * Uses one shared window listener for all thumbs (old iPads with large galleries).\n */\nexport function attachScrollLinkedParallax(\n\telement: HTMLElement,\n\toptions: ScrollLinkedParallaxOptions\n): () => void {\n\tif (!prefersScrollLinkedParallax()) return () => {};\n\n\tconst entry: ScrollParallaxSubscriber = {\n\t\telement,\n\t\tonParallax: options.onParallax,\n\t\tpointerActive: options.pointerActive\n\t};\n\tsubscribers.add(entry);\n\tensureListening();\n\n\tif (!entry.pointerActive?.()) {\n\t\toptions.onParallax(\n\t\t\thorizontalParallaxFromViewportY(element.getBoundingClientRect(), window.innerHeight)\n\t\t);\n\t}\n\n\treturn () => {\n\t\tsubscribers.delete(entry);\n\t\tstopListeningIfIdle();\n\t};\n}\n\n/** Test helper — clear shared scroll state between vitest cases. */\nexport function resetScrollLinkedParallaxForTests(): void {\n\tsubscribers.clear();\n\tif (typeof window !== 'undefined' && listening) {\n\t\twindow.removeEventListener('scroll', scheduleSync);\n\t\twindow.removeEventListener('resize', scheduleSync);\n\t}\n\tlistening = false;\n\tif (frame !== 0) {\n\t\tcancelAnimationFrame(frame);\n\t\tframe = 0;\n\t}\n}\n","/** Shared styles for ExperienceThumbnail (class prefix `liforma-et`). */\nexport const EXPERIENCE_THUMBNAIL_CSS = `\n.liforma-et {\n\t--liforma-et-parallax-x: 0;\n\t--liforma-et-parallax-y: 0;\n\t--liforma-et-bg-scale: 1;\n\t--liforma-et-fg-scale: 1;\n\t--liforma-et-avatar-scale: 1;\n\t--liforma-et-bg-shift: 0px;\n\t--liforma-et-fg-shift: 0px;\n\t--liforma-et-avatar-shift: 0px;\n\t--liforma-et-reveal-duration: 420ms;\n\n\tbox-sizing: border-box;\n\tposition: relative;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tborder-radius: 0.65rem;\n\toverflow: hidden;\n\tbackground: #111;\n\tcolor: inherit;\n\ttext-decoration: none;\n\tcursor: inherit;\n\t-webkit-tap-highlight-color: transparent;\n}\n\na.liforma-et,\nbutton.liforma-et {\n\tcursor: pointer;\n}\n\nbutton.liforma-et {\n\tfont: inherit;\n\tappearance: none;\n}\n\n.liforma-et__placeholder {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 0;\n\tbackground:\n\t\tradial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, 0.06), transparent 58%),\n\t\tlinear-gradient(180deg, #1a1a1a 0%, #101010 100%);\n\topacity: 1;\n\ttransition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et--revealed .liforma-et__placeholder {\n\topacity: 0;\n}\n\n.liforma-et__media {\n\topacity: 0;\n\ttransition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et__media--ready {\n\topacity: 1;\n}\n\n.liforma-et__background {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 1;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: cover;\n\tobject-position: center center;\n\ttransform: translate(\n\t\t\tcalc(var(--liforma-et-parallax-x) * var(--liforma-et-bg-shift)),\n\t\t\tcalc(var(--liforma-et-parallax-y) * var(--liforma-et-bg-shift))\n\t\t)\n\t\tscale(var(--liforma-et-bg-scale));\n\ttransform-origin: center center;\n\ttransition:\n\t\topacity var(--liforma-et-reveal-duration) ease,\n\t\ttransform 160ms ease;\n}\n\n.liforma-et__avatar {\n\tposition: relative;\n\tz-index: 2;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: contain;\n\tobject-position: center bottom;\n\ttransform: scale(var(--liforma-et-avatar-scale))\n\t\ttranslate(\n\t\t\tcalc(var(--liforma-et-parallax-x) * var(--liforma-et-avatar-shift)),\n\t\t\tcalc(var(--liforma-et-parallax-y) * var(--liforma-et-avatar-shift))\n\t\t);\n\ttransform-origin: center center;\n\ttransition:\n\t\topacity var(--liforma-et-reveal-duration) ease,\n\t\ttransform 160ms ease;\n}\n\n/* Gallery plates are typically square in a square tile — contain vs cover is a no-op\n without a zoom. Scale the whole scene from the upper third so Face matches\n player fit (location + avatar crop together). */\n.liforma-et--fit-face {\n\t--liforma-et-avatar-scale: 1.85;\n\t--liforma-et-bg-scale: 1.85;\n\t--liforma-et-fg-scale: 1.85;\n}\n\n.liforma-et--fit-face .liforma-et__avatar,\n.liforma-et--fit-face .liforma-et__background,\n.liforma-et--fit-face .liforma-et__foreground {\n\ttransform-origin: 50% 18%;\n}\n\n.liforma-et--fit-face .liforma-et__avatar {\n\tobject-fit: cover;\n\tobject-position: 50% 18%;\n}\n\n/* Bust / medium: less zoom than face so upper chest stays in frame (player 3.75H window). */\n.liforma-et--fit-medium {\n\t--liforma-et-avatar-scale: 1.35;\n\t--liforma-et-bg-scale: 1.35;\n\t--liforma-et-fg-scale: 1.35;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar,\n.liforma-et--fit-medium .liforma-et__background,\n.liforma-et--fit-medium .liforma-et__foreground {\n\ttransform-origin: 50% 28%;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar {\n\tobject-fit: cover;\n\tobject-position: 50% 28%;\n}\n\n.liforma-et__foreground {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 3;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: cover;\n\tobject-position: center center;\n\tpointer-events: none;\n\ttransform: translate(\n\t\t\tcalc(var(--liforma-et-parallax-x) * var(--liforma-et-fg-shift) * -1),\n\t\t\tcalc(var(--liforma-et-parallax-y) * var(--liforma-et-fg-shift) * -1)\n\t\t)\n\t\tscale(var(--liforma-et-fg-scale));\n\ttransform-origin: center center;\n\ttransition:\n\t\topacity var(--liforma-et-reveal-duration) ease,\n\t\ttransform 160ms ease;\n}\n\n.liforma-et--parallax {\n\t--liforma-et-bg-scale: 1.08;\n\t--liforma-et-fg-scale: 1.05;\n\t--liforma-et-avatar-scale: 1.08;\n\t--liforma-et-bg-shift: 10px;\n\t--liforma-et-fg-shift: 4px;\n\t--liforma-et-avatar-shift: 4px;\n}\n\n/* Promote layers only while parallax is active — avoids N compositor surfaces on galleries. */\n.liforma-et--parallax .liforma-et__background,\n.liforma-et--parallax .liforma-et__foreground,\n.liforma-et--parallax .liforma-et__avatar {\n\twill-change: transform;\n}\n\n.liforma-et--parallax.liforma-et--fit-face {\n\t--liforma-et-avatar-scale: 1.95;\n\t--liforma-et-bg-scale: 1.95;\n\t--liforma-et-fg-scale: 1.95;\n\t--liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--parallax.liforma-et--fit-medium {\n\t--liforma-et-avatar-scale: 1.42;\n\t--liforma-et-bg-scale: 1.42;\n\t--liforma-et-fg-scale: 1.42;\n\t--liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--scroll-parallax .liforma-et__background,\n.liforma-et--scroll-parallax .liforma-et__foreground,\n.liforma-et--scroll-parallax .liforma-et__avatar {\n\ttransition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.liforma-et {\n\t\t--liforma-et-reveal-duration: 0ms;\n\t}\n\n\t.liforma-et--parallax {\n\t\t--liforma-et-bg-scale: 1;\n\t\t--liforma-et-fg-scale: 1;\n\t\t--liforma-et-avatar-scale: 1;\n\t\t--liforma-et-bg-shift: 0px;\n\t\t--liforma-et-fg-shift: 0px;\n\t\t--liforma-et-avatar-shift: 0px;\n\t}\n\n\t.liforma-et--parallax.liforma-et--fit-face {\n\t\t--liforma-et-avatar-scale: 1.85;\n\t\t--liforma-et-bg-scale: 1.85;\n\t\t--liforma-et-fg-scale: 1.85;\n\t}\n\n\t.liforma-et__background,\n\t.liforma-et__foreground,\n\t.liforma-et__avatar {\n\t\ttransition: none;\n\t}\n}\n`.trim();\n","let styleMounted = false;\n\n/** Inject shared thumbnail CSS once per document. */\nexport function ensureExperienceThumbnailStyles(css: string): void {\n\tif (typeof document === 'undefined' || styleMounted) return;\n\tif (document.querySelector('style[data-liforma-et]')) {\n\t\tstyleMounted = true;\n\t\treturn;\n\t}\n\tconst style = document.createElement('style');\n\tstyle.setAttribute('data-liforma-et', '');\n\tstyle.textContent = css;\n\tdocument.head.appendChild(style);\n\tstyleMounted = true;\n}\n","'use client';\n\nimport {\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype CSSProperties,\n\ttype MouseEvent as ReactMouseEvent,\n\ttype PointerEvent as ReactPointerEvent\n} from 'react';\n\nimport {\n\tattachLazyThumb,\n\tattachScrollLinkedParallax,\n\tensureExperienceThumbnailStyles,\n\tEXPERIENCE_THUMBNAIL_CSS,\n\thorizontalParallaxFromViewportY,\n\tresolveThumbnailHref,\n\tresolveThumbnailInteraction,\n\tresolveThumbnailLayers,\n\tthumbnailFitClass,\n\ttype GalleryThumb\n} from '../thumbnail/index';\n\nexport type ExperienceThumbnailProps = {\n\treadonly galleryThumb?: GalleryThumb;\n\treadonly avatarImage?: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly alt: string;\n\treadonly experienceId?: string;\n\treadonly href?: string;\n\treadonly target?: string;\n\treadonly rel?: string;\n\treadonly onClick?: (event: ReactMouseEvent<HTMLElement>) => void;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n\treadonly parallax?: boolean;\n\treadonly fit?: 'full' | 'face' | 'medium';\n\treadonly lazy?: boolean;\n\treadonly className?: string;\n\treadonly fallbackImage?: string;\n};\n\nfunction mediaClass(base: string, ready: boolean): string {\n\treturn `${base} liforma-et__media${ready ? ' liforma-et__media--ready' : ''}`;\n}\n\nexport function ExperienceThumbnail(props: ExperienceThumbnailProps) {\n\tconst {\n\t\tgalleryThumb,\n\t\tavatarImage,\n\t\tbackgroundImage,\n\t\tforegroundImage,\n\t\talt,\n\t\texperienceId,\n\t\thref,\n\t\ttarget,\n\t\trel,\n\t\tonClick,\n\t\treturnUrl,\n\t\tplayerBaseUrl,\n\t\tparallax = true,\n\t\tfit = 'full',\n\t\tlazy = true,\n\t\tclassName = '',\n\t\tfallbackImage\n\t} = props;\n\n\tconst layers = useMemo(\n\t\t() =>\n\t\t\tresolveThumbnailLayers({\n\t\t\t\tgalleryThumb,\n\t\t\t\tavatarImage,\n\t\t\t\tbackgroundImage,\n\t\t\t\tforegroundImage,\n\t\t\t\tfallbackImage\n\t\t\t}),\n\t\t[galleryThumb, avatarImage, backgroundImage, foregroundImage, fallbackImage]\n\t);\n\n\tconst interaction = resolveThumbnailInteraction({\n\t\thref,\n\t\thasClickHandler: typeof onClick === 'function',\n\t\texperienceId\n\t});\n\tconst isHostedLaunch =\n\t\tinteraction === 'anchor' && !href?.trim() && Boolean(experienceId?.trim());\n\tconst hasScene = Boolean(layers?.backgroundImage);\n\tconst parallaxEnabled = parallax !== false;\n\n\tconst rootRef = useRef<HTMLElement | null>(null);\n\tconst pointerDownRef = useRef(false);\n\tconst [shouldLoad, setShouldLoad] = useState(!lazy);\n\tconst [hovering, setHovering] = useState(false);\n\tconst [scrollParallax, setScrollParallax] = useState(false);\n\tconst [parallaxX, setParallaxX] = useState(0);\n\tconst [parallaxY, setParallaxY] = useState(0);\n\tconst [avatarLoadFailed, setAvatarLoadFailed] = useState(false);\n\tconst [backgroundReady, setBackgroundReady] = useState(false);\n\tconst [avatarReady, setAvatarReady] = useState(false);\n\tconst [foregroundReady, setForegroundReady] = useState(false);\n\tconst [resolvedHref, setResolvedHref] = useState<string | undefined>();\n\n\tconst resolvedAvatarImage = layers\n\t\t? avatarLoadFailed && layers.fallbackImage\n\t\t\t? layers.fallbackImage\n\t\t\t: layers.avatarImage\n\t\t: '';\n\n\tuseEffect(() => {\n\t\tensureExperienceThumbnailStyles(EXPERIENCE_THUMBNAIL_CSS);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetResolvedHref(\n\t\t\tresolveThumbnailHref({\n\t\t\t\thref,\n\t\t\t\texperienceId,\n\t\t\t\treturnUrl,\n\t\t\t\tplayerBaseUrl,\n\t\t\t\tuseCurrentPageAsReturnUrl: isHostedLaunch && !returnUrl?.trim()\n\t\t\t})\n\t\t);\n\t}, [href, experienceId, returnUrl, playerBaseUrl, isHostedLaunch]);\n\n\tuseEffect(() => {\n\t\tsetBackgroundReady(false);\n\t\tsetAvatarReady(false);\n\t\tsetForegroundReady(false);\n\t\tsetAvatarLoadFailed(false);\n\t}, [layers?.backgroundImage, layers?.foregroundImage, resolvedAvatarImage]);\n\n\tuseEffect(() => {\n\t\tconst el = rootRef.current;\n\t\tif (!el) return;\n\t\tif (!lazy) {\n\t\t\tsetShouldLoad(true);\n\t\t\treturn;\n\t\t}\n\t\treturn attachLazyThumb(el, {\n\t\t\tonVisibleChange: (visible) => {\n\t\t\t\tif (visible) setShouldLoad(true);\n\t\t\t}\n\t\t});\n\t}, [lazy, layers, interaction, resolvedHref]);\n\n\tuseEffect(() => {\n\t\tconst el = rootRef.current;\n\t\tif (!el || !parallaxEnabled) return;\n\t\treturn attachScrollLinkedParallax(el, {\n\t\t\tonParallax: (x) => {\n\t\t\t\tsetScrollParallax(true);\n\t\t\t\tif (!pointerDownRef.current) {\n\t\t\t\t\tsetParallaxX(x);\n\t\t\t\t\tsetParallaxY(0);\n\t\t\t\t}\n\t\t\t},\n\t\t\tpointerActive: () => pointerDownRef.current\n\t\t});\n\t}, [parallaxEnabled, layers, interaction, resolvedHref]);\n\n\tconst onPointerMove = (event: ReactPointerEvent<HTMLElement>) => {\n\t\tif (!parallaxEnabled || scrollParallax) return;\n\t\tconst rect = event.currentTarget.getBoundingClientRect();\n\t\tif (rect.width <= 0 || rect.height <= 0) return;\n\t\tsetParallaxX(((event.clientX - rect.left) / rect.width - 0.5) * 2);\n\t\tsetParallaxY(((event.clientY - rect.top) / rect.height - 0.5) * 2);\n\t};\n\n\tconst clearPointer = (thumb: HTMLElement) => {\n\t\tconst wasDown = pointerDownRef.current;\n\t\tpointerDownRef.current = false;\n\t\tsetHovering(false);\n\t\tif (scrollParallax && wasDown) {\n\t\t\tsetParallaxX(\n\t\t\t\thorizontalParallaxFromViewportY(thumb.getBoundingClientRect(), window.innerHeight)\n\t\t\t);\n\t\t\tsetParallaxY(0);\n\t\t} else if (!scrollParallax) {\n\t\t\tsetParallaxX(0);\n\t\t\tsetParallaxY(0);\n\t\t}\n\t};\n\n\tconst onPointerDown = (event: ReactPointerEvent<HTMLElement>) => {\n\t\tif (!parallaxEnabled) return;\n\t\tpointerDownRef.current = true;\n\t\tif (event.pointerType === 'mouse') setHovering(true);\n\t\tconst thumb = event.currentTarget;\n\t\tconst onGlobalEnd = () => {\n\t\t\tclearPointer(thumb);\n\t\t\twindow.removeEventListener('pointerup', onGlobalEnd);\n\t\t\twindow.removeEventListener('pointercancel', onGlobalEnd);\n\t\t};\n\t\twindow.addEventListener('pointerup', onGlobalEnd);\n\t\twindow.addEventListener('pointercancel', onGlobalEnd);\n\t};\n\n\tconst handleClick = (event: ReactMouseEvent<HTMLElement>) => {\n\t\tonClick?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tif (isHostedLaunch && !returnUrl?.trim()) {\n\t\t\tconst next = resolveThumbnailHref({\n\t\t\t\texperienceId,\n\t\t\t\tplayerBaseUrl,\n\t\t\t\tuseCurrentPageAsReturnUrl: true\n\t\t\t});\n\t\t\tif (\n\t\t\t\tnext &&\n\t\t\t\tevent.button === 0 &&\n\t\t\t\t!event.metaKey &&\n\t\t\t\t!event.ctrlKey &&\n\t\t\t\t!event.shiftKey\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\twindow.location.assign(next);\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!layers) return null;\n\n\tconst parallaxLayersActive = parallaxEnabled && (hovering || scrollParallax);\n\t/** Fade placeholder as soon as any layer can paint — don't wait for the slowest plate. */\n\tconst revealThumb =\n\t\tshouldLoad && (avatarReady || backgroundReady || foregroundReady);\n\n\tconst rootClass = [\n\t\t'liforma-et',\n\t\thasScene ? 'liforma-et--scene' : '',\n\t\tthumbnailFitClass(fit),\n\t\tparallaxLayersActive ? 'liforma-et--parallax' : '',\n\t\tscrollParallax ? 'liforma-et--scroll-parallax' : '',\n\t\tshouldLoad && !revealThumb ? 'liforma-et--loading' : '',\n\t\trevealThumb ? 'liforma-et--revealed' : '',\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst style = {\n\t\t['--liforma-et-parallax-x' as string]: parallaxX,\n\t\t['--liforma-et-parallax-y' as string]: parallaxY\n\t} as CSSProperties;\n\n\tconst markReady = (img: HTMLImageElement, setReady: (v: boolean) => void) => {\n\t\tif (img.complete) setReady(true);\n\t};\n\n\tconst media = (\n\t\t<>\n\t\t\t<span className=\"liforma-et__placeholder\" aria-hidden=\"true\" />\n\t\t\t{shouldLoad && layers.backgroundImage ? (\n\t\t\t\t<img\n\t\t\t\t\tclassName={mediaClass('liforma-et__background', backgroundReady)}\n\t\t\t\t\tsrc={layers.backgroundImage}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tif (node) markReady(node, setBackgroundReady);\n\t\t\t\t\t}}\n\t\t\t\t\tonLoad={() => setBackgroundReady(true)}\n\t\t\t\t\tonError={() => setBackgroundReady(true)}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{shouldLoad && resolvedAvatarImage ? (\n\t\t\t\t<img\n\t\t\t\t\tclassName={mediaClass('liforma-et__avatar', avatarReady)}\n\t\t\t\t\tsrc={resolvedAvatarImage}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tif (node) markReady(node, setAvatarReady);\n\t\t\t\t\t}}\n\t\t\t\t\tonLoad={() => setAvatarReady(true)}\n\t\t\t\t\tonError={() => {\n\t\t\t\t\t\tif (layers.fallbackImage) setAvatarLoadFailed(true);\n\t\t\t\t\t\telse setAvatarReady(true);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{shouldLoad && layers.foregroundImage ? (\n\t\t\t\t<img\n\t\t\t\t\tclassName={mediaClass('liforma-et__foreground', foregroundReady)}\n\t\t\t\t\tsrc={layers.foregroundImage}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tif (node) markReady(node, setForegroundReady);\n\t\t\t\t\t}}\n\t\t\t\t\tonLoad={() => setForegroundReady(true)}\n\t\t\t\t\tonError={() => setForegroundReady(true)}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n\n\tconst pointerProps = {\n\t\tonPointerDown,\n\t\tonPointerUp: (event: ReactPointerEvent<HTMLElement>) => clearPointer(event.currentTarget),\n\t\tonPointerCancel: (event: ReactPointerEvent<HTMLElement>) =>\n\t\t\tclearPointer(event.currentTarget),\n\t\tonPointerEnter: (event: ReactPointerEvent<HTMLElement>) => {\n\t\t\tif (parallaxEnabled && event.pointerType === 'mouse') setHovering(true);\n\t\t},\n\t\tonPointerMove,\n\t\tonPointerLeave: () => {\n\t\t\tif (!pointerDownRef.current) {\n\t\t\t\tsetHovering(false);\n\t\t\t\tif (!scrollParallax) {\n\t\t\t\t\tsetParallaxX(0);\n\t\t\t\t\tsetParallaxY(0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst setRootRef = (node: HTMLElement | null) => {\n\t\trootRef.current = node;\n\t};\n\n\tif (interaction === 'anchor' && resolvedHref) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\tref={setRootRef}\n\t\t\t\tclassName={rootClass}\n\t\t\t\tstyle={style}\n\t\t\t\thref={resolvedHref}\n\t\t\t\ttarget={target}\n\t\t\t\trel={rel}\n\t\t\t\taria-label={alt}\n\t\t\t\tonClick={handleClick}\n\t\t\t\t{...pointerProps}\n\t\t\t>\n\t\t\t\t{media}\n\t\t\t</a>\n\t\t);\n\t}\n\n\tif (interaction === 'button') {\n\t\treturn (\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tref={setRootRef}\n\t\t\t\tclassName={rootClass}\n\t\t\t\tstyle={style}\n\t\t\t\taria-label={alt}\n\t\t\t\tonClick={handleClick}\n\t\t\t\t{...pointerProps}\n\t\t\t>\n\t\t\t\t{media}\n\t\t\t</button>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={setRootRef}\n\t\t\tclassName={rootClass}\n\t\t\tstyle={style}\n\t\t\trole={alt ? 'img' : undefined}\n\t\t\taria-label={alt || undefined}\n\t\t\taria-hidden={alt ? undefined : true}\n\t\t\t{...pointerProps}\n\t\t>\n\t\t\t{media}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"thumbnail.js","names":[],"sources":["../../src/thumbnail/types.ts","../../src/thumbnail/locationPlate.ts","../../src/thumbnail/expandAssetUrl.ts","../../src/thumbnail/toGalleryThumbUrl.ts","../../src/shims/localStack.ts","../../src/thumbnail/hostedLaunchUrl.ts","../../src/thumbnail/thumbLoadScheduler.ts","../../src/thumbnail/lazyLoad.ts","../../src/thumbnail/scrollParallax.ts","../../src/thumbnail/styles.ts","../../src/thumbnail/ensureStyles.ts","../../src/react/ExperienceThumbnail.tsx"],"sourcesContent":["/**\n * Catalog-shaped layered gallery preview.\n * Values may be absolute URLs or Liforma paths (`/avatars/…`, `/locations/…/scene`).\n */\nexport type GalleryThumb = {\n\treadonly avatarImage: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n};\n\nexport type ThumbnailInteractionKind = 'anchor' | 'button' | 'presentational';\n\nexport type ResolveThumbnailInteractionInput = {\n\treadonly href?: string | null;\n\treadonly hasClickHandler?: boolean;\n\treadonly experienceId?: string | null;\n};\n\nexport type ThumbnailLayers = {\n\treadonly avatarImage: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly fallbackImage?: string;\n};\n\n/** Shared props across Svelte / React / Next (React uses `onClick`). */\nexport type ExperienceThumbnailBaseProps = {\n\treadonly galleryThumb?: GalleryThumb;\n\treadonly avatarImage?: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly alt: string;\n\treadonly experienceId?: string;\n\treadonly href?: string;\n\treadonly target?: string;\n\treadonly rel?: string;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n\treadonly parallax?: boolean;\n\t/** Same as `<Experience fit>`: `full` (default), `medium`, or `face`. */\n\treadonly fit?: 'full' | 'face' | 'medium';\n\treadonly lazy?: boolean;\n\treadonly className?: string;\n\treadonly fallbackImage?: string;\n\treadonly normalizeUrls?: boolean;\n\t/** CDN origin for catalog paths. Default `https://cdn.liforma.ai`. */\n\treadonly cdnBaseUrl?: string;\n};\n\nexport function thumbnailFitClass(fit?: 'full' | 'face' | 'medium'): string {\n\tif (fit === 'face') return 'liforma-et--fit-face';\n\tif (fit === 'medium') return 'liforma-et--fit-medium';\n\treturn '';\n}\n","/** Location colour plates used by ExperienceThumbnail (no zoom/portrait crops). */\nexport const THUMBNAIL_LOCATION_PLATE_SIZES = ['256x256', '800x450', '1672x941'] as const;\nexport type ThumbnailLocationPlateSize = (typeof THUMBNAIL_LOCATION_PLATE_SIZES)[number];\n\nconst LOCATION_SIZE_RE = /(-)(\\d+x\\d+)(\\.webp)(\\?|$)/i;\n\n/**\n * Square / portrait hosts keep the gallery crop. Landscape hosts use the 16:9 plate\n * so cover-fit fills height instead of clipping the top and bottom of a square.\n * Unmeasured boxes stay on `256x256`.\n */\nexport function pickThumbnailLocationPlateSize(\n\twidth: number,\n\theight: number\n): ThumbnailLocationPlateSize {\n\tif (!Number.isFinite(width) || !Number.isFinite(height) || width < 1 || height < 1) {\n\t\treturn '256x256';\n\t}\n\tif (width <= height) return '256x256';\n\tif (width > 800 || height > 450) return '1672x941';\n\treturn '800x450';\n}\n\nexport function rewriteThumbnailLocationPlateSize(\n\turl: string,\n\tsize: ThumbnailLocationPlateSize\n): string {\n\tconst trimmed = url.trim();\n\tif (!trimmed) return trimmed;\n\treturn trimmed.replace(\n\t\tLOCATION_SIZE_RE,\n\t\t(_match, dash: string, _current: string, ext: string, end: string) =>\n\t\t\t`${dash}${size}${ext}${end}`\n\t);\n}\n\n/** Observe the thumb host and report CSS box size (for plate picking). */\nexport function attachThumbnailBox(\n\telement: HTMLElement,\n\tonBox: (width: number, height: number) => void\n): () => void {\n\tconst emit = () => {\n\t\tonBox(element.clientWidth, element.clientHeight);\n\t};\n\temit();\n\tif (typeof ResizeObserver === 'undefined') {\n\t\treturn () => {};\n\t}\n\tconst observer = new ResizeObserver(emit);\n\tobserver.observe(element);\n\treturn () => observer.disconnect();\n}\n","import {\n\trewriteThumbnailLocationPlateSize,\n\ttype ThumbnailLocationPlateSize\n} from './locationPlate';\n\n/** Default origin for Liforma gallery plates (catalog paths have no host). */\nexport const DEFAULT_THUMBNAIL_CDN_BASE_URL = 'https://cdn.liforma.ai';\n\nconst LOCATION_SIZE_STEM_RE = /-(256x256|400x450|800x450|836x971|1672x941|167x94)$/i;\n\nexport function normalizeThumbnailCdnBaseUrl(cdnBaseUrl?: string): string {\n\tconst trimmed = cdnBaseUrl?.trim().replace(/\\/$/, '');\n\treturn trimmed || DEFAULT_THUMBNAIL_CDN_BASE_URL;\n}\n\nfunction isHttpUrl(value: string): boolean {\n\treturn /^https?:\\/\\//i.test(value) || value.startsWith('//');\n}\n\nfunction absoluteHttpUrl(value: string): string {\n\tif (value.startsWith('//')) return `https:${value}`;\n\treturn value;\n}\n\nfunction splitPathAndSearch(value: string): { pathname: string; search: string } {\n\tconst q = value.indexOf('?');\n\tif (q === -1) return { pathname: value, search: '' };\n\treturn { pathname: value.slice(0, q), search: value.slice(q) };\n}\n\nfunction joinCdn(cdnBase: string, pathname: string, search = ''): string {\n\tconst path = pathname.startsWith('/') ? pathname : `/${pathname}`;\n\treturn `${cdnBase}${path}${search}`;\n}\n\n/**\n * Expand a catalog location path (or keep a full URL) to a sized plate URL.\n *\n * `/locations/modern/city/office/interior-desk-daytime` →\n * `{cdn}/locations/modern/city/office/interior-desk-daytime-800x450.webp`\n */\nexport function expandThumbnailLocationUrl(\n\tref: string,\n\tlocationPlateSize: ThumbnailLocationPlateSize,\n\tcdnBaseUrl?: string\n): string {\n\tconst raw = ref.trim();\n\tif (!raw) return raw;\n\tconst cdnBase = normalizeThumbnailCdnBaseUrl(cdnBaseUrl);\n\n\tif (isHttpUrl(raw)) {\n\t\treturn rewriteThumbnailLocationPlateSize(absoluteHttpUrl(raw), locationPlateSize);\n\t}\n\n\tconst { pathname: rawPath, search } = splitPathAndSearch(raw.replace(/\\\\/g, '/'));\n\tlet pathname = rawPath;\n\n\tif (!pathname.startsWith('/')) {\n\t\tpathname = `/locations/${pathname.replace(/^locations\\//i, '')}`;\n\t} else if (/^\\/locations\\//i.test(pathname)) {\n\t\t/* already a location path */\n\t} else if (/^\\/avatars\\//i.test(pathname)) {\n\t\treturn joinCdn(cdnBase, pathname, search);\n\t} else {\n\t\treturn raw;\n\t}\n\n\tif (/\\.webp$/i.test(pathname) && !LOCATION_SIZE_STEM_RE.test(pathname.replace(/\\.webp$/i, ''))) {\n\t\treturn joinCdn(cdnBase, pathname, search);\n\t}\n\n\tlet stem = pathname.replace(/^\\/locations\\//i, '').replace(/\\.webp$/i, '');\n\tstem = stem.replace(LOCATION_SIZE_STEM_RE, '');\n\treturn `${cdnBase}/locations/${stem}-${locationPlateSize}.webp${search}`;\n}\n\n/**\n * Expand a catalog avatar path (or keep a full URL) onto the public CDN.\n * `/avatars/{id}` → `{cdn}/avatars/{id}/256/{id}_neutral.webp`\n */\nexport function expandThumbnailAvatarUrl(ref: string, cdnBaseUrl?: string): string {\n\tconst raw = ref.trim();\n\tif (!raw) return raw;\n\tconst cdnBase = normalizeThumbnailCdnBaseUrl(cdnBaseUrl);\n\n\tif (isHttpUrl(raw)) {\n\t\treturn absoluteHttpUrl(raw);\n\t}\n\n\tconst { pathname: rawPath, search } = splitPathAndSearch(raw.replace(/\\\\/g, '/'));\n\tlet pathname = rawPath;\n\n\tif (!pathname.startsWith('/')) {\n\t\tif (/^avatars\\//i.test(pathname)) {\n\t\t\tpathname = `/${pathname}`;\n\t\t} else if (/^[^/]+$/.test(pathname) && !search) {\n\t\t\treturn `${cdnBase}/avatars/${pathname}/256/${pathname}_neutral.webp`;\n\t\t} else {\n\t\t\treturn raw;\n\t\t}\n\t}\n\n\tif (!/^\\/avatars\\//i.test(pathname)) {\n\t\treturn raw;\n\t}\n\n\tconst rest = pathname.replace(/^\\/avatars\\//i, '').replace(/\\/+$/, '');\n\tif (rest && !rest.includes('/') && !search) {\n\t\treturn `${cdnBase}/avatars/${rest}/256/${rest}_neutral.webp`;\n\t}\n\n\treturn joinCdn(cdnBase, pathname, search);\n}\n","import {\n\texpandThumbnailAvatarUrl,\n\texpandThumbnailLocationUrl,\n\tnormalizeThumbnailCdnBaseUrl\n} from './expandAssetUrl';\nimport type { ThumbnailLocationPlateSize } from './locationPlate';\n\nconst AVATAR_TIER_RE = /(\\/avatars\\/[^/]+\\/)(\\d+)(\\/)/i;\nconst AVATAR_CH_PLATE_RE = /_CH(\\.webp)/i;\n\nexport type { ThumbnailLocationPlateSize };\n\nfunction isLocationRef(raw: string): boolean {\n\tif (/\\/locations\\//i.test(raw) || /^locations\\//i.test(raw)) return true;\n\tif (/^https?:\\/\\//i.test(raw) || raw.startsWith('//')) return false;\n\tif (/^\\/?avatars\\//i.test(raw)) return false;\n\tif (raw.startsWith('/')) return false;\n\treturn raw.includes('/');\n}\n\n/**\n * Rewrite known Liforma CDN URLs to gallery thumb tiers.\n * Avatars: /{tier}/ → /256/; locations: -{WxH}.webp → the requested plate\n * (`256x256` by default, `800x450` / `1672x941` for landscape hosts).\n * Catalog paths (`/locations/…/scene`, `/avatars/{id}`) expand onto the CDN first.\n * Unrecognized URLs are returned unchanged.\n */\nexport function toGalleryThumbUrl(\n\turl: string,\n\tlocationPlateSize: ThumbnailLocationPlateSize = '256x256',\n\tcdnBaseUrl?: string\n): string {\n\tconst raw = url.trim();\n\tif (!raw) return raw;\n\n\tif (isLocationRef(raw)) {\n\t\treturn expandThumbnailLocationUrl(raw, locationPlateSize, cdnBaseUrl);\n\t}\n\n\tlet next = expandThumbnailAvatarUrl(raw, cdnBaseUrl);\n\tnext = next.replace(AVATAR_TIER_RE, (_match, prefix: string, tier: string, slash: string) => {\n\t\tif (tier === '256') return `${prefix}${tier}${slash}`;\n\t\treturn `${prefix}256${slash}`;\n\t});\n\treturn next.replace(AVATAR_CH_PLATE_RE, '_neutral$1');\n}\n\nexport function resolveThumbnailLayers(input: {\n\treadonly galleryThumb?: {\n\t\treadonly avatarImage?: string;\n\t\treadonly backgroundImage?: string;\n\t\treadonly foregroundImage?: string;\n\t};\n\treadonly avatarImage?: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly fallbackImage?: string;\n\t/** When false, keep caller absolute URLs (lightbox / preview). Paths still expand. Default true. */\n\treadonly normalize?: boolean;\n\t/** Location plate when expanding or rewriting location assets. Default `256x256`. */\n\treadonly locationPlateSize?: ThumbnailLocationPlateSize;\n\t/** CDN origin for catalog paths. Default `https://cdn.liforma.ai`. */\n\treadonly cdnBaseUrl?: string;\n}): {\n\treadonly avatarImage: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly fallbackImage?: string;\n} | null {\n\tconst avatarSource =\n\t\tinput.avatarImage?.trim() ||\n\t\tinput.galleryThumb?.avatarImage?.trim() ||\n\t\t'';\n\tif (!avatarSource) return null;\n\n\tconst backgroundSource =\n\t\tinput.backgroundImage?.trim() || input.galleryThumb?.backgroundImage?.trim() || '';\n\tconst foregroundSource =\n\t\tinput.foregroundImage?.trim() || input.galleryThumb?.foregroundImage?.trim() || '';\n\tconst fallbackSource = input.fallbackImage?.trim() || '';\n\tconst plate = input.locationPlateSize ?? '256x256';\n\tconst cdnBaseUrl = normalizeThumbnailCdnBaseUrl(input.cdnBaseUrl);\n\tconst rewriteKnown = input.normalize !== false;\n\n\tconst rewriteAvatar = (ref: string) => {\n\t\tif (!rewriteKnown && /^https?:\\/\\//i.test(ref.trim())) return ref.trim();\n\t\treturn toGalleryThumbUrl(ref, plate, cdnBaseUrl);\n\t};\n\tconst rewriteLocation = (ref: string) => {\n\t\tif (!rewriteKnown && /^https?:\\/\\//i.test(ref.trim())) return ref.trim();\n\t\treturn expandThumbnailLocationUrl(ref, plate, cdnBaseUrl);\n\t};\n\n\treturn {\n\t\tavatarImage: rewriteAvatar(avatarSource),\n\t\t...(backgroundSource ? { backgroundImage: rewriteLocation(backgroundSource) } : {}),\n\t\t...(foregroundSource ? { foregroundImage: rewriteLocation(foregroundSource) } : {}),\n\t\t...(fallbackSource ? { fallbackImage: rewriteAvatar(fallbackSource) } : {})\n\t};\n}\n","/**\n * Opt-in local monorepo stack (api :3001, player :3002).\n * Never inferred from hostname alone — third-party demos run on localhost against production.\n */\nexport function useExplicitLocalStack(): boolean {\n\tif ((globalThis as { __LIFORMA_STACK?: string }).__LIFORMA_STACK === 'local') {\n\t\treturn true;\n\t}\n\n\tif (typeof location === 'undefined') {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\treturn new URLSearchParams(location.search).get('stack') === 'local';\n\t} catch {\n\t\treturn false;\n\t}\n}\n","import { useExplicitLocalStack } from '../shims/localStack';\nimport type { ResolveThumbnailInteractionInput, ThumbnailInteractionKind } from './types';\n\nconst PRODUCTION_PLAYER_ORIGIN = 'https://player.liforma.ai';\nconst LOCAL_PLAYER_ORIGIN = 'http://localhost:3002';\n\n/** Priority: href → click-only → hosted (experienceId) → presentational. */\nexport function resolveThumbnailInteraction(\n\tinput: ResolveThumbnailInteractionInput\n): ThumbnailInteractionKind {\n\tif (input.href?.trim()) return 'anchor';\n\tif (input.hasClickHandler) return 'button';\n\tif (input.experienceId?.trim()) return 'anchor';\n\treturn 'presentational';\n}\n\nexport function resolvePlayerBaseUrl(playerBaseUrl?: string): string {\n\tconst configured = playerBaseUrl?.trim();\n\tif (configured) return configured.replace(/\\/$/, '');\n\n\tif (useExplicitLocalStack()) {\n\t\treturn LOCAL_PLAYER_ORIGIN;\n\t}\n\n\treturn PRODUCTION_PLAYER_ORIGIN;\n}\n\n/**\n * Build hosted player launch URL: `{player}/{experienceId}?returnUrl=…`\n * When `returnUrl` is omitted, callers should assign on click (SSR-safe) or pass an explicit URL.\n */\nexport function buildHostedLaunchUrl(options: {\n\treadonly experienceId: string;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n}): string {\n\tconst experienceId = options.experienceId.trim();\n\tconst base = resolvePlayerBaseUrl(options.playerBaseUrl);\n\tconst url = new URL(`${base}/${encodeURIComponent(experienceId)}`);\n\tconst returnUrl = options.returnUrl?.trim();\n\tif (returnUrl) {\n\t\turl.searchParams.set('returnUrl', returnUrl);\n\t}\n\treturn url.toString();\n}\n\n/** Resolve href for anchor mode (app link or hosted launch). */\nexport function resolveThumbnailHref(options: {\n\treadonly href?: string;\n\treadonly experienceId?: string;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n\t/** When true and returnUrl omitted, use window.location.href (browser only). */\n\treadonly useCurrentPageAsReturnUrl?: boolean;\n}): string | undefined {\n\tconst href = options.href?.trim();\n\tif (href) return href;\n\n\tconst experienceId = options.experienceId?.trim();\n\tif (!experienceId) return undefined;\n\n\tlet returnUrl = options.returnUrl?.trim();\n\tif (!returnUrl && options.useCurrentPageAsReturnUrl && typeof window !== 'undefined') {\n\t\treturnUrl = window.location.href;\n\t}\n\n\treturn buildHostedLaunchUrl({\n\t\texperienceId,\n\t\t...(returnUrl ? { returnUrl } : {}),\n\t\tplayerBaseUrl: options.playerBaseUrl\n\t});\n}\n","/** Touch / coarse pointers — limit how many thumbs start loading at once. */\nexport const COARSE_THUMB_LOAD_CONCURRENCY = 4;\n/** Delay before a started thumb frees its queue slot for the next card. */\nexport const COARSE_THUMB_LOAD_STAGGER_MS = 160;\n\nexport function prefersCoarsePointer(): boolean {\n\tif (typeof window === 'undefined') return false;\n\treturn window.matchMedia('(hover: none), (pointer: coarse)').matches;\n}\n\ntype QueuedLoad = {\n\treadonly start: () => void;\n\tcancelled: boolean;\n};\n\nlet inflight = 0;\nconst waiting: QueuedLoad[] = [];\n\nfunction maxConcurrent(): number {\n\treturn prefersCoarsePointer() ? COARSE_THUMB_LOAD_CONCURRENCY : Number.POSITIVE_INFINITY;\n}\n\nfunction staggerMs(): number {\n\treturn prefersCoarsePointer() ? COARSE_THUMB_LOAD_STAGGER_MS : 0;\n}\n\nfunction pump(): void {\n\tconst limit = maxConcurrent();\n\twhile (inflight < limit && waiting.length > 0) {\n\t\tconst next = waiting.shift();\n\t\tif (!next || next.cancelled) continue;\n\t\tinflight += 1;\n\t\tnext.start();\n\t\tconst delay = staggerMs();\n\t\tif (delay <= 0) {\n\t\t\tinflight = Math.max(0, inflight - 1);\n\t\t\tcontinue;\n\t\t}\n\t\twindow.setTimeout(() => {\n\t\t\tinflight = Math.max(0, inflight - 1);\n\t\t\tpump();\n\t\t}, delay);\n\t}\n}\n\n/**\n * On coarse pointers, start thumb image loads in small waves so old devices\n * are not hit with dozens of concurrent decodes. Fine pointers start immediately.\n * Returns a cancel function (no-op after start has run).\n */\nexport function scheduleThumbLoad(start: () => void): () => void {\n\tif (!prefersCoarsePointer()) {\n\t\tstart();\n\t\treturn () => {};\n\t}\n\n\tconst item: QueuedLoad = { start, cancelled: false };\n\twaiting.push(item);\n\tpump();\n\n\treturn () => {\n\t\titem.cancelled = true;\n\t};\n}\n\n/** Test helper — clear queue state between vitest cases. */\nexport function resetThumbLoadSchedulerForTests(): void {\n\tinflight = 0;\n\twaiting.length = 0;\n}\n","import { prefersCoarsePointer, scheduleThumbLoad } from './thumbLoadScheduler';\n\nexport type LazyThumbOptions = {\n\treadonly rootMargin?: string;\n\treadonly onVisibleChange: (visible: boolean) => void;\n};\n\n/** Desktop: prefetch earlier. Coarse/touch: tighter margin to cut burst loads. */\nexport function getDefaultLazyRootMargin(): string {\n\treturn prefersCoarsePointer() ? '96px 0px' : '280px 0px';\n}\n\nfunction parseVerticalRootMarginPx(rootMargin: string): number {\n\tconst first = rootMargin.trim().split(/\\s+/)[0] ?? '0px';\n\tconst value = Number.parseFloat(first);\n\treturn Number.isFinite(value) ? Math.abs(value) : 280;\n}\n\nfunction isNearViewport(element: HTMLElement, marginPx: number): boolean {\n\tif (typeof window === 'undefined') return false;\n\tconst rect = element.getBoundingClientRect();\n\treturn rect.bottom >= -marginPx && rect.top <= window.innerHeight + marginPx;\n}\n\n/** Observe the thumb and enable image loads when near the viewport. */\nexport function attachLazyThumb(element: HTMLElement, options: LazyThumbOptions): () => void {\n\tconst { onVisibleChange } = options;\n\tconst rootMargin = options.rootMargin ?? getDefaultLazyRootMargin();\n\tconst marginPx = parseVerticalRootMarginPx(rootMargin);\n\tlet visible = false;\n\tlet loadStarted = false;\n\tlet cancelScheduled: (() => void) | null = null;\n\n\tconst requestLoad = () => {\n\t\tif (loadStarted) return;\n\t\tcancelScheduled?.();\n\t\tcancelScheduled = scheduleThumbLoad(() => {\n\t\t\tcancelScheduled = null;\n\t\t\tloadStarted = true;\n\t\t\tonVisibleChange(true);\n\t\t});\n\t};\n\n\tconst setVisible = (next: boolean) => {\n\t\tif (next === visible) return;\n\t\tvisible = next;\n\t\tif (next) {\n\t\t\trequestLoad();\n\t\t\treturn;\n\t\t}\n\t\t// Keep images once started; only cancel a queued (not-yet-started) load.\n\t\tcancelScheduled?.();\n\t\tcancelScheduled = null;\n\t\tonVisibleChange(false);\n\t};\n\n\tif (typeof IntersectionObserver === 'undefined') {\n\t\trequestLoad();\n\t\treturn () => {\n\t\t\tcancelScheduled?.();\n\t\t\tcancelScheduled = null;\n\t\t};\n\t}\n\n\tconst observer = new IntersectionObserver(\n\t\t(entries) => {\n\t\t\tsetVisible(entries.some((entry) => entry.isIntersecting));\n\t\t},\n\t\t{ root: null, rootMargin, threshold: 0 }\n\t);\n\n\tobserver.observe(element);\n\n\tif (isNearViewport(element, marginPx)) {\n\t\tsetVisible(true);\n\t}\n\n\treturn () => {\n\t\tcancelScheduled?.();\n\t\tcancelScheduled = null;\n\t\tobserver.disconnect();\n\t};\n}\n\nexport function attachImageReady(element: HTMLImageElement, onReady: () => void): () => void {\n\tconst notify = () => onReady();\n\tif (element.complete) {\n\t\tqueueMicrotask(notify);\n\t} else {\n\t\telement.addEventListener('load', notify, { once: true });\n\t\telement.addEventListener('error', notify, { once: true });\n\t}\n\treturn () => {\n\t\telement.removeEventListener('load', notify);\n\t\telement.removeEventListener('error', notify);\n\t};\n}\n","/** Touch devices without hover — drive thumbnail parallax from scroll position. */\nexport function prefersScrollLinkedParallax(): boolean {\n\tif (typeof window === 'undefined') return false;\n\tif (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return false;\n\treturn window.matchMedia('(hover: none), (pointer: coarse)').matches;\n}\n\n/**\n * Map an element's vertical centre in the viewport to horizontal parallax in [-1, 1].\n */\nexport function horizontalParallaxFromViewportY(rect: DOMRect, viewportHeight: number): number {\n\tconst centerY = rect.top + rect.height / 2;\n\tconst t = centerY / Math.max(viewportHeight, 1);\n\treturn (t - 0.5) * 2;\n}\n\nexport type ScrollLinkedParallaxOptions = {\n\treadonly onParallax: (x: number) => void;\n\treadonly pointerActive?: () => boolean;\n};\n\ntype ScrollParallaxSubscriber = {\n\treadonly element: HTMLElement;\n\treadonly onParallax: (x: number) => void;\n\treadonly pointerActive?: () => boolean;\n};\n\nconst subscribers = new Set<ScrollParallaxSubscriber>();\nlet listening = false;\nlet frame = 0;\n\nfunction syncAll(): void {\n\tframe = 0;\n\tif (subscribers.size === 0 || typeof window === 'undefined') return;\n\tconst viewportHeight = window.innerHeight;\n\tfor (const entry of subscribers) {\n\t\tif (entry.pointerActive?.()) continue;\n\t\tconst rect = entry.element.getBoundingClientRect();\n\t\t// Skip off-screen thumbs — avoids N layout reads + framework updates per scroll.\n\t\tif (rect.bottom < -64 || rect.top > viewportHeight + 64) continue;\n\t\tentry.onParallax(horizontalParallaxFromViewportY(rect, viewportHeight));\n\t}\n}\n\nfunction scheduleSync(): void {\n\tif (frame !== 0) return;\n\tframe = requestAnimationFrame(syncAll);\n}\n\nfunction ensureListening(): void {\n\tif (listening || typeof window === 'undefined') return;\n\tlistening = true;\n\twindow.addEventListener('scroll', scheduleSync, { passive: true });\n\twindow.addEventListener('resize', scheduleSync, { passive: true });\n}\n\nfunction stopListeningIfIdle(): void {\n\tif (subscribers.size > 0 || !listening || typeof window === 'undefined') return;\n\tlistening = false;\n\tif (frame !== 0) {\n\t\tcancelAnimationFrame(frame);\n\t\tframe = 0;\n\t}\n\twindow.removeEventListener('scroll', scheduleSync);\n\twindow.removeEventListener('resize', scheduleSync);\n}\n\n/**\n * Subscribe to scroll/resize and update horizontal parallax from viewport Y.\n * Uses one shared window listener for all thumbs (old iPads with large galleries).\n */\nexport function attachScrollLinkedParallax(\n\telement: HTMLElement,\n\toptions: ScrollLinkedParallaxOptions\n): () => void {\n\tif (!prefersScrollLinkedParallax()) return () => {};\n\n\tconst entry: ScrollParallaxSubscriber = {\n\t\telement,\n\t\tonParallax: options.onParallax,\n\t\tpointerActive: options.pointerActive\n\t};\n\tsubscribers.add(entry);\n\tensureListening();\n\n\tif (!entry.pointerActive?.()) {\n\t\toptions.onParallax(\n\t\t\thorizontalParallaxFromViewportY(element.getBoundingClientRect(), window.innerHeight)\n\t\t);\n\t}\n\n\treturn () => {\n\t\tsubscribers.delete(entry);\n\t\tstopListeningIfIdle();\n\t};\n}\n\n/** Test helper — clear shared scroll state between vitest cases. */\nexport function resetScrollLinkedParallaxForTests(): void {\n\tsubscribers.clear();\n\tif (typeof window !== 'undefined' && listening) {\n\t\twindow.removeEventListener('scroll', scheduleSync);\n\t\twindow.removeEventListener('resize', scheduleSync);\n\t}\n\tlistening = false;\n\tif (frame !== 0) {\n\t\tcancelAnimationFrame(frame);\n\t\tframe = 0;\n\t}\n}\n","/** Shared styles for ExperienceThumbnail (class prefix `liforma-et`). */\nexport const EXPERIENCE_THUMBNAIL_CSS = `\n:host {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 0;\n}\n\n.liforma-et {\n\t--liforma-et-parallax-x: 0;\n\t--liforma-et-parallax-y: 0;\n\t--liforma-et-bg-scale: 1;\n\t--liforma-et-fg-scale: 1;\n\t--liforma-et-avatar-scale: 1;\n\t--liforma-et-bg-shift: 0px;\n\t--liforma-et-fg-shift: 0px;\n\t--liforma-et-avatar-shift: 0px;\n\t--liforma-et-reveal-duration: 420ms;\n\n\tbox-sizing: border-box;\n\tposition: relative;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tmin-height: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tborder-radius: 0.65rem;\n\toverflow: hidden;\n\tbackground: #111;\n\tcolor: inherit;\n\ttext-decoration: none;\n\tcursor: inherit;\n\t-webkit-tap-highlight-color: transparent;\n}\n\na.liforma-et,\nbutton.liforma-et {\n\tcursor: pointer;\n}\n\nbutton.liforma-et {\n\tfont: inherit;\n\tappearance: none;\n}\n\n.liforma-et__placeholder {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 0;\n\tbackground:\n\t\tradial-gradient(120% 90% at 50% 0%, rgba(255, 255, 255, 0.06), transparent 58%),\n\t\tlinear-gradient(180deg, #1a1a1a 0%, #101010 100%);\n\topacity: 1;\n\ttransition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et--revealed .liforma-et__placeholder {\n\topacity: 0;\n}\n\n.liforma-et__media {\n\topacity: 0;\n\ttransition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n.liforma-et__media--ready {\n\topacity: 1;\n}\n\n.liforma-et__background {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 1;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: cover;\n\tobject-position: center center;\n\ttransform: translate(\n\t\t\tcalc(var(--liforma-et-parallax-x) * var(--liforma-et-bg-shift)),\n\t\t\tcalc(var(--liforma-et-parallax-y) * var(--liforma-et-bg-shift))\n\t\t)\n\t\tscale(var(--liforma-et-bg-scale));\n\ttransform-origin: center center;\n\ttransition:\n\t\topacity var(--liforma-et-reveal-duration) ease,\n\t\ttransform 160ms ease;\n}\n\n.liforma-et__avatar {\n\tposition: relative;\n\tz-index: 2;\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: contain;\n\tobject-position: center bottom;\n\ttransform: scale(var(--liforma-et-avatar-scale))\n\t\ttranslate(\n\t\t\tcalc(var(--liforma-et-parallax-x) * var(--liforma-et-avatar-shift)),\n\t\t\tcalc(var(--liforma-et-parallax-y) * var(--liforma-et-avatar-shift))\n\t\t);\n\ttransform-origin: center center;\n\ttransition:\n\t\topacity var(--liforma-et-reveal-duration) ease,\n\t\ttransform 160ms ease;\n}\n\n/* Gallery plates are typically square in a square tile — contain vs cover is a no-op\n without a zoom. Scale the whole scene from the upper third so Face matches\n player fit (location + avatar crop together). */\n.liforma-et--fit-face {\n\t--liforma-et-avatar-scale: 1.85;\n\t--liforma-et-bg-scale: 1.85;\n\t--liforma-et-fg-scale: 1.85;\n}\n\n.liforma-et--fit-face .liforma-et__avatar,\n.liforma-et--fit-face .liforma-et__background,\n.liforma-et--fit-face .liforma-et__foreground {\n\ttransform-origin: 50% 18%;\n}\n\n.liforma-et--fit-face .liforma-et__avatar {\n\tobject-fit: cover;\n\tobject-position: 50% 18%;\n}\n\n/* Bust / medium: less zoom than face so upper chest stays in frame (player 3.75H window). */\n.liforma-et--fit-medium {\n\t--liforma-et-avatar-scale: 1.35;\n\t--liforma-et-bg-scale: 1.35;\n\t--liforma-et-fg-scale: 1.35;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar,\n.liforma-et--fit-medium .liforma-et__background,\n.liforma-et--fit-medium .liforma-et__foreground {\n\ttransform-origin: 50% 28%;\n}\n\n.liforma-et--fit-medium .liforma-et__avatar {\n\tobject-fit: cover;\n\tobject-position: 50% 28%;\n}\n\n.liforma-et__foreground {\n\tposition: absolute;\n\tinset: 0;\n\tz-index: 3;\n\twidth: 100%;\n\theight: 100%;\n\tobject-fit: cover;\n\tobject-position: center center;\n\tpointer-events: none;\n\ttransform: translate(\n\t\t\tcalc(var(--liforma-et-parallax-x) * var(--liforma-et-fg-shift) * -1),\n\t\t\tcalc(var(--liforma-et-parallax-y) * var(--liforma-et-fg-shift) * -1)\n\t\t)\n\t\tscale(var(--liforma-et-fg-scale));\n\ttransform-origin: center center;\n\ttransition:\n\t\topacity var(--liforma-et-reveal-duration) ease,\n\t\ttransform 160ms ease;\n}\n\n.liforma-et--parallax {\n\t--liforma-et-bg-scale: 1.08;\n\t--liforma-et-fg-scale: 1.05;\n\t--liforma-et-avatar-scale: 1.08;\n\t--liforma-et-bg-shift: 10px;\n\t--liforma-et-fg-shift: 4px;\n\t--liforma-et-avatar-shift: 4px;\n}\n\n/* Promote layers only while parallax is active — avoids N compositor surfaces on galleries. */\n.liforma-et--parallax .liforma-et__background,\n.liforma-et--parallax .liforma-et__foreground,\n.liforma-et--parallax .liforma-et__avatar {\n\twill-change: transform;\n}\n\n.liforma-et--parallax.liforma-et--fit-face {\n\t--liforma-et-avatar-scale: 1.95;\n\t--liforma-et-bg-scale: 1.95;\n\t--liforma-et-fg-scale: 1.95;\n\t--liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--parallax.liforma-et--fit-medium {\n\t--liforma-et-avatar-scale: 1.42;\n\t--liforma-et-bg-scale: 1.42;\n\t--liforma-et-fg-scale: 1.42;\n\t--liforma-et-avatar-shift: 0px;\n}\n\n.liforma-et--scroll-parallax .liforma-et__background,\n.liforma-et--scroll-parallax .liforma-et__foreground,\n.liforma-et--scroll-parallax .liforma-et__avatar {\n\ttransition: opacity var(--liforma-et-reveal-duration) ease;\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.liforma-et {\n\t\t--liforma-et-reveal-duration: 0ms;\n\t}\n\n\t.liforma-et--parallax {\n\t\t--liforma-et-bg-scale: 1;\n\t\t--liforma-et-fg-scale: 1;\n\t\t--liforma-et-avatar-scale: 1;\n\t\t--liforma-et-bg-shift: 0px;\n\t\t--liforma-et-fg-shift: 0px;\n\t\t--liforma-et-avatar-shift: 0px;\n\t}\n\n\t.liforma-et--parallax.liforma-et--fit-face {\n\t\t--liforma-et-avatar-scale: 1.85;\n\t\t--liforma-et-bg-scale: 1.85;\n\t\t--liforma-et-fg-scale: 1.85;\n\t}\n\n\t.liforma-et__background,\n\t.liforma-et__foreground,\n\t.liforma-et__avatar {\n\t\ttransition: none;\n\t}\n}\n`.trim();\n","let styleMounted = false;\n\n/** Inject shared thumbnail CSS once per document. */\nexport function ensureExperienceThumbnailStyles(css: string): void {\n\tif (typeof document === 'undefined' || styleMounted) return;\n\tif (document.querySelector('style[data-liforma-et]')) {\n\t\tstyleMounted = true;\n\t\treturn;\n\t}\n\tconst style = document.createElement('style');\n\tstyle.setAttribute('data-liforma-et', '');\n\tstyle.textContent = css;\n\tdocument.head.appendChild(style);\n\tstyleMounted = true;\n}\n","'use client';\n\nimport {\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype CSSProperties,\n\ttype MouseEvent as ReactMouseEvent,\n\ttype PointerEvent as ReactPointerEvent\n} from 'react';\n\nimport {\n\tattachLazyThumb,\n\tattachScrollLinkedParallax,\n\tattachThumbnailBox,\n\tensureExperienceThumbnailStyles,\n\tEXPERIENCE_THUMBNAIL_CSS,\n\thorizontalParallaxFromViewportY,\n\tpickThumbnailLocationPlateSize,\n\tresolveThumbnailHref,\n\tresolveThumbnailInteraction,\n\tresolveThumbnailLayers,\n\tthumbnailFitClass,\n\ttype GalleryThumb\n} from '../thumbnail/index';\n\nexport type ExperienceThumbnailProps = {\n\treadonly galleryThumb?: GalleryThumb;\n\treadonly avatarImage?: string;\n\treadonly backgroundImage?: string;\n\treadonly foregroundImage?: string;\n\treadonly alt: string;\n\treadonly experienceId?: string;\n\treadonly href?: string;\n\treadonly target?: string;\n\treadonly rel?: string;\n\treadonly onClick?: (event: ReactMouseEvent<HTMLElement>) => void;\n\treadonly returnUrl?: string;\n\treadonly playerBaseUrl?: string;\n\treadonly parallax?: boolean;\n\treadonly fit?: 'full' | 'face' | 'medium';\n\treadonly lazy?: boolean;\n\treadonly className?: string;\n\treadonly fallbackImage?: string;\n\treadonly normalizeUrls?: boolean;\n\treadonly cdnBaseUrl?: string;\n};\n\nfunction mediaClass(base: string, ready: boolean): string {\n\treturn `${base} liforma-et__media${ready ? ' liforma-et__media--ready' : ''}`;\n}\n\nexport function ExperienceThumbnail(props: ExperienceThumbnailProps) {\n\tconst {\n\t\tgalleryThumb,\n\t\tavatarImage,\n\t\tbackgroundImage,\n\t\tforegroundImage,\n\t\talt,\n\t\texperienceId,\n\t\thref,\n\t\ttarget,\n\t\trel,\n\t\tonClick,\n\t\treturnUrl,\n\t\tplayerBaseUrl,\n\t\tparallax = true,\n\t\tfit = 'full',\n\t\tlazy = true,\n\t\tclassName = '',\n\t\tfallbackImage,\n\t\tnormalizeUrls = true,\n\t\tcdnBaseUrl\n\t} = props;\n\n\tconst rootRef = useRef<HTMLElement | null>(null);\n\tconst pointerDownRef = useRef(false);\n\tconst [boxW, setBoxW] = useState(0);\n\tconst [boxH, setBoxH] = useState(0);\n\n\tconst locationPlateSize = pickThumbnailLocationPlateSize(boxW, boxH);\n\tconst layers = useMemo(\n\t\t() =>\n\t\t\tresolveThumbnailLayers({\n\t\t\t\tgalleryThumb,\n\t\t\t\tavatarImage,\n\t\t\t\tbackgroundImage,\n\t\t\t\tforegroundImage,\n\t\t\t\tfallbackImage,\n\t\t\t\tnormalize: normalizeUrls,\n\t\t\t\tlocationPlateSize,\n\t\t\t\tcdnBaseUrl\n\t\t\t}),\n\t\t[\n\t\t\tgalleryThumb,\n\t\t\tavatarImage,\n\t\t\tbackgroundImage,\n\t\t\tforegroundImage,\n\t\t\tfallbackImage,\n\t\t\tnormalizeUrls,\n\t\t\tlocationPlateSize,\n\t\t\tcdnBaseUrl\n\t\t]\n\t);\n\n\tconst interaction = resolveThumbnailInteraction({\n\t\thref,\n\t\thasClickHandler: typeof onClick === 'function',\n\t\texperienceId\n\t});\n\tconst isHostedLaunch =\n\t\tinteraction === 'anchor' && !href?.trim() && Boolean(experienceId?.trim());\n\tconst hasScene = Boolean(layers?.backgroundImage);\n\tconst parallaxEnabled = parallax !== false;\n\n\tconst [shouldLoad, setShouldLoad] = useState(!lazy);\n\tconst [hovering, setHovering] = useState(false);\n\tconst [scrollParallax, setScrollParallax] = useState(false);\n\tconst [parallaxX, setParallaxX] = useState(0);\n\tconst [parallaxY, setParallaxY] = useState(0);\n\tconst [avatarLoadFailed, setAvatarLoadFailed] = useState(false);\n\tconst [backgroundReady, setBackgroundReady] = useState(false);\n\tconst [avatarReady, setAvatarReady] = useState(false);\n\tconst [foregroundReady, setForegroundReady] = useState(false);\n\tconst [resolvedHref, setResolvedHref] = useState<string | undefined>();\n\n\tconst resolvedAvatarImage = layers\n\t\t? avatarLoadFailed && layers.fallbackImage\n\t\t\t? layers.fallbackImage\n\t\t\t: layers.avatarImage\n\t\t: '';\n\n\tuseEffect(() => {\n\t\tensureExperienceThumbnailStyles(EXPERIENCE_THUMBNAIL_CSS);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tsetResolvedHref(\n\t\t\tresolveThumbnailHref({\n\t\t\t\thref,\n\t\t\t\texperienceId,\n\t\t\t\treturnUrl,\n\t\t\t\tplayerBaseUrl,\n\t\t\t\tuseCurrentPageAsReturnUrl: isHostedLaunch && !returnUrl?.trim()\n\t\t\t})\n\t\t);\n\t}, [href, experienceId, returnUrl, playerBaseUrl, isHostedLaunch]);\n\n\tuseEffect(() => {\n\t\tsetBackgroundReady(false);\n\t\tsetAvatarReady(false);\n\t\tsetForegroundReady(false);\n\t\tsetAvatarLoadFailed(false);\n\t}, [layers?.backgroundImage, layers?.foregroundImage, resolvedAvatarImage]);\n\n\tuseEffect(() => {\n\t\tconst el = rootRef.current;\n\t\tif (!el) return;\n\t\treturn attachThumbnailBox(el, (width, height) => {\n\t\t\tsetBoxW(width);\n\t\t\tsetBoxH(height);\n\t\t});\n\t}, [interaction, resolvedHref]);\n\n\tuseEffect(() => {\n\t\tconst el = rootRef.current;\n\t\tif (!el) return;\n\t\tif (!lazy) {\n\t\t\tsetShouldLoad(true);\n\t\t\treturn;\n\t\t}\n\t\treturn attachLazyThumb(el, {\n\t\t\tonVisibleChange: (visible) => {\n\t\t\t\tif (visible) setShouldLoad(true);\n\t\t\t}\n\t\t});\n\t}, [lazy, layers, interaction, resolvedHref]);\n\n\tuseEffect(() => {\n\t\tconst el = rootRef.current;\n\t\tif (!el || !parallaxEnabled) return;\n\t\treturn attachScrollLinkedParallax(el, {\n\t\t\tonParallax: (x) => {\n\t\t\t\tsetScrollParallax(true);\n\t\t\t\tif (!pointerDownRef.current) {\n\t\t\t\t\tsetParallaxX(x);\n\t\t\t\t\tsetParallaxY(0);\n\t\t\t\t}\n\t\t\t},\n\t\t\tpointerActive: () => pointerDownRef.current\n\t\t});\n\t}, [parallaxEnabled, layers, interaction, resolvedHref]);\n\n\tconst onPointerMove = (event: ReactPointerEvent<HTMLElement>) => {\n\t\tif (!parallaxEnabled || scrollParallax) return;\n\t\tconst rect = event.currentTarget.getBoundingClientRect();\n\t\tif (rect.width <= 0 || rect.height <= 0) return;\n\t\tsetParallaxX(((event.clientX - rect.left) / rect.width - 0.5) * 2);\n\t\tsetParallaxY(((event.clientY - rect.top) / rect.height - 0.5) * 2);\n\t};\n\n\tconst clearPointer = (thumb: HTMLElement) => {\n\t\tconst wasDown = pointerDownRef.current;\n\t\tpointerDownRef.current = false;\n\t\tsetHovering(false);\n\t\tif (scrollParallax && wasDown) {\n\t\t\tsetParallaxX(\n\t\t\t\thorizontalParallaxFromViewportY(thumb.getBoundingClientRect(), window.innerHeight)\n\t\t\t);\n\t\t\tsetParallaxY(0);\n\t\t} else if (!scrollParallax) {\n\t\t\tsetParallaxX(0);\n\t\t\tsetParallaxY(0);\n\t\t}\n\t};\n\n\tconst onPointerDown = (event: ReactPointerEvent<HTMLElement>) => {\n\t\tif (!parallaxEnabled) return;\n\t\tpointerDownRef.current = true;\n\t\tif (event.pointerType === 'mouse') setHovering(true);\n\t\tconst thumb = event.currentTarget;\n\t\tconst onGlobalEnd = () => {\n\t\t\tclearPointer(thumb);\n\t\t\twindow.removeEventListener('pointerup', onGlobalEnd);\n\t\t\twindow.removeEventListener('pointercancel', onGlobalEnd);\n\t\t};\n\t\twindow.addEventListener('pointerup', onGlobalEnd);\n\t\twindow.addEventListener('pointercancel', onGlobalEnd);\n\t};\n\n\tconst handleClick = (event: ReactMouseEvent<HTMLElement>) => {\n\t\tonClick?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tif (isHostedLaunch && !returnUrl?.trim()) {\n\t\t\tconst next = resolveThumbnailHref({\n\t\t\t\texperienceId,\n\t\t\t\tplayerBaseUrl,\n\t\t\t\tuseCurrentPageAsReturnUrl: true\n\t\t\t});\n\t\t\tif (\n\t\t\t\tnext &&\n\t\t\t\tevent.button === 0 &&\n\t\t\t\t!event.metaKey &&\n\t\t\t\t!event.ctrlKey &&\n\t\t\t\t!event.shiftKey\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\twindow.location.assign(next);\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!layers) return null;\n\n\tconst parallaxLayersActive = parallaxEnabled && (hovering || scrollParallax);\n\t/** Fade placeholder as soon as any layer can paint — don't wait for the slowest plate. */\n\tconst revealThumb =\n\t\tshouldLoad && (avatarReady || backgroundReady || foregroundReady);\n\n\tconst rootClass = [\n\t\t'liforma-et',\n\t\thasScene ? 'liforma-et--scene' : '',\n\t\tthumbnailFitClass(fit),\n\t\tparallaxLayersActive ? 'liforma-et--parallax' : '',\n\t\tscrollParallax ? 'liforma-et--scroll-parallax' : '',\n\t\tshouldLoad && !revealThumb ? 'liforma-et--loading' : '',\n\t\trevealThumb ? 'liforma-et--revealed' : '',\n\t\tclassName\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ');\n\n\tconst style = {\n\t\t['--liforma-et-parallax-x' as string]: parallaxX,\n\t\t['--liforma-et-parallax-y' as string]: parallaxY\n\t} as CSSProperties;\n\n\tconst markReady = (img: HTMLImageElement, setReady: (v: boolean) => void) => {\n\t\tif (img.complete) setReady(true);\n\t};\n\n\tconst media = (\n\t\t<>\n\t\t\t<span className=\"liforma-et__placeholder\" aria-hidden=\"true\" />\n\t\t\t{shouldLoad && layers.backgroundImage ? (\n\t\t\t\t<img\n\t\t\t\t\tclassName={mediaClass('liforma-et__background', backgroundReady)}\n\t\t\t\t\tsrc={layers.backgroundImage}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tif (node) markReady(node, setBackgroundReady);\n\t\t\t\t\t}}\n\t\t\t\t\tonLoad={() => setBackgroundReady(true)}\n\t\t\t\t\tonError={() => setBackgroundReady(true)}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{shouldLoad && resolvedAvatarImage ? (\n\t\t\t\t<img\n\t\t\t\t\tclassName={mediaClass('liforma-et__avatar', avatarReady)}\n\t\t\t\t\tsrc={resolvedAvatarImage}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tif (node) markReady(node, setAvatarReady);\n\t\t\t\t\t}}\n\t\t\t\t\tonLoad={() => setAvatarReady(true)}\n\t\t\t\t\tonError={() => {\n\t\t\t\t\t\tif (layers.fallbackImage) setAvatarLoadFailed(true);\n\t\t\t\t\t\telse setAvatarReady(true);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{shouldLoad && layers.foregroundImage ? (\n\t\t\t\t<img\n\t\t\t\t\tclassName={mediaClass('liforma-et__foreground', foregroundReady)}\n\t\t\t\t\tsrc={layers.foregroundImage}\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\tif (node) markReady(node, setForegroundReady);\n\t\t\t\t\t}}\n\t\t\t\t\tonLoad={() => setForegroundReady(true)}\n\t\t\t\t\tonError={() => setForegroundReady(true)}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n\n\tconst pointerProps = {\n\t\tonPointerDown,\n\t\tonPointerUp: (event: ReactPointerEvent<HTMLElement>) => clearPointer(event.currentTarget),\n\t\tonPointerCancel: (event: ReactPointerEvent<HTMLElement>) =>\n\t\t\tclearPointer(event.currentTarget),\n\t\tonPointerEnter: (event: ReactPointerEvent<HTMLElement>) => {\n\t\t\tif (parallaxEnabled && event.pointerType === 'mouse') setHovering(true);\n\t\t},\n\t\tonPointerMove,\n\t\tonPointerLeave: () => {\n\t\t\tif (!pointerDownRef.current) {\n\t\t\t\tsetHovering(false);\n\t\t\t\tif (!scrollParallax) {\n\t\t\t\t\tsetParallaxX(0);\n\t\t\t\t\tsetParallaxY(0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst setRootRef = (node: HTMLElement | null) => {\n\t\trootRef.current = node;\n\t};\n\n\tif (interaction === 'anchor' && resolvedHref) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\tref={setRootRef}\n\t\t\t\tclassName={rootClass}\n\t\t\t\tstyle={style}\n\t\t\t\thref={resolvedHref}\n\t\t\t\ttarget={target}\n\t\t\t\trel={rel}\n\t\t\t\taria-label={alt}\n\t\t\t\tonClick={handleClick}\n\t\t\t\t{...pointerProps}\n\t\t\t>\n\t\t\t\t{media}\n\t\t\t</a>\n\t\t);\n\t}\n\n\tif (interaction === 'button') {\n\t\treturn (\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tref={setRootRef}\n\t\t\t\tclassName={rootClass}\n\t\t\t\tstyle={style}\n\t\t\t\taria-label={alt}\n\t\t\t\tonClick={handleClick}\n\t\t\t\t{...pointerProps}\n\t\t\t>\n\t\t\t\t{media}\n\t\t\t</button>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={setRootRef}\n\t\t\tclassName={rootClass}\n\t\t\tstyle={style}\n\t\t\trole={alt ? 'img' : undefined}\n\t\t\taria-label={alt || undefined}\n\t\t\taria-hidden={alt ? undefined : true}\n\t\t\t{...pointerProps}\n\t\t>\n\t\t\t{media}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { CloseEvent, EmbedState } from './protocol';
2
2
  import { type WidgetChromeMode, type WidgetDragMoveEvent, type WidgetDragStartEvent } from './protocol';
3
- import type { CharacterSpeechEvent, ConversationMessage, ExperienceInteraction, SpeakBehavior, SpeechResult as LegacySpeakResult, UserSpeechBoundaryEvent, UserTranscriptUpdate, UtteranceResult } from '../types/sessionInteraction';
3
+ import type { CharacterSpeechEvent, ConversationMessage, ExperienceInteraction, ExperienceInteractionPatch, SpeakBehavior, SpeechResult as LegacySpeakResult, UserSpeechBoundaryEvent, UserTranscriptUpdate, UtteranceResult } from '../types/sessionInteraction';
4
4
  import type { PlayerStatus, Session, SessionActivity } from '../types/sessionLaunch';
5
5
  import type { StartButtonOptions, PlayerTheme } from '../types/sessionInteraction';
6
6
  import type { CompleteSpeechQueuePolicy, SpeechAudioFormat, SpeechInterruptOptions, SpeechPlayEmbedSource, SpeechResult, StreamingSpeechQueuePolicy } from '../speech/types';
@@ -87,6 +87,7 @@ export type IframeHost = {
87
87
  readonly startButton?: StartButtonOptions;
88
88
  readonly theme?: PlayerTheme;
89
89
  readonly showFeedback?: boolean;
90
+ readonly interaction?: ExperienceInteractionPatch;
90
91
  }): void;
91
92
  /** @deprecated Prefer {@link IframeHost.postLaunch}. */
92
93
  postManifest(manifest: unknown): void;
@@ -145,7 +146,10 @@ export type IframeHost = {
145
146
  getConversation(): Promise<readonly ConversationMessage[]>;
146
147
  focusCharacter(characterId: string): Promise<void>;
147
148
  setFit(fit: 'full' | 'face' | 'medium'): Promise<void>;
148
- setInteraction(patch: Partial<ExperienceInteraction>): Promise<ExperienceInteraction>;
149
+ setStage(stage: 'fill' | 'pip'): Promise<void>;
150
+ setPipBackground(background: 'none' | 'set'): Promise<void>;
151
+ setPipShadow(shadow: boolean): Promise<void>;
152
+ setInteraction(patch: ExperienceInteractionPatch): Promise<ExperienceInteraction>;
149
153
  getInteraction(): Promise<ExperienceInteraction>;
150
154
  conversion(key: string): Promise<void>;
151
155
  engage(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"iframeHost.d.ts","sourceRoot":"","sources":["../../../../src/v2/embed/iframeHost.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iframeHost.d.ts","sourceRoot":"","sources":["../../../../src/v2/embed/iframeHost.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAA6C,UAAU,EAAE,MAAM,YAAY,CAAC;AACpG,OAAO,EAQN,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EACX,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,YAAY,IAAI,iBAAiB,EACjC,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EACX,yBAAyB,EACzB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,0BAA0B,EAC1B,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,UAAU,CAAC;IACxB,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB,EAAE,oBAAoB,CAAC;IAC7C,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,CAAA;KAAE,CAAC;IACzD,WAAW,EAAE,IAAI,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,cAAc,EAAE,IAAI,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,oBAAoB,CAAC;IACtC,cAAc,EAAE,mBAAmB,CAAC;IACpC,aAAa,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/C,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACxE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;IACtE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1E,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxE,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,YAAY,CAAC;KACjD,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,mBAAmB,EAAE,KAAK,IAAI,CAAC;IACvF,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAC9B,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;QACxC,QAAQ,CAAC,KAAK,EAAE,SAAS;YACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;YAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS;gBAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;gBAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;aAC3B,EAAE,CAAC;SACJ,EAAE,CAAC;KACJ,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KACxB,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,CAAA;KAAE,KAAK,IAAI,CAAC;IACtF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACnE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAC5E,CAAC;AAMF,MAAM,MAAM,UAAU,GAAG;IACxB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,eAAe,IAAI,IAAI,CAAC;IACxB,UAAU,CACT,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,EAC1B,MAAM,CAAC,EAAE;QACR,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;QAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAC;KAClD,GACC,IAAI,CAAC;IACR,wDAAwD;IACxD,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClD,6BAA6B,IAAI,IAAI,CAAC;IACtC,KAAK,CAAC,OAAO,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;KACzB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1C,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAChF,oBAAoB,CACnB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC9B,GACC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,UAAU,CAAC,OAAO,EAAE;QACnB,MAAM,EAAE,qBAAqB,CAAC;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;QAC5B,KAAK,CAAC,EAAE,yBAAyB,CAAC;QAClC,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1B,oBAAoB,CAAC,OAAO,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,iBAAiB,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,0BAA0B,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,oBAAoB,CAAC,OAAO,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,WAAW,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,4BAA4B,CAAC,OAAO,EAAE;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,oBAAoB,CAAC,OAAO,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;KAC5B,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1B,qBAAqB,CAAC,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/E,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IACnF,eAAe,IAAI,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IAC3D,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,cAAc,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClF,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,cAAc,CAAC,KAAK,EAAE;QACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;QAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;CAChB,CAAC;AAWF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CA6mBvE"}
@@ -1,4 +1,4 @@
1
- import type { CharacterSpeechEvent, ConversationMessage, ExperienceInteraction, SpeakBehavior, SessionModeChange, UserSpeechBoundaryEvent, UserTranscriptUpdate } from '../types/sessionInteraction';
1
+ import type { CharacterSpeechEvent, ConversationMessage, ExperienceInteraction, ExperienceInteractionPatch, SpeakBehavior, SessionModeChange, UserSpeechBoundaryEvent, UserTranscriptUpdate } from '../types/sessionInteraction';
2
2
  import type { Session, SessionActivity } from '../types/sessionLaunch';
3
3
  import type { StartButtonOptions, PlayerTheme } from '../types/sessionInteraction';
4
4
  import type { CompleteSpeechQueuePolicy, SpeechAudioFormat, SpeechInterruptOptions, SpeechPlayEmbedSource, StreamingSpeechQueuePolicy } from '../speech/types';
@@ -200,6 +200,7 @@ export type EmbedInboundMessage = {
200
200
  * Default when omitted: true (player shows Feedback).
201
201
  */
202
202
  readonly showFeedback?: boolean;
203
+ readonly interaction?: ExperienceInteractionPatch;
203
204
  };
204
205
  } | {
205
206
  /** @deprecated Prefer `launch`. Kept briefly for older players. */
@@ -352,12 +353,33 @@ export type EmbedInboundMessage = {
352
353
  readonly correlationId: string;
353
354
  readonly fit: 'full' | 'face' | 'medium';
354
355
  };
356
+ } | {
357
+ readonly type: 'setStage';
358
+ readonly schemaVersion: typeof EMBED_MESSAGE_SCHEMA_VERSION;
359
+ readonly payload: {
360
+ readonly correlationId: string;
361
+ readonly stage: 'fill' | 'pip';
362
+ };
363
+ } | {
364
+ readonly type: 'setPipBackground';
365
+ readonly schemaVersion: typeof EMBED_MESSAGE_SCHEMA_VERSION;
366
+ readonly payload: {
367
+ readonly correlationId: string;
368
+ readonly pipBackground: 'none' | 'set';
369
+ };
370
+ } | {
371
+ readonly type: 'setPipShadow';
372
+ readonly schemaVersion: typeof EMBED_MESSAGE_SCHEMA_VERSION;
373
+ readonly payload: {
374
+ readonly correlationId: string;
375
+ readonly pipShadow: boolean;
376
+ };
355
377
  } | {
356
378
  readonly type: 'setInteraction';
357
379
  readonly schemaVersion: typeof EMBED_MESSAGE_SCHEMA_VERSION;
358
380
  readonly payload: {
359
381
  readonly correlationId: string;
360
- readonly interaction: Partial<ExperienceInteraction>;
382
+ readonly interaction: ExperienceInteractionPatch;
361
383
  };
362
384
  } | {
363
385
  readonly type: 'getInteraction';
@@ -399,6 +421,7 @@ export declare function createLaunchMessage(launch: string, session?: Session |
399
421
  readonly startButton?: StartButtonOptions;
400
422
  readonly theme?: PlayerTheme;
401
423
  readonly showFeedback?: boolean;
424
+ readonly interaction?: ExperienceInteractionPatch;
402
425
  }): EmbedInboundMessage;
403
426
  /** @deprecated Prefer {@link createLaunchMessage}. */
404
427
  export declare function createManifestMessage(manifest: unknown): EmbedInboundMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../src/v2/embed/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../../src/v2/embed/protocol.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,12 @@ import type { CloseEvent, EmbedState } from './embed/protocol';
2
2
  import type { CloseButtonOptions, PlayerStatus, Session } from './types/sessionLaunch';
3
3
  import { type ExperienceEventName, type ExperienceEvents } from './experienceEvents';
4
4
  import { type SpeechController } from './speech/speechController';
5
- import { type ConversationMessage, type ConversationProcessorFn, type ExperienceFit, type ExperienceInteraction, type ExperienceMode, type ListenOnceOptions, type SpeechInputMode, type StartButtonOptions, type PlayerTheme, type StartedEvent, type UserTranscriptUpdate, type UtteranceResult } from './types/sessionInteraction';
5
+ import { type ConversationMessage, type ConversationProcessorFn, type ExperienceFit, type ExperienceInteraction, type ExperienceInteractionPatch, type ExperienceMode, type ListenOnceOptions, type SpeechInputMode, type StartButtonOptions, type PlayerTheme, type StartedEvent, type UserTranscriptUpdate, type UtteranceResult } from './types/sessionInteraction';
6
+ import type { PlayerPipBackground, PlayerStage } from './types/stage';
6
7
  import type { SessionManifest } from './types/sessionManifest';
8
+ export type { PlayerPipBackground, PlayerStage } from './types/stage';
7
9
  export type { CloseEvent };
8
- export type { CharacterSpeechEvent, CharacterSpeechSource, CharacterSpeechTerminalReason, ConversationMessage, ConversationProcessorContext, ConversationProcessorErrorEvent, ConversationProcessorFn, ConversationProcessorResult, ExperienceFit, ExperienceInteraction, ListenOnceOptions, SpeakOptions, VisibleTurns, TextSpeakResult, SpeechResult as LegacySpeakResult, StartButtonAppearance, StartButtonOptions, StartButtonPlacement, StartButtonShadow, StartButtonSize, StartButtonVariant, StartButtonIconPosition, PlayerTheme, PlayerThemeButton, PlayerThemeColors, PlayerThemeTypography, UserSpeechBoundaryEvent, UserTranscriptUpdate, UtteranceResult } from './types/sessionInteraction';
10
+ export type { CharacterSpeechEvent, CharacterSpeechSource, CharacterSpeechTerminalReason, ConversationMessage, ConversationProcessorContext, ConversationProcessorErrorEvent, ConversationProcessorFn, ConversationProcessorResult, ExperienceFit, ExperienceInteraction, ExperienceInteractionPatch, ListenOnceOptions, SpeakOptions, VisibleTurns, TextSpeakResult, SpeechResult as LegacySpeakResult, StartButtonAppearance, StartButtonOptions, StartButtonPlacement, StartButtonShadow, StartButtonSize, StartButtonVariant, StartButtonIconPosition, PlayerTheme, PlayerThemeButton, PlayerThemeColors, PlayerThemeTypography, UserSpeechBoundaryEvent, UserTranscriptUpdate, UtteranceResult } from './types/sessionInteraction';
9
11
  export type { CloseButtonOptions, PlayerStatus, Session, SessionActivity, SessionCapabilities, SessionLaunchResponse, SessionMode } from './types/sessionLaunch';
10
12
  export type { SpeechAudioFormat, SpeechController, SpeechCreateUtteranceOptions, SpeechInterruptOptions, SpeechPlayAudio, SpeechPlayEncodedAudio, SpeechPlayOptions, SpeechPlayPcmAudio, SpeechPlayUrlAudio, SpeechResult, SpeechSpeakOptions, SpeechUtterance } from './speech';
11
13
  export { SPEECH_LIMITS, SpeechBufferTimeoutError, SpeechRuntimeError, SpeechUtteranceClosedError, UnsupportedSpeechOperationError } from './speech';
@@ -82,6 +84,15 @@ export type AttachOptions = {
82
84
  readonly container: HTMLElement;
83
85
  /** Initial scene framing. Change later with {@link Experience.setFit}. */
84
86
  readonly fit?: ExperienceFit;
87
+ /**
88
+ * Embed composition: `fill` (default) full-bleed Set, or `pip` overlay sprite in the host box.
89
+ * Change later with {@link Experience.setStage}. Not authored on Experience Look.
90
+ */
91
+ readonly stage?: PlayerStage;
92
+ /** Pip only. Flat experience Set plate behind the sprite. Default `none`. */
93
+ readonly pipBackground?: PlayerPipBackground;
94
+ /** Pip only. Silhouette drop shadow on keyed avatar pixels. Default `true`. */
95
+ readonly pipShadow?: boolean;
85
96
  readonly startButton?: StartButtonOptions;
86
97
  /**
87
98
  * Global player chrome theme (introduction, feedback, shared buttons, panels).
@@ -94,6 +105,8 @@ export type AttachOptions = {
94
105
  * Presentation only — does not remint.
95
106
  */
96
107
  readonly showFeedback?: boolean;
108
+ /** Nested interaction patch merged before first paint. Does not remint. */
109
+ readonly interaction?: ExperienceInteractionPatch;
97
110
  readonly closeButton?: CloseButtonOptions | boolean;
98
111
  readonly returnUrl?: string;
99
112
  readonly onPlayerStatusChange?: (status: PlayerStatus) => void;
@@ -145,6 +158,9 @@ export declare class Experience {
145
158
  private closed;
146
159
  private attached;
147
160
  private pendingFit;
161
+ private pendingStage;
162
+ private pendingPipBackground;
163
+ private pendingPipShadow;
148
164
  private lastInteraction;
149
165
  private readonly closeHandlers;
150
166
  private readonly eventRegistry;
@@ -177,11 +193,17 @@ export declare class Experience {
177
193
  focusCharacter(characterId: string): Promise<void>;
178
194
  /** Live scene framing. Does not remint or restart the session. Queues until `attach()` if needed. */
179
195
  setFit(fit: ExperienceFit): Promise<void>;
196
+ /** Live embed composition. Does not remint. Queues until `attach()` if needed. */
197
+ setStage(stage: PlayerStage): Promise<void>;
198
+ /** Pip only. Live update; does not remint. */
199
+ setPipBackground(background: PlayerPipBackground): Promise<void>;
200
+ /** Pip only. Live update; does not remint. */
201
+ setPipShadow(shadow: boolean): Promise<void>;
180
202
  /**
181
203
  * Patch captions / mic / text / Edit allow + state after `attach()`.
182
204
  * Returns the player-resolved {@link ExperienceInteraction}.
183
205
  */
184
- setInteraction(patch: Partial<ExperienceInteraction>): Promise<ExperienceInteraction>;
206
+ setInteraction(patch: ExperienceInteractionPatch): Promise<ExperienceInteraction>;
185
207
  /** Fetch the resolved interaction settings from the player (updates local cache). */
186
208
  getInteraction(): Promise<ExperienceInteraction>;
187
209
  /** Record a conversion milestone (once per session per key). Client-reported. */
@@ -1 +1 @@
1
- {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../src/v2/experience.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experience.d.ts","sourceRoot":"","sources":["../../../src/v2/experience.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { PlayerPipBackground, PlayerStage } from '../types/stage';
1
2
  /**
2
3
  * Hosted player embed document URL (iframe `src` base).
3
4
  *
@@ -12,7 +13,20 @@
12
13
  */
13
14
  export declare function resolvePublicPlayerEmbedUrl(): string;
14
15
  export declare function resolveSceneHintId(backdropId?: string, locationId?: string): string | undefined;
15
- export declare function buildManifestEmbedUrl(embedBaseUrl?: string, debug?: boolean, backdropId?: string, avatarId?: string, fit?: 'full' | 'face' | 'medium', ui?: 'widget', showClose?: boolean, castSize?: 2 | 3 | 4): string;
16
+ export type ManifestEmbedUrlOptions = {
17
+ readonly embedBaseUrl?: string;
18
+ readonly debug?: boolean;
19
+ readonly backdropId?: string;
20
+ readonly avatarId?: string;
21
+ readonly fit?: 'full' | 'face' | 'medium';
22
+ readonly stage?: PlayerStage;
23
+ readonly pipBackground?: PlayerPipBackground;
24
+ readonly pipShadow?: boolean;
25
+ readonly ui?: 'widget';
26
+ readonly showClose?: boolean;
27
+ readonly castSize?: 2 | 3 | 4;
28
+ };
29
+ export declare function buildManifestEmbedUrl(embedBaseUrl?: string, debug?: boolean, backdropId?: string, avatarId?: string, fit?: 'full' | 'face' | 'medium', ui?: 'widget', showClose?: boolean, castSize?: 2 | 3 | 4, stage?: PlayerStage, pipBackground?: PlayerPipBackground, pipShadow?: boolean): string;
16
30
  export declare function buildPublicEmbedUrl(experienceId: string, embedBaseUrl?: string, language?: 'en' | 'es', backdropId?: string, avatarId?: string, debug?: boolean): string;
17
31
  /** Tell the player embed which origin may receive postMessage events (SDK parent page). */
18
32
  export declare function withEmbedParentOrigin(embedUrl: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"embedBaseUrl.d.ts","sourceRoot":"","sources":["../../../../src/v2/shims/embedBaseUrl.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAWpD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED,wBAAgB,qBAAqB,CACpC,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,EAChC,EAAE,CAAC,EAAE,QAAQ,EACb,SAAS,CAAC,EAAE,OAAO,EACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAClB,MAAM,CA6BR;AAED,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,OAAO,GACb,MAAM,CAqBR;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"embedBaseUrl.d.ts","sourceRoot":"","sources":["../../../../src/v2/shims/embedBaseUrl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2BvE;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAWpD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/F;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,wBAAgB,qBAAqB,CACpC,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,EAChC,EAAE,CAAC,EAAE,QAAQ,EACb,SAAS,CAAC,EAAE,OAAO,EACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EACpB,KAAK,CAAC,EAAE,WAAW,EACnB,aAAa,CAAC,EAAE,mBAAmB,EACnC,SAAS,CAAC,EAAE,OAAO,GACjB,MAAM,CAqCR;AAED,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,OAAO,GACb,MAAM,CAoBR;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D"}
@@ -173,8 +173,15 @@ export type ListenOnceOptions = {
173
173
  };
174
174
  /** Caption history window: integer exchange count, or `'all'`. */
175
175
  export type VisibleTurns = number | 'all';
176
+ /** Composer button visibility. Independent of capability and live state. */
177
+ export type InteractionControls = {
178
+ readonly voice: boolean;
179
+ readonly captions: boolean;
180
+ readonly microphone: boolean;
181
+ readonly textInput: boolean;
182
+ };
176
183
  /**
177
- * Runtime interaction allow-flags and live UI state (captions, mic, text, Edit/rewind).
184
+ * Runtime interaction allow-flags, live UI state, and control visibility.
178
185
  * Authoring defaults live in the published revision; the player resolves and enforces constraints.
179
186
  */
180
187
  export type ExperienceInteraction = {
@@ -187,5 +194,10 @@ export type ExperienceInteraction = {
187
194
  readonly textInputEnabled: boolean;
188
195
  readonly micInputEnabled: boolean;
189
196
  readonly visibleTurns: VisibleTurns;
197
+ readonly controls: InteractionControls;
198
+ };
199
+ /** Nested patch for attach and setInteraction. Omitted keys (including nested controls) are retained. */
200
+ export type ExperienceInteractionPatch = Partial<Omit<ExperienceInteraction, 'controls'>> & {
201
+ readonly controls?: Partial<InteractionControls>;
190
202
  };
191
203
  //# sourceMappingURL=sessionInteraction.d.ts.map