@wyxos/vibe 5.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -128,6 +128,33 @@ transition, while vertical reel scrolling continues to move between posts.
128
128
  Media assets may include a stable `mediaId` (`string | number`) when consumers
129
129
  need to select exact grouped media independently of its array position.
130
130
 
131
+ ## Media lifecycle hooks
132
+
133
+ Use `onMediaReady` when an image has loaded or a video has enough metadata for
134
+ Vibe to render it, and `onReelMediaChange` when a reel first selects media or
135
+ moves to another parent, nested, or single-item post:
136
+
137
+ ```ts
138
+ const vibe = createVibe({
139
+ target: '#gallery',
140
+ loadPage,
141
+ onMediaReady: ({ postId, mediaId, layout, origin }) => {
142
+ recordMediaReady({ postId, mediaId, layout, origin })
143
+ },
144
+ onReelMediaChange: ({ postId, mediaId, postIndex, mediaIndex }) => {
145
+ updateActiveMedia({ postId, mediaId, postIndex, mediaIndex })
146
+ },
147
+ })
148
+ ```
149
+
150
+ Both optional callbacks receive `VibeMediaLifecycleContext`: stable `postId`
151
+ and `mediaId` identity, zero-based `postIndex` and `mediaIndex`, the complete
152
+ `item` and selected `media`, the rendered `layout`, and `origin`. `mediaId` is
153
+ `null` when the source asset does not define one. `origin` is `null` for the
154
+ masonry grid, `reel` for the base reel, and `masonry` for a reel opened from a
155
+ masonry card. The readiness hook may run again if media remounts and becomes
156
+ ready again; reel-change events describe selection changes, not load state.
157
+
131
158
  ## Reel URLs with Vue Router
132
159
 
133
160
  Pass a Vue Router instance when the application should reflect the active reel
@@ -1,5 +1,5 @@
1
1
  import { type VibeRuntimeState } from '../core/runtime';
2
- import type { VibeCardRegion, VibeFeedFooter, VibeFeedFooterActions, VibeItemId, VibeMediaCardOptions, VibeReelInfoSheetOptions, VibeReelItemTarget, VibeReelNavigationResult } from '../types';
2
+ import type { VibeCardRegion, VibeFeedFooter, VibeFeedFooterActions, VibeItemId, VibeMediaCardOptions, VibeMediaLifecycleContext, VibeReelInfoSheetOptions, VibeReelItemTarget, VibeReelNavigationResult } from '../types';
3
3
  type __VLS_Props = {
4
4
  canRetryEnd: boolean;
5
5
  cardFooter?: VibeCardRegion;
@@ -31,7 +31,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
31
31
  retryForward: () => any;
32
32
  activeReelChange: (postId: VibeItemId) => any;
33
33
  closeReel: () => any;
34
+ mediaReady: (context: VibeMediaLifecycleContext) => any;
34
35
  openReel: (postId: VibeItemId) => any;
36
+ reelMediaChange: (context: VibeMediaLifecycleContext) => any;
35
37
  reelInfoSheetChange: (enabled: boolean) => any;
36
38
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
37
39
  onLoadMore?: (() => any) | undefined;
@@ -39,7 +41,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
39
41
  onRetryForward?: (() => any) | undefined;
40
42
  onActiveReelChange?: ((postId: VibeItemId) => any) | undefined;
41
43
  onCloseReel?: (() => any) | undefined;
44
+ onMediaReady?: ((context: VibeMediaLifecycleContext) => any) | undefined;
42
45
  onOpenReel?: ((postId: VibeItemId) => any) | undefined;
46
+ onReelMediaChange?: ((context: VibeMediaLifecycleContext) => any) | undefined;
43
47
  onReelInfoSheetChange?: ((enabled: boolean) => any) | undefined;
44
48
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
45
49
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,4 @@
1
+ import type { VibeRuntimeState } from './runtime';
2
+ import type { VibeItemId, VibeLayout, VibeMediaLifecycleContext, VibeReelOrigin } from '../types';
3
+ export declare function mediaLifecycleContext(state: VibeRuntimeState, postId: VibeItemId, mediaIndex: number, layout: VibeLayout, origin: VibeReelOrigin | null): VibeMediaLifecycleContext | null;
4
+ export declare function useReelMediaChangeLifecycle(state: VibeRuntimeState, onChange: (context: VibeMediaLifecycleContext) => void): void;
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`);function t(e){return[e,...e.items]}function n(e,t){return Math.min(e.items.length,Math.max(0,t))}function r(e,r){return t(e)[n(e,r)]??e}function i(e,t){return`${String(e)}:${t}`}function a(e){return{activeReelPostId:e.activeReelPostId,autoScroll:{...e.autoScroll},autofill:{...e.autofill},error:e.error,fill:{...e.fill,target:e.fill.target?{...e.fill.target}:null},infiniteScroll:e.infiniteScroll,isLoading:e.isLoading,isLoadingMore:e.isLoadingMore,items:[...e.items],layout:e.layout,lifecycle:e.isLoading||e.isLoadingMore?`loading`:e.error||e.nextPageError?`error`:`loaded`,loadMoreLocked:e.loadMoreLocked,next:e.next,nextPageError:e.nextPageError,reelAutoAdvance:{...e.reelAutoAdvance},reelForward:{...e.reelForward},reelInfoSheet:{...e.reelInfoSheet},reelOrigin:e.reelOrigin,total:e.total}}var o={key:0,class:`gallery-footer`},s={key:0,class:`load-more-status`,role:`status`},c=[`disabled`],l={key:2,class:`end-feed`},u=[`disabled`],d=(0,e.defineComponent)({__name:`GalleryFooter`,props:{canRetryEnd:{type:Boolean},hasError:{type:Boolean},hasNext:{type:Boolean},isLoading:{type:Boolean},loadMoreLocked:{type:Boolean},showLoadMore:{type:Boolean}},emits:[`loadMore`,`retryEnd`],setup(t,{emit:n}){let r=t,i=n;function a(){r.loadMoreLocked||(r.hasNext?i(`loadMore`):i(`retryEnd`))}return(n,r)=>t.isLoading||t.hasError||t.hasNext&&t.showLoadMore||!t.hasNext&&t.canRetryEnd?((0,e.openBlock)(),(0,e.createElementBlock)(`footer`,o,[t.isLoading?((0,e.openBlock)(),(0,e.createElementBlock)(`p`,s,` Loading more… `)):t.hasError||t.hasNext&&t.showLoadMore?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,"data-test":`load-more`,class:`load-more-button`,type:`button`,disabled:t.loadMoreLocked,onClick:a},(0,e.toDisplayString)(t.hasError?`Try again`:t.loadMoreLocked?`Loading paused`:`Load more`),9,c)):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,l,[r[1]||=(0,e.createElementVNode)(`p`,{class:`end-feed-message`,role:`status`},` You've reached the end. `,-1),(0,e.createElementVNode)(`button`,{"data-test":`retry-end`,class:`load-more-button`,type:`button`,disabled:t.loadMoreLocked,onClick:r[0]||=e=>n.$emit(`retryEnd`)},` Check for more `,8,u)]))])):(0,e.createCommentVNode)(``,!0)}}),f=(0,e.defineComponent)({__name:`FeedFooter`,props:{actions:{},canRetryEnd:{type:Boolean},feedFooter:{},hasError:{type:Boolean},hasNext:{type:Boolean},isLoading:{type:Boolean},loadMoreLocked:{type:Boolean},showLoadMore:{type:Boolean},state:{}},emits:[`loadMore`,`retryEnd`],setup(t,{emit:n}){let r=t,i=n;function a(){r.actions?.cancelAutofill()}function o(){r.actions?.retry()}return(n,r)=>t.feedFooter&&t.actions&&t.state?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.feedFooter.component),{key:0,actions:t.actions,"can-retry-end":t.canRetryEnd,"show-load-more":t.showLoadMore,state:t.state,onAutofillCancel:a,onLoadMore:r[0]||=e=>i(`loadMore`),onRetry:o,onRetryEnd:r[1]||=e=>i(`retryEnd`)},null,40,[`actions`,`can-retry-end`,`show-load-more`,`state`])):((0,e.openBlock)(),(0,e.createBlock)(d,{key:1,"can-retry-end":t.canRetryEnd,"has-error":t.hasError,"has-next":t.hasNext,"is-loading":t.isLoading,"load-more-locked":t.loadMoreLocked,"show-load-more":t.showLoadMore,onLoadMore:r[2]||=e=>i(`loadMore`),onRetryEnd:r[3]||=e=>i(`retryEnd`)},null,8,[`can-retry-end`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`show-load-more`]))}}),p=[`role`],m={class:`gallery-status`},h=(0,e.defineComponent)({__name:`FeedStatus`,props:{actions:{},canRetryEnd:{type:Boolean},feedFooter:{},state:{}},emits:[`loadMore`,`retryEnd`],setup(t,{emit:n}){let r=t,i=n;return(n,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(`main`,{class:`gallery-shell`,role:r.state.error?`alert`:r.state.isLoading?`status`:void 0},[(0,e.createElementVNode)(`p`,m,[r.state.error?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createTextVNode)(` Unable to load media. `)],64)):r.state.isLoading?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createTextVNode)(` Loading media… `)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createTextVNode)(` No media found. `)],64))]),t.feedFooter?((0,e.openBlock)(),(0,e.createBlock)(f,{key:0,actions:t.actions,"can-retry-end":t.canRetryEnd,"feed-footer":t.feedFooter,"has-error":!!t.state.nextPageError,"has-next":t.state.next!==null,"is-loading":t.state.isLoadingMore,"load-more-locked":t.state.loadMoreLocked,"show-load-more":``,state:t.state,onLoadMore:a[0]||=e=>i(`loadMore`),onRetryEnd:a[1]||=e=>i(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`state`])):(0,e.createCommentVNode)(``,!0)],8,p))}});function g(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=240}function _(e){let t=e.preview.width??e.width,n=e.preview.height??e.height;return!t||!n||t<=0||n<=0?1:n/t}function v(e){return e.reduce((t,n,r)=>n<e[t]?r:t,0)}function y(e){return Math.max(0,e.containerHeight)+Math.max(0,e.gap)}function b(e,t){let n=Math.max(0,t.overscan),r=t.scrollTop-n,i=t.scrollTop+Math.max(0,t.viewportHeight)+n;return e.reduce((e,t,n)=>(t.y+t.height>=r&&t.y<=i&&e.push(n),e),[])}function x(e,t,n){if(t<=0||e.length===0)return{columns:0,height:0,items:[]};let r=Math.max(0,n.gap),i=Number.isFinite(n.additionalHeight)?Math.max(0,n.additionalHeight??0):0,a=Math.max(1,n.minColumnWidth),o=Math.max(1,Math.floor((t+r)/(a+r))),s=(t-r*(o-1))/o,c=Array.from({length:o},()=>0),l=e.map(e=>{let t=v(c),n=s*_(e)+i,a={x:t*(s+r),y:c[t],width:s,height:n};return c[t]+=n+r,a});return{columns:o,height:Math.max(...c)-r,items:l}}function S(e,t,n){return Math.min(n,Math.max(t,e))}function C({contentSize:e,minimumThumbSize:t,scrollPosition:n,trackSize:r,viewportSize:i}){let a=Math.max(0,e),o=Math.max(0,r),s=Math.max(0,i),c=Math.max(0,a-s);if(!(c>0&&o>0))return{maximumScrollPosition:c,scrollable:!1,thumbOffset:0,thumbSize:o,thumbTravel:0};let l=S(s/a*o,Math.min(Math.max(0,t),o),o),u=Math.max(0,o-l);return{maximumScrollPosition:c,scrollable:!0,thumbOffset:u*(S(n,0,c)/c),thumbSize:l,thumbTravel:u}}var w=[`aria-hidden`],T=[`aria-controls`,`aria-valuemax`,`aria-valuenow`,`tabindex`],E=32,D=40,O=120,k=(0,e.defineComponent)({__name:`GalleryScrollbar`,props:{contentSize:{},controlsId:{},scrollElement:{},suspended:{type:Boolean}},setup(t){let n=t,r={maximumScrollPosition:0,scrollable:!1,thumbOffset:0,thumbSize:0,thumbTravel:0},i=(0,e.shallowRef)(null),a=(0,e.shallowRef)(r),o=(0,e.shallowRef)(!1),s=(0,e.shallowRef)(!1),c=(0,e.shallowRef)(!1),l=null,u=0,d=0,f=null,p=null,m=null,h=null,g=!1,_=null,v=(0,e.computed)(()=>a.value.scrollable&&!n.suspended),y=(0,e.computed)(()=>({height:`${a.value.thumbSize}px`,transform:`translate3d(0, ${a.value.thumbOffset}px, 0)`}));function b(){f!==null&&clearTimeout(f),f=setTimeout(()=>{f=null,o.value||(s.value=!1)},O)}function x(){s.value=!0,b()}function S(){let e=n.scrollElement,t=i.value;return!e||!t?r:C({contentSize:e.scrollHeight,minimumThumbSize:E,scrollPosition:e.scrollTop,trackSize:t.clientHeight,viewportSize:e.clientHeight})}function k(e){if(o.value&&e!==`scroll`){g=!0;return}if(o.value){let e=n.scrollElement;if(!e||a.value.maximumScrollPosition<=0)return;let t=Math.min(1,Math.max(0,e.scrollTop/a.value.maximumScrollPosition));a.value={...a.value,thumbOffset:a.value.thumbTravel*t};return}a.value=S(),!(c.value||p!==null)&&(p=requestAnimationFrame(()=>{p=null,c.value=!0}))}function A(){x(),k(`scroll`)}function j(e){let t=n.scrollElement;t&&(t.scrollTop=Math.min(a.value.maximumScrollPosition,Math.max(0,e)),k(`scroll`))}function M(e){if(!v.value||e.target!==e.currentTarget)return;let t=i.value;if(!t||a.value.thumbTravel<=0)return;e.preventDefault(),x();let n=e.clientY-t.getBoundingClientRect().top-a.value.thumbSize/2;j(Math.min(1,Math.max(0,n/a.value.thumbTravel))*a.value.maximumScrollPosition)}function N(e){v.value&&(e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture?.(e.pointerId),l=e.pointerId,u=e.clientY,d=n.scrollElement?.scrollTop??0,o.value=!0,s.value=!0,f!==null&&clearTimeout(f),f=null)}function P(e){if(!o.value||e.pointerId!==l||(e.preventDefault(),a.value.thumbTravel<=0))return;let t=(e.clientY-u)/a.value.thumbTravel*a.value.maximumScrollPosition;j(d+t)}function F(e){!o.value||e.pointerId!==l||(e.currentTarget.releasePointerCapture?.(e.pointerId),l=null,o.value=!1,g&&(g=!1,k(`content`)),b())}function I(e){if(!v.value)return;let t=n.scrollElement?.clientHeight??0,r=n.scrollElement?.scrollTop??0,i=e.key===`ArrowUp`?r-D:e.key===`ArrowDown`?r+D:e.key===`PageUp`?r-t:e.key===`PageDown`?r+t:e.key===`Home`?0:e.key===`End`?a.value.maximumScrollPosition:null;i!==null&&(e.preventDefault(),x(),j(i))}function L(e){if(h?.disconnect(),!(typeof ResizeObserver>`u`)){h=new ResizeObserver(()=>k(`content`));for(let t of e.children)h.observe(t)}}return(0,e.watch)(()=>n.scrollElement,(t,n)=>{n?.removeEventListener(`scroll`,A),m?.disconnect(),m=null,h?.disconnect(),h=null,_?.disconnect(),_=null,t?.addEventListener(`scroll`,A,{passive:!0}),t&&typeof ResizeObserver<`u`&&(_=new ResizeObserver(()=>{x(),k(`resize`)}),_.observe(t),L(t)),t&&typeof MutationObserver<`u`&&(m=new MutationObserver(()=>{L(t),k(`content`)}),m.observe(t,{childList:!0})),(0,e.nextTick)(()=>k(`resize`))},{immediate:!0}),(0,e.watch)(()=>n.contentSize,()=>{(0,e.nextTick)(()=>k(`content`))}),(0,e.onBeforeUnmount)(()=>{n.scrollElement?.removeEventListener(`scroll`,A),m?.disconnect(),h?.disconnect(),_?.disconnect(),f!==null&&clearTimeout(f),p!==null&&cancelAnimationFrame(p)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{ref_key:`trackElement`,ref:i,class:(0,e.normalizeClass)([`gallery-scrollbar`,{"gallery-scrollbar--dragging":o.value,"gallery-scrollbar--interacting":s.value,"gallery-scrollbar--ready":c.value,"gallery-scrollbar--visible":v.value}]),"aria-hidden":!v.value||void 0,onPointerdown:M},[(0,e.createElementVNode)(`div`,{class:`gallery-scrollbar-thumb`,"aria-controls":t.controlsId,"aria-label":`Media gallery scroll position`,"aria-orientation":`vertical`,"aria-valuemax":Math.round(a.value.maximumScrollPosition),"aria-valuemin":`0`,"aria-valuenow":Math.round(t.scrollElement?.scrollTop??0),role:`scrollbar`,style:(0,e.normalizeStyle)(y.value),tabindex:v.value?0:-1,onKeydown:I,onPointercancel:F,onPointerdown:N,onPointermove:P,onPointerup:F},null,44,T)],42,w))}}),A=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},j=e=>e===``,M=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),N=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),P=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),F=e=>{let t=P(e);return t.charAt(0).toUpperCase()+t.slice(1)},I={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},L=({name:t,iconNode:n,absoluteStrokeWidth:r,"absolute-stroke-width":i,strokeWidth:a,"stroke-width":o,size:s=I.width,color:c=I.stroke,...l},{slots:u})=>(0,e.h)(`svg`,{...I,...l,width:s,height:s,stroke:c,"stroke-width":j(r)||j(i)||r===!0||i===!0?Number(a||o||I[`stroke-width`])*24/Number(s):a||o||I[`stroke-width`],class:M(`lucide`,l.class,...t?[`lucide-${N(F(t))}-icon`,`lucide-${N(t)}`]:[`lucide-icon`]),...!u.default&&!A(l)&&{"aria-hidden":`true`}},[...n.map(t=>(0,e.h)(...t)),...u.default?[u.default()]:[]]),R=(t,n)=>(r,{slots:i,attrs:a})=>(0,e.h)(L,{...a,...r,iconNode:n,name:t},i),z=R(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),B=R(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ee=R(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),V=R(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),H=R(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),te=R(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),U={401:`Authentication required`,403:`Access forbidden`,404:`Preview not found`,419:`Session expired`,500:`Server error`};function W(e){return e.match(/\/demo-errors\/(401|403|404|419|500)\//)?.[1]??`Error`}function G(e){return U[W(e)]??`Preview unavailable`}var K=/\.(aac|flac|m4a|mp3|mp4|mov|ogg|opus|wav|webm)$/i;function ne(e){try{return K.test(new URL(e).pathname)}catch{return K.test(e.split(`?`)[0]??e)}}var re=(0,e.defineComponent)({__name:`CardRegion`,props:{index:{},item:{},layout:{},loadedCount:{},mediaIndex:{},mediaSource:{},placement:{},region:{},style:{},total:{}},setup(i){let a=i,o=(0,e.computed)(()=>n(a.item,a.mediaIndex)),s=(0,e.computed)(()=>t(a.item)),c=(0,e.computed)(()=>r(a.item,o.value)),l=(0,e.computed)(()=>({height:`${a.region.height}px`,paddingBlock:a.style?.paddingY===void 0?void 0:`${a.style.paddingY}px`,paddingInline:a.style?.paddingX===void 0?void 0:`${a.style.paddingX}px`})),u=(0,e.computed)(()=>a.style?.background??a.region.background);return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`media-card-region`,[`media-card-${i.placement}`,{"media-card-region--transparent":u.value===`transparent`}]]),style:(0,e.normalizeStyle)(l.value),onClick:n[0]||=(0,e.withModifiers)(()=>{},[`stop`]),onKeydown:n[1]||=(0,e.withModifiers)(()=>{},[`stop`])},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(i.region.component),{index:i.index,item:i.item,layout:i.layout,"loaded-count":i.loadedCount,"media-count":s.value.length,"media-index":o.value,"media-item":c.value,"media-source":i.mediaSource??`preview`,total:i.total},null,8,[`index`,`item`,`layout`,`loaded-count`,`media-count`,`media-index`,`media-item`,`media-source`,`total`]))],38))}}),q=[`max`,`value`,`aria-valuetext`,`disabled`],J={key:0,class:`media-controls-row`},Y=[`aria-label`,`title`],ie={class:`media-controls-audio`},ae=[`aria-label`,`title`],oe=[`value`,`aria-valuetext`],se={class:`media-control-time`,"aria-live":`off`},ce=(0,e.defineComponent)({__name:`MediaControls`,props:{currentTime:{},duration:{},layout:{},muted:{type:Boolean},playing:{type:Boolean},volume:{}},emits:[`seek`,`toggleMute`,`togglePlayback`,`volumeChange`],setup(t,{emit:n}){let r=t,i=n;function a(e,t=1){return Number.isFinite(e)?Math.min(t,Math.max(0,e)):0}function o(e){let t=Math.floor(a(e,2**53-1)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}:${String(r).padStart(2,`0`)}:${String(i).padStart(2,`0`)}`:`${r}:${String(i).padStart(2,`0`)}`}function s(e){return Number(e.target.value)}let c=(0,e.computed)(()=>Math.max(0,r.duration)),l=(0,e.computed)(()=>a(r.currentTime,c.value)),u=(0,e.computed)(()=>({"--media-range-progress":`${c.value>0?l.value/c.value*100:0}%`})),d=(0,e.computed)(()=>({"--media-range-progress":`${a(r.volume)*100}%`}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`media-controls`,`media-controls--${t.layout}`]),"aria-label":`Video controls`,onClick:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),onDblclick:r[5]||=(0,e.withModifiers)(()=>{},[`stop`]),onKeydown:r[6]||=(0,e.withModifiers)(()=>{},[`stop`]),onWheel:r[7]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`input`,{class:`media-control-range media-control-seek`,type:`range`,min:`0`,max:c.value||0,step:`0.1`,value:l.value,style:(0,e.normalizeStyle)(u.value),"aria-label":`Seek video`,"aria-valuetext":`${o(l.value)} of ${o(c.value)}`,disabled:c.value<=0,onInput:r[0]||=e=>i(`seek`,s(e))},null,44,q),t.layout===`reel`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,J,[(0,e.createElementVNode)(`button`,{type:`button`,class:`media-control-button media-control-playback`,"aria-label":t.playing?`Pause video`:`Play video`,title:t.playing?`Pause`:`Play`,onClick:r[1]||=e=>i(`togglePlayback`)},[t.playing?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(ee),{key:0,size:18,fill:`currentColor`})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(V),{key:1,size:18,fill:`currentColor`}))],8,Y),(0,e.createElementVNode)(`div`,ie,[(0,e.createElementVNode)(`button`,{type:`button`,class:`media-control-button`,"aria-label":t.muted?`Unmute video`:`Mute video`,title:t.muted?`Unmute`:`Mute`,onClick:r[2]||=e=>i(`toggleMute`)},[t.muted||t.volume===0?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(te),{key:0,size:18})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(H),{key:1,size:18}))],8,ae),(0,e.createElementVNode)(`input`,{class:`media-control-range media-control-volume`,type:`range`,min:`0`,max:`1`,step:`0.05`,value:t.volume,style:(0,e.normalizeStyle)(d.value),"aria-label":`Video volume`,"aria-valuetext":`${Math.round(t.volume*100)} percent`,onInput:r[3]||=e=>i(`volumeChange`,s(e))},null,44,oe)]),(0,e.createElementVNode)(`output`,se,(0,e.toDisplayString)(o(l.value))+` / `+(0,e.toDisplayString)(o(c.value)),1)])):(0,e.createCommentVNode)(``,!0)],34))}});function le(t){let n=(0,e.computed)(()=>t.layout()!==`reel`||t.active()===!0),r=(0,e.computed)(()=>n.value?t.videoIsMuted.value:!0);function i(){if(!n.value){t.videoElement.value?.pause(),t.videoIsPlaying.value=!1;return}t.videoIsPlaying.value=!0}return(0,e.watch)(n,r=>{let i=t.videoElement.value;if(!r){i?.pause(),i&&(i.muted=!0),t.videoIsPlaying.value=!1;return}(0,e.nextTick)().then(async()=>{let e=t.videoElement.value;if(!(!e||!n.value)){e.muted=t.videoIsMuted.value;try{await e.play()}catch{t.videoIsPlaying.value=!1}}})}),{effectiveMuted:r,onPlaying:i,playbackAllowed:n}}var ue=[`data-post-id`,`data-media-index`,`aria-hidden`,`aria-busy`,`inert`,`role`,`tabindex`],de={class:`media-card-content`},fe=[`data-media-direction`],pe=[`data-media-index`],me={key:0,"data-test":`media-loading`,class:`media-loading`,"aria-hidden":`true`},he=[`aria-label`],ge={class:`media-error-code`},_e=[`src`,`width`,`height`,`autoplay`,`loop`,`muted`,`preload`],ve=[`src`,`width`,`height`,`fetchpriority`],ye=[`aria-label`],be=[`aria-label`],xe=[`aria-label`],Se=40,Ce=160,we=24,Te=(0,e.defineComponent)({__name:`MediaCard`,props:{active:{type:Boolean},advanceOnMediaEnd:{type:Boolean},cardFooter:{},cardHeader:{},entering:{type:Boolean},fetchPriority:{},index:{},item:{},itemStyle:{},interactive:{type:Boolean},leaving:{type:Boolean},layout:{},loadedCount:{},mediaIndex:{},mediaCard:{},mediaSource:{},previewState:{},reelControlsTarget:{},stationaryReelControls:{type:Boolean},total:{}},emits:[`activate`,`ended`,`error`,`mediaChange`,`ready`],setup(i,{emit:a}){let o=i,s=null,c=0,l=!1,u=null,d=null,f=(0,e.shallowRef)(`next`),p=a;function m(e=!1,t=`pointer`){e&&p(`activate`,t)}let h=(0,e.computed)(()=>t(o.item)),g=(0,e.computed)(()=>n(o.item,o.mediaIndex)),_=(0,e.computed)(()=>r(o.item,g.value)),v=(0,e.computed)(()=>o.mediaSource===`original`?_.value.src:_.value.preview.src),y=(0,e.computed)(()=>o.mediaSource===`original`?_.value.width:_.value.preview.width),b=(0,e.computed)(()=>o.mediaSource===`original`?_.value.height:_.value.preview.height),x=(0,e.shallowRef)(null),S=(0,e.shallowRef)(0),C=(0,e.shallowRef)(0),w=(0,e.shallowRef)(o.mediaCard?.videoMuted??o.layout===`masonry`),T=(0,e.shallowRef)(!1),E=(0,e.shallowRef)(1),D=1,{effectiveMuted:O,onPlaying:k,playbackAllowed:A}=le({active:()=>o.active,layout:()=>o.layout,videoElement:x,videoIsMuted:w,videoIsPlaying:T}),j=(0,e.computed)(()=>o.interactive&&!!(o.cardHeader||o.cardFooter));function M(e){return e.detail===0?`keyboard`:`pointer`}function N(e,t){let n=h.value.length,r=(e+n)%n;r!==g.value&&(f.value=e<g.value?`previous`:`next`,p(`mediaChange`,r),t&&t.detail>0&&t.currentTarget?.blur())}function P(e,t,n){return t===1?e*16:t===2?e*n:e}function F(){c=0,l=!1,s!==null&&clearTimeout(s),s=null}function I(){s!==null&&clearTimeout(s),s=setTimeout(F,Ce)}function L(e){if(h.value.length<=1)return;let t=e.currentTarget?.clientWidth||1,n=P(e.deltaX,e.deltaMode,t);if(n===0||(e.preventDefault(),I(),l)||(c+=n,Math.abs(c)<we))return;let r=Math.sign(c);c=0,l=!0,N(g.value+r)}function R(e){let t=e.touches[0];o.layout!==`reel`||!t||(u=t.clientX,d=t.clientY)}function ee(e){let t=e.changedTouches[0];if(u===null||d===null||!t)return;let n=u-t.clientX,r=d-t.clientY;u=null,d=null,!(Math.abs(n)<=Math.abs(r))&&(Math.abs(n)<Se||N(g.value+Math.sign(n)))}let V=(0,e.computed)(()=>ne(v.value)),H=(0,e.computed)(()=>o.layout===`reel`&&o.stationaryReelControls===!0),te=(0,e.computed)(()=>V.value&&o.previewState===`ready`&&(!H.value||!!(o.active&&o.reelControlsTarget))),U=(0,e.computed)(()=>`${o.item.postId}:${g.value}:${v.value}`);function K(e){o.layout===`reel`&&(e.stopPropagation(),q())}async function q(){if(!(!x.value||!A.value)){if(T.value){x.value.pause();return}try{await x.value.play()}catch{T.value=!1}}}function J(e){return Number.isFinite(e)?Math.max(0,e):0}function Y(e){let t=e?.currentTarget??x.value;t&&(S.value=J(t.currentTime),C.value=J(t.duration),A.value&&(w.value=t.muted),E.value=t.volume,t.volume>0&&(D=t.volume))}function ie(e){Y(e),p(`ready`,g.value)}function ae(){T.value=!1,p(`ended`,g.value)}function oe(e){let t=x.value;!t||!Number.isFinite(e)||(t.currentTime=Math.min(J(t.duration),Math.max(0,e)),S.value=t.currentTime)}function se(e){let t=x.value;if(!t||!Number.isFinite(e))return;let n=Math.min(1,Math.max(0,e));t.volume=n,t.muted=n===0,n>0&&(D=n),Y()}function Te(){let e=x.value;e&&(e.muted&&e.volume===0&&(e.volume=D),e.muted=!e.muted,Y())}return(0,e.onBeforeUnmount)(()=>{F()}),(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`article`,{"data-post-id":i.item.postId,"data-media-index":g.value,class:(0,e.normalizeClass)([`media-card`,{"media-card--entering":i.entering,"media-card--leaving":i.leaving,"media-card--error":i.previewState===`error`,"media-card--transparent-chrome":i.mediaCard?.header?.background===`transparent`||i.mediaCard?.footer?.background===`transparent`||i.cardHeader?.background===`transparent`||i.cardFooter?.background===`transparent`}]),style:(0,e.normalizeStyle)(i.itemStyle),"aria-hidden":i.leaving||void 0,"aria-busy":i.previewState===`loading`,inert:i.leaving||void 0,role:i.interactive&&!i.leaving&&!j.value?`button`:void 0,tabindex:i.interactive&&!i.leaving&&!j.value?0:void 0,onClick:n[11]||=e=>m(i.interactive&&!j.value,M(e)),onKeydown:[n[12]||=(0,e.withKeys)(e=>m(i.interactive&&!j.value,`keyboard`),[`enter`]),n[13]||=(0,e.withKeys)((0,e.withModifiers)(e=>m(i.interactive&&!j.value,`keyboard`),[`prevent`]),[`space`])]},[(0,e.createElementVNode)(`div`,de,[i.cardHeader?((0,e.openBlock)(),(0,e.createBlock)(re,{key:0,index:i.index,item:i.item,layout:i.layout,"loaded-count":i.loadedCount,"media-index":g.value,"media-source":i.mediaSource,placement:`header`,region:i.cardHeader,style:(0,e.normalizeStyle)(i.mediaCard?.header),total:i.total},null,8,[`index`,`item`,`layout`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`media-card-media`,{"media-card-media--carousel":i.layout===`reel`&&h.value.length>1}]),"data-media-direction":f.value,onWheel:L,onTouchstartPassive:R,onTouchendPassive:ee},[(0,e.createVNode)(e.Transition,{name:`media-slide-${f.value}`},{default:(0,e.withCtx)(()=>[((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`${i.item.postId}:${_.value.src}:${i.mediaSource??`preview`}`,class:`media-card-frame`,"data-media-index":g.value},[i.previewState===`loading`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,me,[...n[14]||=[(0,e.createElementVNode)(`span`,{class:`media-loading-shimmer`},null,-1)]])):i.previewState===`error`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,"data-test":`media-error`,class:`media-error`,role:`img`,"aria-label":`${(0,e.unref)(W)(v.value)} ${(0,e.unref)(G)(v.value)}`},[(0,e.createElementVNode)(`strong`,ge,(0,e.toDisplayString)((0,e.unref)(W)(v.value)),1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)((0,e.unref)(G)(v.value)),1)],8,he)):(0,e.createCommentVNode)(``,!0),V.value?((0,e.openBlock)(),(0,e.createElementBlock)(`video`,{key:2,ref_key:`videoElement`,ref:x,class:(0,e.normalizeClass)([`media-preview`,{"media-preview--ready":i.previewState===`ready`,"media-preview--reel-video":i.layout===`reel`}]),src:v.value,width:y.value??void 0,height:b.value??void 0,autoplay:(0,e.unref)(A),loop:!i.advanceOnMediaEnd,muted:(0,e.unref)(O),playsinline:``,preload:i.fetchPriority===`high`?`auto`:`metadata`,onLoadedmetadata:ie,onDurationchange:Y,onTimeupdate:Y,onVolumechange:Y,onPlaying:n[0]||=(...t)=>(0,e.unref)(k)&&(0,e.unref)(k)(...t),onPause:n[1]||=e=>T.value=!1,onEnded:ae,onClick:K,onError:n[2]||=e=>t.$emit(`error`,g.value)},null,42,_e)):((0,e.openBlock)(),(0,e.createElementBlock)(`img`,{key:3,class:(0,e.normalizeClass)([`media-preview`,{"media-preview--ready":i.previewState===`ready`}]),src:v.value,width:y.value??void 0,height:b.value??void 0,fetchpriority:i.fetchPriority,alt:``,decoding:`async`,loading:`eager`,onLoad:n[3]||=e=>t.$emit(`ready`,g.value),onError:n[4]||=e=>t.$emit(`error`,g.value)},null,42,ve))],8,pe))]),_:1},8,[`name`]),((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{disabled:!H.value||!i.reelControlsTarget,to:i.reelControlsTarget??`body`},[(0,e.createVNode)(e.Transition,{name:`vibe-reel-media-controls`,css:H.value},{default:(0,e.withCtx)(()=>[te.value?((0,e.openBlock)(),(0,e.createBlock)(ce,{key:U.value,"current-time":S.value,"data-control-post-id":H.value?i.item.postId:void 0,duration:C.value,layout:i.layout,muted:w.value,playing:T.value,volume:E.value,onSeek:oe,onToggleMute:Te,onTogglePlayback:q,onVolumeChange:se},null,8,[`current-time`,`data-control-post-id`,`duration`,`layout`,`muted`,`playing`,`volume`])):(0,e.createCommentVNode)(``,!0)]),_:1},8,[`css`])],8,[`disabled`,`to`])),h.value.length>1?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`media-carousel-controls`,{"media-carousel-controls--persistent":i.layout===`reel`}]),"aria-label":`Media navigation`},[(0,e.createElementVNode)(`button`,{type:`button`,class:`media-carousel-control media-carousel-control--previous`,"aria-label":`Previous media for post ${i.item.postId}`,onClick:n[5]||=(0,e.withModifiers)(e=>N(g.value-1,e),[`stop`]),onKeydown:n[6]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(z),{size:20})],40,ye),(0,e.createElementVNode)(`button`,{type:`button`,class:`media-carousel-control media-carousel-control--next`,"aria-label":`Next media for post ${i.item.postId}`,onClick:n[7]||=(0,e.withModifiers)(e=>N(g.value+1,e),[`stop`]),onKeydown:n[8]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(B),{size:20})],40,be)],2)):(0,e.createCommentVNode)(``,!0),j.value?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`media-card-activator`,type:`button`,"aria-label":`Open post ${i.item.postId}`,onClick:n[9]||=(0,e.withModifiers)(e=>t.$emit(`activate`,M(e)),[`stop`]),onKeydown:n[10]||=(0,e.withModifiers)(()=>{},[`stop`])},null,40,xe)):(0,e.createCommentVNode)(``,!0)],42,fe),i.cardFooter?((0,e.openBlock)(),(0,e.createBlock)(re,{key:1,index:i.index,item:i.item,layout:i.layout,"loaded-count":i.loadedCount,"media-index":g.value,"media-source":i.mediaSource,placement:`footer`,region:i.cardFooter,style:(0,e.normalizeStyle)(i.mediaCard?.footer),total:i.total},null,8,[`index`,`item`,`layout`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0)])],46,ue))}}),Ee={class:`masonry-feed-shell`},De=[`aria-hidden`,`inert`],Oe=240,ke=6,Ae=12,je=800,Me=1.5,Ne=(0,e.defineComponent)({__name:`MasonryFeed`,props:{enteringPostIds:{},entryDelays:{},leavingPostIds:{default:()=>new Set},removalDelays:{default:()=>new Map},suspended:{type:Boolean},canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},hasNext:{type:Boolean},infiniteScroll:{type:Boolean},isLoadingMore:{type:Boolean},items:{},loadMoreLocked:{type:Boolean},mediaCard:{},mediaIndices:{},nextPageError:{type:Boolean},previewStates:{},state:{},total:{}},emits:[`activate`,`error`,`loadMore`,`mediaChange`,`ready`,`retryEnd`],setup(t,{expose:n,emit:r}){let a=t,o=r,s=(0,e.shallowRef)(null),c=`vibe-masonry-${(0,e.useId)()}`,l=(0,e.shallowRef)(null),u=(0,e.shallowRef)(0),d=(0,e.shallowRef)(ke),p=(0,e.shallowRef)(0),m=(0,e.shallowRef)(0),h=(0,e.shallowRef)(0),_=null,v=null,S=null,C=(0,e.computed)(()=>x(a.items,u.value,{additionalHeight:(a.cardHeader?.height??0)+(a.cardFooter?.height??0),gap:d.value,minColumnWidth:Oe})),w=(0,e.computed)(()=>{let e=C.value;if(a.leavingPostIds.size===0)return e;let t=a.items.filter(e=>!a.leavingPostIds.has(e.postId)),n=x(t,u.value,{additionalHeight:(a.cardHeader?.height??0)+(a.cardFooter?.height??0),gap:d.value,minColumnWidth:Oe}),r=new Map(t.map((e,t)=>[e.postId,n.items[t]]));return{...n,items:a.items.map((t,n)=>a.leavingPostIds.has(t.postId)?e.items[n]:r.get(t.postId)??e.items[n])}}),T=(0,e.computed)(()=>({height:`${a.leavingPostIds.size===0?w.value.height:C.value.height}px`})),E=(0,e.computed)(()=>!a.infiniteScroll||m.value>0&&h.value+w.value.height<=m.value+1),D=(0,e.computed)(()=>{let e=Math.max(je,m.value*Me),t={scrollTop:p.value-h.value,viewportHeight:m.value},n=b(w.value.items,{...t,overscan:e}),r=a.leavingPostIds.size===0?[]:b(C.value.items,{...t,overscan:e}),i=[...new Set([...n,...r])].sort((e,t)=>e-t),o=b(w.value.items,{...t,overscan:0}),s=a.leavingPostIds.size===0?[]:b(C.value.items,{...t,overscan:0}),c=new Set([...o,...s]);return i.flatMap(e=>{let t=a.items[e];return t?[{fetchPriority:c.has(e)?`high`:`low`,index:e,item:t}]:[]})});function O(e){let t=w.value.items[e],n=a.items[e]?.postId;if(!t)return{};let r=n!==void 0&&a.enteringPostIds.has(n),i=n!==void 0&&a.leavingPostIds.has(n),o=r||i?y({containerHeight:C.value.height,gap:d.value}):0,s=n===void 0?0:i?a.removalDelays.get(n)??0:r?a.entryDelays.get(n)??0:0;return{"--masonry-entry-delay":`${s}ms`,width:`${t.width}px`,height:`${t.height}px`,transform:`translate3d(${t.x}px, ${t.y+o}px, 0)`}}function A(){let e=s.value;if(!e)return;p.value=e.scrollTop,m.value=e.clientHeight;let t=l.value;t&&(h.value=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop)}function j(e){let t=e.ownerDocument.documentElement.clientWidth;u.value=e.clientWidth,d.value=Math.min(Ae,Math.max(ke,t*.0075)),A()}function M(e){let t=e.currentTarget;t&&(p.value=t.scrollTop,!a.loadMoreLocked&&a.infiniteScroll&&g(t)&&o(`loadMore`))}function N(){let e=s.value;!a.loadMoreLocked&&e&&g(e)&&o(`loadMore`)}function P(){return s.value}return(0,e.watch)(l,e=>{_?.disconnect(),_=null,S!==null&&cancelAnimationFrame(S),e&&(j(e),!(typeof ResizeObserver>`u`)&&(_=new ResizeObserver(([t])=>{let n=t?.contentRect.width??e.clientWidth;Math.abs(n-u.value)<.5||(S=requestAnimationFrame(()=>{S=null,j(e)}))}),_.observe(e)))}),(0,e.watch)(s,e=>{v?.disconnect(),v=null,e&&(A(),!(typeof ResizeObserver>`u`)&&(v=new ResizeObserver(A),v.observe(e)))}),(0,e.onBeforeUnmount)(()=>{_?.disconnect(),v?.disconnect(),S!==null&&cancelAnimationFrame(S)}),n({getScrollElement:P,loadIfNearBottom:N}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ee,[(0,e.createElementVNode)(`main`,{id:c,ref_key:`galleryElement`,ref:s,class:(0,e.normalizeClass)([`gallery-shell masonry-feed`,{"masonry-feed--suspended":t.suspended}]),"data-layout-mode":`masonry`,"aria-hidden":t.suspended||void 0,inert:t.suspended||void 0,onScrollPassive:M},[(0,e.createElementVNode)(`section`,{ref_key:`masonryElement`,ref:l,class:(0,e.normalizeClass)([`masonry`,{"masonry--ready":u.value>0}]),style:(0,e.normalizeStyle)(T.value),"aria-label":`Media gallery`},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(D.value,({fetchPriority:n,item:r,index:a})=>((0,e.openBlock)(),(0,e.createBlock)(Te,{key:r.postId,class:`masonry-item`,entering:t.enteringPostIds.has(r.postId),leaving:t.leavingPostIds.has(r.postId),"fetch-priority":n,"card-footer":t.cardFooter,"card-header":t.cardHeader,"media-card":t.mediaCard,index:a,item:r,"item-style":O(a),interactive:``,layout:`masonry`,"loaded-count":t.items.length,"media-index":t.mediaIndices.get(r.postId)??0,"preview-state":t.previewStates.get((0,e.unref)(i)(r.postId,t.mediaIndices.get(r.postId)??0))??`loading`,total:t.total,onActivate:e=>o(`activate`,r.postId,e),onMediaChange:e=>o(`mediaChange`,r.postId,e),onReady:e=>o(`ready`,r.postId,e),onError:e=>o(`error`,r.postId,e)},null,8,[`entering`,`leaving`,`fetch-priority`,`card-footer`,`card-header`,`media-card`,`index`,`item`,`item-style`,`loaded-count`,`media-index`,`preview-state`,`total`,`onActivate`,`onMediaChange`,`onReady`,`onError`]))),128))],6),(0,e.createVNode)(f,{actions:t.feedFooterActions,"can-retry-end":t.canRetryEnd,"feed-footer":t.feedFooter,"has-error":t.nextPageError,"has-next":t.hasNext,"is-loading":t.isLoadingMore,"load-more-locked":t.loadMoreLocked,"show-load-more":E.value,state:t.state,onLoadMore:r[0]||=e=>o(`loadMore`),onRetryEnd:r[1]||=e=>o(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`show-load-more`,`state`])],42,De),(0,e.createVNode)(k,{"content-size":w.value.height,"controls-id":c,"scroll-element":s.value,suspended:t.suspended},null,8,[`content-size`,`scroll-element`,`suspended`])]))}}),Pe=300;function Fe(e,t,n){let r=e.scrollTop;if(n||Math.abs(r-t)<=1)return e.scrollTop=t,Promise.resolve();e.setAttribute(`data-transitioning`,``);let i=performance.now(),a=0;return new Promise(n=>{let o=s=>{a+=1;let c=Math.max(s-i,1e3/60*a),l=Math.min(1,c/Pe),u=1-(1-l)**3;if(e.scrollTop=r+(t-r)*u,l<1){requestAnimationFrame(o);return}e.removeAttribute(`data-transitioning`),e.scrollTop=t,n()};requestAnimationFrame(o)})}var Ie=[`aria-label`],Le=(0,e.defineComponent)({__name:`ReelAutoAdvanceProgress`,props:{durationMs:{},label:{}},emits:[`complete`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>({"--vibe-reel-auto-advance-duration":`${r.durationMs}ms`}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`reel-auto-advance`,"data-test":`reel-auto-advance`,role:`timer`,"aria-label":t.label},[(0,e.createElementVNode)(`span`,{class:`reel-auto-advance-progress`,style:(0,e.normalizeStyle)(a.value),onAnimationend:r[0]||=e=>i(`complete`)},null,36)],8,Ie))}}),Re={class:`reel-viewport`},ze=[`data-active-post-id`,`data-active-media-index`],Be=[`role`,`data-status`],Ve=2,He=300,Ue=(0,e.defineComponent)({__name:`ReelFeed`,props:{initialPostId:{},mediaSource:{},reelAutoAdvance:{},reelForward:{default:()=>({error:null,status:`idle`})},canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},hasNext:{type:Boolean},infiniteScroll:{type:Boolean},isLoadingMore:{type:Boolean},items:{},loadMoreLocked:{type:Boolean},mediaCard:{},mediaIndices:{},nextPageError:{type:Boolean},previewStates:{},state:{},total:{}},emits:[`activeChange`,`error`,`loadMore`,`mediaChange`,`ready`,`retryEnd`,`retryForward`],setup(n,{expose:a,emit:o}){let s=n,c=o,l=(0,e.shallowRef)(null),u=(0,e.shallowRef)(null),d=s.initialPostId===null||s.initialPostId===void 0?-1:s.items.findIndex(e=>e.postId===s.initialPostId),p=(0,e.shallowRef)(Math.max(0,d)),m=(0,e.shallowRef)(!1),h=(0,e.shallowRef)(!1),_=0,v=null,y=null,b=null,x=(0,e.computed)(()=>({gridTemplateRows:`repeat(${s.items.length}, 100cqh)`})),S=(0,e.computed)(()=>{let e=Math.max(0,p.value-Ve),t=Math.min(s.items.length-1,p.value+Ve);return s.items.slice(e,t+1).map((t,n)=>({fetchPriority:e+n===p.value?`high`:`low`,index:e+n,item:t}))}),C=(0,e.computed)(()=>s.items[p.value]?.postId),w=(0,e.computed)(()=>s.items[p.value]),T=(0,e.computed)(()=>{let e=C.value;return e===void 0?0:s.mediaIndices.get(e)??0}),E=(0,e.computed)(()=>{let e=C.value;return e===void 0?`loading`:s.previewStates.get(i(e,T.value))??`loading`}),D=(0,e.computed)(()=>{let e=w.value;if(!e)return``;let t=r(e,T.value);return s.mediaSource===`original`?t.src:t.preview.src}),O=(0,e.computed)(()=>E.value===`ready`&&ne(D.value)),k=(0,e.computed)(()=>[C.value,T.value,s.items.length,s.loadMoreLocked,s.reelAutoAdvance.enabled,s.reelAutoAdvance.includePostItems,s.reelAutoAdvance.intervalMs].join(`:`)),A=(0,e.computed)(()=>{let e=w.value,n=!!(e&&s.reelAutoAdvance.includePostItems&&T.value<t(e).length-1),r=s.reelAutoAdvance.intervalMs/1e3;return`Auto advance to the next ${n?`post item`:`post`} in ${r}s`}),j=(0,e.computed)(()=>s.reelAutoAdvance.enabled&&s.reelForward.status===`idle`&&w.value!==void 0&&E.value!==`loading`&&!O.value),M=(0,e.computed)(()=>!s.infiniteScroll||s.items.length<=1),N=(0,e.computed)(()=>s.reelForward.status===`loading`?`Loading the next media…`:s.reelForward.status===`error`?`Unable to load the next media.`:`You reached the end of this feed.`);function P(e){return{gridRow:`${e+1}`}}function F(e){let t=_||e.clientHeight;return t<=0||s.items.length===0?0:Math.min(s.items.length-1,Math.max(0,Math.round(e.scrollTop/t)))}function I(e){let t=e.currentTarget;if(!t)return;let n=_||t.clientHeight,r=Math.max(0,s.items.length-1)*n;m.value=s.items.length>0&&t.scrollTop>r+1,h.value||(p.value=F(t)),!s.loadMoreLocked&&s.infiniteScroll&&g(t)&&c(`loadMore`)}function L(){let e=l.value;e&&(m.value=!1,B(!0),_=e.clientHeight,e.scrollTop=p.value*_,y!==null&&cancelAnimationFrame(y),y=requestAnimationFrame(()=>{e.scrollTop=p.value*e.clientHeight,_=e.clientHeight,y=null}),R())}function R(){b!==null&&clearTimeout(b),b=setTimeout(()=>{b=null;let e=l.value;e&&(_=e.clientHeight,e.scrollTop=p.value*_),B(!1)},120)}function z(){B(!0);let e=l.value;e&&(_=e.clientHeight,e.scrollTop=p.value*_),R()}function B(e){h.value=e,l.value?.toggleAttribute(`data-resizing`,e)}function ee(){let e=l.value;!s.loadMoreLocked&&e&&g(e)&&c(`loadMore`)}function V(e){let n=w.value;if(!n)return!1;let r=t(n).length;if(r<=1)return!1;let i=(T.value+e+r)%r;return c(`mediaChange`,n.postId,i),!0}function H(e){let t=p.value+e;return!l.value||t<0||t>=s.items.length?!1:(G(t),!0)}function te(e,t){let n=s.items.findIndex(t=>t.postId===e),r=s.items[n];return!l.value||!r||t<0||t>r.items.length?!1:((s.mediaIndices.get(e)??0)!==t&&c(`mediaChange`,e,t),n!==p.value&&G(n),!0)}function U(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function W(e){let t=l.value;if(!t)return Promise.resolve();let n=e*(_||t.clientHeight);return p.value=e,Fe(t,n,U())}function G(e){W(e)}async function K(e){let t=s.items.findIndex(t=>t.postId===e);return t<0||t===p.value?!1:(await W(t),!0)}async function q(e){return V(e)?(U()||await new Promise(e=>setTimeout(e,He)),!0):!1}function J(){if(!s.reelAutoAdvance.enabled)return;let e=w.value;if(!e)return;if(s.reelAutoAdvance.includePostItems&&T.value<t(e).length-1){c(`mediaChange`,e.postId,T.value+1);return}let n=p.value+1,r=s.items[n];if(!r){s.hasNext&&!s.loadMoreLocked&&c(`loadMore`);return}s.reelAutoAdvance.includePostItems&&(s.mediaIndices.get(r.postId)??0)!==0&&c(`mediaChange`,r.postId,0),G(n)}function Y(e,t){!s.reelAutoAdvance.enabled||e!==C.value||t!==T.value||!O.value||J()}return(0,e.watch)(l,e=>{v?.disconnect(),v=null,e&&(_=e.clientHeight,!(typeof ResizeObserver>`u`)&&(v=new ResizeObserver(L),v.observe(e)))}),(0,e.watch)(()=>s.items.length,async t=>{let n=s.initialPostId,r=n==null?-1:s.items.findIndex(({postId:e})=>e===n);p.value=r>=0?r:Math.min(p.value,Math.max(0,t-1)),await(0,e.nextTick)(),L()}),(0,e.watch)(C,e=>{e!==void 0&&c(`activeChange`,e)},{immediate:!0}),(0,e.onMounted)(()=>{window.addEventListener(`resize`,z),window.addEventListener(`orientationchange`,z),d>=0&&(0,e.nextTick)(L)}),(0,e.onBeforeUnmount)(()=>{window.removeEventListener(`resize`,z),window.removeEventListener(`orientationchange`,z),v?.disconnect(),y!==null&&cancelAnimationFrame(y),b!==null&&clearTimeout(b)}),a({activeIndex:p,activePostId:C,changeActiveMedia:V,loadIfNearBottom:ee,moveActivePost:H,navigateToItem:te,transitionActiveMedia:q,transitionActivePost:K}),(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`main`,{class:(0,e.normalizeClass)([`reel-shell`,{"reel-shell--has-footer":!!n.cardFooter,"reel-shell--has-header":!!n.cardHeader}]),"data-layout-mode":`reel`},[n.cardHeader&&w.value&&n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(re,{key:0,index:p.value,item:w.value,layout:`reel`,"loaded-count":n.items.length,"media-index":T.value,"media-source":n.mediaSource,placement:`header`,region:n.cardHeader,style:(0,e.normalizeStyle)(n.mediaCard?.header),total:n.total},null,8,[`index`,`item`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,Re,[(0,e.createElementVNode)(`div`,{ref_key:`galleryElement`,ref:l,class:`gallery-shell reel-feed`,"data-active-post-id":C.value,"data-active-media-index":T.value,onScrollPassive:I},[n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createElementBlock)(`section`,{key:1,class:`reel-track`,style:(0,e.normalizeStyle)(x.value),"aria-label":`Media gallery`},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(S.value,({fetchPriority:t,item:r,index:a})=>((0,e.openBlock)(),(0,e.createBlock)(Te,{key:r.postId,active:a===p.value&&!m.value,"advance-on-media-end":s.reelAutoAdvance.enabled&&a===p.value,class:`reel-item`,entering:!1,"fetch-priority":t,index:a,item:r,"item-style":P(a),"media-card":n.mediaCard,layout:`reel`,"loaded-count":n.items.length,"media-index":n.mediaIndices.get(r.postId)??0,"media-source":n.mediaSource,"preview-state":n.previewStates.get((0,e.unref)(i)(r.postId,n.mediaIndices.get(r.postId)??0))??`loading`,"reel-controls-target":u.value,"stationary-reel-controls":``,total:n.total,onMediaChange:e=>c(`mediaChange`,r.postId,e),onEnded:e=>Y(r.postId,e),onReady:e=>c(`ready`,r.postId,e),onError:e=>c(`error`,r.postId,e)},null,8,[`active`,`advance-on-media-end`,`fetch-priority`,`index`,`item`,`item-style`,`media-card`,`loaded-count`,`media-index`,`media-source`,`preview-state`,`reel-controls-target`,`total`,`onMediaChange`,`onEnded`,`onReady`,`onError`]))),128))],4)):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`reel-forward-status`,role:n.reelForward.status===`error`?`alert`:`status`,"data-status":n.reelForward.status},[(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(N.value),1),n.reelForward.status===`error`||n.reelForward.status===`end`?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`reel-forward-retry`,type:`button`,onClick:r[0]||=e=>c(`retryForward`)},` Retry `)):(0,e.createCommentVNode)(``,!0)],8,Be)),n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(f,{key:2,actions:n.feedFooterActions,"can-retry-end":n.canRetryEnd,"feed-footer":n.feedFooter,"has-error":n.nextPageError,"has-next":n.hasNext,"is-loading":n.isLoadingMore,"load-more-locked":n.loadMoreLocked,"show-load-more":M.value,state:n.state,onLoadMore:r[1]||=e=>c(`loadMore`),onRetryEnd:r[2]||=e=>c(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`show-load-more`,`state`])):(0,e.createCommentVNode)(``,!0)],40,ze),(0,e.createElementVNode)(`div`,{ref_key:`reelControlsElement`,ref:u,class:`reel-media-controls-host`,"data-test":`reel-media-controls-host`},null,512)]),n.cardFooter&&w.value&&n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(re,{key:1,index:p.value,item:w.value,layout:`reel`,"loaded-count":n.items.length,"media-index":T.value,"media-source":n.mediaSource,placement:`footer`,region:n.cardFooter,style:(0,e.normalizeStyle)(n.mediaCard?.footer),total:n.total},null,8,[`index`,`item`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0),j.value?((0,e.openBlock)(),(0,e.createBlock)(Le,{key:k.value,"duration-ms":n.reelAutoAdvance.intervalMs,label:A.value,onComplete:J},null,8,[`duration-ms`,`label`])):(0,e.createCommentVNode)(``,!0)],2))}}),We=[`data-info-sheet-open`,`data-info-sheet-mode`],Ge=[`aria-hidden`,`inert`],Ke={key:0,class:`reel-info-sheet-layer`,"data-test":`reel-info-sheet`},qe=[`role`,`aria-modal`,`tabindex`,`data-active-post-id`],Je=(0,e.defineComponent)({__name:`ReelLayout`,props:{forwardIndex:{default:null},forwardItem:{default:null},infoSheet:{},infoSheetEnabled:{type:Boolean},infoSheetOverlay:{type:Boolean},origin:{},initialPostId:{},mediaSource:{},reelAutoAdvance:{},reelForward:{default:()=>({error:null,status:`idle`})},canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},hasNext:{type:Boolean},infiniteScroll:{type:Boolean},isLoadingMore:{type:Boolean},items:{},loadMoreLocked:{type:Boolean},mediaCard:{},mediaIndices:{},nextPageError:{type:Boolean},previewStates:{},state:{},total:{}},emits:[`activeChange`,`closeInfoSheet`,`error`,`loadMore`,`mediaChange`,`ready`,`retryEnd`,`retryForward`],setup(n,{expose:i,emit:a}){let o=n,s=a,c=(0,e.shallowRef)(null),l=(0,e.shallowRef)(null),u=null,d=(0,e.computed)(()=>{let e=o.initialPostId===null||o.initialPostId===void 0?-1:o.items.findIndex(e=>e.postId===o.initialPostId);return Math.max(0,e)}),f=(0,e.computed)(()=>o.items[d.value]),p=(0,e.computed)(()=>f.value??(o.reelForward.status===`idle`?void 0:o.forwardItem??void 0)),m=(0,e.computed)(()=>f.value?d.value:o.forwardIndex??0),h=(0,e.computed)(()=>{let e=p.value?.postId;return e===void 0?0:o.mediaIndices.get(e)??0}),g=(0,e.computed)(()=>!!(o.infoSheet&&o.infoSheetEnabled&&p.value)),_=(0,e.computed)(()=>{let e=p.value;return e?{close:v,index:m.value,item:e,layout:`reel`,loadedCount:o.items.length,mediaCount:t(e).length,mediaIndex:h.value,mediaItem:r(e,h.value),mediaSource:o.mediaSource??`preview`,origin:o.origin,total:o.total}:null});function v(){s(`closeInfoSheet`)}function y(e){return c.value?.changeActiveMedia(e)??!1}function b(){c.value?.loadIfNearBottom()}function x(e){return c.value?.moveActivePost(e)??!1}function S(e,t){return c.value?.navigateToItem(e,t)??!1}function C(e){return c.value?.transitionActiveMedia(e)??Promise.resolve(!1)}function w(e){return c.value?.transitionActivePost(e)??Promise.resolve(!1)}function T(e,t){s(`error`,e,t)}function E(e,t){s(`mediaChange`,e,t)}function D(e,t){s(`ready`,e,t)}return(0,e.watch)(()=>({overlay:o.infoSheetOverlay,visible:g.value}),async(t,n)=>{if(t.visible&&!n?.visible){u=document.activeElement instanceof HTMLElement?document.activeElement:null,t.overlay&&(await(0,e.nextTick)(),l.value?.focus({preventScroll:!0}));return}if(!t.visible&&n?.visible&&u?.isConnected){let t=u;u=null,await(0,e.nextTick)(),t.focus({preventScroll:!0})}}),(0,e.onBeforeUnmount)(()=>{u=null}),i({changeActiveMedia:y,loadIfNearBottom:b,moveActivePost:x,navigateToItem:S,transitionActiveMedia:C,transitionActivePost:w}),(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`section`,{class:(0,e.normalizeClass)([`reel-layout`,`reel-layout--${n.infoSheetOverlay?`overlay`:`layout`}`]),"data-info-sheet-open":g.value||void 0,"data-info-sheet-mode":n.infoSheetOverlay?`overlay`:`layout`},[(0,e.createElementVNode)(`div`,{class:`reel-layout-main`,"aria-hidden":n.infoSheetOverlay&&g.value||void 0,inert:n.infoSheetOverlay&&g.value||void 0},[(0,e.createVNode)(Ue,{ref_key:`reelFeed`,ref:c,"can-retry-end":n.canRetryEnd,"card-footer":n.cardFooter,"card-header":n.cardHeader,"feed-footer":n.feedFooter,"feed-footer-actions":n.feedFooterActions,"media-card":n.mediaCard,"has-next":n.hasNext,"infinite-scroll":n.infiniteScroll,"initial-post-id":n.initialPostId,"is-loading-more":n.isLoadingMore,items:n.items,"load-more-locked":n.loadMoreLocked,"media-indices":n.mediaIndices,"media-source":n.mediaSource,"next-page-error":n.nextPageError,"preview-states":n.previewStates,"reel-auto-advance":n.reelAutoAdvance,"reel-forward":n.reelForward,state:n.state,total:n.total,onActiveChange:r[0]||=e=>s(`activeChange`,e),onError:T,onLoadMore:r[1]||=e=>s(`loadMore`),onMediaChange:E,onReady:D,onRetryEnd:r[2]||=e=>s(`retryEnd`),onRetryForward:r[3]||=e=>s(`retryForward`)},null,8,[`can-retry-end`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`media-card`,`has-next`,`infinite-scroll`,`initial-post-id`,`is-loading-more`,`items`,`load-more-locked`,`media-indices`,`media-source`,`next-page-error`,`preview-states`,`reel-auto-advance`,`reel-forward`,`state`,`total`])],8,Ge),(0,e.createVNode)(e.Transition,{name:`vibe-info-sheet`},{default:(0,e.withCtx)(()=>[g.value&&n.infoSheet&&_.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Ke,[(0,e.createElementVNode)(`aside`,{ref_key:`sheetElement`,ref:l,class:`reel-info-sheet`,role:n.infoSheetOverlay?`dialog`:`complementary`,"aria-label":`Reel information`,"aria-modal":n.infoSheetOverlay?`true`:void 0,tabindex:n.infoSheetOverlay?-1:void 0,"data-active-post-id":p.value?.postId},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(n.infoSheet.component),(0,e.normalizeProps)((0,e.guardReactiveProps)(_.value)),null,16))],8,qe)])):(0,e.createCommentVNode)(``,!0)]),_:1})],10,We))}}),Ye=[];function Xe(e){return Ye.push(e),()=>{let t=Ye.indexOf(e);t>=0&&Ye.splice(t,1)}}function Ze(e){if(!e.isActive())return!1;let t=Ye.filter(e=>e.isActive()),n=e.element();return n!==null&&t.some(t=>{if(t===e)return!1;let r=t.element();return r!==null&&n.contains(r)})?!1:t.filter(e=>{let n=e.element();return n===null||!t.some(t=>{if(t===e)return!1;let r=t.element();return r!==null&&n.contains(r)})}).at(-1)===e}function Qe(t){let n={element:t.element,isActive:()=>t.state.layout===`reel`||t.state.reelOrigin===`masonry`},r=null;function i(e){let r=n.isActive();if(e.key===`Escape`&&r&&!Ze(n))return;if(e.key===`Escape`&&t.state.reelOrigin===`masonry`){e.preventDefault(),t.state.reelInfoSheetOverlay&&t.state.reelInfoSheet.enabled&&t.setReelInfoSheet(!1),t.closeMasonryReel();return}if(e.key===`Escape`&&r&&t.state.reelInfoSheet.enabled){e.preventDefault(),t.setReelInfoSheet(!1);return}if(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||t.isReelLeaving()||!r)return;let i=e.target;if(i instanceof HTMLElement&&(i.isContentEditable||[`INPUT`,`SELECT`,`TEXTAREA`].includes(i.tagName)))return;let a=e.key===`ArrowLeft`?-1:e.key===`ArrowRight`?1:0;a!==0&&t.reelRenderer()?.changeActiveMedia?.(a)&&e.preventDefault()}(0,e.onMounted)(()=>{r=Xe(n),window.addEventListener(`keydown`,i)}),(0,e.onBeforeUnmount)(()=>{window.removeEventListener(`keydown`,i),r?.(),r=null})}var $e=35,et=420,tt=(0,e.defineComponent)({__name:`VibeSurface`,props:{canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},mediaCard:{},reelInfoSheet:{},state:{}},emits:[`activeReelChange`,`closeReel`,`loadMore`,`openReel`,`reelInfoSheetChange`,`retryEnd`,`retryForward`],setup(r,{expose:o,emit:s}){let c=r,l=s,u=(0,e.shallowRef)(null),d=(0,e.shallowRef)(null),f=(0,e.shallowRef)(null),p=(0,e.shallowRef)(null),m=(0,e.shallowRef)({}),g=(0,e.shallowRef)(!1),_=(0,e.shallowRef)(new Set),v=(0,e.shallowRef)(new Map),y=(0,e.shallowRef)(new Set),b=(0,e.shallowRef)(new Map),x=(0,e.shallowRef)(new Map),S=(0,e.shallowRef)(new Map),C=(0,e.computed)(()=>a(c.state)),w=(0,e.computed)(()=>c.state.reelMediaSource===`original`?S.value:x.value),T=new Set(c.state.items.map(e=>e.postId)),E=null,D=null,O=!1;function k(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function A(){E!==null&&cancelAnimationFrame(E),E=requestAnimationFrame(()=>{E=requestAnimationFrame(()=>{E=null,_.value=new Set})})}function j(e,t,n){let r=i(e,t);x.value.get(r)!==n&&(x.value=new Map(x.value).set(r,n))}function M(e,t,n){let r=i(e,t);S.value.get(r)!==n&&(S.value=new Map(S.value).set(r,n))}function N(e,t){j(e,t,`error`)}function P(e,t){j(e,t,`ready`)}function F(e,t){M(e,t,`error`)}function I(e,t){M(e,t,`ready`)}function L(e,t){if(c.state.reelMediaSource===`original`){F(e,t);return}N(e,t)}function R(e,t){if(c.state.reelMediaSource===`original`){I(e,t);return}P(e,t)}function z(e,t){let r=c.state.items.find(t=>t.postId===e);if(!r)return;let i=n(r,t);(c.state.mediaIndices.get(e)??0)!==i&&(c.state.mediaIndices=new Map(c.state.mediaIndices).set(e,i))}async function B(){await(0,e.nextTick)(),(c.state.layout===`reel`||c.state.reelOrigin===`masonry`?d.value:u.value)?.loadIfNearBottom()}function ee(e){return c.state.isLoading||c.state.items.length===0||c.state.layout!==`reel`&&c.state.reelOrigin!==`masonry`?!1:d.value?.changeActiveMedia?.(e)??!1}function V(e){return c.state.isLoading||c.state.items.length===0||c.state.layout!==`reel`&&c.state.reelOrigin!==`masonry`?!1:d.value?.moveActivePost?.(e)??!1}function H(e){if(!(c.state.layout===`reel`||c.state.reelOrigin===`masonry`)||c.state.isLoading)return`reel-inactive`;let n=c.state.items.find(t=>t.postId===e.postId);if(!n)return`not-found`;let r=t(n).findIndex(t=>t.mediaId===e.mediaId);return r<0?`not-found`:d.value?.navigateToItem?.(e.postId,r)?`navigated`:`reel-inactive`}function te(){return c.state.layout!==`masonry`||c.state.reelOrigin===`masonry`?null:u.value?.getScrollElement?.()??null}function U(t,n){D=t,O=n===`keyboard`,m.value=ne(t),l(`openReel`,t),(0,e.nextTick)(()=>f.value?.focus())}function W(e){let t=p.value?.querySelectorAll(`.masonry-feed [data-post-id]`)??[];return Array.from(t).find(t=>t.dataset.postId===String(e))??null}function G(e){if(c.state.layout!==`masonry`||c.state.reelOrigin!==null||k())return 0;let t=[...new Set(e)],n=t.filter(W);if(n.length===0)return 0;let r=new Map(b.value);return n.forEach((e,t)=>{r.set(e,t*$e)}),_.value=new Set([..._.value].filter(e=>!n.includes(e))),y.value=new Set([...y.value,...t]),b.value=r,et+(n.length-1)*$e}function K(e,t){let n=W(e),r=n?.querySelector(`.media-card-activator`)??n;r&&(r.classList.toggle(`media-card-focus-silent`,!t),t||r.addEventListener(`blur`,()=>{r.classList.remove(`media-card-focus-silent`)},{once:!0}),r?.focus({preventScroll:!0}))}function ne(e){let t=p.value,n=W(e);if(t===null||n===null)return{};let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();return{"--vibe-reel-origin-top":`${Math.max(0,i.top-r.top)}px`,"--vibe-reel-origin-right":`${Math.max(0,r.right-i.right)}px`,"--vibe-reel-origin-bottom":`${Math.max(0,r.bottom-i.bottom)}px`,"--vibe-reel-origin-left":`${Math.max(0,i.left-r.left)}px`}}function re(){c.state.reelOrigin===`masonry`&&(D??=c.state.activeReelPostId,g.value=!0,l(`closeReel`))}function q(){let t=D,n=O;g.value=!1,D=null,O=!1,m.value={},(0,e.nextTick)(()=>{t!==null&&K(t,n)})}return Qe({closeMasonryReel:re,element:()=>p.value,isReelLeaving:()=>g.value,reelRenderer:()=>d.value,setReelInfoSheet:e=>l(`reelInfoSheetChange`,e),state:c.state}),(0,e.watch)(()=>c.state.items.map(e=>e.postId),e=>{let t=e.filter(e=>!T.has(e)),n=new Set(e);if(T=new Set(e),y.value=new Set([...y.value].filter(e=>n.has(e))),b.value=new Map([...b.value].filter(([e])=>n.has(e))),t.length===0||k())return;let r=new Map;e.forEach(e=>{let t=v.value.get(e);t!==void 0&&r.set(e,t)}),t.forEach((e,t)=>{r.set(e,t*$e)}),v.value=r,_.value=new Set([..._.value,...t]),A()},{flush:`sync`}),(0,e.onBeforeUnmount)(()=>{E!==null&&cancelAnimationFrame(E)}),o({changeActiveReelMedia:ee,getAutoScrollElement:te,loadIfNearBottom:B,moveActiveReelPost:V,navigateToReelItem:H,startItemRemoval:G,transitionActiveReelMedia:e=>d.value?.transitionActiveMedia?.(e)??Promise.resolve(!1),transitionActiveReelPost:e=>d.value?.transitionActivePost?.(e)??Promise.resolve(!1)}),(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{ref_key:`surfaceElement`,ref:p,class:`vibe-surface`},[r.state.layout===`reel`&&(r.state.items.length>0||r.state.reelForward.status!==`idle`)?((0,e.openBlock)(),(0,e.createBlock)(Je,{key:0,ref_key:`reelRenderer`,ref:d,"can-retry-end":r.canRetryEnd,"has-next":r.state.next!==null,"card-footer":r.cardFooter,"card-header":r.cardHeader,"feed-footer":r.feedFooter,"feed-footer-actions":r.feedFooterActions,"forward-index":r.state.reelForwardIndex,"forward-item":r.state.reelForwardItem,"media-card":r.mediaCard,"infinite-scroll":r.state.infiniteScroll,"is-loading-more":r.state.isLoadingMore,items:r.state.items,"load-more-locked":r.state.loadMoreLocked,"media-source":r.state.reelMediaSource,"media-indices":r.state.mediaIndices,"initial-post-id":r.state.activeReelPostId,"info-sheet":r.reelInfoSheet,"info-sheet-enabled":r.state.reelInfoSheet.enabled,"info-sheet-overlay":r.state.reelInfoSheetOverlay,"next-page-error":!!r.state.nextPageError,origin:`reel`,"preview-states":w.value,"reel-auto-advance":r.state.reelAutoAdvance,"reel-forward":r.state.reelForward,state:C.value,total:r.state.total,onActiveChange:n[0]||=e=>l(`activeReelChange`,e),onCloseInfoSheet:n[1]||=e=>l(`reelInfoSheetChange`,!1),onError:L,onLoadMore:n[2]||=e=>l(`loadMore`),onMediaChange:z,onReady:R,onRetryEnd:n[3]||=e=>l(`retryEnd`),onRetryForward:n[4]||=e=>l(`retryForward`)},null,8,[`can-retry-end`,`has-next`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`forward-index`,`forward-item`,`media-card`,`infinite-scroll`,`is-loading-more`,`items`,`load-more-locked`,`media-source`,`media-indices`,`initial-post-id`,`info-sheet`,`info-sheet-enabled`,`info-sheet-overlay`,`next-page-error`,`preview-states`,`reel-auto-advance`,`reel-forward`,`state`,`total`])):r.state.error||r.state.isLoading||r.state.items.length===0&&r.state.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(h,{key:1,actions:r.feedFooterActions,"can-retry-end":r.canRetryEnd,"feed-footer":r.feedFooter,state:C.value,onLoadMore:n[5]||=e=>l(`loadMore`),onRetryEnd:n[6]||=e=>l(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`state`])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createVNode)(Ne,{ref_key:`masonryRenderer`,ref:u,"can-retry-end":r.canRetryEnd,"entering-post-ids":_.value,"entry-delays":v.value,"leaving-post-ids":y.value,"removal-delays":b.value,"card-footer":r.cardFooter,"card-header":r.cardHeader,"feed-footer":r.feedFooter,"feed-footer-actions":r.feedFooterActions,"media-card":r.mediaCard,"has-next":r.state.next!==null,"infinite-scroll":r.state.infiniteScroll,"is-loading-more":r.state.isLoadingMore,items:r.state.items,"load-more-locked":r.state.loadMoreLocked,"media-indices":r.state.mediaIndices,"next-page-error":!!r.state.nextPageError,"preview-states":x.value,suspended:r.state.reelOrigin===`masonry`||g.value,state:C.value,total:r.state.total,onActivate:U,onError:N,onLoadMore:n[7]||=e=>l(`loadMore`),onMediaChange:z,onReady:P,onRetryEnd:n[8]||=e=>l(`retryEnd`)},null,8,[`can-retry-end`,`entering-post-ids`,`entry-delays`,`leaving-post-ids`,`removal-delays`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`media-card`,`has-next`,`infinite-scroll`,`is-loading-more`,`items`,`load-more-locked`,`media-indices`,`next-page-error`,`preview-states`,`suspended`,`state`,`total`]),(0,e.createVNode)(e.Transition,{name:`vibe-reel-viewer`,onAfterLeave:q},{default:(0,e.withCtx)(()=>[r.state.reelOrigin===`masonry`?((0,e.openBlock)(),(0,e.createElementBlock)(`section`,{key:0,ref_key:`reelOverlay`,ref:f,class:`vibe-reel-overlay`,role:`dialog`,"aria-label":`Media viewer`,"aria-modal":`true`,tabindex:`-1`,style:(0,e.normalizeStyle)(m.value)},[(0,e.createVNode)(Je,{ref_key:`reelRenderer`,ref:d,"can-retry-end":r.canRetryEnd,"card-footer":r.cardFooter,"card-header":r.cardHeader,"feed-footer":r.feedFooter,"feed-footer-actions":r.feedFooterActions,"forward-index":r.state.reelForwardIndex,"forward-item":r.state.reelForwardItem,"media-card":r.mediaCard,"has-next":r.state.next!==null,"infinite-scroll":r.state.infiniteScroll,"initial-post-id":r.state.activeReelPostId,"info-sheet":r.reelInfoSheet,"info-sheet-enabled":r.state.reelInfoSheet.enabled,"info-sheet-overlay":r.state.reelInfoSheetOverlay,"is-loading-more":r.state.isLoadingMore,items:r.state.items,"load-more-locked":r.state.loadMoreLocked,"media-indices":r.state.mediaIndices,"media-source":`original`,"next-page-error":!!r.state.nextPageError,origin:`masonry`,"preview-states":S.value,"reel-auto-advance":r.state.reelAutoAdvance,"reel-forward":r.state.reelForward,state:C.value,total:r.state.total,onActiveChange:n[9]||=e=>l(`activeReelChange`,e),onCloseInfoSheet:n[10]||=e=>l(`reelInfoSheetChange`,!1),onError:F,onLoadMore:n[11]||=e=>l(`loadMore`),onMediaChange:z,onReady:I,onRetryEnd:n[12]||=e=>l(`retryEnd`),onRetryForward:n[13]||=e=>l(`retryForward`)},null,8,[`can-retry-end`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`forward-index`,`forward-item`,`media-card`,`has-next`,`infinite-scroll`,`initial-post-id`,`info-sheet`,`info-sheet-enabled`,`info-sheet-overlay`,`is-loading-more`,`items`,`load-more-locked`,`media-indices`,`next-page-error`,`preview-states`,`reel-auto-advance`,`reel-forward`,`state`,`total`])],4)):(0,e.createCommentVNode)(``,!0)]),_:1})],64))],512))}});function nt(e){if(!e||typeof e!=`object`||!Array.isArray(e.items))throw TypeError(`Vibe loadPage must resolve to a page with an items array.`);if(e.next!==null&&typeof e.next!=`string`&&typeof e.next!=`number`)throw TypeError(`Vibe page next must be a string, number, or null.`);if(e.total!==void 0&&(!Number.isFinite(e.total)||e.total<0))throw TypeError(`Vibe page total must be a non-negative number when provided.`);return e}function X(e,t){let n=new Set(e.map(e=>e.postId));return[...e,...t.filter(e=>n.has(e.postId)?!1:(n.add(e.postId),!0))]}var rt=2e3,it=1e4,at=250,Z={delayRemainingMs:null,nextRequestAt:null};function ot(e,t){return e===void 0?t:Math.floor(e)}function st(e,t){for(let[n,r]of[[`delayStepMs`,e.delayStepMs],[`delayMaxMs`,e.delayMaxMs]])if(r!==void 0&&(!Number.isFinite(r)||r<0))throw TypeError(`Vibe ${t} ${n} must be a non-negative number.`)}function ct(e,t={}){let n=ot(t.delayStepMs,rt),r=ot(t.delayMaxMs,it);return Math.min(Math.max(0,e)*n,r)}function Q(e){if(e==null||!Number.isFinite(e))return{...Z};let t=Math.max(0,Math.floor(e-Date.now()));return t>0?{delayRemainingMs:t,nextRequestAt:e}:{...Z}}async function lt({delayMs:e,onChange:t,signal:n}){if(n.aborted)throw new DOMException(`Aborted`,`AbortError`);if(e<=0){t({...Z});return}let r=Date.now()+e;t({delayRemainingMs:e,nextRequestAt:r}),await new Promise((i,a)=>{let o=!1,s=setInterval(f,at),c=setTimeout(()=>u(),e);function l(){clearInterval(s),clearTimeout(c),n.removeEventListener(`abort`,d),t({...Z})}function u(e){o||(o=!0,l(),e?a(e):i())}function d(){u(new DOMException(`Aborted`,`AbortError`))}function f(){let e=Q(r);t(e),e.delayRemainingMs===null&&u()}n.addEventListener(`abort`,d,{once:!0})})}var ut=class{interval=null;constructor(e){this.onChange=e}clear(){this.interval!==null&&clearInterval(this.interval),this.interval=null,this.onChange({...Z})}sync(e){this.clear();let t=Q(e);this.onChange(t),t.delayRemainingMs!==null&&(this.interval=setInterval(()=>{let t=Q(e);this.onChange(t),t.delayRemainingMs===null&&this.clear()},at))}};function dt(e,t=!0){return e.maxAdditionalPages===`unlimited`?1/0:(e.maxAdditionalPages??10)+(t?1:0)}function ft(e){return`${typeof e}:${String(e)}`}function pt(e,t){if(!Number.isInteger(e)||e<=0)throw TypeError(`Vibe ${t} must be a positive integer.`)}function mt(e){if(!e)return;if(pt(e.pageSize,`autofill pageSize`),e.strategy===`frontend`){st(e,`frontend autofill`);let t=e.maxAdditionalPages;if(t!==void 0&&t!==`unlimited`&&(!Number.isInteger(t)||t<0))throw TypeError(`Vibe autofill maxAdditionalPages must be a non-negative integer or "unlimited".`);return}if(!e.feedKey.trim())throw TypeError(`Vibe backend autofill requires a feedKey.`);let t=e.initialSession;if(t){if(t.feedKey!==e.feedKey)throw TypeError(`Vibe backend autofill initialSession feedKey must match autofill feedKey.`);if(t.pageSize!==e.pageSize)throw TypeError(`Vibe backend autofill initialSession pageSize must match autofill pageSize.`)}}function ht(e,t,n=!0){if(!e)return{cycleId:null,delayRemainingMs:null,enabled:!1,error:null,feedKey:null,missing:0,nextRequestAt:null,pageSize:null,received:0,requests:0,sequence:0,sessionId:null,status:`idle`,strategy:null};let r=e.strategy===`backend`?t??(n?e.initialSession:void 0):void 0,i=r?.received??0,a=Q(r?.nextRequestAt);return{cycleId:r?.cycleId??null,...a,enabled:!0,error:r?.error??null,feedKey:e.strategy===`backend`?e.feedKey:null,missing:Math.max(0,e.pageSize-i),pageSize:e.pageSize,received:i,requests:r?.requests??0,sequence:r?.sequence??0,sessionId:r?.sessionId??null,status:r?r.status:`idle`,strategy:e.strategy}}function $(e){return[`cancelling`,`filling`,`restoring`,`waiting`].includes(e.status)}async function gt(e,t,n){let r=t.autofill;if(!$(r)||!r.cycleId)return;let i={cycleId:r.cycleId,feedKey:r.feedKey??``,sessionId:r.sessionId};n(),r.status=`cancelling`;try{e?.strategy===`backend`&&await e.onCancel(i),r.error=null,r.status=`cancelled`}catch(e){throw r.error=e,r.status=`error`,e}}function _t(e,t,n){return e?.strategy===`backend`&&t.feedKey===e.feedKey&&t.sessionId===n.sessionId}async function vt({existingItems:e,initialCursor:t,loadPage:n,maximumRequests:r,onCollection:i,onDelayChange:a,onProgress:o,options:s,receivedOffset:c=0,requestOffset:l=0,signal:u}){let d=[],f=[...e],p=new Set,m=r??dt(s),h=t,g=t,_=0,v;for(;_<m;){let e=ft(h);if(p.has(e))throw Error(`Vibe autofill received a repeated cursor.`);p.add(e),await lt({delayMs:ct(l+_,s),onChange:a,signal:u});let t=nt(await n({cursor:h,signal:u}));_+=1;let r=X(f,t.items).slice(f.length);f.push(...r),d.push(...r),g=t.next,t.total!==void 0&&(v=t.total);let m={missing:Math.max(0,s.pageSize-c-d.length),next:g,received:c+d.length,requests:l+_};o(m);let y={...m,items:[...d],lastCursor:h,total:v};if(i(y),m.missing===0)return{...y,status:`complete`};if(g===null)return{...y,status:`exhausted`};h=g}return{items:d,lastCursor:h,missing:Math.max(0,s.pageSize-c-d.length),next:g,received:c+d.length,requests:l+_,status:`exhausted`,total:v}}var yt=class{collection=null;cycle=0;delayCountdown;constructor(e){this.context=e,this.delayCountdown=new ut(t=>Object.assign(e.state.autofill,t)),this.syncCountdown()}beginCycle(){let{options:e,state:t}=this.context;if(!e)return``;this.clear();let n=`vibe-autofill-${Date.now().toString(36)}-${++this.cycle}`;return t.autofill={...ht(e,void 0,!1),cycleId:n,status:`filling`},n}async cancel(){let{cancelRequest:e,options:t,state:n}=this.context;await gt(t,n,e),this.commitCollection()}captureCollection(e,t){t&&(this.collection=e)}clear(){this.delayCountdown.clear(),this.collection=null}clearCountdown(){this.delayCountdown.clear()}clearCollection(){this.collection=null}syncCountdown(){let{autofill:e}=this.context.state;this.delayCountdown.sync(e.strategy===`backend`&&e.status===`waiting`?e.nextRequestAt:null)}commitCollection(){let{onLastCursor:e,options:t,state:n}=this.context;if(t?.strategy!==`frontend`)return;let r=this.collection;this.collection=null,r&&(n.items=X(n.items,r.items),e(r.lastCursor),n.next=r.next,r.total!==void 0&&(n.total=r.total),Object.assign(n.autofill,{missing:r.missing,received:r.received,requests:r.requests}))}},bt=100;function xt(e,t){if(!Number.isFinite(t)||t<=0)throw TypeError(`Vibe ${e} must be a positive number.`)}function St(e,t,n){return Math.min(n,Math.max(t,e))}function Ct(e){if(!e)return;let t=e.minSpeedPxPerSecond??20,n=e.maxSpeedPxPerSecond??240;if(xt(`autoScroll.minSpeedPxPerSecond`,t),xt(`autoScroll.maxSpeedPxPerSecond`,n),t>n)throw TypeError(`Vibe autoScroll.minSpeedPxPerSecond cannot exceed maxSpeedPxPerSecond.`);e.speedPxPerSecond!==void 0&&xt(`autoScroll.speedPxPerSecond`,e.speedPxPerSecond)}function wt(e){let t=e?.minSpeedPxPerSecond??20,n=e?.maxSpeedPxPerSecond??240;return{enabled:e?.enabled??!1,maxSpeedPxPerSecond:n,minSpeedPxPerSecond:t,paused:!1,speedPxPerSecond:St(e?.speedPxPerSecond??80,t,n)}}var Tt=class{frame=null;lastTimestamp=null;mounted=!1;constructor(e){this.options=e}mount(){this.mounted=!0,this.schedule()}destroy(){this.mounted=!1,this.cancelFrame()}setEnabled(e,t){t!==void 0&&this.setSpeed(t),this.options.state.enabled=e,this.options.state.paused=!1,this.lastTimestamp=null,e?this.schedule():this.cancelFrame()}setPaused(e){this.options.state.enabled&&(this.options.state.paused=e,this.lastTimestamp=null,e?this.cancelFrame():this.schedule())}setSpeed(e){xt(`auto-scroll speed`,e);let t=this.options.state;t.speedPxPerSecond=St(e,t.minSpeedPxPerSecond,t.maxSpeedPxPerSecond)}tick=e=>{this.frame=null;let t=this.options.state;if(!this.mounted||!t.enabled)return;let n=t.paused?null:this.options.getScrollElement();if(!n){this.lastTimestamp=null,this.schedule();return}if(this.lastTimestamp!==null){let r=Math.min(bt,Math.max(0,e-this.lastTimestamp)),i=Math.max(0,n.scrollHeight-n.clientHeight);n.scrollTop=Math.min(i,n.scrollTop+t.speedPxPerSecond*r/1e3)}this.lastTimestamp=e,this.schedule()};schedule(){!this.mounted||!this.options.state.enabled||this.frame!==null||typeof requestAnimationFrame==`function`&&(this.frame=requestAnimationFrame(this.tick))}cancelFrame(){this.frame!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(this.frame),this.frame=null,this.lastTimestamp=null}};async function Et(e,t,n,r){let i=await e.onUnderfilled(n);if(!r())return;if(!i.sessionId.trim())throw TypeError(`Vibe backend autofill requires a sessionId.`);let a=Math.max(n.received,i.received??n.received);Object.assign(t.autofill,{...Q(i.nextRequestAt),missing:Math.max(0,e.pageSize-a),received:a,sequence:i.sequence??0,sessionId:i.sessionId,status:`waiting`})}function Dt(e,t){[`complete`,`exhausted`].includes(t.status)&&t.items&&(e.items=X(e.items,t.items)),t.next!==void 0&&(e.next=t.next),t.total!==void 0&&(e.total=t.total)}function Ot(e,t,n){let r=t.autofill;return!_t(e,n,r)||n.sequence<=r.sequence||[`cancelled`,`cancelling`].includes(r.status)||[`complete`,`exhausted`].includes(n.status)&&n.next===void 0?!1:(Dt(t,n),Object.assign(r,Q(n.status===`waiting`?n.nextRequestAt:null)),r.error=n.error??null,r.missing=Math.max(0,(r.pageSize??0)-n.received),r.received=n.received,n.requests!==void 0&&(r.requests=n.requests),r.sequence=n.sequence,r.status=n.status,!0)}function kt(e,t,n){return e?.strategy!==`backend`||n.feedKey!==e.feedKey||n.pageSize!==e.pageSize?!1:(t.autofill=ht(e,n),Dt(t,n),!0)}async function At({cycleId:e,isCurrent:t,onCollection:n,onLastCursor:r,options:i,signal:a,state:o}){let s=i.autofill;if(!s)return;let c=o.items.length;if(Object.assign(o.autofill,{missing:Math.max(0,s.pageSize-c),received:c,requests:1}),c>=s.pageSize){o.autofill.status=`complete`;return}if(s.strategy===`backend`){await Et(s,o,{cycleId:e,feedKey:s.feedKey,items:[...o.items],missing:s.pageSize-c,next:o.next,pageSize:s.pageSize,received:c,signal:a,total:o.total},t);return}if(!i.loadPage||o.next===null){o.autofill.status=`exhausted`;return}let l=await vt({existingItems:o.items,initialCursor:o.next,loadPage:i.loadPage,maximumRequests:dt(s,!1),onCollection:n,onDelayChange:e=>{t()&&Object.assign(o.autofill,e)},onProgress:e=>{t()&&Object.assign(o.autofill,e,{status:`filling`})},options:s,receivedOffset:c,requestOffset:1,signal:a});t()&&(o.items=X(o.items,l.items),o.next=l.next,l.total!==void 0&&(o.total=l.total),r(l.lastCursor),Object.assign(o.autofill,{missing:l.missing,received:l.received,requests:l.requests,status:l.status}))}function jt(e){return`pages`in e?{pages:e.pages}:{until:`end`}}function Mt(e){return`${typeof e}:${String(e)}`}function Nt(e){if(!e||typeof e!=`object`)throw TypeError(`Vibe fill target must be an object.`);if(`pages`in e){if(!Number.isInteger(e.pages)||e.pages<=0)throw TypeError(`Vibe fill pages must be a positive integer.`);return{pages:e.pages}}if(`until`in e&&e.until===`end`)return{until:`end`};throw TypeError(`Vibe fill target must be { pages } or { until: 'end' }.`)}function Pt(e){if(!e)return;if(e.strategy===`frontend`){st(e,`frontend fill`);return}if(!e.feedKey.trim())throw TypeError(`Vibe backend fill requires a feedKey.`);let t=e.initialSession;if(t){if(t.feedKey!==e.feedKey)throw TypeError(`Vibe backend fill initialSession feedKey must match fill feedKey.`);Nt(t.target)}}function Ft(e,t,n=!0){let r=e?.strategy===`backend`&&n?e.initialSession:void 0,i=t??r,a=Q(i?.nextRequestAt);return{completedPages:i?.completedPages??0,cycleId:i?.cycleId??null,...a,enabled:!!e,error:i?.error??null,feedKey:e?.strategy===`backend`?e.feedKey:null,received:i?.received??0,sequence:i?.sequence??0,sessionId:i?.sessionId??null,status:i?.status??`idle`,strategy:e?.strategy??null,target:i?jt(i.target):null}}function It(e){return[`cancelling`,`filling`,`restoring`,`waiting`].includes(e.status)}async function Lt({existingItems:e,initialCursor:t,loadPage:n,onDelayChange:r,onProgress:i,options:a,signal:o,target:s}){let c=[],l=[...e],u=new Set,d=0,f=t,p=t,m=0,h;for(;p!==null;){let e=Mt(f);if(u.has(e))throw Error(`Vibe fill received a repeated cursor.`);u.add(e),await lt({delayMs:ct(d,a),onChange:r,signal:o});let t=nt(await n({cursor:f,signal:o}));d+=1;let g=X(l,t.items).slice(l.length);if(l.push(...g),c.push(...g),m=c.length,p=t.next,t.total!==void 0&&(h=t.total),i({completedPages:d,next:p,received:m}),`pages`in s&&d>=s.pages)return{completedPages:d,items:c,lastCursor:f,next:p,received:m,status:`complete`,total:h};if(p===null)return{completedPages:d,items:c,lastCursor:f,next:p,received:m,status:`pages`in s?`exhausted`:`complete`,total:h};f=p}return{completedPages:d,items:c,lastCursor:f,next:null,received:m,status:`pages`in s?`exhausted`:`complete`,total:h}}async function Rt(e,t,n,r){let i=await e.onStart(n);if(r()){if(!i.sessionId.trim())throw TypeError(`Vibe backend fill requires a sessionId.`);Object.assign(t.fill,{...Q(i.nextRequestAt),completedPages:i.completedPages??0,received:i.received??0,sequence:i.sequence??0,sessionId:i.sessionId,status:`waiting`})}}function zt(e,t,n){return e?.strategy===`backend`&&n.feedKey===e.feedKey&&n.sessionId===t.fill.sessionId}function Bt(e){return Number.isInteger(e.completedPages)&&e.completedPages>=0&&Number.isInteger(e.received)&&e.received>=0&&Number.isInteger(e.sequence)&&e.sequence>=0}function Vt(e,t){if(![`complete`,`exhausted`].includes(t.status))return!0;let n=e.fill.target;return!n||!Array.isArray(t.items)||t.next===void 0||t.lastCursor===void 0?!1:t.status===`exhausted`?`pages`in n&&t.completedPages<n.pages&&t.next===null:`pages`in n?t.completedPages===n.pages:t.next===null}function Ht(e,t,n){t.total!==void 0&&(e.total=t.total),[`complete`,`exhausted`].includes(t.status)&&(e.items=X(e.items,t.items??[]),e.next=t.next??null,n(t.lastCursor??null))}function Ut(e,t,n,r){return!zt(e,t,n)||!Bt(n)||n.sequence<=t.fill.sequence||[`cancelled`,`cancelling`].includes(t.fill.status)||!Vt(t,n)?!1:(Ht(t,n,r),Object.assign(t.fill,{...Q(n.status===`waiting`?n.nextRequestAt:null),completedPages:n.completedPages,error:n.error??null,received:n.received,sequence:n.sequence,status:n.status}),!0)}function Wt(e,t,n,r){if(e?.strategy!==`backend`||n.feedKey!==e.feedKey)return!1;let i=t.fill;return t.fill=Ft(e,n),!Bt(n)||!Vt(t,n)?(t.fill=i,!1):(Ht(t,n,r),!0)}var Gt=class{abortController=null;cycle=0;delayCountdown;requestVersion=0;constructor(e){this.options=e,this.delayCountdown=new ut(e=>{Object.assign(this.options.state.fill,e)}),this.syncBackendCountdown()}isActive(){return It(this.options.state.fill)}applyUpdate(e){let t=Ut(this.options.fill,this.options.state,e,this.options.onLastCursor);return t&&this.syncBackendCountdown(),t}restoreSession(e){let t=Wt(this.options.fill,this.options.state,e,this.options.onLastCursor);return t&&this.syncBackendCountdown(),t}async start(e){let t=this.options.fill;if(!t)throw Error(`Vibe fill is not configured.`);if(this.isActive())throw Error(`Vibe fill is already active.`);let n=Nt(e),r=`vibe-fill-${Date.now().toString(36)}-${++this.cycle}`;if(this.options.state.fill={...Ft(t,void 0,!1),cycleId:r,status:`filling`,target:n},this.options.state.next===null){this.options.state.fill.status=`pages`in n?`exhausted`:`complete`;return}let i=++this.requestVersion,a=new AbortController;this.abortController=a;try{t.strategy===`frontend`?await this.startFrontend(t,n,a,i):(await Rt(t,this.options.state,{cycleId:r,feedKey:t.feedKey,items:[...this.options.state.items],next:this.options.state.next,signal:a.signal,target:n,total:this.options.state.total},()=>this.isCurrent(i)),this.syncBackendCountdown())}catch(e){if(a.signal.aborted||!this.isCurrent(i))return;throw this.options.state.fill.error=e,this.options.state.fill.status=`error`,e}finally{this.isCurrent(i)&&(this.abortController=null,this.options.state.isLoadingMore=!1)}}async cancel(){let{fill:e,state:t}=this.options;if(!It(t.fill)||!t.fill.cycleId)return;let n={cycleId:t.fill.cycleId,feedKey:t.fill.feedKey??``,sessionId:t.fill.sessionId};t.fill.status=`cancelling`,this.delayCountdown.clear(),this.abortController?.abort(),this.requestVersion+=1,this.abortController=null,t.isLoadingMore=!1;try{e?.strategy===`backend`&&await e.onCancel(n),t.fill.error=null,t.fill.status=`cancelled`}catch(e){throw t.fill.error=e,t.fill.status=`error`,e}}reset(){this.abortLocalRequest(),this.delayCountdown.clear(),this.options.state.fill=Ft(this.options.fill,void 0,!1)}destroy(){this.abortLocalRequest(),this.delayCountdown.clear()}abortLocalRequest(){this.requestVersion+=1,this.abortController?.abort(),this.abortController=null,this.options.state.isLoadingMore=!1}isCurrent(e){return e===this.requestVersion&&![`cancelled`,`cancelling`].includes(this.options.state.fill.status)}async startFrontend(e,t,n,r){let i=this.options.loadPage;if(!i)throw Error(`Vibe frontend fill requires loadPage.`);let a=this.options.state;a.isLoadingMore=!0;let o=await Lt({existingItems:a.items,initialCursor:a.next,loadPage:i,onDelayChange:e=>{this.isCurrent(r)&&Object.assign(a.fill,e)},onProgress:e=>{this.isCurrent(r)&&Object.assign(a.fill,e)},options:e,signal:n.signal,target:t});this.isCurrent(r)&&(a.items=X(a.items,o.items),a.next=o.next,o.total!==void 0&&(a.total=o.total),this.options.onLastCursor(o.lastCursor),Object.assign(a.fill,{completedPages:o.completedPages,received:o.received,status:o.status}))}syncBackendCountdown(){let e=this.options.state.fill;this.delayCountdown.sync(e.strategy===`backend`&&e.status===`waiting`?e.nextRequestAt:null)}};function Kt(e){return{cancelAutofill:()=>e.cancelAutofill(),loadMore:()=>e.loadNext(),retry:()=>e.reload(),retryEnd:()=>e.retryEnd()}}function qt(e){if(!Number.isFinite(e)||e<=0)throw TypeError(`Vibe reelAutoAdvance.intervalMs must be a positive number.`)}function Jt(e){e?.intervalMs!==void 0&&qt(e.intervalMs)}function Yt(e){return{enabled:e?.enabled??!1,includePostItems:e?.includePostItems??!1,intervalMs:e?.intervalMs??5e3}}function Xt(e,t){if(typeof t==`boolean`){e.enabled=t;return}Jt(t),t.enabled!==void 0&&(e.enabled=t.enabled),t.includePostItems!==void 0&&(e.includePostItems=t.includePostItems),t.intervalMs!==void 0&&(e.intervalMs=t.intervalMs)}function Zt(e){return{enabled:e?.enabled??!1}}function Qt(e,t,n){if(n&&!t)throw Error(`Vibe cannot enable reelInfoSheet without a configured component.`);e.enabled=n}function $t(e,t){let n=e.initialPage;return{activeReelPostId:null,autoScroll:wt(e.autoScroll),autofill:ht(e.autofill),error:null,fill:Ft(e.fill),infiniteScroll:e.infiniteScroll??!0,isLoading:!n,isLoadingMore:!1,items:n?X([],n.items):[],layout:t===`reel`?`reel`:`masonry`,loadMoreLocked:!1,mediaIndices:new Map,next:n?.next??null,nextPageError:null,reelAutoAdvance:Yt(e.reelAutoAdvance),reelForward:{error:null,status:`idle`},reelForwardIndex:null,reelForwardItem:null,reelInfoSheet:Zt(e.reelInfoSheet),reelInfoSheetOverlay:!1,reelMediaSource:`original`,reelOrigin:null,total:n?.total??null}}function en(e,t){if(t){if(!Number.isFinite(t.height)||t.height<=0)throw TypeError(`Vibe ${e} height must be a positive number.`);if(t.background!==void 0&&t.background!==`default`&&t.background!==`transparent`)throw TypeError(`Vibe ${e} background must be "default" or "transparent".`)}}function tn(e,t){if(t){if(t.background!==void 0&&t.background!==`default`&&t.background!==`transparent`)throw TypeError(`Vibe mediaCard ${e} background must be "default" or "transparent".`);for(let[n,r]of[[`paddingX`,t.paddingX],[`paddingY`,t.paddingY]])if(r!==void 0&&(!Number.isFinite(r)||r<0))throw TypeError(`Vibe mediaCard ${e} ${n} must be a non-negative number.`)}}function nn(e){if(Ct(e.autoScroll),en(`cardHeader`,e.cardHeader),en(`cardFooter`,e.cardFooter),tn(`header`,e.mediaCard?.header),tn(`footer`,e.mediaCard?.footer),mt(e.autofill),Pt(e.fill),Jt(e.reelAutoAdvance),e.removalHistoryLimit!==void 0&&(!Number.isInteger(e.removalHistoryLimit)||e.removalHistoryLimit<0))throw TypeError(`Vibe removalHistoryLimit must be a non-negative integer.`);if(!e.initialPage&&!e.loadPage)throw TypeError(`Vibe requires either initialPage or loadPage.`);if(e.initialPage?.next!==null&&!e.loadPage)throw TypeError(`Vibe requires loadPage when initialPage has a next cursor.`);if(e.fill?.strategy===`frontend`&&!e.loadPage)throw TypeError(`Vibe frontend fill requires loadPage.`);if(e.fill?.strategy===`backend`&&e.fill.initialSession&&!e.initialPage)throw TypeError(`Vibe backend fill restoration requires initialPage.`)}function rn(e){if(typeof e!=`string`)return e;if(typeof document>`u`)throw Error(`Vibe cannot resolve a selector without a document.`);let t=document.querySelector(e);if(!t)throw Error(`Vibe target not found: ${e}`);return t}function an(e,t,n,r,i){let a=new Set(t.map(({item:e})=>e.postId));if(e.activeReelPostId===null||!a.has(e.activeReelPostId))return;let o=e.items[Math.max(n,0)];if(o){r(o.postId);return}let s=t.find(({item:t})=>t.postId===e.activeReelPostId)?.item;s&&i(Math.max(n,0),s)}function on(e,t){let[n,...r]=t;if(!n)throw Error(`Vibe items must contain at least one media asset.`);return{...e,...n,items:r}}function sn(e){if(!Number.isInteger(e.mediaIndex)||e.mediaIndex<0)throw TypeError(`Vibe mediaIndex must be a non-negative integer.`)}var cn=class{generation=0;metadata=new WeakMap;state;constructor(e){this.options=e,this.state=e.state}remove(e){sn(e);let n=this.state.items.findIndex(({postId:t})=>t===e.postId),r=this.state.items[n];if(!r)return null;let i=[...t(r)],a=i[e.mediaIndex];if(!a)return null;let o=Object.freeze({media:a,mediaIndex:e.mediaIndex,postId:e.postId,postIndex:n});this.metadata.set(o,{generation:this.generation,originalItem:r,restored:!1});let s=this.state.mediaIndices.get(r.postId)??0,c=this.isReelOpen()&&this.state.activeReelPostId===r.postId,l=c&&s===e.mediaIndex;return i.splice(e.mediaIndex,1),i.length>0?(this.state.items[n]=on(r,i),this.updateMediaIndexAfterRemoval(r.postId,e.mediaIndex,l),o):(this.state.items.splice(n,1),this.state.mediaIndices.delete(r.postId),c&&this.advanceFromRemovedPost(o,r),o)}reset(){this.generation+=1}restore(e){let t=this.metadata.get(e);if(!t)throw TypeError(`Vibe media removal does not belong to this instance.`);if(t.generation!==this.generation||t.restored)return!1;t.restored=!0;let n=this.state.items.findIndex(({postId:t})=>t===e.postId);return n>=0?this.restoreIntoPost(n,e):this.state.items.splice(Math.min(e.postIndex,this.state.items.length),0,t.originalItem),this.options.reelForward.cancel(e)&&(this.state.mediaIndices.set(e.postId,e.mediaIndex),this.options.onActivate(e.postId)),!0}advanceFromRemovedPost(e,t){let n=this.state.items[e.postIndex];if(n){this.options.onActivate(n.postId);return}this.options.reelForward.start(e,e.postIndex,t)}isReelOpen(){return this.state.layout===`reel`||this.state.reelOrigin===`masonry`}restoreIntoPost(e,n){let r=this.state.items[e],i=[...t(r)],a=Math.min(n.mediaIndex,i.length);if(i.splice(a,0,n.media),this.state.items[e]=on(r,i),this.state.activeReelPostId!==n.postId)return;let o=this.state.mediaIndices.get(n.postId)??0;o>=a&&this.state.mediaIndices.set(n.postId,o+1)}updateMediaIndexAfterRemoval(e,n,r){let i=this.state.items.find(t=>t.postId===e);if(!i)return;let a=t(i).length,o=this.state.mediaIndices.get(e)??0,s=o;r?s=n<a?n:0:n<o&&(s=o-1),this.state.mediaIndices.set(e,Math.min(s,a-1))}};function ln(e,t){let n=new Set(t);return e.flatMap((e,t)=>n.has(e.postId)?[{index:t,item:e}]:[])}function un(e,t){let n=new Set(t.map(({item:e})=>e.postId));return e.filter(e=>!n.has(e.postId))}function dn(e,t){t.forEach(({index:e})=>{if(!Number.isInteger(e)||e<0)throw Error(`Vibe item restore indexes must be non-negative integers.`)});let n=[...e],r=new Set(e.map(e=>e.postId));return[...t].sort((e,t)=>e.index-t.index).forEach(({index:e,item:t})=>{r.has(t.postId)||(n.splice(Math.min(e,n.length),0,t),r.add(t.postId))}),n}var fn=20,pn=class{generation=0;historyLimit;metadata=new WeakMap;state;history=[];itemOrder;stopItemsWatcher;constructor(t){this.options=t,this.historyLimit=t.historyLimit??fn,this.state=t.state,this.itemOrder=this.state.items.map(({postId:e})=>e),this.stopItemsWatcher=(0,e.watch)(()=>this.state.items,e=>this.appendUnknownItems(e),{flush:`sync`})}destroy(){this.reset(),this.stopItemsWatcher()}async remove(e){let t=this.collectOrderedPlacements(e),n=this.createRemoval(t);if(t.length===0)return n;let r=t.map(({item:e})=>e.postId);if(await this.options.prepareRemoval(r),this.metadata.get(n)?.generation!==this.generation)return n;let i=this.options.startRemoval(r);if(i>0&&await new Promise(e=>setTimeout(e,i)),this.metadata.get(n)?.generation!==this.generation)return n;let a=this.state.items.findIndex(e=>e.postId===this.state.activeReelPostId),o=new Set(t.map(({item:e})=>e.postId)),s=a<0?0:this.state.items.slice(0,a).filter(({postId:e})=>o.has(e)).length,c=Math.max(a-s,0);return this.state.items=un(this.state.items,t),this.options.onItemsRemoved(n,t,c),this.record(n),n}reset(){this.generation+=1,this.history=[],this.itemOrder=[]}restoreItems(e){let t=e;if(this.metadata.has(t)){this.restoreRemoval(t);return}let n=dn(this.state.items,e);this.registerExternalPlacements(e),this.state.items=n}restoreRemoval(e){let t=this.metadata.get(e);if(!t)throw TypeError(`Vibe removal does not belong to this instance.`);if(t.generation!==this.generation||t.restored)return!1;t.restored=!0,this.removeFromHistory(e);let n=this.restoreOrderedPlacements(e);return n&&this.options.onRemovalRestored(e),n}undoLast(){for(;this.history.length>0;){let e=this.history.pop();if(this.restoreRemoval(e))return e}return null}appendUnknownItems(e){let t=new Set(this.itemOrder);e.forEach(({postId:e})=>{t.has(e)||(this.itemOrder.push(e),t.add(e))})}collectOrderedPlacements(e){let t=new Map(this.itemOrder.map((e,t)=>[e,t]));return ln(this.state.items,e).map(e=>({index:t.get(e.item.postId)??e.index,item:e.item}))}createRemoval(e){let t=Object.freeze(e.map(e=>Object.freeze({...e})));return this.metadata.set(t,{generation:this.generation,restored:e.length===0}),t}record(e){this.historyLimit!==0&&(this.history.push(e),this.history.length>this.historyLimit&&this.history.shift())}registerExternalPlacements(e){let t=new Set(this.itemOrder);[...e].sort((e,t)=>e.index-t.index).forEach(({index:e,item:n})=>{t.has(n.postId)||(this.itemOrder.splice(Math.min(e,this.itemOrder.length),0,n.postId),t.add(n.postId))})}removeFromHistory(e){let t=this.history.indexOf(e);t>=0&&this.history.splice(t,1)}restoreOrderedPlacements(e){let t=new Set(this.state.items.map(({postId:e})=>e)),n=e.map(({item:e})=>e).filter(({postId:e})=>!t.has(e));if(n.length===0)return!1;let r=new Map(this.itemOrder.map((e,t)=>[e,t]));return this.state.items=[...this.state.items,...n].sort((e,t)=>(r.get(e.postId)??2**53-1)-(r.get(t.postId)??2**53-1)),!0}},mn=class{forward=null;forwardPromise=null;forwardVersion=0;state;constructor(e){this.options=e,this.state=e.state}start(e,t,n){this.forward={item:n,postIndex:t,token:e,version:++this.forwardVersion},this.state.reelForward={error:null,status:`loading`},this.state.reelForwardIndex=t,this.state.reelForwardItem=n,this.startForwardRequest(!1)}cancel(e){if(this.forward?.token!==e||this.state.reelForward.status===`idle`)return null;let t=this.forward.item;return this.forwardVersion+=1,this.forward=null,this.clearState(),t}reset(){this.forwardVersion+=1,this.forward=null,this.forwardPromise=null,this.clearState()}retry(){return!this.forward||this.state.reelForward.status===`idle`?Promise.resolve():(this.state.nextPageError=null,this.state.reelForward={error:null,status:`loading`},this.startForwardRequest(this.state.next===null))}clearState(){this.state.reelForward={error:null,status:`idle`},this.state.reelForwardIndex=null,this.state.reelForwardItem=null}startForwardRequest(e){if(this.forwardPromise)return this.forwardPromise;let t=this.loadForward(e);return this.forwardPromise=t,t.finally(()=>{this.forwardPromise===t&&(this.forwardPromise=null,this.forward&&this.state.reelForward.status===`loading`&&this.startForwardRequest(!1))})}async loadForward(e){let t=this.forward;if(t)for(e&&await this.options.retryEnd();this.forward===t&&t.version===this.forwardVersion;){let e=this.state.items[t.postIndex];if(e){this.forward=null,this.clearState(),this.options.onActivate(e.postId);return}if(this.state.nextPageError){this.state.reelForward={error:this.state.nextPageError,status:`error`};return}if(this.state.next===null){this.state.reelForward={error:null,status:`end`};return}let n=this.state.next;if(await this.options.loadNext(),this.state.next===n&&!this.state.nextPageError&&!this.state.items[t.postIndex]){this.state.reelForward={error:Error(`Vibe could not advance while page loading is unavailable.`),status:`error`};return}}}},hn=class{generation=0;pending=Promise.resolve();constructor(e){this.options=e}prepareItems(e){return this.serialize(()=>this.preparePosts(e))}prepareMedia(e){return this.serialize(async()=>{let{state:n}=this.options;if(!this.isReelActive()||n.activeReelPostId!==e.postId)return;let r=n.items.find(({postId:t})=>t===e.postId);if(!r)return;let i=n.mediaIndices.get(e.postId)??0;if(e.mediaIndex===i){if(t(r).length>1){await this.options.transitionMedia(1);return}await this.preparePosts([e.postId])}})}reset(){this.generation+=1,this.pending=Promise.resolve()}async preparePosts(e){let{state:t}=this.options,n=t.activeReelPostId,r=new Set(e);if(!this.isReelActive()||n===null||!r.has(n))return;let i=this.generation,a=t.items.findIndex(({postId:e})=>e===n);if(a<0)return;let o=this.nextSurvivor(a,r);o&&i===this.generation&&t.activeReelPostId===n&&await this.options.transitionPost(o.postId)}isReelActive(){let{state:e}=this.options;return e.layout===`reel`||e.reelOrigin===`masonry`}nextSurvivor(e,t){if(!(e<0))return this.options.state.items.slice(e+1).find(({postId:e})=>!t.has(e))}serialize(e){let t=this.pending.then(e,e);return this.pending=t.catch(()=>void 0),t}};function gn(e){let t=new mn(e),n=new hn({state:e.state,transitionMedia:t=>e.surface()?.transitionActiveReelMedia(t)??Promise.resolve(!1),transitionPost:t=>e.surface()?.transitionActiveReelPost(t)??Promise.resolve(!1)});return{exactMediaRemoval:new cn({onActivate:e.onActivate,reelForward:t,state:e.state}),itemRemoval:new pn({historyLimit:e.historyLimit,onItemsRemoved:(n,r,i)=>{an(e.state,r,i,e.onActivate,(e,r)=>t.start(n,e,r))},onRemovalRestored:n=>{let r=t.cancel(n);r&&e.onActivate(r.postId)},prepareRemoval:e=>n.prepareItems(e),startRemoval:t=>e.surface()?.startItemRemoval(t)??0,state:e.state}),reelForward:t,reelRemoval:n}}var _n=1.5;function vn(e){let t=Math.min(e.screenWidth,e.screenHeight);if(t>0&&t<600)return!0;let n=Math.min(e.viewportWidth,e.viewportHeight),r=t>=n*_n;return!e.hasHover&&n>0&&n<600&&r}function yn(e){return vn(e)?`reel`:`masonry`}function bn(e){let t=e.ownerDocument.defaultView,n=e.ownerDocument.documentElement;return{hasHover:typeof t?.matchMedia==`function`&&t.matchMedia(`(hover: hover)`).matches,screenHeight:t?.screen.height??0,screenWidth:t?.screen.width??0,viewportHeight:n.clientHeight,viewportWidth:n.clientWidth}}function xn(e){return vn(bn(e))}function Sn(e){return yn(bn(e))}var Cn=class{layoutMode;resizeObserver=null;target=null;constructor(e,t,n){this.state=t,this.onFeedLayout=n,this.layoutMode=e}mount(e){this.target=e,this.handleResponsiveLayout();let t=e.ownerDocument.defaultView;t?.addEventListener(`resize`,this.handleResponsiveLayout);let n=t?.ResizeObserver??globalThis.ResizeObserver;n!==void 0&&(this.resizeObserver=new n(this.handleResponsiveLayout),this.resizeObserver.observe(e))}destroy(){this.target?.ownerDocument.defaultView?.removeEventListener(`resize`,this.handleResponsiveLayout),this.resizeObserver?.disconnect(),this.resizeObserver=null,this.target=null}setLayout(e){e!==this.layoutMode&&(this.layoutMode=e,e===`responsive`?this.handleResponsiveLayout():this.applyLayout(e))}applyLayout(e){e!==this.state.layout&&(e===`masonry`&&(this.state.activeReelPostId=null,this.onFeedLayout()),this.state.reelOrigin=null,this.state.layout=e)}handleResponsiveLayout=()=>{if(!this.target)return;let e=Sn(this.target);this.state.reelInfoSheetOverlay=xn(this.target),this.state.reelMediaSource=e===`reel`?`preview`:`original`,this.layoutMode===`responsive`&&this.applyLayout(e)}},wn=class{routedReelPostId=null;reelRouteIsActive=!1;constructor(e,t){this.options=e,this.state=t}syncFeed(){if(!this.options||!this.reelRouteIsActive)return;this.reelRouteIsActive=!1,this.routedReelPostId=null;let e=typeof this.options.feed==`function`?this.options.feed():this.options.feed;this.options.router.replace(e)}syncReel(e){if(!this.options)return;let t=this.state.items.findIndex(t=>t.postId===e),n=this.state.items[t];if(!n||this.reelRouteIsActive&&this.routedReelPostId===e)return;let r=this.options.reel({index:t,item:n,loadedCount:this.state.items.length,origin:this.state.reelOrigin??`reel`,total:this.state.total});if(r===null)return;let i=this.reelRouteIsActive?`replace`:`push`;this.reelRouteIsActive=!0,this.routedReelPostId=e,this.options.router[i](r)}},Tn=class{app=null;autoScroll;autofillController;abortController=null;pendingRequest=null;requestVersion=0;responsiveLayout;routing;fillController;exactMediaRemoval;itemRemoval;reelForward;reelRemoval;surface=null;stopStateWatcher=null;lastLoadedCursor=null;state;constructor(t){this.options=t,nn(t);let n=t.layout??`masonry`;this.state=(0,e.reactive)($t(t,n)),this.autoScroll=new Tt({getScrollElement:()=>this.surface?.getAutoScrollElement()??null,state:this.state.autoScroll}),this.autofillController=new yt({cancelRequest:()=>this.cancelRequest(),onLastCursor:e=>{this.lastLoadedCursor=e},options:t.autofill,state:this.state}),this.fillController=new Gt({fill:t.fill,loadPage:t.loadPage,onLastCursor:e=>{this.lastLoadedCursor=e},state:this.state}),this.routing=new wn(t.routing,this.state);let r=gn({historyLimit:t.removalHistoryLimit,loadNext:()=>this.loadNext(),onActivate:e=>this.setActiveReelPost(e),retryEnd:()=>this.retryEnd(),state:this.state,surface:()=>this.surface});this.exactMediaRemoval=r.exactMediaRemoval,this.itemRemoval=r.itemRemoval,this.reelForward=r.reelForward,this.reelRemoval=r.reelRemoval,this.responsiveLayout=new Cn(n,this.state,()=>{this.routing.syncFeed()}),this.startStateNotifications()}async mount(){if(this.app)throw Error(`Vibe is already mounted.`);this.startStateNotifications();let t=rn(this.options.target);this.responsiveLayout.mount(t),this.app=(0,e.createApp)(tt,{canRetryEnd:!!this.options.loadPage,cardFooter:this.options.cardFooter,cardHeader:this.options.cardHeader,feedFooter:this.options.feedFooter,feedFooterActions:Kt(this),mediaCard:this.options.mediaCard,reelInfoSheet:this.options.reelInfoSheet,state:this.state,onActiveReelChange:e=>{this.state.reelForward.status===`idle`&&this.setActiveReelPost(e)},onCloseReel:()=>this.closeMasonryReel(),onLoadMore:()=>{this.loadNext()},onOpenReel:e=>this.openMasonryReel(e),onReelInfoSheetChange:e=>this.setReelInfoSheet(e),onRetryEnd:()=>{this.retryEnd()},onRetryForward:()=>{this.retryReelForward()}}),this.surface=this.app.mount(t),this.autoScroll.mount(),this.options.initialPage?this.options.autofill&&this.state.autofill.status===`idle`&&!this.fillController.isActive()&&await this.startInitialAutofill():await this.reload()}destroy(){this.autoScroll.destroy(),this.fillController.destroy(),this.cancelRequest(),this.reelForward.reset(),this.reelRemoval.reset(),this.exactMediaRemoval.reset(),this.itemRemoval.destroy(),this.responsiveLayout.destroy(),this.stopStateWatcher?.(),this.stopStateWatcher=null,this.app?.unmount(),this.app=null,this.surface=null}getState(){return a(this.state)}removeMedia(e){return this.exactMediaRemoval.remove(e)}removeMediaAnimated(e){return this.reelRemoval.prepareMedia(e).then(()=>this.exactMediaRemoval.remove(e))}removeItems(e){return this.itemRemoval.remove(e)}restoreItems(e){this.itemRemoval.restoreItems(e)}restoreMediaRemoval(e){return this.exactMediaRemoval.restore(e)}restoreRemoval(e){return this.itemRemoval.restoreRemoval(e)}retryReelForward(){return this.reelForward.retry()}undoLastRemoval(){return this.itemRemoval.undoLast()}nextReelMediaItem(){return this.surface?.changeActiveReelMedia(1)??!1}previousReelMediaItem(){return this.surface?.changeActiveReelMedia(-1)??!1}nextReelPost(){return this.surface?.moveActiveReelPost(1)??!1}previousReelPost(){return this.surface?.moveActiveReelPost(-1)??!1}navigateToReelItem(e){return this.surface?.navigateToReelItem(e)??`reel-inactive`}pauseAutoScroll(){this.autoScroll.setPaused(!0)}resumeAutoScroll(){this.autoScroll.setPaused(!1)}setAutoScroll(e,t){this.autoScroll.setEnabled(e,t)}setAutoScrollSpeed(e){this.autoScroll.setSpeed(e)}applyAutofillUpdate(e){let t=Ot(this.options.autofill,this.state,e);return t&&this.autofillController.syncCountdown(),t}cancelAutofill(){return this.autofillController.cancel()}applyFillUpdate(e){return this.fillController.applyUpdate(e)}cancelFill(){return this.fillController.cancel()}async fill(e){if(this.pendingRequest||$(this.state.autofill))throw Error(`Vibe cannot fill while another page operation is active.`);await this.fillController.start(e)}restoreAutofillSession(e){let t=kt(this.options.autofill,this.state,e);return t&&this.autofillController.syncCountdown(),t}restoreFillSession(e){return this.fillController.restoreSession(e)}async loadNext(){if(this.pendingRequest)return this.pendingRequest;if(!this.state.loadMoreLocked&&!($(this.state.autofill)||this.fillController.isActive())&&!(this.state.next===null||!this.options.loadPage))return this.state.isLoadingMore=!0,this.state.nextPageError=null,this.startRequest(this.state.next,!0)}async refresh(){return this.replaceFeed(this.state.next??this.lastLoadedCursor,`refresh`)}async reload(){return this.replaceFeed(null,`reload`)}async replaceFeed(e,t){if(!this.options.loadPage)throw Error(`Vibe cannot ${t} without loadPage.`);return $(this.state.autofill)&&await this.cancelAutofill(),this.fillController.isActive()&&await this.cancelFill(),this.cancelRequest(),this.state.autofill=ht(this.options.autofill,void 0,!1),this.fillController.reset(),this.reelForward.reset(),this.reelRemoval.reset(),this.exactMediaRemoval.reset(),this.itemRemoval.reset(),this.state.error=null,this.state.isLoading=!0,this.state.items=[],this.state.next=null,this.state.nextPageError=null,this.state.total=null,this.startRequest(e,!1)}async retryEnd(){if(this.pendingRequest)return this.pendingRequest;if(!this.state.loadMoreLocked&&!($(this.state.autofill)||this.fillController.isActive())&&!(this.state.next!==null||!this.options.loadPage))return this.state.isLoadingMore=!0,this.state.nextPageError=null,this.startRequest(this.lastLoadedCursor,!0)}setInfiniteScroll(t){this.state.infiniteScroll=t,t&&(0,e.nextTick)(()=>this.surface?.loadIfNearBottom())}setLoadMoreLocked(t){this.state.loadMoreLocked!==t&&(this.state.loadMoreLocked=t,!t&&this.state.infiniteScroll&&(0,e.nextTick)(()=>this.surface?.loadIfNearBottom()))}setReelAutoAdvance(e){Xt(this.state.reelAutoAdvance,e)}setReelInfoSheet(e){Qt(this.state.reelInfoSheet,this.options.reelInfoSheet,e)}setLayout(e){this.responsiveLayout.setLayout(e)}closeMasonryReel(){this.state.reelOrigin===`masonry`&&(this.state.activeReelPostId=null,this.state.reelOrigin=null,this.routing.syncFeed())}openMasonryReel(e){this.state.layout===`masonry`&&this.state.items.some(t=>t.postId===e)&&(this.state.activeReelPostId=e,this.state.reelOrigin=`masonry`,this.routing.syncReel(e))}setActiveReelPost(e){this.state.layout!==`reel`&&this.state.reelOrigin!==`masonry`||(this.state.activeReelPostId=e,this.routing.syncReel(e))}cancelRequest(){this.autofillController.clearCountdown(),this.requestVersion+=1,this.abortController?.abort(),this.abortController=null,this.pendingRequest=null,this.state.isLoading=!1,this.state.isLoadingMore=!1}async fetchPage(e,t){let n=this.options.loadPage;if(!n)return;let r=++this.requestVersion,i=new AbortController,a=this.options.autofill,o=a?this.autofillController.beginCycle():null,s=!1;this.abortController=i;try{if(a?.strategy===`frontend`){let o=await vt({existingItems:t?this.state.items:[],initialCursor:e,loadPage:n,onCollection:e=>this.autofillController.captureCollection(e,r===this.requestVersion),onDelayChange:e=>{r===this.requestVersion&&Object.assign(this.state.autofill,e)},onProgress:e=>{r===this.requestVersion&&Object.assign(this.state.autofill,e,{status:`filling`})},options:a,signal:i.signal});if(r!==this.requestVersion)return;this.state.items=t?X(this.state.items,o.items):[...o.items],this.lastLoadedCursor=o.lastCursor,this.state.next=o.next,o.total!==void 0&&(this.state.total=o.total),Object.assign(this.state.autofill,{missing:o.missing,received:o.received,requests:o.requests,status:o.status}),this.autofillController.clearCollection();return}let c=nt(await n({cursor:e,signal:i.signal}));if(r!==this.requestVersion)return;let l=t?this.state.items:[],u=X(l,c.items),d=u.length-l.length;if(this.state.items=u,this.lastLoadedCursor=e,this.state.next=c.next,c.total!==void 0&&(this.state.total=c.total),s=!0,a?.strategy===`backend`&&o){if(Object.assign(this.state.autofill,{missing:Math.max(0,a.pageSize-d),received:d,requests:1}),d>=a.pageSize){this.state.autofill.status=`complete`;return}await Et(a,this.state,{cycleId:o,feedKey:a.feedKey,items:u.slice(l.length),missing:a.pageSize-d,next:c.next,pageSize:a.pageSize,received:d,signal:i.signal,total:this.state.total},()=>r===this.requestVersion),this.autofillController.syncCountdown()}}catch(e){if(i.signal.aborted||r!==this.requestVersion)return;a&&(this.state.autofill.error=e,this.state.autofill.status=`error`),s||(t?this.state.nextPageError=e:this.state.error=e)}finally{r===this.requestVersion&&(this.autofillController.clearCollection(),this.abortController=null,this.state.isLoading=!1,this.state.isLoadingMore=!1)}}startRequest(e,t){let n=this.fetchPage(e,t);return this.pendingRequest=n,n.finally(()=>{this.pendingRequest===n&&(this.pendingRequest=null)})}startInitialAutofill(){let e=++this.requestVersion,t=new AbortController,n=this.autofillController.beginCycle();this.abortController=t,this.state.isLoadingMore=!0;let r=At({cycleId:n,isCurrent:()=>e===this.requestVersion,onCollection:t=>this.autofillController.captureCollection(t,e===this.requestVersion),onLastCursor:e=>{this.lastLoadedCursor=e},options:this.options,signal:t.signal,state:this.state}).catch(n=>{t.signal.aborted||e!==this.requestVersion||(this.state.autofill.error=n,this.state.autofill.status=`error`,this.state.nextPageError=n)}).finally(()=>{e===this.requestVersion&&(this.autofillController.clearCollection(),this.autofillController.syncCountdown(),this.abortController=null,this.state.isLoadingMore=!1,this.pendingRequest===r&&(this.pendingRequest=null))});return this.pendingRequest=r,r}startStateNotifications(){let t=this.options.onStateChange;!t||this.stopStateWatcher||(t(this.getState()),this.stopStateWatcher=(0,e.watch)(this.state,()=>t(this.getState()),{deep:!0,flush:`post`}))}};function En(e){return new Tn(e)}exports.createVibe=En;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`vue`);function t(e){return[e,...e.items]}function n(e,t){return Math.min(e.items.length,Math.max(0,t))}function r(e,r){return t(e)[n(e,r)]??e}function i(e,t){return`${String(e)}:${t}`}function a(e,t,i,a,o){let s=e.items.findIndex(e=>e.postId===t),c=e.items[s];if(!c)return null;let l=n(c,i),u=r(c,l);return{item:c,layout:a,media:u,mediaId:u.mediaId??null,mediaIndex:l,origin:o,postId:c.postId,postIndex:s}}function o(t,n){(0,e.watch)(()=>{let e=t.layout===`reel`||t.reelOrigin===`masonry`?t.activeReelPostId:null;return{mediaIndex:e===null?0:t.mediaIndices.get(e)??0,origin:t.reelOrigin??`reel`,postId:e}},(e,r)=>{if(e.postId===null||e.postId===r?.postId&&e.mediaIndex===r.mediaIndex&&e.origin===r.origin)return;let i=a(t,e.postId,e.mediaIndex,`reel`,e.origin);i&&n(i)},{flush:`sync`})}function s(e){return{activeReelPostId:e.activeReelPostId,autoScroll:{...e.autoScroll},autofill:{...e.autofill},error:e.error,fill:{...e.fill,target:e.fill.target?{...e.fill.target}:null},infiniteScroll:e.infiniteScroll,isLoading:e.isLoading,isLoadingMore:e.isLoadingMore,items:[...e.items],layout:e.layout,lifecycle:e.isLoading||e.isLoadingMore?`loading`:e.error||e.nextPageError?`error`:`loaded`,loadMoreLocked:e.loadMoreLocked,next:e.next,nextPageError:e.nextPageError,reelAutoAdvance:{...e.reelAutoAdvance},reelForward:{...e.reelForward},reelInfoSheet:{...e.reelInfoSheet},reelOrigin:e.reelOrigin,total:e.total}}var c={key:0,class:`gallery-footer`},l={key:0,class:`load-more-status`,role:`status`},u=[`disabled`],d={key:2,class:`end-feed`},f=[`disabled`],p=(0,e.defineComponent)({__name:`GalleryFooter`,props:{canRetryEnd:{type:Boolean},hasError:{type:Boolean},hasNext:{type:Boolean},isLoading:{type:Boolean},loadMoreLocked:{type:Boolean},showLoadMore:{type:Boolean}},emits:[`loadMore`,`retryEnd`],setup(t,{emit:n}){let r=t,i=n;function a(){r.loadMoreLocked||(r.hasNext?i(`loadMore`):i(`retryEnd`))}return(n,r)=>t.isLoading||t.hasError||t.hasNext&&t.showLoadMore||!t.hasNext&&t.canRetryEnd?((0,e.openBlock)(),(0,e.createElementBlock)(`footer`,c,[t.isLoading?((0,e.openBlock)(),(0,e.createElementBlock)(`p`,l,` Loading more… `)):t.hasError||t.hasNext&&t.showLoadMore?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,"data-test":`load-more`,class:`load-more-button`,type:`button`,disabled:t.loadMoreLocked,onClick:a},(0,e.toDisplayString)(t.hasError?`Try again`:t.loadMoreLocked?`Loading paused`:`Load more`),9,u)):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,d,[r[1]||=(0,e.createElementVNode)(`p`,{class:`end-feed-message`,role:`status`},` You've reached the end. `,-1),(0,e.createElementVNode)(`button`,{"data-test":`retry-end`,class:`load-more-button`,type:`button`,disabled:t.loadMoreLocked,onClick:r[0]||=e=>n.$emit(`retryEnd`)},` Check for more `,8,f)]))])):(0,e.createCommentVNode)(``,!0)}}),m=(0,e.defineComponent)({__name:`FeedFooter`,props:{actions:{},canRetryEnd:{type:Boolean},feedFooter:{},hasError:{type:Boolean},hasNext:{type:Boolean},isLoading:{type:Boolean},loadMoreLocked:{type:Boolean},showLoadMore:{type:Boolean},state:{}},emits:[`loadMore`,`retryEnd`],setup(t,{emit:n}){let r=t,i=n;function a(){r.actions?.cancelAutofill()}function o(){r.actions?.retry()}return(n,r)=>t.feedFooter&&t.actions&&t.state?((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(t.feedFooter.component),{key:0,actions:t.actions,"can-retry-end":t.canRetryEnd,"show-load-more":t.showLoadMore,state:t.state,onAutofillCancel:a,onLoadMore:r[0]||=e=>i(`loadMore`),onRetry:o,onRetryEnd:r[1]||=e=>i(`retryEnd`)},null,40,[`actions`,`can-retry-end`,`show-load-more`,`state`])):((0,e.openBlock)(),(0,e.createBlock)(p,{key:1,"can-retry-end":t.canRetryEnd,"has-error":t.hasError,"has-next":t.hasNext,"is-loading":t.isLoading,"load-more-locked":t.loadMoreLocked,"show-load-more":t.showLoadMore,onLoadMore:r[2]||=e=>i(`loadMore`),onRetryEnd:r[3]||=e=>i(`retryEnd`)},null,8,[`can-retry-end`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`show-load-more`]))}}),h=[`role`],g={class:`gallery-status`},_=(0,e.defineComponent)({__name:`FeedStatus`,props:{actions:{},canRetryEnd:{type:Boolean},feedFooter:{},state:{}},emits:[`loadMore`,`retryEnd`],setup(t,{emit:n}){let r=t,i=n;return(n,a)=>((0,e.openBlock)(),(0,e.createElementBlock)(`main`,{class:`gallery-shell`,role:r.state.error?`alert`:r.state.isLoading?`status`:void 0},[(0,e.createElementVNode)(`p`,g,[r.state.error?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:0},[(0,e.createTextVNode)(` Unable to load media. `)],64)):r.state.isLoading?((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:1},[(0,e.createTextVNode)(` Loading media… `)],64)):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createTextVNode)(` No media found. `)],64))]),t.feedFooter?((0,e.openBlock)(),(0,e.createBlock)(m,{key:0,actions:t.actions,"can-retry-end":t.canRetryEnd,"feed-footer":t.feedFooter,"has-error":!!t.state.nextPageError,"has-next":t.state.next!==null,"is-loading":t.state.isLoadingMore,"load-more-locked":t.state.loadMoreLocked,"show-load-more":``,state:t.state,onLoadMore:a[0]||=e=>i(`loadMore`),onRetryEnd:a[1]||=e=>i(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`state`])):(0,e.createCommentVNode)(``,!0)],8,h))}});function v(e){return e.scrollHeight-e.scrollTop-e.clientHeight<=240}function y(e){let t=e.preview.width??e.width,n=e.preview.height??e.height;return!t||!n||t<=0||n<=0?1:n/t}function b(e){return e.reduce((t,n,r)=>n<e[t]?r:t,0)}function x(e){return Math.max(0,e.containerHeight)+Math.max(0,e.gap)}function S(e,t){let n=Math.max(0,t.overscan),r=t.scrollTop-n,i=t.scrollTop+Math.max(0,t.viewportHeight)+n;return e.reduce((e,t,n)=>(t.y+t.height>=r&&t.y<=i&&e.push(n),e),[])}function C(e,t,n){if(t<=0||e.length===0)return{columns:0,height:0,items:[]};let r=Math.max(0,n.gap),i=Number.isFinite(n.additionalHeight)?Math.max(0,n.additionalHeight??0):0,a=Math.max(1,n.minColumnWidth),o=Math.max(1,Math.floor((t+r)/(a+r))),s=(t-r*(o-1))/o,c=Array.from({length:o},()=>0),l=e.map(e=>{let t=b(c),n=s*y(e)+i,a={x:t*(s+r),y:c[t],width:s,height:n};return c[t]+=n+r,a});return{columns:o,height:Math.max(...c)-r,items:l}}function w(e,t,n){return Math.min(n,Math.max(t,e))}function T({contentSize:e,minimumThumbSize:t,scrollPosition:n,trackSize:r,viewportSize:i}){let a=Math.max(0,e),o=Math.max(0,r),s=Math.max(0,i),c=Math.max(0,a-s);if(!(c>0&&o>0))return{maximumScrollPosition:c,scrollable:!1,thumbOffset:0,thumbSize:o,thumbTravel:0};let l=w(s/a*o,Math.min(Math.max(0,t),o),o),u=Math.max(0,o-l);return{maximumScrollPosition:c,scrollable:!0,thumbOffset:u*(w(n,0,c)/c),thumbSize:l,thumbTravel:u}}var E=[`aria-hidden`],D=[`aria-controls`,`aria-valuemax`,`aria-valuenow`,`tabindex`],O=32,k=40,A=120,j=(0,e.defineComponent)({__name:`GalleryScrollbar`,props:{contentSize:{},controlsId:{},scrollElement:{},suspended:{type:Boolean}},setup(t){let n=t,r={maximumScrollPosition:0,scrollable:!1,thumbOffset:0,thumbSize:0,thumbTravel:0},i=(0,e.shallowRef)(null),a=(0,e.shallowRef)(r),o=(0,e.shallowRef)(!1),s=(0,e.shallowRef)(!1),c=(0,e.shallowRef)(!1),l=null,u=0,d=0,f=null,p=null,m=null,h=null,g=!1,_=null,v=(0,e.computed)(()=>a.value.scrollable&&!n.suspended),y=(0,e.computed)(()=>({height:`${a.value.thumbSize}px`,transform:`translate3d(0, ${a.value.thumbOffset}px, 0)`}));function b(){f!==null&&clearTimeout(f),f=setTimeout(()=>{f=null,o.value||(s.value=!1)},A)}function x(){s.value=!0,b()}function S(){let e=n.scrollElement,t=i.value;return!e||!t?r:T({contentSize:e.scrollHeight,minimumThumbSize:O,scrollPosition:e.scrollTop,trackSize:t.clientHeight,viewportSize:e.clientHeight})}function C(e){if(o.value&&e!==`scroll`){g=!0;return}if(o.value){let e=n.scrollElement;if(!e||a.value.maximumScrollPosition<=0)return;let t=Math.min(1,Math.max(0,e.scrollTop/a.value.maximumScrollPosition));a.value={...a.value,thumbOffset:a.value.thumbTravel*t};return}a.value=S(),!(c.value||p!==null)&&(p=requestAnimationFrame(()=>{p=null,c.value=!0}))}function w(){x(),C(`scroll`)}function j(e){let t=n.scrollElement;t&&(t.scrollTop=Math.min(a.value.maximumScrollPosition,Math.max(0,e)),C(`scroll`))}function M(e){if(!v.value||e.target!==e.currentTarget)return;let t=i.value;if(!t||a.value.thumbTravel<=0)return;e.preventDefault(),x();let n=e.clientY-t.getBoundingClientRect().top-a.value.thumbSize/2;j(Math.min(1,Math.max(0,n/a.value.thumbTravel))*a.value.maximumScrollPosition)}function N(e){v.value&&(e.preventDefault(),e.stopPropagation(),e.currentTarget.setPointerCapture?.(e.pointerId),l=e.pointerId,u=e.clientY,d=n.scrollElement?.scrollTop??0,o.value=!0,s.value=!0,f!==null&&clearTimeout(f),f=null)}function P(e){if(!o.value||e.pointerId!==l||(e.preventDefault(),a.value.thumbTravel<=0))return;let t=(e.clientY-u)/a.value.thumbTravel*a.value.maximumScrollPosition;j(d+t)}function F(e){!o.value||e.pointerId!==l||(e.currentTarget.releasePointerCapture?.(e.pointerId),l=null,o.value=!1,g&&(g=!1,C(`content`)),b())}function I(e){if(!v.value)return;let t=n.scrollElement?.clientHeight??0,r=n.scrollElement?.scrollTop??0,i=e.key===`ArrowUp`?r-k:e.key===`ArrowDown`?r+k:e.key===`PageUp`?r-t:e.key===`PageDown`?r+t:e.key===`Home`?0:e.key===`End`?a.value.maximumScrollPosition:null;i!==null&&(e.preventDefault(),x(),j(i))}function L(e){if(h?.disconnect(),!(typeof ResizeObserver>`u`)){h=new ResizeObserver(()=>C(`content`));for(let t of e.children)h.observe(t)}}return(0,e.watch)(()=>n.scrollElement,(t,n)=>{n?.removeEventListener(`scroll`,w),m?.disconnect(),m=null,h?.disconnect(),h=null,_?.disconnect(),_=null,t?.addEventListener(`scroll`,w,{passive:!0}),t&&typeof ResizeObserver<`u`&&(_=new ResizeObserver(()=>{x(),C(`resize`)}),_.observe(t),L(t)),t&&typeof MutationObserver<`u`&&(m=new MutationObserver(()=>{L(t),C(`content`)}),m.observe(t,{childList:!0})),(0,e.nextTick)(()=>C(`resize`))},{immediate:!0}),(0,e.watch)(()=>n.contentSize,()=>{(0,e.nextTick)(()=>C(`content`))}),(0,e.onBeforeUnmount)(()=>{n.scrollElement?.removeEventListener(`scroll`,w),m?.disconnect(),h?.disconnect(),_?.disconnect(),f!==null&&clearTimeout(f),p!==null&&cancelAnimationFrame(p)}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{ref_key:`trackElement`,ref:i,class:(0,e.normalizeClass)([`gallery-scrollbar`,{"gallery-scrollbar--dragging":o.value,"gallery-scrollbar--interacting":s.value,"gallery-scrollbar--ready":c.value,"gallery-scrollbar--visible":v.value}]),"aria-hidden":!v.value||void 0,onPointerdown:M},[(0,e.createElementVNode)(`div`,{class:`gallery-scrollbar-thumb`,"aria-controls":t.controlsId,"aria-label":`Media gallery scroll position`,"aria-orientation":`vertical`,"aria-valuemax":Math.round(a.value.maximumScrollPosition),"aria-valuemin":`0`,"aria-valuenow":Math.round(t.scrollElement?.scrollTop??0),role:`scrollbar`,style:(0,e.normalizeStyle)(y.value),tabindex:v.value?0:-1,onKeydown:I,onPointercancel:F,onPointerdown:N,onPointermove:P,onPointerup:F},null,44,D)],42,E))}}),M=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},N=e=>e===``,P=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),F=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),I=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),L=e=>{let t=I(e);return t.charAt(0).toUpperCase()+t.slice(1)},R={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},z=({name:t,iconNode:n,absoluteStrokeWidth:r,"absolute-stroke-width":i,strokeWidth:a,"stroke-width":o,size:s=R.width,color:c=R.stroke,...l},{slots:u})=>(0,e.h)(`svg`,{...R,...l,width:s,height:s,stroke:c,"stroke-width":N(r)||N(i)||r===!0||i===!0?Number(a||o||R[`stroke-width`])*24/Number(s):a||o||R[`stroke-width`],class:P(`lucide`,l.class,...t?[`lucide-${F(L(t))}-icon`,`lucide-${F(t)}`]:[`lucide-icon`]),...!u.default&&!M(l)&&{"aria-hidden":`true`}},[...n.map(t=>(0,e.h)(...t)),...u.default?[u.default()]:[]]),B=(t,n)=>(r,{slots:i,attrs:a})=>(0,e.h)(z,{...a,...r,iconNode:n,name:t},i),V=B(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),ee=B(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),H=B(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),te=B(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),U=B(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),W=B(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),G={401:`Authentication required`,403:`Access forbidden`,404:`Preview not found`,419:`Session expired`,500:`Server error`};function K(e){return e.match(/\/demo-errors\/(401|403|404|419|500)\//)?.[1]??`Error`}function ne(e){return G[K(e)]??`Preview unavailable`}var q=/\.(aac|flac|m4a|mp3|mp4|mov|ogg|opus|wav|webm)$/i;function re(e){try{return q.test(new URL(e).pathname)}catch{return q.test(e.split(`?`)[0]??e)}}var J=(0,e.defineComponent)({__name:`CardRegion`,props:{index:{},item:{},layout:{},loadedCount:{},mediaIndex:{},mediaSource:{},placement:{},region:{},style:{},total:{}},setup(i){let a=i,o=(0,e.computed)(()=>n(a.item,a.mediaIndex)),s=(0,e.computed)(()=>t(a.item)),c=(0,e.computed)(()=>r(a.item,o.value)),l=(0,e.computed)(()=>({height:`${a.region.height}px`,paddingBlock:a.style?.paddingY===void 0?void 0:`${a.style.paddingY}px`,paddingInline:a.style?.paddingX===void 0?void 0:`${a.style.paddingX}px`})),u=(0,e.computed)(()=>a.style?.background??a.region.background);return(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`media-card-region`,[`media-card-${i.placement}`,{"media-card-region--transparent":u.value===`transparent`}]]),style:(0,e.normalizeStyle)(l.value),onClick:n[0]||=(0,e.withModifiers)(()=>{},[`stop`]),onKeydown:n[1]||=(0,e.withModifiers)(()=>{},[`stop`])},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(i.region.component),{index:i.index,item:i.item,layout:i.layout,"loaded-count":i.loadedCount,"media-count":s.value.length,"media-index":o.value,"media-item":c.value,"media-source":i.mediaSource??`preview`,total:i.total},null,8,[`index`,`item`,`layout`,`loaded-count`,`media-count`,`media-index`,`media-item`,`media-source`,`total`]))],38))}}),Y=[`max`,`value`,`aria-valuetext`,`disabled`],ie={key:0,class:`media-controls-row`},ae=[`aria-label`,`title`],oe={class:`media-controls-audio`},se=[`aria-label`,`title`],ce=[`value`,`aria-valuetext`],le={class:`media-control-time`,"aria-live":`off`},ue=(0,e.defineComponent)({__name:`MediaControls`,props:{currentTime:{},duration:{},layout:{},muted:{type:Boolean},playing:{type:Boolean},volume:{}},emits:[`seek`,`toggleMute`,`togglePlayback`,`volumeChange`],setup(t,{emit:n}){let r=t,i=n;function a(e,t=1){return Number.isFinite(e)?Math.min(t,Math.max(0,e)):0}function o(e){let t=Math.floor(a(e,2**53-1)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}:${String(r).padStart(2,`0`)}:${String(i).padStart(2,`0`)}`:`${r}:${String(i).padStart(2,`0`)}`}function s(e){return Number(e.target.value)}let c=(0,e.computed)(()=>Math.max(0,r.duration)),l=(0,e.computed)(()=>a(r.currentTime,c.value)),u=(0,e.computed)(()=>({"--media-range-progress":`${c.value>0?l.value/c.value*100:0}%`})),d=(0,e.computed)(()=>({"--media-range-progress":`${a(r.volume)*100}%`}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:(0,e.normalizeClass)([`media-controls`,`media-controls--${t.layout}`]),"aria-label":`Video controls`,onClick:r[4]||=(0,e.withModifiers)(()=>{},[`stop`]),onDblclick:r[5]||=(0,e.withModifiers)(()=>{},[`stop`]),onKeydown:r[6]||=(0,e.withModifiers)(()=>{},[`stop`]),onWheel:r[7]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createElementVNode)(`input`,{class:`media-control-range media-control-seek`,type:`range`,min:`0`,max:c.value||0,step:`0.1`,value:l.value,style:(0,e.normalizeStyle)(u.value),"aria-label":`Seek video`,"aria-valuetext":`${o(l.value)} of ${o(c.value)}`,disabled:c.value<=0,onInput:r[0]||=e=>i(`seek`,s(e))},null,44,Y),t.layout===`reel`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ie,[(0,e.createElementVNode)(`button`,{type:`button`,class:`media-control-button media-control-playback`,"aria-label":t.playing?`Pause video`:`Play video`,title:t.playing?`Pause`:`Play`,onClick:r[1]||=e=>i(`togglePlayback`)},[t.playing?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(H),{key:0,size:18,fill:`currentColor`})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(te),{key:1,size:18,fill:`currentColor`}))],8,ae),(0,e.createElementVNode)(`div`,oe,[(0,e.createElementVNode)(`button`,{type:`button`,class:`media-control-button`,"aria-label":t.muted?`Unmute video`:`Mute video`,title:t.muted?`Unmute`:`Mute`,onClick:r[2]||=e=>i(`toggleMute`)},[t.muted||t.volume===0?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(W),{key:0,size:18})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(U),{key:1,size:18}))],8,se),(0,e.createElementVNode)(`input`,{class:`media-control-range media-control-volume`,type:`range`,min:`0`,max:`1`,step:`0.05`,value:t.volume,style:(0,e.normalizeStyle)(d.value),"aria-label":`Video volume`,"aria-valuetext":`${Math.round(t.volume*100)} percent`,onInput:r[3]||=e=>i(`volumeChange`,s(e))},null,44,ce)]),(0,e.createElementVNode)(`output`,le,(0,e.toDisplayString)(o(l.value))+` / `+(0,e.toDisplayString)(o(c.value)),1)])):(0,e.createCommentVNode)(``,!0)],34))}});function de(t){let n=(0,e.computed)(()=>t.layout()!==`reel`||t.active()===!0),r=(0,e.computed)(()=>n.value?t.videoIsMuted.value:!0);function i(){if(!n.value){t.videoElement.value?.pause(),t.videoIsPlaying.value=!1;return}t.videoIsPlaying.value=!0}return(0,e.watch)(n,r=>{let i=t.videoElement.value;if(!r){i?.pause(),i&&(i.muted=!0),t.videoIsPlaying.value=!1;return}(0,e.nextTick)().then(async()=>{let e=t.videoElement.value;if(!(!e||!n.value)){e.muted=t.videoIsMuted.value;try{await e.play()}catch{t.videoIsPlaying.value=!1}}})}),{effectiveMuted:r,onPlaying:i,playbackAllowed:n}}var fe=[`data-post-id`,`data-media-index`,`aria-hidden`,`aria-busy`,`inert`,`role`,`tabindex`],pe={class:`media-card-content`},me=[`data-media-direction`],he=[`data-media-index`],ge={key:0,"data-test":`media-loading`,class:`media-loading`,"aria-hidden":`true`},_e=[`aria-label`],ve={class:`media-error-code`},ye=[`src`,`width`,`height`,`autoplay`,`loop`,`muted`,`preload`],be=[`src`,`width`,`height`,`fetchpriority`],xe=[`aria-label`],Se=[`aria-label`],Ce=[`aria-label`],we=40,Te=160,Ee=24,De=(0,e.defineComponent)({__name:`MediaCard`,props:{active:{type:Boolean},advanceOnMediaEnd:{type:Boolean},cardFooter:{},cardHeader:{},entering:{type:Boolean},fetchPriority:{},index:{},item:{},itemStyle:{},interactive:{type:Boolean},leaving:{type:Boolean},layout:{},loadedCount:{},mediaIndex:{},mediaCard:{},mediaSource:{},previewState:{},reelControlsTarget:{},stationaryReelControls:{type:Boolean},total:{}},emits:[`activate`,`ended`,`error`,`mediaChange`,`ready`],setup(i,{emit:a}){let o=i,s=null,c=0,l=!1,u=null,d=null,f=(0,e.shallowRef)(`next`),p=a;function m(e=!1,t=`pointer`){e&&p(`activate`,t)}let h=(0,e.computed)(()=>t(o.item)),g=(0,e.computed)(()=>n(o.item,o.mediaIndex)),_=(0,e.computed)(()=>r(o.item,g.value)),v=(0,e.computed)(()=>o.mediaSource===`original`?_.value.src:_.value.preview.src),y=(0,e.computed)(()=>o.mediaSource===`original`?_.value.width:_.value.preview.width),b=(0,e.computed)(()=>o.mediaSource===`original`?_.value.height:_.value.preview.height),x=(0,e.shallowRef)(null),S=(0,e.shallowRef)(0),C=(0,e.shallowRef)(0),w=(0,e.shallowRef)(o.mediaCard?.videoMuted??o.layout===`masonry`),T=(0,e.shallowRef)(!1),E=(0,e.shallowRef)(1),D=1,{effectiveMuted:O,onPlaying:k,playbackAllowed:A}=de({active:()=>o.active,layout:()=>o.layout,videoElement:x,videoIsMuted:w,videoIsPlaying:T}),j=(0,e.computed)(()=>o.interactive&&!!(o.cardHeader||o.cardFooter));function M(e){return e.detail===0?`keyboard`:`pointer`}function N(e,t){let n=h.value.length,r=(e+n)%n;r!==g.value&&(f.value=e<g.value?`previous`:`next`,p(`mediaChange`,r),t&&t.detail>0&&t.currentTarget?.blur())}function P(e,t,n){return t===1?e*16:t===2?e*n:e}function F(){c=0,l=!1,s!==null&&clearTimeout(s),s=null}function I(){s!==null&&clearTimeout(s),s=setTimeout(F,Te)}function L(e){if(h.value.length<=1)return;let t=e.currentTarget?.clientWidth||1,n=P(e.deltaX,e.deltaMode,t);if(n===0||(e.preventDefault(),I(),l)||(c+=n,Math.abs(c)<Ee))return;let r=Math.sign(c);c=0,l=!0,N(g.value+r)}function R(e){let t=e.touches[0];o.layout!==`reel`||!t||(u=t.clientX,d=t.clientY)}function z(e){let t=e.changedTouches[0];if(u===null||d===null||!t)return;let n=u-t.clientX,r=d-t.clientY;u=null,d=null,!(Math.abs(n)<=Math.abs(r))&&(Math.abs(n)<we||N(g.value+Math.sign(n)))}let B=(0,e.computed)(()=>re(v.value)),H=(0,e.computed)(()=>o.layout===`reel`&&o.stationaryReelControls===!0),te=(0,e.computed)(()=>B.value&&o.previewState===`ready`&&(!H.value||!!(o.active&&o.reelControlsTarget))),U=(0,e.computed)(()=>`${o.item.postId}:${g.value}:${v.value}`);function W(e){o.layout===`reel`&&(e.stopPropagation(),G())}async function G(){if(!(!x.value||!A.value)){if(T.value){x.value.pause();return}try{await x.value.play()}catch{T.value=!1}}}function q(e){return Number.isFinite(e)?Math.max(0,e):0}function Y(e){let t=e?.currentTarget??x.value;t&&(S.value=q(t.currentTime),C.value=q(t.duration),A.value&&(w.value=t.muted),E.value=t.volume,t.volume>0&&(D=t.volume))}function ie(e){Y(e),p(`ready`,g.value)}function ae(){T.value=!1,p(`ended`,g.value)}function oe(e){let t=x.value;!t||!Number.isFinite(e)||(t.currentTime=Math.min(q(t.duration),Math.max(0,e)),S.value=t.currentTime)}function se(e){let t=x.value;if(!t||!Number.isFinite(e))return;let n=Math.min(1,Math.max(0,e));t.volume=n,t.muted=n===0,n>0&&(D=n),Y()}function ce(){let e=x.value;e&&(e.muted&&e.volume===0&&(e.volume=D),e.muted=!e.muted,Y())}return(0,e.onBeforeUnmount)(()=>{F()}),(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`article`,{"data-post-id":i.item.postId,"data-media-index":g.value,class:(0,e.normalizeClass)([`media-card`,{"media-card--entering":i.entering,"media-card--leaving":i.leaving,"media-card--error":i.previewState===`error`,"media-card--transparent-chrome":i.mediaCard?.header?.background===`transparent`||i.mediaCard?.footer?.background===`transparent`||i.cardHeader?.background===`transparent`||i.cardFooter?.background===`transparent`}]),style:(0,e.normalizeStyle)(i.itemStyle),"aria-hidden":i.leaving||void 0,"aria-busy":i.previewState===`loading`,inert:i.leaving||void 0,role:i.interactive&&!i.leaving&&!j.value?`button`:void 0,tabindex:i.interactive&&!i.leaving&&!j.value?0:void 0,onClick:n[11]||=e=>m(i.interactive&&!j.value,M(e)),onKeydown:[n[12]||=(0,e.withKeys)(e=>m(i.interactive&&!j.value,`keyboard`),[`enter`]),n[13]||=(0,e.withKeys)((0,e.withModifiers)(e=>m(i.interactive&&!j.value,`keyboard`),[`prevent`]),[`space`])]},[(0,e.createElementVNode)(`div`,pe,[i.cardHeader?((0,e.openBlock)(),(0,e.createBlock)(J,{key:0,index:i.index,item:i.item,layout:i.layout,"loaded-count":i.loadedCount,"media-index":g.value,"media-source":i.mediaSource,placement:`header`,region:i.cardHeader,style:(0,e.normalizeStyle)(i.mediaCard?.header),total:i.total},null,8,[`index`,`item`,`layout`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,{class:(0,e.normalizeClass)([`media-card-media`,{"media-card-media--carousel":i.layout===`reel`&&h.value.length>1}]),"data-media-direction":f.value,onWheel:L,onTouchstartPassive:R,onTouchendPassive:z},[(0,e.createVNode)(e.Transition,{name:`media-slide-${f.value}`},{default:(0,e.withCtx)(()=>[((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:`${i.item.postId}:${_.value.src}:${i.mediaSource??`preview`}`,class:`media-card-frame`,"data-media-index":g.value},[i.previewState===`loading`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,ge,[...n[14]||=[(0,e.createElementVNode)(`span`,{class:`media-loading-shimmer`},null,-1)]])):i.previewState===`error`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:1,"data-test":`media-error`,class:`media-error`,role:`img`,"aria-label":`${(0,e.unref)(K)(v.value)} ${(0,e.unref)(ne)(v.value)}`},[(0,e.createElementVNode)(`strong`,ve,(0,e.toDisplayString)((0,e.unref)(K)(v.value)),1),(0,e.createElementVNode)(`span`,null,(0,e.toDisplayString)((0,e.unref)(ne)(v.value)),1)],8,_e)):(0,e.createCommentVNode)(``,!0),B.value?((0,e.openBlock)(),(0,e.createElementBlock)(`video`,{key:2,ref_key:`videoElement`,ref:x,class:(0,e.normalizeClass)([`media-preview`,{"media-preview--ready":i.previewState===`ready`,"media-preview--reel-video":i.layout===`reel`}]),src:v.value,width:y.value??void 0,height:b.value??void 0,autoplay:(0,e.unref)(A),loop:!i.advanceOnMediaEnd,muted:(0,e.unref)(O),playsinline:``,preload:i.fetchPriority===`high`?`auto`:`metadata`,onLoadedmetadata:ie,onDurationchange:Y,onTimeupdate:Y,onVolumechange:Y,onPlaying:n[0]||=(...t)=>(0,e.unref)(k)&&(0,e.unref)(k)(...t),onPause:n[1]||=e=>T.value=!1,onEnded:ae,onClick:W,onError:n[2]||=e=>t.$emit(`error`,g.value)},null,42,ye)):((0,e.openBlock)(),(0,e.createElementBlock)(`img`,{key:3,class:(0,e.normalizeClass)([`media-preview`,{"media-preview--ready":i.previewState===`ready`}]),src:v.value,width:y.value??void 0,height:b.value??void 0,fetchpriority:i.fetchPriority,alt:``,decoding:`async`,loading:`eager`,onLoad:n[3]||=e=>t.$emit(`ready`,g.value),onError:n[4]||=e=>t.$emit(`error`,g.value)},null,42,be))],8,he))]),_:1},8,[`name`]),((0,e.openBlock)(),(0,e.createBlock)(e.Teleport,{disabled:!H.value||!i.reelControlsTarget,to:i.reelControlsTarget??`body`},[(0,e.createVNode)(e.Transition,{name:`vibe-reel-media-controls`,css:H.value},{default:(0,e.withCtx)(()=>[te.value?((0,e.openBlock)(),(0,e.createBlock)(ue,{key:U.value,"current-time":S.value,"data-control-post-id":H.value?i.item.postId:void 0,duration:C.value,layout:i.layout,muted:w.value,playing:T.value,volume:E.value,onSeek:oe,onToggleMute:ce,onTogglePlayback:G,onVolumeChange:se},null,8,[`current-time`,`data-control-post-id`,`duration`,`layout`,`muted`,`playing`,`volume`])):(0,e.createCommentVNode)(``,!0)]),_:1},8,[`css`])],8,[`disabled`,`to`])),h.value.length>1?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:(0,e.normalizeClass)([`media-carousel-controls`,{"media-carousel-controls--persistent":i.layout===`reel`}]),"aria-label":`Media navigation`},[(0,e.createElementVNode)(`button`,{type:`button`,class:`media-carousel-control media-carousel-control--previous`,"aria-label":`Previous media for post ${i.item.postId}`,onClick:n[5]||=(0,e.withModifiers)(e=>N(g.value-1,e),[`stop`]),onKeydown:n[6]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(V),{size:20})],40,xe),(0,e.createElementVNode)(`button`,{type:`button`,class:`media-carousel-control media-carousel-control--next`,"aria-label":`Next media for post ${i.item.postId}`,onClick:n[7]||=(0,e.withModifiers)(e=>N(g.value+1,e),[`stop`]),onKeydown:n[8]||=(0,e.withModifiers)(()=>{},[`stop`])},[(0,e.createVNode)((0,e.unref)(ee),{size:20})],40,Se)],2)):(0,e.createCommentVNode)(``,!0),j.value?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:1,class:`media-card-activator`,type:`button`,"aria-label":`Open post ${i.item.postId}`,onClick:n[9]||=(0,e.withModifiers)(e=>t.$emit(`activate`,M(e)),[`stop`]),onKeydown:n[10]||=(0,e.withModifiers)(()=>{},[`stop`])},null,40,Ce)):(0,e.createCommentVNode)(``,!0)],42,me),i.cardFooter?((0,e.openBlock)(),(0,e.createBlock)(J,{key:1,index:i.index,item:i.item,layout:i.layout,"loaded-count":i.loadedCount,"media-index":g.value,"media-source":i.mediaSource,placement:`footer`,region:i.cardFooter,style:(0,e.normalizeStyle)(i.mediaCard?.footer),total:i.total},null,8,[`index`,`item`,`layout`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0)])],46,fe))}}),Oe={class:`masonry-feed-shell`},ke=[`aria-hidden`,`inert`],Ae=240,je=6,Me=12,Ne=800,Pe=1.5,Fe=(0,e.defineComponent)({__name:`MasonryFeed`,props:{enteringPostIds:{},entryDelays:{},leavingPostIds:{default:()=>new Set},removalDelays:{default:()=>new Map},suspended:{type:Boolean},canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},hasNext:{type:Boolean},infiniteScroll:{type:Boolean},isLoadingMore:{type:Boolean},items:{},loadMoreLocked:{type:Boolean},mediaCard:{},mediaIndices:{},nextPageError:{type:Boolean},previewStates:{},state:{},total:{}},emits:[`activate`,`error`,`loadMore`,`mediaChange`,`ready`,`retryEnd`],setup(t,{expose:n,emit:r}){let a=t,o=r,s=(0,e.shallowRef)(null),c=`vibe-masonry-${(0,e.useId)()}`,l=(0,e.shallowRef)(null),u=(0,e.shallowRef)(0),d=(0,e.shallowRef)(je),f=(0,e.shallowRef)(0),p=(0,e.shallowRef)(0),h=(0,e.shallowRef)(0),g=null,_=null,y=null,b=(0,e.computed)(()=>C(a.items,u.value,{additionalHeight:(a.cardHeader?.height??0)+(a.cardFooter?.height??0),gap:d.value,minColumnWidth:Ae})),w=(0,e.computed)(()=>{let e=b.value;if(a.leavingPostIds.size===0)return e;let t=a.items.filter(e=>!a.leavingPostIds.has(e.postId)),n=C(t,u.value,{additionalHeight:(a.cardHeader?.height??0)+(a.cardFooter?.height??0),gap:d.value,minColumnWidth:Ae}),r=new Map(t.map((e,t)=>[e.postId,n.items[t]]));return{...n,items:a.items.map((t,n)=>a.leavingPostIds.has(t.postId)?e.items[n]:r.get(t.postId)??e.items[n])}}),T=(0,e.computed)(()=>({height:`${a.leavingPostIds.size===0?w.value.height:b.value.height}px`})),E=(0,e.computed)(()=>!a.infiniteScroll||p.value>0&&h.value+w.value.height<=p.value+1),D=(0,e.computed)(()=>{let e=Math.max(Ne,p.value*Pe),t={scrollTop:f.value-h.value,viewportHeight:p.value},n=S(w.value.items,{...t,overscan:e}),r=a.leavingPostIds.size===0?[]:S(b.value.items,{...t,overscan:e}),i=[...new Set([...n,...r])].sort((e,t)=>e-t),o=S(w.value.items,{...t,overscan:0}),s=a.leavingPostIds.size===0?[]:S(b.value.items,{...t,overscan:0}),c=new Set([...o,...s]);return i.flatMap(e=>{let t=a.items[e];return t?[{fetchPriority:c.has(e)?`high`:`low`,index:e,item:t}]:[]})});function O(e){let t=w.value.items[e],n=a.items[e]?.postId;if(!t)return{};let r=n!==void 0&&a.enteringPostIds.has(n),i=n!==void 0&&a.leavingPostIds.has(n),o=r||i?x({containerHeight:b.value.height,gap:d.value}):0,s=n===void 0?0:i?a.removalDelays.get(n)??0:r?a.entryDelays.get(n)??0:0;return{"--masonry-entry-delay":`${s}ms`,width:`${t.width}px`,height:`${t.height}px`,transform:`translate3d(${t.x}px, ${t.y+o}px, 0)`}}function k(){let e=s.value;if(!e)return;f.value=e.scrollTop,p.value=e.clientHeight;let t=l.value;t&&(h.value=t.getBoundingClientRect().top-e.getBoundingClientRect().top+e.scrollTop)}function A(e){let t=e.ownerDocument.documentElement.clientWidth;u.value=e.clientWidth,d.value=Math.min(Me,Math.max(je,t*.0075)),k()}function M(e){let t=e.currentTarget;t&&(f.value=t.scrollTop,!a.loadMoreLocked&&a.infiniteScroll&&v(t)&&o(`loadMore`))}function N(){let e=s.value;!a.loadMoreLocked&&e&&v(e)&&o(`loadMore`)}function P(){return s.value}return(0,e.watch)(l,e=>{g?.disconnect(),g=null,y!==null&&cancelAnimationFrame(y),e&&(A(e),!(typeof ResizeObserver>`u`)&&(g=new ResizeObserver(([t])=>{let n=t?.contentRect.width??e.clientWidth;Math.abs(n-u.value)<.5||(y=requestAnimationFrame(()=>{y=null,A(e)}))}),g.observe(e)))}),(0,e.watch)(s,e=>{_?.disconnect(),_=null,e&&(k(),!(typeof ResizeObserver>`u`)&&(_=new ResizeObserver(k),_.observe(e)))}),(0,e.onBeforeUnmount)(()=>{g?.disconnect(),_?.disconnect(),y!==null&&cancelAnimationFrame(y)}),n({getScrollElement:P,loadIfNearBottom:N}),(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Oe,[(0,e.createElementVNode)(`main`,{id:c,ref_key:`galleryElement`,ref:s,class:(0,e.normalizeClass)([`gallery-shell masonry-feed`,{"masonry-feed--suspended":t.suspended}]),"data-layout-mode":`masonry`,"aria-hidden":t.suspended||void 0,inert:t.suspended||void 0,onScrollPassive:M},[(0,e.createElementVNode)(`section`,{ref_key:`masonryElement`,ref:l,class:(0,e.normalizeClass)([`masonry`,{"masonry--ready":u.value>0}]),style:(0,e.normalizeStyle)(T.value),"aria-label":`Media gallery`},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(D.value,({fetchPriority:n,item:r,index:a})=>((0,e.openBlock)(),(0,e.createBlock)(De,{key:r.postId,class:`masonry-item`,entering:t.enteringPostIds.has(r.postId),leaving:t.leavingPostIds.has(r.postId),"fetch-priority":n,"card-footer":t.cardFooter,"card-header":t.cardHeader,"media-card":t.mediaCard,index:a,item:r,"item-style":O(a),interactive:``,layout:`masonry`,"loaded-count":t.items.length,"media-index":t.mediaIndices.get(r.postId)??0,"preview-state":t.previewStates.get((0,e.unref)(i)(r.postId,t.mediaIndices.get(r.postId)??0))??`loading`,total:t.total,onActivate:e=>o(`activate`,r.postId,e),onMediaChange:e=>o(`mediaChange`,r.postId,e),onReady:e=>o(`ready`,r.postId,e),onError:e=>o(`error`,r.postId,e)},null,8,[`entering`,`leaving`,`fetch-priority`,`card-footer`,`card-header`,`media-card`,`index`,`item`,`item-style`,`loaded-count`,`media-index`,`preview-state`,`total`,`onActivate`,`onMediaChange`,`onReady`,`onError`]))),128))],6),(0,e.createVNode)(m,{actions:t.feedFooterActions,"can-retry-end":t.canRetryEnd,"feed-footer":t.feedFooter,"has-error":t.nextPageError,"has-next":t.hasNext,"is-loading":t.isLoadingMore,"load-more-locked":t.loadMoreLocked,"show-load-more":E.value,state:t.state,onLoadMore:r[0]||=e=>o(`loadMore`),onRetryEnd:r[1]||=e=>o(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`show-load-more`,`state`])],42,ke),(0,e.createVNode)(j,{"content-size":w.value.height,"controls-id":c,"scroll-element":s.value,suspended:t.suspended},null,8,[`content-size`,`scroll-element`,`suspended`])]))}}),Ie=300;function Le(e,t,n){let r=e.scrollTop;if(n||Math.abs(r-t)<=1)return e.scrollTop=t,Promise.resolve();e.setAttribute(`data-transitioning`,``);let i=performance.now(),a=0;return new Promise(n=>{let o=s=>{a+=1;let c=Math.max(s-i,1e3/60*a),l=Math.min(1,c/Ie),u=1-(1-l)**3;if(e.scrollTop=r+(t-r)*u,l<1){requestAnimationFrame(o);return}e.removeAttribute(`data-transitioning`),e.scrollTop=t,n()};requestAnimationFrame(o)})}var Re=[`aria-label`],ze=(0,e.defineComponent)({__name:`ReelAutoAdvanceProgress`,props:{durationMs:{},label:{}},emits:[`complete`],setup(t,{emit:n}){let r=t,i=n,a=(0,e.computed)(()=>({"--vibe-reel-auto-advance-duration":`${r.durationMs}ms`}));return(n,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{class:`reel-auto-advance`,"data-test":`reel-auto-advance`,role:`timer`,"aria-label":t.label},[(0,e.createElementVNode)(`span`,{class:`reel-auto-advance-progress`,style:(0,e.normalizeStyle)(a.value),onAnimationend:r[0]||=e=>i(`complete`)},null,36)],8,Re))}}),Be={class:`reel-viewport`},Ve=[`data-active-post-id`,`data-active-media-index`],He=[`role`,`data-status`],Ue=2,We=300,Ge=(0,e.defineComponent)({__name:`ReelFeed`,props:{initialPostId:{},mediaSource:{},reelAutoAdvance:{},reelForward:{default:()=>({error:null,status:`idle`})},canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},hasNext:{type:Boolean},infiniteScroll:{type:Boolean},isLoadingMore:{type:Boolean},items:{},loadMoreLocked:{type:Boolean},mediaCard:{},mediaIndices:{},nextPageError:{type:Boolean},previewStates:{},state:{},total:{}},emits:[`activeChange`,`error`,`loadMore`,`mediaChange`,`ready`,`retryEnd`,`retryForward`],setup(n,{expose:a,emit:o}){let s=n,c=o,l=(0,e.shallowRef)(null),u=(0,e.shallowRef)(null),d=s.initialPostId===null||s.initialPostId===void 0?-1:s.items.findIndex(e=>e.postId===s.initialPostId),f=(0,e.shallowRef)(Math.max(0,d)),p=(0,e.shallowRef)(!1),h=(0,e.shallowRef)(!1),g=0,_=null,y=null,b=null,x=(0,e.computed)(()=>({gridTemplateRows:`repeat(${s.items.length}, 100cqh)`})),S=(0,e.computed)(()=>{let e=Math.max(0,f.value-Ue),t=Math.min(s.items.length-1,f.value+Ue);return s.items.slice(e,t+1).map((t,n)=>({fetchPriority:e+n===f.value?`high`:`low`,index:e+n,item:t}))}),C=(0,e.computed)(()=>s.items[f.value]?.postId),w=(0,e.computed)(()=>s.items[f.value]),T=(0,e.computed)(()=>{let e=C.value;return e===void 0?0:s.mediaIndices.get(e)??0}),E=(0,e.computed)(()=>{let e=C.value;return e===void 0?`loading`:s.previewStates.get(i(e,T.value))??`loading`}),D=(0,e.computed)(()=>{let e=w.value;if(!e)return``;let t=r(e,T.value);return s.mediaSource===`original`?t.src:t.preview.src}),O=(0,e.computed)(()=>E.value===`ready`&&re(D.value)),k=(0,e.computed)(()=>[C.value,T.value,s.items.length,s.loadMoreLocked,s.reelAutoAdvance.enabled,s.reelAutoAdvance.includePostItems,s.reelAutoAdvance.intervalMs].join(`:`)),A=(0,e.computed)(()=>{let e=w.value,n=!!(e&&s.reelAutoAdvance.includePostItems&&T.value<t(e).length-1),r=s.reelAutoAdvance.intervalMs/1e3;return`Auto advance to the next ${n?`post item`:`post`} in ${r}s`}),j=(0,e.computed)(()=>s.reelAutoAdvance.enabled&&s.reelForward.status===`idle`&&w.value!==void 0&&E.value!==`loading`&&!O.value),M=(0,e.computed)(()=>!s.infiniteScroll||s.items.length<=1),N=(0,e.computed)(()=>s.reelForward.status===`loading`?`Loading the next media…`:s.reelForward.status===`error`?`Unable to load the next media.`:`You reached the end of this feed.`);function P(e){return{gridRow:`${e+1}`}}function F(e){let t=g||e.clientHeight;return t<=0||s.items.length===0?0:Math.min(s.items.length-1,Math.max(0,Math.round(e.scrollTop/t)))}function I(e){let t=e.currentTarget;if(!t)return;let n=g||t.clientHeight,r=Math.max(0,s.items.length-1)*n;p.value=s.items.length>0&&t.scrollTop>r+1,h.value||(f.value=F(t)),!s.loadMoreLocked&&s.infiniteScroll&&v(t)&&c(`loadMore`)}function L(){let e=l.value;e&&(p.value=!1,B(!0),g=e.clientHeight,e.scrollTop=f.value*g,y!==null&&cancelAnimationFrame(y),y=requestAnimationFrame(()=>{e.scrollTop=f.value*e.clientHeight,g=e.clientHeight,y=null}),R())}function R(){b!==null&&clearTimeout(b),b=setTimeout(()=>{b=null;let e=l.value;e&&(g=e.clientHeight,e.scrollTop=f.value*g),B(!1)},120)}function z(){B(!0);let e=l.value;e&&(g=e.clientHeight,e.scrollTop=f.value*g),R()}function B(e){h.value=e,l.value?.toggleAttribute(`data-resizing`,e)}function V(){let e=l.value;!s.loadMoreLocked&&e&&v(e)&&c(`loadMore`)}function ee(e){let n=w.value;if(!n)return!1;let r=t(n).length;if(r<=1)return!1;let i=(T.value+e+r)%r;return c(`mediaChange`,n.postId,i),!0}function H(e){let t=f.value+e;return!l.value||t<0||t>=s.items.length?!1:(G(t),!0)}function te(e,t){let n=s.items.findIndex(t=>t.postId===e),r=s.items[n];return!l.value||!r||t<0||t>r.items.length?!1:((s.mediaIndices.get(e)??0)!==t&&c(`mediaChange`,e,t),n!==f.value&&G(n),!0)}function U(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function W(e){let t=l.value;if(!t)return Promise.resolve();let n=e*(g||t.clientHeight);return f.value=e,Le(t,n,U())}function G(e){W(e)}async function K(e){let t=s.items.findIndex(t=>t.postId===e);return t<0||t===f.value?!1:(await W(t),!0)}async function ne(e){return ee(e)?(U()||await new Promise(e=>setTimeout(e,We)),!0):!1}function q(){if(!s.reelAutoAdvance.enabled)return;let e=w.value;if(!e)return;if(s.reelAutoAdvance.includePostItems&&T.value<t(e).length-1){c(`mediaChange`,e.postId,T.value+1);return}let n=f.value+1,r=s.items[n];if(!r){s.hasNext&&!s.loadMoreLocked&&c(`loadMore`);return}s.reelAutoAdvance.includePostItems&&(s.mediaIndices.get(r.postId)??0)!==0&&c(`mediaChange`,r.postId,0),G(n)}function Y(e,t){!s.reelAutoAdvance.enabled||e!==C.value||t!==T.value||!O.value||q()}return(0,e.watch)(l,e=>{_?.disconnect(),_=null,e&&(g=e.clientHeight,!(typeof ResizeObserver>`u`)&&(_=new ResizeObserver(L),_.observe(e)))}),(0,e.watch)(()=>s.items.length,async t=>{let n=s.initialPostId,r=n==null?-1:s.items.findIndex(({postId:e})=>e===n);f.value=r>=0?r:Math.min(f.value,Math.max(0,t-1)),await(0,e.nextTick)(),L()}),(0,e.watch)(C,e=>{e!==void 0&&c(`activeChange`,e)},{immediate:!0}),(0,e.onMounted)(()=>{window.addEventListener(`resize`,z),window.addEventListener(`orientationchange`,z),d>=0&&(0,e.nextTick)(L)}),(0,e.onBeforeUnmount)(()=>{window.removeEventListener(`resize`,z),window.removeEventListener(`orientationchange`,z),_?.disconnect(),y!==null&&cancelAnimationFrame(y),b!==null&&clearTimeout(b)}),a({activeIndex:f,activePostId:C,changeActiveMedia:ee,loadIfNearBottom:V,moveActivePost:H,navigateToItem:te,transitionActiveMedia:ne,transitionActivePost:K}),(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`main`,{class:(0,e.normalizeClass)([`reel-shell`,{"reel-shell--has-footer":!!n.cardFooter,"reel-shell--has-header":!!n.cardHeader}]),"data-layout-mode":`reel`},[n.cardHeader&&w.value&&n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(J,{key:0,index:f.value,item:w.value,layout:`reel`,"loaded-count":n.items.length,"media-index":T.value,"media-source":n.mediaSource,placement:`header`,region:n.cardHeader,style:(0,e.normalizeStyle)(n.mediaCard?.header),total:n.total},null,8,[`index`,`item`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0),(0,e.createElementVNode)(`div`,Be,[(0,e.createElementVNode)(`div`,{ref_key:`galleryElement`,ref:l,class:`gallery-shell reel-feed`,"data-active-post-id":C.value,"data-active-media-index":T.value,onScrollPassive:I},[n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createElementBlock)(`section`,{key:1,class:`reel-track`,style:(0,e.normalizeStyle)(x.value),"aria-label":`Media gallery`},[((0,e.openBlock)(!0),(0,e.createElementBlock)(e.Fragment,null,(0,e.renderList)(S.value,({fetchPriority:t,item:r,index:a})=>((0,e.openBlock)(),(0,e.createBlock)(De,{key:r.postId,active:a===f.value&&!p.value,"advance-on-media-end":s.reelAutoAdvance.enabled&&a===f.value,class:`reel-item`,entering:!1,"fetch-priority":t,index:a,item:r,"item-style":P(a),"media-card":n.mediaCard,layout:`reel`,"loaded-count":n.items.length,"media-index":n.mediaIndices.get(r.postId)??0,"media-source":n.mediaSource,"preview-state":n.previewStates.get((0,e.unref)(i)(r.postId,n.mediaIndices.get(r.postId)??0))??`loading`,"reel-controls-target":u.value,"stationary-reel-controls":``,total:n.total,onMediaChange:e=>c(`mediaChange`,r.postId,e),onEnded:e=>Y(r.postId,e),onReady:e=>c(`ready`,r.postId,e),onError:e=>c(`error`,r.postId,e)},null,8,[`active`,`advance-on-media-end`,`fetch-priority`,`index`,`item`,`item-style`,`media-card`,`loaded-count`,`media-index`,`media-source`,`preview-state`,`reel-controls-target`,`total`,`onMediaChange`,`onEnded`,`onReady`,`onError`]))),128))],4)):((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{key:0,class:`reel-forward-status`,role:n.reelForward.status===`error`?`alert`:`status`,"data-status":n.reelForward.status},[(0,e.createElementVNode)(`p`,null,(0,e.toDisplayString)(N.value),1),n.reelForward.status===`error`||n.reelForward.status===`end`?((0,e.openBlock)(),(0,e.createElementBlock)(`button`,{key:0,class:`reel-forward-retry`,type:`button`,onClick:r[0]||=e=>c(`retryForward`)},` Retry `)):(0,e.createCommentVNode)(``,!0)],8,He)),n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(m,{key:2,actions:n.feedFooterActions,"can-retry-end":n.canRetryEnd,"feed-footer":n.feedFooter,"has-error":n.nextPageError,"has-next":n.hasNext,"is-loading":n.isLoadingMore,"load-more-locked":n.loadMoreLocked,"show-load-more":M.value,state:n.state,onLoadMore:r[1]||=e=>c(`loadMore`),onRetryEnd:r[2]||=e=>c(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`has-error`,`has-next`,`is-loading`,`load-more-locked`,`show-load-more`,`state`])):(0,e.createCommentVNode)(``,!0)],40,Ve),(0,e.createElementVNode)(`div`,{ref_key:`reelControlsElement`,ref:u,class:`reel-media-controls-host`,"data-test":`reel-media-controls-host`},null,512)]),n.cardFooter&&w.value&&n.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(J,{key:1,index:f.value,item:w.value,layout:`reel`,"loaded-count":n.items.length,"media-index":T.value,"media-source":n.mediaSource,placement:`footer`,region:n.cardFooter,style:(0,e.normalizeStyle)(n.mediaCard?.footer),total:n.total},null,8,[`index`,`item`,`loaded-count`,`media-index`,`media-source`,`region`,`style`,`total`])):(0,e.createCommentVNode)(``,!0),j.value?((0,e.openBlock)(),(0,e.createBlock)(ze,{key:k.value,"duration-ms":n.reelAutoAdvance.intervalMs,label:A.value,onComplete:q},null,8,[`duration-ms`,`label`])):(0,e.createCommentVNode)(``,!0)],2))}}),Ke=[`data-info-sheet-open`,`data-info-sheet-mode`],qe=[`aria-hidden`,`inert`],Je={key:0,class:`reel-info-sheet-layer`,"data-test":`reel-info-sheet`},Ye=[`role`,`aria-modal`,`tabindex`,`data-active-post-id`],Xe=(0,e.defineComponent)({__name:`ReelLayout`,props:{forwardIndex:{default:null},forwardItem:{default:null},infoSheet:{},infoSheetEnabled:{type:Boolean},infoSheetOverlay:{type:Boolean},origin:{},initialPostId:{},mediaSource:{},reelAutoAdvance:{},reelForward:{default:()=>({error:null,status:`idle`})},canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},hasNext:{type:Boolean},infiniteScroll:{type:Boolean},isLoadingMore:{type:Boolean},items:{},loadMoreLocked:{type:Boolean},mediaCard:{},mediaIndices:{},nextPageError:{type:Boolean},previewStates:{},state:{},total:{}},emits:[`activeChange`,`closeInfoSheet`,`error`,`loadMore`,`mediaChange`,`ready`,`retryEnd`,`retryForward`],setup(n,{expose:i,emit:a}){let o=n,s=a,c=(0,e.shallowRef)(null),l=(0,e.shallowRef)(null),u=null,d=(0,e.computed)(()=>{let e=o.initialPostId===null||o.initialPostId===void 0?-1:o.items.findIndex(e=>e.postId===o.initialPostId);return Math.max(0,e)}),f=(0,e.computed)(()=>o.items[d.value]),p=(0,e.computed)(()=>f.value??(o.reelForward.status===`idle`?void 0:o.forwardItem??void 0)),m=(0,e.computed)(()=>f.value?d.value:o.forwardIndex??0),h=(0,e.computed)(()=>{let e=p.value?.postId;return e===void 0?0:o.mediaIndices.get(e)??0}),g=(0,e.computed)(()=>!!(o.infoSheet&&o.infoSheetEnabled&&p.value)),_=(0,e.computed)(()=>{let e=p.value;return e?{close:v,index:m.value,item:e,layout:`reel`,loadedCount:o.items.length,mediaCount:t(e).length,mediaIndex:h.value,mediaItem:r(e,h.value),mediaSource:o.mediaSource??`preview`,origin:o.origin,total:o.total}:null});function v(){s(`closeInfoSheet`)}function y(e){return c.value?.changeActiveMedia(e)??!1}function b(){c.value?.loadIfNearBottom()}function x(e){return c.value?.moveActivePost(e)??!1}function S(e,t){return c.value?.navigateToItem(e,t)??!1}function C(e){return c.value?.transitionActiveMedia(e)??Promise.resolve(!1)}function w(e){return c.value?.transitionActivePost(e)??Promise.resolve(!1)}function T(e,t){s(`error`,e,t)}function E(e,t){s(`mediaChange`,e,t)}function D(e,t){s(`ready`,e,t)}return(0,e.watch)(()=>({overlay:o.infoSheetOverlay,visible:g.value}),async(t,n)=>{if(t.visible&&!n?.visible){u=document.activeElement instanceof HTMLElement?document.activeElement:null,t.overlay&&(await(0,e.nextTick)(),l.value?.focus({preventScroll:!0}));return}if(!t.visible&&n?.visible&&u?.isConnected){let t=u;u=null,await(0,e.nextTick)(),t.focus({preventScroll:!0})}}),(0,e.onBeforeUnmount)(()=>{u=null}),i({changeActiveMedia:y,loadIfNearBottom:b,moveActivePost:x,navigateToItem:S,transitionActiveMedia:C,transitionActivePost:w}),(t,r)=>((0,e.openBlock)(),(0,e.createElementBlock)(`section`,{class:(0,e.normalizeClass)([`reel-layout`,`reel-layout--${n.infoSheetOverlay?`overlay`:`layout`}`]),"data-info-sheet-open":g.value||void 0,"data-info-sheet-mode":n.infoSheetOverlay?`overlay`:`layout`},[(0,e.createElementVNode)(`div`,{class:`reel-layout-main`,"aria-hidden":n.infoSheetOverlay&&g.value||void 0,inert:n.infoSheetOverlay&&g.value||void 0},[(0,e.createVNode)(Ge,{ref_key:`reelFeed`,ref:c,"can-retry-end":n.canRetryEnd,"card-footer":n.cardFooter,"card-header":n.cardHeader,"feed-footer":n.feedFooter,"feed-footer-actions":n.feedFooterActions,"media-card":n.mediaCard,"has-next":n.hasNext,"infinite-scroll":n.infiniteScroll,"initial-post-id":n.initialPostId,"is-loading-more":n.isLoadingMore,items:n.items,"load-more-locked":n.loadMoreLocked,"media-indices":n.mediaIndices,"media-source":n.mediaSource,"next-page-error":n.nextPageError,"preview-states":n.previewStates,"reel-auto-advance":n.reelAutoAdvance,"reel-forward":n.reelForward,state:n.state,total:n.total,onActiveChange:r[0]||=e=>s(`activeChange`,e),onError:T,onLoadMore:r[1]||=e=>s(`loadMore`),onMediaChange:E,onReady:D,onRetryEnd:r[2]||=e=>s(`retryEnd`),onRetryForward:r[3]||=e=>s(`retryForward`)},null,8,[`can-retry-end`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`media-card`,`has-next`,`infinite-scroll`,`initial-post-id`,`is-loading-more`,`items`,`load-more-locked`,`media-indices`,`media-source`,`next-page-error`,`preview-states`,`reel-auto-advance`,`reel-forward`,`state`,`total`])],8,qe),(0,e.createVNode)(e.Transition,{name:`vibe-info-sheet`},{default:(0,e.withCtx)(()=>[g.value&&n.infoSheet&&_.value?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,Je,[(0,e.createElementVNode)(`aside`,{ref_key:`sheetElement`,ref:l,class:`reel-info-sheet`,role:n.infoSheetOverlay?`dialog`:`complementary`,"aria-label":`Reel information`,"aria-modal":n.infoSheetOverlay?`true`:void 0,tabindex:n.infoSheetOverlay?-1:void 0,"data-active-post-id":p.value?.postId},[((0,e.openBlock)(),(0,e.createBlock)((0,e.resolveDynamicComponent)(n.infoSheet.component),(0,e.normalizeProps)((0,e.guardReactiveProps)(_.value)),null,16))],8,Ye)])):(0,e.createCommentVNode)(``,!0)]),_:1})],10,Ke))}}),Ze=[];function Qe(e){return Ze.push(e),()=>{let t=Ze.indexOf(e);t>=0&&Ze.splice(t,1)}}function $e(e){if(!e.isActive())return!1;let t=Ze.filter(e=>e.isActive()),n=e.element();return n!==null&&t.some(t=>{if(t===e)return!1;let r=t.element();return r!==null&&n.contains(r)})?!1:t.filter(e=>{let n=e.element();return n===null||!t.some(t=>{if(t===e)return!1;let r=t.element();return r!==null&&n.contains(r)})}).at(-1)===e}function et(t){let n={element:t.element,isActive:()=>t.state.layout===`reel`||t.state.reelOrigin===`masonry`},r=null;function i(e){let r=n.isActive();if(e.key===`Escape`&&r&&!$e(n))return;if(e.key===`Escape`&&t.state.reelOrigin===`masonry`){e.preventDefault(),t.state.reelInfoSheetOverlay&&t.state.reelInfoSheet.enabled&&t.setReelInfoSheet(!1),t.closeMasonryReel();return}if(e.key===`Escape`&&r&&t.state.reelInfoSheet.enabled){e.preventDefault(),t.setReelInfoSheet(!1);return}if(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||t.isReelLeaving()||!r)return;let i=e.target;if(i instanceof HTMLElement&&(i.isContentEditable||[`INPUT`,`SELECT`,`TEXTAREA`].includes(i.tagName)))return;let a=e.key===`ArrowLeft`?-1:e.key===`ArrowRight`?1:0;a!==0&&t.reelRenderer()?.changeActiveMedia?.(a)&&e.preventDefault()}(0,e.onMounted)(()=>{r=Qe(n),window.addEventListener(`keydown`,i)}),(0,e.onBeforeUnmount)(()=>{window.removeEventListener(`keydown`,i),r?.(),r=null})}var tt=35,nt=420,rt=(0,e.defineComponent)({__name:`VibeSurface`,props:{canRetryEnd:{type:Boolean},cardFooter:{},cardHeader:{},feedFooter:{},feedFooterActions:{},mediaCard:{},reelInfoSheet:{},state:{}},emits:[`activeReelChange`,`closeReel`,`loadMore`,`mediaReady`,`openReel`,`reelMediaChange`,`reelInfoSheetChange`,`retryEnd`,`retryForward`],setup(r,{expose:c,emit:l}){let u=r,d=l,f=(0,e.shallowRef)(null),p=(0,e.shallowRef)(null),m=(0,e.shallowRef)(null),h=(0,e.shallowRef)(null),g=(0,e.shallowRef)({}),v=(0,e.shallowRef)(!1),y=(0,e.shallowRef)(new Set),b=(0,e.shallowRef)(new Map),x=(0,e.shallowRef)(new Set),S=(0,e.shallowRef)(new Map),C=(0,e.shallowRef)(new Map),w=(0,e.shallowRef)(new Map),T=(0,e.computed)(()=>s(u.state)),E=(0,e.computed)(()=>u.state.reelMediaSource===`original`?w.value:C.value),D=new Set(u.state.items.map(e=>e.postId)),O=null,k=null,A=!1;function j(){return typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function M(){O!==null&&cancelAnimationFrame(O),O=requestAnimationFrame(()=>{O=requestAnimationFrame(()=>{O=null,y.value=new Set})})}function N(e,t,n){let r=i(e,t);C.value.get(r)!==n&&(C.value=new Map(C.value).set(r,n))}function P(e,t,n){let r=i(e,t);w.value.get(r)!==n&&(w.value=new Map(w.value).set(r,n))}function F(e,t){N(e,t,`error`)}function I(e,t){N(e,t,`ready`),B(e,t,`masonry`,null)}function L(e,t){P(e,t,`error`)}function R(e,t){if(u.state.reelMediaSource===`original`){L(e,t);return}F(e,t)}function z(e,t){u.state.reelMediaSource===`original`?P(e,t,`ready`):N(e,t,`ready`),B(e,t,`reel`,u.state.reelOrigin??`reel`)}function B(e,t,n,r){let i=a(u.state,e,t,n,r);i&&d(`mediaReady`,i)}function V(e,t){let r=u.state.items.find(t=>t.postId===e);if(!r)return;let i=n(r,t);(u.state.mediaIndices.get(e)??0)!==i&&(u.state.mediaIndices=new Map(u.state.mediaIndices).set(e,i))}async function ee(){await(0,e.nextTick)(),(u.state.layout===`reel`||u.state.reelOrigin===`masonry`?p.value:f.value)?.loadIfNearBottom()}function H(e){return u.state.isLoading||u.state.items.length===0||u.state.layout!==`reel`&&u.state.reelOrigin!==`masonry`?!1:p.value?.changeActiveMedia?.(e)??!1}function te(e){return u.state.isLoading||u.state.items.length===0||u.state.layout!==`reel`&&u.state.reelOrigin!==`masonry`?!1:p.value?.moveActivePost?.(e)??!1}function U(e){if(!(u.state.layout===`reel`||u.state.reelOrigin===`masonry`)||u.state.isLoading)return`reel-inactive`;let n=u.state.items.find(t=>t.postId===e.postId);if(!n)return`not-found`;let r=t(n).findIndex(t=>t.mediaId===e.mediaId);return r<0?`not-found`:p.value?.navigateToItem?.(e.postId,r)?`navigated`:`reel-inactive`}function W(){return u.state.layout!==`masonry`||u.state.reelOrigin===`masonry`?null:f.value?.getScrollElement?.()??null}function G(t,n){k=t,A=n===`keyboard`,g.value=re(t),d(`openReel`,t),(0,e.nextTick)(()=>m.value?.focus())}function K(e){let t=h.value?.querySelectorAll(`.masonry-feed [data-post-id]`)??[];return Array.from(t).find(t=>t.dataset.postId===String(e))??null}function ne(e){if(u.state.layout!==`masonry`||u.state.reelOrigin!==null||j())return 0;let t=[...new Set(e)],n=t.filter(K);if(n.length===0)return 0;let r=new Map(S.value);return n.forEach((e,t)=>{r.set(e,t*tt)}),y.value=new Set([...y.value].filter(e=>!n.includes(e))),x.value=new Set([...x.value,...t]),S.value=r,nt+(n.length-1)*tt}function q(e,t){let n=K(e),r=n?.querySelector(`.media-card-activator`)??n;r&&(r.classList.toggle(`media-card-focus-silent`,!t),t||r.addEventListener(`blur`,()=>{r.classList.remove(`media-card-focus-silent`)},{once:!0}),r?.focus({preventScroll:!0}))}function re(e){let t=h.value,n=K(e);if(t===null||n===null)return{};let r=t.getBoundingClientRect(),i=n.getBoundingClientRect();return{"--vibe-reel-origin-top":`${Math.max(0,i.top-r.top)}px`,"--vibe-reel-origin-right":`${Math.max(0,r.right-i.right)}px`,"--vibe-reel-origin-bottom":`${Math.max(0,r.bottom-i.bottom)}px`,"--vibe-reel-origin-left":`${Math.max(0,i.left-r.left)}px`}}function J(){u.state.reelOrigin===`masonry`&&(k??=u.state.activeReelPostId,v.value=!0,d(`closeReel`))}function Y(){let t=k,n=A;v.value=!1,k=null,A=!1,g.value={},(0,e.nextTick)(()=>{t!==null&&q(t,n)})}return et({closeMasonryReel:J,element:()=>h.value,isReelLeaving:()=>v.value,reelRenderer:()=>p.value,setReelInfoSheet:e=>d(`reelInfoSheetChange`,e),state:u.state}),o(u.state,e=>d(`reelMediaChange`,e)),(0,e.watch)(()=>u.state.items.map(e=>e.postId),e=>{let t=e.filter(e=>!D.has(e)),n=new Set(e);if(D=new Set(e),x.value=new Set([...x.value].filter(e=>n.has(e))),S.value=new Map([...S.value].filter(([e])=>n.has(e))),t.length===0||j())return;let r=new Map;e.forEach(e=>{let t=b.value.get(e);t!==void 0&&r.set(e,t)}),t.forEach((e,t)=>{r.set(e,t*tt)}),b.value=r,y.value=new Set([...y.value,...t]),M()},{flush:`sync`}),(0,e.onBeforeUnmount)(()=>{O!==null&&cancelAnimationFrame(O)}),c({changeActiveReelMedia:H,getAutoScrollElement:W,loadIfNearBottom:ee,moveActiveReelPost:te,navigateToReelItem:U,startItemRemoval:ne,transitionActiveReelMedia:e=>p.value?.transitionActiveMedia?.(e)??Promise.resolve(!1),transitionActiveReelPost:e=>p.value?.transitionActivePost?.(e)??Promise.resolve(!1)}),(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{ref_key:`surfaceElement`,ref:h,class:`vibe-surface`},[r.state.layout===`reel`&&(r.state.items.length>0||r.state.reelForward.status!==`idle`)?((0,e.openBlock)(),(0,e.createBlock)(Xe,{key:0,ref_key:`reelRenderer`,ref:p,"can-retry-end":r.canRetryEnd,"has-next":r.state.next!==null,"card-footer":r.cardFooter,"card-header":r.cardHeader,"feed-footer":r.feedFooter,"feed-footer-actions":r.feedFooterActions,"forward-index":r.state.reelForwardIndex,"forward-item":r.state.reelForwardItem,"media-card":r.mediaCard,"infinite-scroll":r.state.infiniteScroll,"is-loading-more":r.state.isLoadingMore,items:r.state.items,"load-more-locked":r.state.loadMoreLocked,"media-source":r.state.reelMediaSource,"media-indices":r.state.mediaIndices,"initial-post-id":r.state.activeReelPostId,"info-sheet":r.reelInfoSheet,"info-sheet-enabled":r.state.reelInfoSheet.enabled,"info-sheet-overlay":r.state.reelInfoSheetOverlay,"next-page-error":!!r.state.nextPageError,origin:`reel`,"preview-states":E.value,"reel-auto-advance":r.state.reelAutoAdvance,"reel-forward":r.state.reelForward,state:T.value,total:r.state.total,onActiveChange:n[0]||=e=>d(`activeReelChange`,e),onCloseInfoSheet:n[1]||=e=>d(`reelInfoSheetChange`,!1),onError:R,onLoadMore:n[2]||=e=>d(`loadMore`),onMediaChange:V,onReady:z,onRetryEnd:n[3]||=e=>d(`retryEnd`),onRetryForward:n[4]||=e=>d(`retryForward`)},null,8,[`can-retry-end`,`has-next`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`forward-index`,`forward-item`,`media-card`,`infinite-scroll`,`is-loading-more`,`items`,`load-more-locked`,`media-source`,`media-indices`,`initial-post-id`,`info-sheet`,`info-sheet-enabled`,`info-sheet-overlay`,`next-page-error`,`preview-states`,`reel-auto-advance`,`reel-forward`,`state`,`total`])):r.state.error||r.state.isLoading||r.state.items.length===0&&r.state.reelForward.status===`idle`?((0,e.openBlock)(),(0,e.createBlock)(_,{key:1,actions:r.feedFooterActions,"can-retry-end":r.canRetryEnd,"feed-footer":r.feedFooter,state:T.value,onLoadMore:n[5]||=e=>d(`loadMore`),onRetryEnd:n[6]||=e=>d(`retryEnd`)},null,8,[`actions`,`can-retry-end`,`feed-footer`,`state`])):((0,e.openBlock)(),(0,e.createElementBlock)(e.Fragment,{key:2},[(0,e.createVNode)(Fe,{ref_key:`masonryRenderer`,ref:f,"can-retry-end":r.canRetryEnd,"entering-post-ids":y.value,"entry-delays":b.value,"leaving-post-ids":x.value,"removal-delays":S.value,"card-footer":r.cardFooter,"card-header":r.cardHeader,"feed-footer":r.feedFooter,"feed-footer-actions":r.feedFooterActions,"media-card":r.mediaCard,"has-next":r.state.next!==null,"infinite-scroll":r.state.infiniteScroll,"is-loading-more":r.state.isLoadingMore,items:r.state.items,"load-more-locked":r.state.loadMoreLocked,"media-indices":r.state.mediaIndices,"next-page-error":!!r.state.nextPageError,"preview-states":C.value,suspended:r.state.reelOrigin===`masonry`||v.value,state:T.value,total:r.state.total,onActivate:G,onError:F,onLoadMore:n[7]||=e=>d(`loadMore`),onMediaChange:V,onReady:I,onRetryEnd:n[8]||=e=>d(`retryEnd`)},null,8,[`can-retry-end`,`entering-post-ids`,`entry-delays`,`leaving-post-ids`,`removal-delays`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`media-card`,`has-next`,`infinite-scroll`,`is-loading-more`,`items`,`load-more-locked`,`media-indices`,`next-page-error`,`preview-states`,`suspended`,`state`,`total`]),(0,e.createVNode)(e.Transition,{name:`vibe-reel-viewer`,onAfterLeave:Y},{default:(0,e.withCtx)(()=>[r.state.reelOrigin===`masonry`?((0,e.openBlock)(),(0,e.createElementBlock)(`section`,{key:0,ref_key:`reelOverlay`,ref:m,class:`vibe-reel-overlay`,role:`dialog`,"aria-label":`Media viewer`,"aria-modal":`true`,tabindex:`-1`,style:(0,e.normalizeStyle)(g.value)},[(0,e.createVNode)(Xe,{ref_key:`reelRenderer`,ref:p,"can-retry-end":r.canRetryEnd,"card-footer":r.cardFooter,"card-header":r.cardHeader,"feed-footer":r.feedFooter,"feed-footer-actions":r.feedFooterActions,"forward-index":r.state.reelForwardIndex,"forward-item":r.state.reelForwardItem,"media-card":r.mediaCard,"has-next":r.state.next!==null,"infinite-scroll":r.state.infiniteScroll,"initial-post-id":r.state.activeReelPostId,"info-sheet":r.reelInfoSheet,"info-sheet-enabled":r.state.reelInfoSheet.enabled,"info-sheet-overlay":r.state.reelInfoSheetOverlay,"is-loading-more":r.state.isLoadingMore,items:r.state.items,"load-more-locked":r.state.loadMoreLocked,"media-indices":r.state.mediaIndices,"media-source":`original`,"next-page-error":!!r.state.nextPageError,origin:`masonry`,"preview-states":w.value,"reel-auto-advance":r.state.reelAutoAdvance,"reel-forward":r.state.reelForward,state:T.value,total:r.state.total,onActiveChange:n[9]||=e=>d(`activeReelChange`,e),onCloseInfoSheet:n[10]||=e=>d(`reelInfoSheetChange`,!1),onError:L,onLoadMore:n[11]||=e=>d(`loadMore`),onMediaChange:V,onReady:z,onRetryEnd:n[12]||=e=>d(`retryEnd`),onRetryForward:n[13]||=e=>d(`retryForward`)},null,8,[`can-retry-end`,`card-footer`,`card-header`,`feed-footer`,`feed-footer-actions`,`forward-index`,`forward-item`,`media-card`,`has-next`,`infinite-scroll`,`initial-post-id`,`info-sheet`,`info-sheet-enabled`,`info-sheet-overlay`,`is-loading-more`,`items`,`load-more-locked`,`media-indices`,`next-page-error`,`preview-states`,`reel-auto-advance`,`reel-forward`,`state`,`total`])],4)):(0,e.createCommentVNode)(``,!0)]),_:1})],64))],512))}});function it(e){if(!e||typeof e!=`object`||!Array.isArray(e.items))throw TypeError(`Vibe loadPage must resolve to a page with an items array.`);if(e.next!==null&&typeof e.next!=`string`&&typeof e.next!=`number`)throw TypeError(`Vibe page next must be a string, number, or null.`);if(e.total!==void 0&&(!Number.isFinite(e.total)||e.total<0))throw TypeError(`Vibe page total must be a non-negative number when provided.`);return e}function X(e,t){let n=new Set(e.map(e=>e.postId));return[...e,...t.filter(e=>n.has(e.postId)?!1:(n.add(e.postId),!0))]}var at=2e3,ot=1e4,st=250,Z={delayRemainingMs:null,nextRequestAt:null};function ct(e,t){return e===void 0?t:Math.floor(e)}function lt(e,t){for(let[n,r]of[[`delayStepMs`,e.delayStepMs],[`delayMaxMs`,e.delayMaxMs]])if(r!==void 0&&(!Number.isFinite(r)||r<0))throw TypeError(`Vibe ${t} ${n} must be a non-negative number.`)}function ut(e,t={}){let n=ct(t.delayStepMs,at),r=ct(t.delayMaxMs,ot);return Math.min(Math.max(0,e)*n,r)}function Q(e){if(e==null||!Number.isFinite(e))return{...Z};let t=Math.max(0,Math.floor(e-Date.now()));return t>0?{delayRemainingMs:t,nextRequestAt:e}:{...Z}}async function dt({delayMs:e,onChange:t,signal:n}){if(n.aborted)throw new DOMException(`Aborted`,`AbortError`);if(e<=0){t({...Z});return}let r=Date.now()+e;t({delayRemainingMs:e,nextRequestAt:r}),await new Promise((i,a)=>{let o=!1,s=setInterval(f,st),c=setTimeout(()=>u(),e);function l(){clearInterval(s),clearTimeout(c),n.removeEventListener(`abort`,d),t({...Z})}function u(e){o||(o=!0,l(),e?a(e):i())}function d(){u(new DOMException(`Aborted`,`AbortError`))}function f(){let e=Q(r);t(e),e.delayRemainingMs===null&&u()}n.addEventListener(`abort`,d,{once:!0})})}var ft=class{interval=null;constructor(e){this.onChange=e}clear(){this.interval!==null&&clearInterval(this.interval),this.interval=null,this.onChange({...Z})}sync(e){this.clear();let t=Q(e);this.onChange(t),t.delayRemainingMs!==null&&(this.interval=setInterval(()=>{let t=Q(e);this.onChange(t),t.delayRemainingMs===null&&this.clear()},st))}};function pt(e,t=!0){return e.maxAdditionalPages===`unlimited`?1/0:(e.maxAdditionalPages??10)+(t?1:0)}function mt(e){return`${typeof e}:${String(e)}`}function ht(e,t){if(!Number.isInteger(e)||e<=0)throw TypeError(`Vibe ${t} must be a positive integer.`)}function gt(e){if(!e)return;if(ht(e.pageSize,`autofill pageSize`),e.strategy===`frontend`){lt(e,`frontend autofill`);let t=e.maxAdditionalPages;if(t!==void 0&&t!==`unlimited`&&(!Number.isInteger(t)||t<0))throw TypeError(`Vibe autofill maxAdditionalPages must be a non-negative integer or "unlimited".`);return}if(!e.feedKey.trim())throw TypeError(`Vibe backend autofill requires a feedKey.`);let t=e.initialSession;if(t){if(t.feedKey!==e.feedKey)throw TypeError(`Vibe backend autofill initialSession feedKey must match autofill feedKey.`);if(t.pageSize!==e.pageSize)throw TypeError(`Vibe backend autofill initialSession pageSize must match autofill pageSize.`)}}function _t(e,t,n=!0){if(!e)return{cycleId:null,delayRemainingMs:null,enabled:!1,error:null,feedKey:null,missing:0,nextRequestAt:null,pageSize:null,received:0,requests:0,sequence:0,sessionId:null,status:`idle`,strategy:null};let r=e.strategy===`backend`?t??(n?e.initialSession:void 0):void 0,i=r?.received??0,a=Q(r?.nextRequestAt);return{cycleId:r?.cycleId??null,...a,enabled:!0,error:r?.error??null,feedKey:e.strategy===`backend`?e.feedKey:null,missing:Math.max(0,e.pageSize-i),pageSize:e.pageSize,received:i,requests:r?.requests??0,sequence:r?.sequence??0,sessionId:r?.sessionId??null,status:r?r.status:`idle`,strategy:e.strategy}}function $(e){return[`cancelling`,`filling`,`restoring`,`waiting`].includes(e.status)}async function vt(e,t,n){let r=t.autofill;if(!$(r)||!r.cycleId)return;let i={cycleId:r.cycleId,feedKey:r.feedKey??``,sessionId:r.sessionId};n(),r.status=`cancelling`;try{e?.strategy===`backend`&&await e.onCancel(i),r.error=null,r.status=`cancelled`}catch(e){throw r.error=e,r.status=`error`,e}}function yt(e,t,n){return e?.strategy===`backend`&&t.feedKey===e.feedKey&&t.sessionId===n.sessionId}async function bt({existingItems:e,initialCursor:t,loadPage:n,maximumRequests:r,onCollection:i,onDelayChange:a,onProgress:o,options:s,receivedOffset:c=0,requestOffset:l=0,signal:u}){let d=[],f=[...e],p=new Set,m=r??pt(s),h=t,g=t,_=0,v;for(;_<m;){let e=mt(h);if(p.has(e))throw Error(`Vibe autofill received a repeated cursor.`);p.add(e),await dt({delayMs:ut(l+_,s),onChange:a,signal:u});let t=it(await n({cursor:h,signal:u}));_+=1;let r=X(f,t.items).slice(f.length);f.push(...r),d.push(...r),g=t.next,t.total!==void 0&&(v=t.total);let m={missing:Math.max(0,s.pageSize-c-d.length),next:g,received:c+d.length,requests:l+_};o(m);let y={...m,items:[...d],lastCursor:h,total:v};if(i(y),m.missing===0)return{...y,status:`complete`};if(g===null)return{...y,status:`exhausted`};h=g}return{items:d,lastCursor:h,missing:Math.max(0,s.pageSize-c-d.length),next:g,received:c+d.length,requests:l+_,status:`exhausted`,total:v}}var xt=class{collection=null;cycle=0;delayCountdown;constructor(e){this.context=e,this.delayCountdown=new ft(t=>Object.assign(e.state.autofill,t)),this.syncCountdown()}beginCycle(){let{options:e,state:t}=this.context;if(!e)return``;this.clear();let n=`vibe-autofill-${Date.now().toString(36)}-${++this.cycle}`;return t.autofill={..._t(e,void 0,!1),cycleId:n,status:`filling`},n}async cancel(){let{cancelRequest:e,options:t,state:n}=this.context;await vt(t,n,e),this.commitCollection()}captureCollection(e,t){t&&(this.collection=e)}clear(){this.delayCountdown.clear(),this.collection=null}clearCountdown(){this.delayCountdown.clear()}clearCollection(){this.collection=null}syncCountdown(){let{autofill:e}=this.context.state;this.delayCountdown.sync(e.strategy===`backend`&&e.status===`waiting`?e.nextRequestAt:null)}commitCollection(){let{onLastCursor:e,options:t,state:n}=this.context;if(t?.strategy!==`frontend`)return;let r=this.collection;this.collection=null,r&&(n.items=X(n.items,r.items),e(r.lastCursor),n.next=r.next,r.total!==void 0&&(n.total=r.total),Object.assign(n.autofill,{missing:r.missing,received:r.received,requests:r.requests}))}},St=100;function Ct(e,t){if(!Number.isFinite(t)||t<=0)throw TypeError(`Vibe ${e} must be a positive number.`)}function wt(e,t,n){return Math.min(n,Math.max(t,e))}function Tt(e){if(!e)return;let t=e.minSpeedPxPerSecond??20,n=e.maxSpeedPxPerSecond??240;if(Ct(`autoScroll.minSpeedPxPerSecond`,t),Ct(`autoScroll.maxSpeedPxPerSecond`,n),t>n)throw TypeError(`Vibe autoScroll.minSpeedPxPerSecond cannot exceed maxSpeedPxPerSecond.`);e.speedPxPerSecond!==void 0&&Ct(`autoScroll.speedPxPerSecond`,e.speedPxPerSecond)}function Et(e){let t=e?.minSpeedPxPerSecond??20,n=e?.maxSpeedPxPerSecond??240;return{enabled:e?.enabled??!1,maxSpeedPxPerSecond:n,minSpeedPxPerSecond:t,paused:!1,speedPxPerSecond:wt(e?.speedPxPerSecond??80,t,n)}}var Dt=class{frame=null;lastTimestamp=null;mounted=!1;constructor(e){this.options=e}mount(){this.mounted=!0,this.schedule()}destroy(){this.mounted=!1,this.cancelFrame()}setEnabled(e,t){t!==void 0&&this.setSpeed(t),this.options.state.enabled=e,this.options.state.paused=!1,this.lastTimestamp=null,e?this.schedule():this.cancelFrame()}setPaused(e){this.options.state.enabled&&(this.options.state.paused=e,this.lastTimestamp=null,e?this.cancelFrame():this.schedule())}setSpeed(e){Ct(`auto-scroll speed`,e);let t=this.options.state;t.speedPxPerSecond=wt(e,t.minSpeedPxPerSecond,t.maxSpeedPxPerSecond)}tick=e=>{this.frame=null;let t=this.options.state;if(!this.mounted||!t.enabled)return;let n=t.paused?null:this.options.getScrollElement();if(!n){this.lastTimestamp=null,this.schedule();return}if(this.lastTimestamp!==null){let r=Math.min(St,Math.max(0,e-this.lastTimestamp)),i=Math.max(0,n.scrollHeight-n.clientHeight);n.scrollTop=Math.min(i,n.scrollTop+t.speedPxPerSecond*r/1e3)}this.lastTimestamp=e,this.schedule()};schedule(){!this.mounted||!this.options.state.enabled||this.frame!==null||typeof requestAnimationFrame==`function`&&(this.frame=requestAnimationFrame(this.tick))}cancelFrame(){this.frame!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(this.frame),this.frame=null,this.lastTimestamp=null}};async function Ot(e,t,n,r){let i=await e.onUnderfilled(n);if(!r())return;if(!i.sessionId.trim())throw TypeError(`Vibe backend autofill requires a sessionId.`);let a=Math.max(n.received,i.received??n.received);Object.assign(t.autofill,{...Q(i.nextRequestAt),missing:Math.max(0,e.pageSize-a),received:a,sequence:i.sequence??0,sessionId:i.sessionId,status:`waiting`})}function kt(e,t){[`complete`,`exhausted`].includes(t.status)&&t.items&&(e.items=X(e.items,t.items)),t.next!==void 0&&(e.next=t.next),t.total!==void 0&&(e.total=t.total)}function At(e,t,n){let r=t.autofill;return!yt(e,n,r)||n.sequence<=r.sequence||[`cancelled`,`cancelling`].includes(r.status)||[`complete`,`exhausted`].includes(n.status)&&n.next===void 0?!1:(kt(t,n),Object.assign(r,Q(n.status===`waiting`?n.nextRequestAt:null)),r.error=n.error??null,r.missing=Math.max(0,(r.pageSize??0)-n.received),r.received=n.received,n.requests!==void 0&&(r.requests=n.requests),r.sequence=n.sequence,r.status=n.status,!0)}function jt(e,t,n){return e?.strategy!==`backend`||n.feedKey!==e.feedKey||n.pageSize!==e.pageSize?!1:(t.autofill=_t(e,n),kt(t,n),!0)}async function Mt({cycleId:e,isCurrent:t,onCollection:n,onLastCursor:r,options:i,signal:a,state:o}){let s=i.autofill;if(!s)return;let c=o.items.length;if(Object.assign(o.autofill,{missing:Math.max(0,s.pageSize-c),received:c,requests:1}),c>=s.pageSize){o.autofill.status=`complete`;return}if(s.strategy===`backend`){await Ot(s,o,{cycleId:e,feedKey:s.feedKey,items:[...o.items],missing:s.pageSize-c,next:o.next,pageSize:s.pageSize,received:c,signal:a,total:o.total},t);return}if(!i.loadPage||o.next===null){o.autofill.status=`exhausted`;return}let l=await bt({existingItems:o.items,initialCursor:o.next,loadPage:i.loadPage,maximumRequests:pt(s,!1),onCollection:n,onDelayChange:e=>{t()&&Object.assign(o.autofill,e)},onProgress:e=>{t()&&Object.assign(o.autofill,e,{status:`filling`})},options:s,receivedOffset:c,requestOffset:1,signal:a});t()&&(o.items=X(o.items,l.items),o.next=l.next,l.total!==void 0&&(o.total=l.total),r(l.lastCursor),Object.assign(o.autofill,{missing:l.missing,received:l.received,requests:l.requests,status:l.status}))}function Nt(e){return`pages`in e?{pages:e.pages}:{until:`end`}}function Pt(e){return`${typeof e}:${String(e)}`}function Ft(e){if(!e||typeof e!=`object`)throw TypeError(`Vibe fill target must be an object.`);if(`pages`in e){if(!Number.isInteger(e.pages)||e.pages<=0)throw TypeError(`Vibe fill pages must be a positive integer.`);return{pages:e.pages}}if(`until`in e&&e.until===`end`)return{until:`end`};throw TypeError(`Vibe fill target must be { pages } or { until: 'end' }.`)}function It(e){if(!e)return;if(e.strategy===`frontend`){lt(e,`frontend fill`);return}if(!e.feedKey.trim())throw TypeError(`Vibe backend fill requires a feedKey.`);let t=e.initialSession;if(t){if(t.feedKey!==e.feedKey)throw TypeError(`Vibe backend fill initialSession feedKey must match fill feedKey.`);Ft(t.target)}}function Lt(e,t,n=!0){let r=e?.strategy===`backend`&&n?e.initialSession:void 0,i=t??r,a=Q(i?.nextRequestAt);return{completedPages:i?.completedPages??0,cycleId:i?.cycleId??null,...a,enabled:!!e,error:i?.error??null,feedKey:e?.strategy===`backend`?e.feedKey:null,received:i?.received??0,sequence:i?.sequence??0,sessionId:i?.sessionId??null,status:i?.status??`idle`,strategy:e?.strategy??null,target:i?Nt(i.target):null}}function Rt(e){return[`cancelling`,`filling`,`restoring`,`waiting`].includes(e.status)}async function zt({existingItems:e,initialCursor:t,loadPage:n,onDelayChange:r,onProgress:i,options:a,signal:o,target:s}){let c=[],l=[...e],u=new Set,d=0,f=t,p=t,m=0,h;for(;p!==null;){let e=Pt(f);if(u.has(e))throw Error(`Vibe fill received a repeated cursor.`);u.add(e),await dt({delayMs:ut(d,a),onChange:r,signal:o});let t=it(await n({cursor:f,signal:o}));d+=1;let g=X(l,t.items).slice(l.length);if(l.push(...g),c.push(...g),m=c.length,p=t.next,t.total!==void 0&&(h=t.total),i({completedPages:d,next:p,received:m}),`pages`in s&&d>=s.pages)return{completedPages:d,items:c,lastCursor:f,next:p,received:m,status:`complete`,total:h};if(p===null)return{completedPages:d,items:c,lastCursor:f,next:p,received:m,status:`pages`in s?`exhausted`:`complete`,total:h};f=p}return{completedPages:d,items:c,lastCursor:f,next:null,received:m,status:`pages`in s?`exhausted`:`complete`,total:h}}async function Bt(e,t,n,r){let i=await e.onStart(n);if(r()){if(!i.sessionId.trim())throw TypeError(`Vibe backend fill requires a sessionId.`);Object.assign(t.fill,{...Q(i.nextRequestAt),completedPages:i.completedPages??0,received:i.received??0,sequence:i.sequence??0,sessionId:i.sessionId,status:`waiting`})}}function Vt(e,t,n){return e?.strategy===`backend`&&n.feedKey===e.feedKey&&n.sessionId===t.fill.sessionId}function Ht(e){return Number.isInteger(e.completedPages)&&e.completedPages>=0&&Number.isInteger(e.received)&&e.received>=0&&Number.isInteger(e.sequence)&&e.sequence>=0}function Ut(e,t){if(![`complete`,`exhausted`].includes(t.status))return!0;let n=e.fill.target;return!n||!Array.isArray(t.items)||t.next===void 0||t.lastCursor===void 0?!1:t.status===`exhausted`?`pages`in n&&t.completedPages<n.pages&&t.next===null:`pages`in n?t.completedPages===n.pages:t.next===null}function Wt(e,t,n){t.total!==void 0&&(e.total=t.total),[`complete`,`exhausted`].includes(t.status)&&(e.items=X(e.items,t.items??[]),e.next=t.next??null,n(t.lastCursor??null))}function Gt(e,t,n,r){return!Vt(e,t,n)||!Ht(n)||n.sequence<=t.fill.sequence||[`cancelled`,`cancelling`].includes(t.fill.status)||!Ut(t,n)?!1:(Wt(t,n,r),Object.assign(t.fill,{...Q(n.status===`waiting`?n.nextRequestAt:null),completedPages:n.completedPages,error:n.error??null,received:n.received,sequence:n.sequence,status:n.status}),!0)}function Kt(e,t,n,r){if(e?.strategy!==`backend`||n.feedKey!==e.feedKey)return!1;let i=t.fill;return t.fill=Lt(e,n),!Ht(n)||!Ut(t,n)?(t.fill=i,!1):(Wt(t,n,r),!0)}var qt=class{abortController=null;cycle=0;delayCountdown;requestVersion=0;constructor(e){this.options=e,this.delayCountdown=new ft(e=>{Object.assign(this.options.state.fill,e)}),this.syncBackendCountdown()}isActive(){return Rt(this.options.state.fill)}applyUpdate(e){let t=Gt(this.options.fill,this.options.state,e,this.options.onLastCursor);return t&&this.syncBackendCountdown(),t}restoreSession(e){let t=Kt(this.options.fill,this.options.state,e,this.options.onLastCursor);return t&&this.syncBackendCountdown(),t}async start(e){let t=this.options.fill;if(!t)throw Error(`Vibe fill is not configured.`);if(this.isActive())throw Error(`Vibe fill is already active.`);let n=Ft(e),r=`vibe-fill-${Date.now().toString(36)}-${++this.cycle}`;if(this.options.state.fill={...Lt(t,void 0,!1),cycleId:r,status:`filling`,target:n},this.options.state.next===null){this.options.state.fill.status=`pages`in n?`exhausted`:`complete`;return}let i=++this.requestVersion,a=new AbortController;this.abortController=a;try{t.strategy===`frontend`?await this.startFrontend(t,n,a,i):(await Bt(t,this.options.state,{cycleId:r,feedKey:t.feedKey,items:[...this.options.state.items],next:this.options.state.next,signal:a.signal,target:n,total:this.options.state.total},()=>this.isCurrent(i)),this.syncBackendCountdown())}catch(e){if(a.signal.aborted||!this.isCurrent(i))return;throw this.options.state.fill.error=e,this.options.state.fill.status=`error`,e}finally{this.isCurrent(i)&&(this.abortController=null,this.options.state.isLoadingMore=!1)}}async cancel(){let{fill:e,state:t}=this.options;if(!Rt(t.fill)||!t.fill.cycleId)return;let n={cycleId:t.fill.cycleId,feedKey:t.fill.feedKey??``,sessionId:t.fill.sessionId};t.fill.status=`cancelling`,this.delayCountdown.clear(),this.abortController?.abort(),this.requestVersion+=1,this.abortController=null,t.isLoadingMore=!1;try{e?.strategy===`backend`&&await e.onCancel(n),t.fill.error=null,t.fill.status=`cancelled`}catch(e){throw t.fill.error=e,t.fill.status=`error`,e}}reset(){this.abortLocalRequest(),this.delayCountdown.clear(),this.options.state.fill=Lt(this.options.fill,void 0,!1)}destroy(){this.abortLocalRequest(),this.delayCountdown.clear()}abortLocalRequest(){this.requestVersion+=1,this.abortController?.abort(),this.abortController=null,this.options.state.isLoadingMore=!1}isCurrent(e){return e===this.requestVersion&&![`cancelled`,`cancelling`].includes(this.options.state.fill.status)}async startFrontend(e,t,n,r){let i=this.options.loadPage;if(!i)throw Error(`Vibe frontend fill requires loadPage.`);let a=this.options.state;a.isLoadingMore=!0;let o=await zt({existingItems:a.items,initialCursor:a.next,loadPage:i,onDelayChange:e=>{this.isCurrent(r)&&Object.assign(a.fill,e)},onProgress:e=>{this.isCurrent(r)&&Object.assign(a.fill,e)},options:e,signal:n.signal,target:t});this.isCurrent(r)&&(a.items=X(a.items,o.items),a.next=o.next,o.total!==void 0&&(a.total=o.total),this.options.onLastCursor(o.lastCursor),Object.assign(a.fill,{completedPages:o.completedPages,received:o.received,status:o.status}))}syncBackendCountdown(){let e=this.options.state.fill;this.delayCountdown.sync(e.strategy===`backend`&&e.status===`waiting`?e.nextRequestAt:null)}};function Jt(e){return{cancelAutofill:()=>e.cancelAutofill(),loadMore:()=>e.loadNext(),retry:()=>e.reload(),retryEnd:()=>e.retryEnd()}}function Yt(e){if(!Number.isFinite(e)||e<=0)throw TypeError(`Vibe reelAutoAdvance.intervalMs must be a positive number.`)}function Xt(e){e?.intervalMs!==void 0&&Yt(e.intervalMs)}function Zt(e){return{enabled:e?.enabled??!1,includePostItems:e?.includePostItems??!1,intervalMs:e?.intervalMs??5e3}}function Qt(e,t){if(typeof t==`boolean`){e.enabled=t;return}Xt(t),t.enabled!==void 0&&(e.enabled=t.enabled),t.includePostItems!==void 0&&(e.includePostItems=t.includePostItems),t.intervalMs!==void 0&&(e.intervalMs=t.intervalMs)}function $t(e){return{enabled:e?.enabled??!1}}function en(e,t,n){if(n&&!t)throw Error(`Vibe cannot enable reelInfoSheet without a configured component.`);e.enabled=n}function tn(e,t){let n=e.initialPage;return{activeReelPostId:null,autoScroll:Et(e.autoScroll),autofill:_t(e.autofill),error:null,fill:Lt(e.fill),infiniteScroll:e.infiniteScroll??!0,isLoading:!n,isLoadingMore:!1,items:n?X([],n.items):[],layout:t===`reel`?`reel`:`masonry`,loadMoreLocked:!1,mediaIndices:new Map,next:n?.next??null,nextPageError:null,reelAutoAdvance:Zt(e.reelAutoAdvance),reelForward:{error:null,status:`idle`},reelForwardIndex:null,reelForwardItem:null,reelInfoSheet:$t(e.reelInfoSheet),reelInfoSheetOverlay:!1,reelMediaSource:`original`,reelOrigin:null,total:n?.total??null}}function nn(e,t){if(t){if(!Number.isFinite(t.height)||t.height<=0)throw TypeError(`Vibe ${e} height must be a positive number.`);if(t.background!==void 0&&t.background!==`default`&&t.background!==`transparent`)throw TypeError(`Vibe ${e} background must be "default" or "transparent".`)}}function rn(e,t){if(t){if(t.background!==void 0&&t.background!==`default`&&t.background!==`transparent`)throw TypeError(`Vibe mediaCard ${e} background must be "default" or "transparent".`);for(let[n,r]of[[`paddingX`,t.paddingX],[`paddingY`,t.paddingY]])if(r!==void 0&&(!Number.isFinite(r)||r<0))throw TypeError(`Vibe mediaCard ${e} ${n} must be a non-negative number.`)}}function an(e){if(Tt(e.autoScroll),nn(`cardHeader`,e.cardHeader),nn(`cardFooter`,e.cardFooter),rn(`header`,e.mediaCard?.header),rn(`footer`,e.mediaCard?.footer),gt(e.autofill),It(e.fill),Xt(e.reelAutoAdvance),e.removalHistoryLimit!==void 0&&(!Number.isInteger(e.removalHistoryLimit)||e.removalHistoryLimit<0))throw TypeError(`Vibe removalHistoryLimit must be a non-negative integer.`);if(!e.initialPage&&!e.loadPage)throw TypeError(`Vibe requires either initialPage or loadPage.`);if(e.initialPage?.next!==null&&!e.loadPage)throw TypeError(`Vibe requires loadPage when initialPage has a next cursor.`);if(e.fill?.strategy===`frontend`&&!e.loadPage)throw TypeError(`Vibe frontend fill requires loadPage.`);if(e.fill?.strategy===`backend`&&e.fill.initialSession&&!e.initialPage)throw TypeError(`Vibe backend fill restoration requires initialPage.`)}function on(e){if(typeof e!=`string`)return e;if(typeof document>`u`)throw Error(`Vibe cannot resolve a selector without a document.`);let t=document.querySelector(e);if(!t)throw Error(`Vibe target not found: ${e}`);return t}function sn(e,t,n,r,i){let a=new Set(t.map(({item:e})=>e.postId));if(e.activeReelPostId===null||!a.has(e.activeReelPostId))return;let o=e.items[Math.max(n,0)];if(o){r(o.postId);return}let s=t.find(({item:t})=>t.postId===e.activeReelPostId)?.item;s&&i(Math.max(n,0),s)}function cn(e,t){let[n,...r]=t;if(!n)throw Error(`Vibe items must contain at least one media asset.`);return{...e,...n,items:r}}function ln(e){if(!Number.isInteger(e.mediaIndex)||e.mediaIndex<0)throw TypeError(`Vibe mediaIndex must be a non-negative integer.`)}var un=class{generation=0;metadata=new WeakMap;state;constructor(e){this.options=e,this.state=e.state}remove(e){ln(e);let n=this.state.items.findIndex(({postId:t})=>t===e.postId),r=this.state.items[n];if(!r)return null;let i=[...t(r)],a=i[e.mediaIndex];if(!a)return null;let o=Object.freeze({media:a,mediaIndex:e.mediaIndex,postId:e.postId,postIndex:n});this.metadata.set(o,{generation:this.generation,originalItem:r,restored:!1});let s=this.state.mediaIndices.get(r.postId)??0,c=this.isReelOpen()&&this.state.activeReelPostId===r.postId,l=c&&s===e.mediaIndex;return i.splice(e.mediaIndex,1),i.length>0?(this.state.items[n]=cn(r,i),this.updateMediaIndexAfterRemoval(r.postId,e.mediaIndex,l),o):(this.state.items.splice(n,1),this.state.mediaIndices.delete(r.postId),c&&this.advanceFromRemovedPost(o,r),o)}reset(){this.generation+=1}restore(e){let t=this.metadata.get(e);if(!t)throw TypeError(`Vibe media removal does not belong to this instance.`);if(t.generation!==this.generation||t.restored)return!1;t.restored=!0;let n=this.state.items.findIndex(({postId:t})=>t===e.postId);return n>=0?this.restoreIntoPost(n,e):this.state.items.splice(Math.min(e.postIndex,this.state.items.length),0,t.originalItem),this.options.reelForward.cancel(e)&&(this.state.mediaIndices.set(e.postId,e.mediaIndex),this.options.onActivate(e.postId)),!0}advanceFromRemovedPost(e,t){let n=this.state.items[e.postIndex];if(n){this.options.onActivate(n.postId);return}this.options.reelForward.start(e,e.postIndex,t)}isReelOpen(){return this.state.layout===`reel`||this.state.reelOrigin===`masonry`}restoreIntoPost(e,n){let r=this.state.items[e],i=[...t(r)],a=Math.min(n.mediaIndex,i.length);if(i.splice(a,0,n.media),this.state.items[e]=cn(r,i),this.state.activeReelPostId!==n.postId)return;let o=this.state.mediaIndices.get(n.postId)??0;o>=a&&this.state.mediaIndices.set(n.postId,o+1)}updateMediaIndexAfterRemoval(e,n,r){let i=this.state.items.find(t=>t.postId===e);if(!i)return;let a=t(i).length,o=this.state.mediaIndices.get(e)??0,s=o;r?s=n<a?n:0:n<o&&(s=o-1),this.state.mediaIndices.set(e,Math.min(s,a-1))}};function dn(e,t){let n=new Set(t);return e.flatMap((e,t)=>n.has(e.postId)?[{index:t,item:e}]:[])}function fn(e,t){let n=new Set(t.map(({item:e})=>e.postId));return e.filter(e=>!n.has(e.postId))}function pn(e,t){t.forEach(({index:e})=>{if(!Number.isInteger(e)||e<0)throw Error(`Vibe item restore indexes must be non-negative integers.`)});let n=[...e],r=new Set(e.map(e=>e.postId));return[...t].sort((e,t)=>e.index-t.index).forEach(({index:e,item:t})=>{r.has(t.postId)||(n.splice(Math.min(e,n.length),0,t),r.add(t.postId))}),n}var mn=20,hn=class{generation=0;historyLimit;metadata=new WeakMap;state;history=[];itemOrder;stopItemsWatcher;constructor(t){this.options=t,this.historyLimit=t.historyLimit??mn,this.state=t.state,this.itemOrder=this.state.items.map(({postId:e})=>e),this.stopItemsWatcher=(0,e.watch)(()=>this.state.items,e=>this.appendUnknownItems(e),{flush:`sync`})}destroy(){this.reset(),this.stopItemsWatcher()}async remove(e){let t=this.collectOrderedPlacements(e),n=this.createRemoval(t);if(t.length===0)return n;let r=t.map(({item:e})=>e.postId);if(await this.options.prepareRemoval(r),this.metadata.get(n)?.generation!==this.generation)return n;let i=this.options.startRemoval(r);if(i>0&&await new Promise(e=>setTimeout(e,i)),this.metadata.get(n)?.generation!==this.generation)return n;let a=this.state.items.findIndex(e=>e.postId===this.state.activeReelPostId),o=new Set(t.map(({item:e})=>e.postId)),s=a<0?0:this.state.items.slice(0,a).filter(({postId:e})=>o.has(e)).length,c=Math.max(a-s,0);return this.state.items=fn(this.state.items,t),this.options.onItemsRemoved(n,t,c),this.record(n),n}reset(){this.generation+=1,this.history=[],this.itemOrder=[]}restoreItems(e){let t=e;if(this.metadata.has(t)){this.restoreRemoval(t);return}let n=pn(this.state.items,e);this.registerExternalPlacements(e),this.state.items=n}restoreRemoval(e){let t=this.metadata.get(e);if(!t)throw TypeError(`Vibe removal does not belong to this instance.`);if(t.generation!==this.generation||t.restored)return!1;t.restored=!0,this.removeFromHistory(e);let n=this.restoreOrderedPlacements(e);return n&&this.options.onRemovalRestored(e),n}undoLast(){for(;this.history.length>0;){let e=this.history.pop();if(this.restoreRemoval(e))return e}return null}appendUnknownItems(e){let t=new Set(this.itemOrder);e.forEach(({postId:e})=>{t.has(e)||(this.itemOrder.push(e),t.add(e))})}collectOrderedPlacements(e){let t=new Map(this.itemOrder.map((e,t)=>[e,t]));return dn(this.state.items,e).map(e=>({index:t.get(e.item.postId)??e.index,item:e.item}))}createRemoval(e){let t=Object.freeze(e.map(e=>Object.freeze({...e})));return this.metadata.set(t,{generation:this.generation,restored:e.length===0}),t}record(e){this.historyLimit!==0&&(this.history.push(e),this.history.length>this.historyLimit&&this.history.shift())}registerExternalPlacements(e){let t=new Set(this.itemOrder);[...e].sort((e,t)=>e.index-t.index).forEach(({index:e,item:n})=>{t.has(n.postId)||(this.itemOrder.splice(Math.min(e,this.itemOrder.length),0,n.postId),t.add(n.postId))})}removeFromHistory(e){let t=this.history.indexOf(e);t>=0&&this.history.splice(t,1)}restoreOrderedPlacements(e){let t=new Set(this.state.items.map(({postId:e})=>e)),n=e.map(({item:e})=>e).filter(({postId:e})=>!t.has(e));if(n.length===0)return!1;let r=new Map(this.itemOrder.map((e,t)=>[e,t]));return this.state.items=[...this.state.items,...n].sort((e,t)=>(r.get(e.postId)??2**53-1)-(r.get(t.postId)??2**53-1)),!0}},gn=class{forward=null;forwardPromise=null;forwardVersion=0;state;constructor(e){this.options=e,this.state=e.state}start(e,t,n){this.forward={item:n,postIndex:t,token:e,version:++this.forwardVersion},this.state.reelForward={error:null,status:`loading`},this.state.reelForwardIndex=t,this.state.reelForwardItem=n,this.startForwardRequest(!1)}cancel(e){if(this.forward?.token!==e||this.state.reelForward.status===`idle`)return null;let t=this.forward.item;return this.forwardVersion+=1,this.forward=null,this.clearState(),t}reset(){this.forwardVersion+=1,this.forward=null,this.forwardPromise=null,this.clearState()}retry(){return!this.forward||this.state.reelForward.status===`idle`?Promise.resolve():(this.state.nextPageError=null,this.state.reelForward={error:null,status:`loading`},this.startForwardRequest(this.state.next===null))}clearState(){this.state.reelForward={error:null,status:`idle`},this.state.reelForwardIndex=null,this.state.reelForwardItem=null}startForwardRequest(e){if(this.forwardPromise)return this.forwardPromise;let t=this.loadForward(e);return this.forwardPromise=t,t.finally(()=>{this.forwardPromise===t&&(this.forwardPromise=null,this.forward&&this.state.reelForward.status===`loading`&&this.startForwardRequest(!1))})}async loadForward(e){let t=this.forward;if(t)for(e&&await this.options.retryEnd();this.forward===t&&t.version===this.forwardVersion;){let e=this.state.items[t.postIndex];if(e){this.forward=null,this.clearState(),this.options.onActivate(e.postId);return}if(this.state.nextPageError){this.state.reelForward={error:this.state.nextPageError,status:`error`};return}if(this.state.next===null){this.state.reelForward={error:null,status:`end`};return}let n=this.state.next;if(await this.options.loadNext(),this.state.next===n&&!this.state.nextPageError&&!this.state.items[t.postIndex]){this.state.reelForward={error:Error(`Vibe could not advance while page loading is unavailable.`),status:`error`};return}}}},_n=class{generation=0;pending=Promise.resolve();constructor(e){this.options=e}prepareItems(e){return this.serialize(()=>this.preparePosts(e))}prepareMedia(e){return this.serialize(async()=>{let{state:n}=this.options;if(!this.isReelActive()||n.activeReelPostId!==e.postId)return;let r=n.items.find(({postId:t})=>t===e.postId);if(!r)return;let i=n.mediaIndices.get(e.postId)??0;if(e.mediaIndex===i){if(t(r).length>1){await this.options.transitionMedia(1);return}await this.preparePosts([e.postId])}})}reset(){this.generation+=1,this.pending=Promise.resolve()}async preparePosts(e){let{state:t}=this.options,n=t.activeReelPostId,r=new Set(e);if(!this.isReelActive()||n===null||!r.has(n))return;let i=this.generation,a=t.items.findIndex(({postId:e})=>e===n);if(a<0)return;let o=this.nextSurvivor(a,r);o&&i===this.generation&&t.activeReelPostId===n&&await this.options.transitionPost(o.postId)}isReelActive(){let{state:e}=this.options;return e.layout===`reel`||e.reelOrigin===`masonry`}nextSurvivor(e,t){if(!(e<0))return this.options.state.items.slice(e+1).find(({postId:e})=>!t.has(e))}serialize(e){let t=this.pending.then(e,e);return this.pending=t.catch(()=>void 0),t}};function vn(e){let t=new gn(e),n=new _n({state:e.state,transitionMedia:t=>e.surface()?.transitionActiveReelMedia(t)??Promise.resolve(!1),transitionPost:t=>e.surface()?.transitionActiveReelPost(t)??Promise.resolve(!1)});return{exactMediaRemoval:new un({onActivate:e.onActivate,reelForward:t,state:e.state}),itemRemoval:new hn({historyLimit:e.historyLimit,onItemsRemoved:(n,r,i)=>{sn(e.state,r,i,e.onActivate,(e,r)=>t.start(n,e,r))},onRemovalRestored:n=>{let r=t.cancel(n);r&&e.onActivate(r.postId)},prepareRemoval:e=>n.prepareItems(e),startRemoval:t=>e.surface()?.startItemRemoval(t)??0,state:e.state}),reelForward:t,reelRemoval:n}}var yn=1.5;function bn(e){let t=Math.min(e.screenWidth,e.screenHeight);if(t>0&&t<600)return!0;let n=Math.min(e.viewportWidth,e.viewportHeight),r=t>=n*yn;return!e.hasHover&&n>0&&n<600&&r}function xn(e){return bn(e)?`reel`:`masonry`}function Sn(e){let t=e.ownerDocument.defaultView,n=e.ownerDocument.documentElement;return{hasHover:typeof t?.matchMedia==`function`&&t.matchMedia(`(hover: hover)`).matches,screenHeight:t?.screen.height??0,screenWidth:t?.screen.width??0,viewportHeight:n.clientHeight,viewportWidth:n.clientWidth}}function Cn(e){return bn(Sn(e))}function wn(e){return xn(Sn(e))}var Tn=class{layoutMode;resizeObserver=null;target=null;constructor(e,t,n){this.state=t,this.onFeedLayout=n,this.layoutMode=e}mount(e){this.target=e,this.handleResponsiveLayout();let t=e.ownerDocument.defaultView;t?.addEventListener(`resize`,this.handleResponsiveLayout);let n=t?.ResizeObserver??globalThis.ResizeObserver;n!==void 0&&(this.resizeObserver=new n(this.handleResponsiveLayout),this.resizeObserver.observe(e))}destroy(){this.target?.ownerDocument.defaultView?.removeEventListener(`resize`,this.handleResponsiveLayout),this.resizeObserver?.disconnect(),this.resizeObserver=null,this.target=null}setLayout(e){e!==this.layoutMode&&(this.layoutMode=e,e===`responsive`?this.handleResponsiveLayout():this.applyLayout(e))}applyLayout(e){e!==this.state.layout&&(e===`masonry`&&(this.state.activeReelPostId=null,this.onFeedLayout()),this.state.reelOrigin=null,this.state.layout=e)}handleResponsiveLayout=()=>{if(!this.target)return;let e=wn(this.target);this.state.reelInfoSheetOverlay=Cn(this.target),this.state.reelMediaSource=e===`reel`?`preview`:`original`,this.layoutMode===`responsive`&&this.applyLayout(e)}},En=class{routedReelPostId=null;reelRouteIsActive=!1;constructor(e,t){this.options=e,this.state=t}syncFeed(){if(!this.options||!this.reelRouteIsActive)return;this.reelRouteIsActive=!1,this.routedReelPostId=null;let e=typeof this.options.feed==`function`?this.options.feed():this.options.feed;this.options.router.replace(e)}syncReel(e){if(!this.options)return;let t=this.state.items.findIndex(t=>t.postId===e),n=this.state.items[t];if(!n||this.reelRouteIsActive&&this.routedReelPostId===e)return;let r=this.options.reel({index:t,item:n,loadedCount:this.state.items.length,origin:this.state.reelOrigin??`reel`,total:this.state.total});if(r===null)return;let i=this.reelRouteIsActive?`replace`:`push`;this.reelRouteIsActive=!0,this.routedReelPostId=e,this.options.router[i](r)}},Dn=class{app=null;autoScroll;autofillController;abortController=null;pendingRequest=null;requestVersion=0;responsiveLayout;routing;fillController;exactMediaRemoval;itemRemoval;reelForward;reelRemoval;surface=null;stopStateWatcher=null;lastLoadedCursor=null;state;constructor(t){this.options=t,an(t);let n=t.layout??`masonry`;this.state=(0,e.reactive)(tn(t,n)),this.autoScroll=new Dt({getScrollElement:()=>this.surface?.getAutoScrollElement()??null,state:this.state.autoScroll}),this.autofillController=new xt({cancelRequest:()=>this.cancelRequest(),onLastCursor:e=>{this.lastLoadedCursor=e},options:t.autofill,state:this.state}),this.fillController=new qt({fill:t.fill,loadPage:t.loadPage,onLastCursor:e=>{this.lastLoadedCursor=e},state:this.state}),this.routing=new En(t.routing,this.state);let r=vn({historyLimit:t.removalHistoryLimit,loadNext:()=>this.loadNext(),onActivate:e=>this.setActiveReelPost(e),retryEnd:()=>this.retryEnd(),state:this.state,surface:()=>this.surface});this.exactMediaRemoval=r.exactMediaRemoval,this.itemRemoval=r.itemRemoval,this.reelForward=r.reelForward,this.reelRemoval=r.reelRemoval,this.responsiveLayout=new Tn(n,this.state,()=>{this.routing.syncFeed()}),this.startStateNotifications()}async mount(){if(this.app)throw Error(`Vibe is already mounted.`);this.startStateNotifications();let t=on(this.options.target);this.responsiveLayout.mount(t),this.app=(0,e.createApp)(rt,{canRetryEnd:!!this.options.loadPage,cardFooter:this.options.cardFooter,cardHeader:this.options.cardHeader,feedFooter:this.options.feedFooter,feedFooterActions:Jt(this),mediaCard:this.options.mediaCard,onMediaReady:this.options.onMediaReady,onReelMediaChange:this.options.onReelMediaChange,reelInfoSheet:this.options.reelInfoSheet,state:this.state,onActiveReelChange:e=>{this.state.reelForward.status===`idle`&&this.setActiveReelPost(e)},onCloseReel:()=>this.closeMasonryReel(),onLoadMore:()=>{this.loadNext()},onOpenReel:e=>this.openMasonryReel(e),onReelInfoSheetChange:e=>this.setReelInfoSheet(e),onRetryEnd:()=>{this.retryEnd()},onRetryForward:()=>{this.retryReelForward()}}),this.surface=this.app.mount(t),this.autoScroll.mount(),this.options.initialPage?this.options.autofill&&this.state.autofill.status===`idle`&&!this.fillController.isActive()&&await this.startInitialAutofill():await this.reload()}destroy(){this.autoScroll.destroy(),this.fillController.destroy(),this.cancelRequest(),this.reelForward.reset(),this.reelRemoval.reset(),this.exactMediaRemoval.reset(),this.itemRemoval.destroy(),this.responsiveLayout.destroy(),this.stopStateWatcher?.(),this.stopStateWatcher=null,this.app?.unmount(),this.app=null,this.surface=null}getState(){return s(this.state)}removeMedia(e){return this.exactMediaRemoval.remove(e)}removeMediaAnimated(e){return this.reelRemoval.prepareMedia(e).then(()=>this.exactMediaRemoval.remove(e))}removeItems(e){return this.itemRemoval.remove(e)}restoreItems(e){this.itemRemoval.restoreItems(e)}restoreMediaRemoval(e){return this.exactMediaRemoval.restore(e)}restoreRemoval(e){return this.itemRemoval.restoreRemoval(e)}retryReelForward(){return this.reelForward.retry()}undoLastRemoval(){return this.itemRemoval.undoLast()}nextReelMediaItem(){return this.surface?.changeActiveReelMedia(1)??!1}previousReelMediaItem(){return this.surface?.changeActiveReelMedia(-1)??!1}nextReelPost(){return this.surface?.moveActiveReelPost(1)??!1}previousReelPost(){return this.surface?.moveActiveReelPost(-1)??!1}navigateToReelItem(e){return this.surface?.navigateToReelItem(e)??`reel-inactive`}pauseAutoScroll(){this.autoScroll.setPaused(!0)}resumeAutoScroll(){this.autoScroll.setPaused(!1)}setAutoScroll(e,t){this.autoScroll.setEnabled(e,t)}setAutoScrollSpeed(e){this.autoScroll.setSpeed(e)}applyAutofillUpdate(e){let t=At(this.options.autofill,this.state,e);return t&&this.autofillController.syncCountdown(),t}cancelAutofill(){return this.autofillController.cancel()}applyFillUpdate(e){return this.fillController.applyUpdate(e)}cancelFill(){return this.fillController.cancel()}async fill(e){if(this.pendingRequest||$(this.state.autofill))throw Error(`Vibe cannot fill while another page operation is active.`);await this.fillController.start(e)}restoreAutofillSession(e){let t=jt(this.options.autofill,this.state,e);return t&&this.autofillController.syncCountdown(),t}restoreFillSession(e){return this.fillController.restoreSession(e)}async loadNext(){if(this.pendingRequest)return this.pendingRequest;if(!this.state.loadMoreLocked&&!($(this.state.autofill)||this.fillController.isActive())&&!(this.state.next===null||!this.options.loadPage))return this.state.isLoadingMore=!0,this.state.nextPageError=null,this.startRequest(this.state.next,!0)}async refresh(){return this.replaceFeed(this.state.next??this.lastLoadedCursor,`refresh`)}async reload(){return this.replaceFeed(null,`reload`)}async replaceFeed(e,t){if(!this.options.loadPage)throw Error(`Vibe cannot ${t} without loadPage.`);return $(this.state.autofill)&&await this.cancelAutofill(),this.fillController.isActive()&&await this.cancelFill(),this.cancelRequest(),this.state.autofill=_t(this.options.autofill,void 0,!1),this.fillController.reset(),this.reelForward.reset(),this.reelRemoval.reset(),this.exactMediaRemoval.reset(),this.itemRemoval.reset(),this.state.error=null,this.state.isLoading=!0,this.state.items=[],this.state.next=null,this.state.nextPageError=null,this.state.total=null,this.startRequest(e,!1)}async retryEnd(){if(this.pendingRequest)return this.pendingRequest;if(!this.state.loadMoreLocked&&!($(this.state.autofill)||this.fillController.isActive())&&!(this.state.next!==null||!this.options.loadPage))return this.state.isLoadingMore=!0,this.state.nextPageError=null,this.startRequest(this.lastLoadedCursor,!0)}setInfiniteScroll(t){this.state.infiniteScroll=t,t&&(0,e.nextTick)(()=>this.surface?.loadIfNearBottom())}setLoadMoreLocked(t){this.state.loadMoreLocked!==t&&(this.state.loadMoreLocked=t,!t&&this.state.infiniteScroll&&(0,e.nextTick)(()=>this.surface?.loadIfNearBottom()))}setReelAutoAdvance(e){Qt(this.state.reelAutoAdvance,e)}setReelInfoSheet(e){en(this.state.reelInfoSheet,this.options.reelInfoSheet,e)}setLayout(e){this.responsiveLayout.setLayout(e)}closeMasonryReel(){this.state.reelOrigin===`masonry`&&(this.state.activeReelPostId=null,this.state.reelOrigin=null,this.routing.syncFeed())}openMasonryReel(e){this.state.layout===`masonry`&&this.state.items.some(t=>t.postId===e)&&(this.state.activeReelPostId=e,this.state.reelOrigin=`masonry`,this.routing.syncReel(e))}setActiveReelPost(e){this.state.layout!==`reel`&&this.state.reelOrigin!==`masonry`||(this.state.activeReelPostId=e,this.routing.syncReel(e))}cancelRequest(){this.autofillController.clearCountdown(),this.requestVersion+=1,this.abortController?.abort(),this.abortController=null,this.pendingRequest=null,this.state.isLoading=!1,this.state.isLoadingMore=!1}async fetchPage(e,t){let n=this.options.loadPage;if(!n)return;let r=++this.requestVersion,i=new AbortController,a=this.options.autofill,o=a?this.autofillController.beginCycle():null,s=!1;this.abortController=i;try{if(a?.strategy===`frontend`){let o=await bt({existingItems:t?this.state.items:[],initialCursor:e,loadPage:n,onCollection:e=>this.autofillController.captureCollection(e,r===this.requestVersion),onDelayChange:e=>{r===this.requestVersion&&Object.assign(this.state.autofill,e)},onProgress:e=>{r===this.requestVersion&&Object.assign(this.state.autofill,e,{status:`filling`})},options:a,signal:i.signal});if(r!==this.requestVersion)return;this.state.items=t?X(this.state.items,o.items):[...o.items],this.lastLoadedCursor=o.lastCursor,this.state.next=o.next,o.total!==void 0&&(this.state.total=o.total),Object.assign(this.state.autofill,{missing:o.missing,received:o.received,requests:o.requests,status:o.status}),this.autofillController.clearCollection();return}let c=it(await n({cursor:e,signal:i.signal}));if(r!==this.requestVersion)return;let l=t?this.state.items:[],u=X(l,c.items),d=u.length-l.length;if(this.state.items=u,this.lastLoadedCursor=e,this.state.next=c.next,c.total!==void 0&&(this.state.total=c.total),s=!0,a?.strategy===`backend`&&o){if(Object.assign(this.state.autofill,{missing:Math.max(0,a.pageSize-d),received:d,requests:1}),d>=a.pageSize){this.state.autofill.status=`complete`;return}await Ot(a,this.state,{cycleId:o,feedKey:a.feedKey,items:u.slice(l.length),missing:a.pageSize-d,next:c.next,pageSize:a.pageSize,received:d,signal:i.signal,total:this.state.total},()=>r===this.requestVersion),this.autofillController.syncCountdown()}}catch(e){if(i.signal.aborted||r!==this.requestVersion)return;a&&(this.state.autofill.error=e,this.state.autofill.status=`error`),s||(t?this.state.nextPageError=e:this.state.error=e)}finally{r===this.requestVersion&&(this.autofillController.clearCollection(),this.abortController=null,this.state.isLoading=!1,this.state.isLoadingMore=!1)}}startRequest(e,t){let n=this.fetchPage(e,t);return this.pendingRequest=n,n.finally(()=>{this.pendingRequest===n&&(this.pendingRequest=null)})}startInitialAutofill(){let e=++this.requestVersion,t=new AbortController,n=this.autofillController.beginCycle();this.abortController=t,this.state.isLoadingMore=!0;let r=Mt({cycleId:n,isCurrent:()=>e===this.requestVersion,onCollection:t=>this.autofillController.captureCollection(t,e===this.requestVersion),onLastCursor:e=>{this.lastLoadedCursor=e},options:this.options,signal:t.signal,state:this.state}).catch(n=>{t.signal.aborted||e!==this.requestVersion||(this.state.autofill.error=n,this.state.autofill.status=`error`,this.state.nextPageError=n)}).finally(()=>{e===this.requestVersion&&(this.autofillController.clearCollection(),this.autofillController.syncCountdown(),this.abortController=null,this.state.isLoadingMore=!1,this.pendingRequest===r&&(this.pendingRequest=null))});return this.pendingRequest=r,r}startStateNotifications(){let t=this.options.onStateChange;!t||this.stopStateWatcher||(t(this.getState()),this.stopStateWatcher=(0,e.watch)(this.state,()=>t(this.getState()),{deep:!0,flush:`post`}))}};function On(e){return new Dn(e)}exports.createVibe=On;
package/lib/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import './vibe.css';
2
2
  export { createVibe } from './core/createVibe';
3
- export type { CreateVibeOptions, VibeAutoScrollOptions, VibeAutoScrollState, VibeAutofillOptions, VibeAutofillPageLimit, VibeAutofillSessionSnapshot, VibeAutofillState, VibeAutofillStatus, VibeAutofillStrategy, VibeBackendAutofillCancelContext, VibeBackendAutofillOptions, VibeBackendAutofillSession, VibeBackendAutofillStartContext, VibeBackendAutofillUpdate, VibeBackendFillCancelContext, VibeBackendFillOptions, VibeBackendFillSession, VibeBackendFillStartContext, VibeBackendFillUpdate, VibeCardRegion, VibeCardRegionProps, VibeCardChromeStyle, VibeCursor, VibeFillOptions, VibeFillSessionSnapshot, VibeFillState, VibeFillStatus, VibeFillStrategy, VibeFillTarget, VibeFeedFooter, VibeFeedFooterActions, VibeFeedFooterProps, VibeFrontendFillOptions, VibeInitialPage, VibeInstance, VibeItem, VibeItemId, VibeItemPlacement, VibeRemoval, VibeLayout, VibeLayoutMode, VibeLifecycle, VibeFrontendAutofillOptions, VibeMediaAsset, VibeMediaCardOptions, VibeMediaPlacement, VibeMediaRemoval, VibeMediaSource, VibeMediaTarget, VibePage, VibePageLoader, VibePageRequest, VibePreview, VibeRequestDelayOptions, VibeReelRouteContext, VibeReelAutoAdvanceOptions, VibeReelAutoAdvanceState, VibeReelInfoSheetOptions, VibeReelInfoSheetProps, VibeReelInfoSheetState, VibeReelItemTarget, VibeReelNavigationResult, VibeReelForwardState, VibeReelForwardStatus, VibeReelOrigin, VibeRoutingOptions, VibeState, } from './types';
3
+ export type { CreateVibeOptions, VibeAutoScrollOptions, VibeAutoScrollState, VibeAutofillOptions, VibeAutofillPageLimit, VibeAutofillSessionSnapshot, VibeAutofillState, VibeAutofillStatus, VibeAutofillStrategy, VibeBackendAutofillCancelContext, VibeBackendAutofillOptions, VibeBackendAutofillSession, VibeBackendAutofillStartContext, VibeBackendAutofillUpdate, VibeBackendFillCancelContext, VibeBackendFillOptions, VibeBackendFillSession, VibeBackendFillStartContext, VibeBackendFillUpdate, VibeCardRegion, VibeCardRegionProps, VibeCardChromeStyle, VibeCursor, VibeFillOptions, VibeFillSessionSnapshot, VibeFillState, VibeFillStatus, VibeFillStrategy, VibeFillTarget, VibeFeedFooter, VibeFeedFooterActions, VibeFeedFooterProps, VibeFrontendFillOptions, VibeInitialPage, VibeInstance, VibeItem, VibeItemId, VibeItemPlacement, VibeRemoval, VibeLayout, VibeLayoutMode, VibeLifecycle, VibeFrontendAutofillOptions, VibeMediaAsset, VibeMediaCardOptions, VibeMediaLifecycleContext, VibeMediaPlacement, VibeMediaRemoval, VibeMediaSource, VibeMediaTarget, VibePage, VibePageLoader, VibePageRequest, VibePreview, VibeRequestDelayOptions, VibeReelRouteContext, VibeReelAutoAdvanceOptions, VibeReelAutoAdvanceState, VibeReelInfoSheetOptions, VibeReelInfoSheetProps, VibeReelInfoSheetState, VibeReelItemTarget, VibeReelNavigationResult, VibeReelForwardState, VibeReelForwardStatus, VibeReelOrigin, VibeRoutingOptions, VibeState, } from './types';