sanity 3.93.1-next.23.7cabaeaf78 → 3.93.1-next.27.be182aaafa
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/lib/_chunks-cjs/version.js +1 -1
- package/lib/_chunks-es/version.mjs +1 -1
- package/package.json +10 -10
- package/dist/1-yrhfgGSy.mjs +0 -5
- package/dist/1-yrhfgGSy.mjs.map +0 -1
- package/dist/BackLink-BjbAxrJO.mjs +0 -2
- package/dist/BackLink-BjbAxrJO.mjs.map +0 -1
- package/dist/BehaviorSubject-lT90ntN-.mjs +0 -2
- package/dist/BehaviorSubject-lT90ntN-.mjs.map +0 -1
- package/dist/BroadcastDisplayedDocument-NLP-sZ3E.mjs +0 -2
- package/dist/BroadcastDisplayedDocument-NLP-sZ3E.mjs.map +0 -1
- package/dist/Delay-BF0O9UCI.mjs +0 -2
- package/dist/Delay-BF0O9UCI.mjs.map +0 -1
- package/dist/DisplayedDocumentBroadcaster-bVq7qjFz.mjs +0 -2
- package/dist/DisplayedDocumentBroadcaster-bVq7qjFz.mjs.map +0 -1
- package/dist/DocumentPane-B9qqshkT.mjs +0 -263
- package/dist/DocumentPane-B9qqshkT.mjs.map +0 -1
- package/dist/EmptyError-BLRYgvfy.mjs +0 -2
- package/dist/EmptyError-BLRYgvfy.mjs.map +0 -1
- package/dist/LiveQueries-D9bwoNKb.mjs +0 -2
- package/dist/LiveQueries-D9bwoNKb.mjs.map +0 -1
- package/dist/LoadingPane-fVJxEQpb.mjs +0 -10
- package/dist/LoadingPane-fVJxEQpb.mjs.map +0 -1
- package/dist/MenuGroup-DZWX1dWR.mjs +0 -2
- package/dist/MenuGroup-DZWX1dWR.mjs.map +0 -1
- package/dist/MenuItem-nwzB8TNk.mjs +0 -8
- package/dist/MenuItem-nwzB8TNk.mjs.map +0 -1
- package/dist/Observable-B8U6mp9h.mjs +0 -4
- package/dist/Observable-B8U6mp9h.mjs.map +0 -1
- package/dist/PaneContainer-BqULSwD0.mjs +0 -109
- package/dist/PaneContainer-BqULSwD0.mjs.map +0 -1
- package/dist/PaneHeaderActions-BwRjxrbU.mjs +0 -2
- package/dist/PaneHeaderActions-BwRjxrbU.mjs.map +0 -1
- package/dist/PaneItem-CXeBMzOt.mjs +0 -2
- package/dist/PaneItem-CXeBMzOt.mjs.map +0 -1
- package/dist/PostMessageDocuments-BV62lQ7C.mjs +0 -2
- package/dist/PostMessageDocuments-BV62lQ7C.mjs.map +0 -1
- package/dist/PostMessagePerspective-CFiQ6IFc.mjs +0 -2
- package/dist/PostMessagePerspective-CFiQ6IFc.mjs.map +0 -1
- package/dist/PostMessagePreviewSnapshots-5oC2mIn1.mjs +0 -2
- package/dist/PostMessagePreviewSnapshots-5oC2mIn1.mjs.map +0 -1
- package/dist/PostMessageRefreshMutations-DdxC6YP_.mjs +0 -2
- package/dist/PostMessageRefreshMutations-DdxC6YP_.mjs.map +0 -1
- package/dist/PostMessageSchema-Bcs4xG5C.mjs +0 -2
- package/dist/PostMessageSchema-Bcs4xG5C.mjs.map +0 -1
- package/dist/PostMessageTelemetry-LUBYudOJ.mjs +0 -2
- package/dist/PostMessageTelemetry-LUBYudOJ.mjs.map +0 -1
- package/dist/PresentationToolGrantsCheck-CgJU8JlK.mjs +0 -100
- package/dist/PresentationToolGrantsCheck-CgJU8JlK.mjs.map +0 -1
- package/dist/QRCodeSVG-CxOJrjO_.mjs +0 -2
- package/dist/QRCodeSVG-CxOJrjO_.mjs.map +0 -1
- package/dist/Refractor-UCi38mb-.mjs +0 -5
- package/dist/Refractor-UCi38mb-.mjs.map +0 -1
- package/dist/ReplaySubject-CHMGH8uo.mjs +0 -2
- package/dist/ReplaySubject-CHMGH8uo.mjs.map +0 -1
- package/dist/SourceContext-D53WuQKs.mjs +0 -2
- package/dist/SourceContext-D53WuQKs.mjs.map +0 -1
- package/dist/StructureToolProvider-C8VLdhP8.mjs +0 -2
- package/dist/StructureToolProvider-C8VLdhP8.mjs.map +0 -1
- package/dist/Subject-BUseddH4.mjs +0 -2
- package/dist/Subject-BUseddH4.mjs.map +0 -1
- package/dist/Tooltip-JnkpPrKf.mjs +0 -4
- package/dist/Tooltip-JnkpPrKf.mjs.map +0 -1
- package/dist/TooltipDelayGroupProvider-DFmNEvMS.mjs +0 -2
- package/dist/TooltipDelayGroupProvider-DFmNEvMS.mjs.map +0 -1
- package/dist/ViteDevServerStopped-XKSHzTxM.mjs +0 -2
- package/dist/ViteDevServerStopped-XKSHzTxM.mjs.map +0 -1
- package/dist/_createContext.mjs +0 -2
- package/dist/_createContext.mjs.map +0 -1
- package/dist/_singletons.mjs +0 -2
- package/dist/_singletons.mjs.map +0 -1
- package/dist/asserters-C8hxedkt.mjs +0 -2
- package/dist/asserters-C8hxedkt.mjs.map +0 -1
- package/dist/async-HS7jgwe2.mjs +0 -2
- package/dist/async-HS7jgwe2.mjs.map +0 -1
- package/dist/browser-Ca2COO1i.mjs +0 -14
- package/dist/browser-Ca2COO1i.mjs.map +0 -1
- package/dist/browser-oKMlC993.mjs +0 -2
- package/dist/browser-oKMlC993.mjs.map +0 -1
- package/dist/chunk-DSR6Ryem.mjs +0 -1
- package/dist/combineLatest-CFPJgUfN.mjs +0 -2
- package/dist/combineLatest-CFPJgUfN.mjs.map +0 -1
- package/dist/concat-BWArfBxD.mjs +0 -2
- package/dist/concat-BWArfBxD.mjs.map +0 -1
- package/dist/concatMap-DZrL7ZKn.mjs +0 -2
- package/dist/concatMap-DZrL7ZKn.mjs.map +0 -1
- package/dist/constants-ChSQUPYh.mjs +0 -5
- package/dist/constants-ChSQUPYh.mjs.map +0 -1
- package/dist/constants-ClLucOHG.mjs +0 -10
- package/dist/constants-ClLucOHG.mjs.map +0 -1
- package/dist/csm-BGmdCiS5.mjs +0 -3
- package/dist/csm-BGmdCiS5.mjs.map +0 -1
- package/dist/dateTimestampProvider-Bu3RH21w.mjs +0 -2
- package/dist/dateTimestampProvider-Bu3RH21w.mjs.map +0 -1
- package/dist/debounceTime-ZjGvEiAc.mjs +0 -2
- package/dist/debounceTime-ZjGvEiAc.mjs.map +0 -1
- package/dist/desk.mjs +0 -2
- package/dist/desk.mjs.map +0 -1
- package/dist/dist-B6kS-Ue1.mjs +0 -2
- package/dist/dist-B6kS-Ue1.mjs.map +0 -1
- package/dist/dist-BBJTJw5c.mjs +0 -2
- package/dist/dist-BBJTJw5c.mjs.map +0 -1
- package/dist/dist-ByxNQHyT.mjs +0 -2
- package/dist/dist-ByxNQHyT.mjs.map +0 -1
- package/dist/dist-CbgPQx6C.mjs +0 -8
- package/dist/dist-CbgPQx6C.mjs.map +0 -1
- package/dist/dist-ClpwwQr8.mjs +0 -15
- package/dist/dist-ClpwwQr8.mjs.map +0 -1
- package/dist/dist-DPyoedQR.mjs +0 -2
- package/dist/dist-DPyoedQR.mjs.map +0 -1
- package/dist/dist-DTr4N9sP.mjs +0 -2
- package/dist/dist-DTr4N9sP.mjs.map +0 -1
- package/dist/dist-DhOlFDfY.mjs +0 -2
- package/dist/dist-DhOlFDfY.mjs.map +0 -1
- package/dist/dist-Du4lGEpF.mjs +0 -2
- package/dist/dist-Du4lGEpF.mjs.map +0 -1
- package/dist/dist-gdCAZyAZ.mjs +0 -1213
- package/dist/dist-gdCAZyAZ.mjs.map +0 -1
- package/dist/dist-p4qSKgLr.mjs +0 -2
- package/dist/dist-p4qSKgLr.mjs.map +0 -1
- package/dist/fast-deep-equal-D2buQJMm.mjs +0 -2
- package/dist/fast-deep-equal-D2buQJMm.mjs.map +0 -1
- package/dist/filter-Dzj28Ftl.mjs +0 -2
- package/dist/filter-Dzj28Ftl.mjs.map +0 -1
- package/dist/first-rmXQWXXU.mjs +0 -2
- package/dist/first-rmXQWXXU.mjs.map +0 -1
- package/dist/from-1e-Bj2Xm.mjs +0 -2
- package/dist/from-1e-Bj2Xm.mjs.map +0 -1
- package/dist/getExtendedProjection-ocJy6w-1.mjs +0 -2
- package/dist/getExtendedProjection-ocJy6w-1.mjs.map +0 -1
- package/dist/getIntentState-BzHK-R2v.mjs +0 -25
- package/dist/getIntentState-BzHK-R2v.mjs.map +0 -1
- package/dist/helpers-DmN6xVrH.mjs +0 -2
- package/dist/helpers-DmN6xVrH.mjs.map +0 -1
- package/dist/i18n-DSW5BxWp.mjs +0 -2
- package/dist/i18n-DSW5BxWp.mjs.map +0 -1
- package/dist/index.browser-CKm2u9SF.mjs +0 -14
- package/dist/index.browser-CKm2u9SF.mjs.map +0 -1
- package/dist/index.browser-m6o-65PH.mjs +0 -2
- package/dist/index.browser-m6o-65PH.mjs.map +0 -1
- package/dist/index.mjs +0 -4364
- package/dist/index.mjs.map +0 -1
- package/dist/inputWrappers-B2JwUo5Q.mjs +0 -6
- package/dist/inputWrappers-B2JwUo5Q.mjs.map +0 -1
- package/dist/isObservable-D3WTlre7.mjs +0 -2
- package/dist/isObservable-D3WTlre7.mjs.map +0 -1
- package/dist/lastValueFrom-DNJfBsuL.mjs +0 -2
- package/dist/lastValueFrom-DNJfBsuL.mjs.map +0 -1
- package/dist/list-CRYGwmUP.mjs +0 -17
- package/dist/list-CRYGwmUP.mjs.map +0 -1
- package/dist/lodash-Bv9uePfP.mjs +0 -21
- package/dist/lodash-Bv9uePfP.mjs.map +0 -1
- package/dist/map-DkDssZnl.mjs +0 -2
- package/dist/map-DkDssZnl.mjs.map +0 -1
- package/dist/mapOneOrManyArgs-nKglr-Z6.mjs +0 -2
- package/dist/mapOneOrManyArgs-nKglr-Z6.mjs.map +0 -1
- package/dist/menuNodes-DfRBkUna.mjs +0 -2
- package/dist/menuNodes-DfRBkUna.mjs.map +0 -1
- package/dist/merge-DLqD1gqk.mjs +0 -2
- package/dist/merge-DLqD1gqk.mjs.map +0 -1
- package/dist/mergeMap-BhPr1e5f.mjs +0 -2
- package/dist/mergeMap-BhPr1e5f.mjs.map +0 -1
- package/dist/never-DgTZVAtg.mjs +0 -2
- package/dist/never-DgTZVAtg.mjs.map +0 -1
- package/dist/of-DHUS5V5R.mjs +0 -2
- package/dist/of-DHUS5V5R.mjs.map +0 -1
- package/dist/pane-BMyHaSp6.mjs +0 -1
- package/dist/pane-CAXJwiOS.mjs +0 -1
- package/dist/paths-Uiaz64OV.mjs +0 -2
- package/dist/paths-Uiaz64OV.mjs.map +0 -1
- package/dist/presentation.mjs +0 -12
- package/dist/presentation.mjs.map +0 -1
- package/dist/proxy-Dqw503dV.mjs +0 -2
- package/dist/proxy-Dqw503dV.mjs.map +0 -1
- package/dist/publishReplay-w0VqSlUG.mjs +0 -2
- package/dist/publishReplay-w0VqSlUG.mjs.map +0 -1
- package/dist/react-CcFWW54u.mjs +0 -2
- package/dist/react-CcFWW54u.mjs.map +0 -1
- package/dist/refractor-BE6oAO2f.mjs +0 -2
- package/dist/refractor-BE6oAO2f.mjs.map +0 -1
- package/dist/resources-B-P7yY4i.mjs +0 -2
- package/dist/resources-B-P7yY4i.mjs.map +0 -1
- package/dist/resources-BMgz3UTF.mjs +0 -2
- package/dist/resources-BMgz3UTF.mjs.map +0 -1
- package/dist/resources-C10e-Tmd.mjs +0 -2
- package/dist/resources-C10e-Tmd.mjs.map +0 -1
- package/dist/resources-C63HMln_.mjs +0 -3
- package/dist/resources-C63HMln_.mjs.map +0 -1
- package/dist/resources-QIglKpCh.mjs +0 -2
- package/dist/resources-QIglKpCh.mjs.map +0 -1
- package/dist/resources-a_EhxFoi.mjs +0 -2
- package/dist/resources-a_EhxFoi.mjs.map +0 -1
- package/dist/resources-wUgycRup.mjs +0 -2
- package/dist/resources-wUgycRup.mjs.map +0 -1
- package/dist/router.mjs +0 -2
- package/dist/router.mjs.map +0 -1
- package/dist/scan-zuMwSL6_.mjs +0 -2
- package/dist/scan-zuMwSL6_.mjs.map +0 -1
- package/dist/share-DudygGnN.mjs +0 -2
- package/dist/share-DudygGnN.mjs.map +0 -1
- package/dist/shareReplay-DNp-xAdu.mjs +0 -2
- package/dist/shareReplay-DNp-xAdu.mjs.map +0 -1
- package/dist/speakingurl-D9zTR1xM.mjs +0 -2
- package/dist/speakingurl-D9zTR1xM.mjs.map +0 -1
- package/dist/stegaClean-CF_wp2AP.mjs +0 -2
- package/dist/stegaClean-CF_wp2AP.mjs.map +0 -1
- package/dist/stegaEncodeSourceMap-sinaqym6.mjs +0 -3
- package/dist/stegaEncodeSourceMap-sinaqym6.mjs.map +0 -1
- package/dist/structure-DeitBGwm.mjs +0 -122
- package/dist/structure-DeitBGwm.mjs.map +0 -1
- package/dist/structure.mjs +0 -1
- package/dist/structureTool-C7WqcvTM.mjs +0 -11
- package/dist/structureTool-C7WqcvTM.mjs.map +0 -1
- package/dist/switchMap-Dkb8wgZy.mjs +0 -2
- package/dist/switchMap-Dkb8wgZy.mjs.map +0 -1
- package/dist/take-CsBFzexj.mjs +0 -2
- package/dist/take-CsBFzexj.mjs.map +0 -1
- package/dist/takeUntil-CFb43n44.mjs +0 -2
- package/dist/takeUntil-CFb43n44.mjs.map +0 -1
- package/dist/throttle-84hk9ct5.mjs +0 -2
- package/dist/throttle-84hk9ct5.mjs.map +0 -1
- package/dist/timer-CudmXrHS.mjs +0 -2
- package/dist/timer-CudmXrHS.mjs.map +0 -1
- package/dist/urlpattern-polyfill-CTSIY__t.mjs +0 -2
- package/dist/urlpattern-polyfill-CTSIY__t.mjs.map +0 -1
- package/dist/usePaneRouter-BnyByWgR.mjs +0 -2
- package/dist/usePaneRouter-BnyByWgR.mjs.map +0 -1
- package/dist/usePresentationNavigate-CIMnjQ3N.mjs +0 -2
- package/dist/usePresentationNavigate-CIMnjQ3N.mjs.map +0 -1
- package/dist/usePresentationParams-CK4TAdiB.mjs +0 -2
- package/dist/usePresentationParams-CK4TAdiB.mjs.map +0 -1
- package/dist/useStructureTool-DJWYs4dK.mjs +0 -86
- package/dist/useStructureTool-DJWYs4dK.mjs.map +0 -1
- package/dist/useStructureToolSetting-BmMWFoFU.mjs +0 -2
- package/dist/useStructureToolSetting-BmMWFoFU.mjs.map +0 -1
- package/dist/userComponent-C7AeZ7LF.mjs +0 -4
- package/dist/userComponent-C7AeZ7LF.mjs.map +0 -1
- package/dist/v4-jDHpYEaJ.mjs +0 -2
- package/dist/v4-jDHpYEaJ.mjs.map +0 -1
- package/dist/version-BzHQOibY.mjs +0 -2
- package/dist/version-BzHQOibY.mjs.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"PresentationToolGrantsCheck-CgJU8JlK.mjs","names":["actorRef","FC","memo","useEffect","VisualEditingConnection","PostMessagePreviewsProps","comlink","PostMessageFeatures","props","$","_c","t0","t1","on","_temp","features","optimistic","ActorRefFrom","assign","setup","Context","url","URL","error","Error","visualEditingOverlaysEnabled","Event","type","enabled","presentationMachine","types","context","events","tags","actions","actors","guards","createMachine","id","on","target","states","description","loading","loaded","event","idle","refreshing","reloading","initial","PresentationMachineRef","Serializable","SerializableObject","FunctionComponent","PropsWithChildren","useCallback","useEffect","useMemo","useRef","PresentationSharedStateContext","VisualEditingConnection","PresentationSharedStateContextValue","SharedStateProvider","comlink","props","$","_c","children","t0","Symbol","for","sharedState","t1","t2","on","state","current","t3","key","value","post","setValue","t4","key_0","removeValue","t5","t6","context","t7","FunctionComponent","PropsWithChildren","useContext","useLayoutEffect","PresentationPanelsContext","styled","PanelProps","defaultSize","id","minWidth","maxWidth","order","Root","div","Panel","t0","$","_c","children","t1","t2","undefined","context","Error","getPanelStyle","registerElement","unregisterElement","t3","style","t4","t5","type","t6","debounce","args","Parameters","F","ReturnType","fn","timeout","timer","setTimeout","clearTimeout","apply","useMemo","debounce","PanelElement","itemKey","StoredPanelsState","Record","getStoredItem","JSON","parse","localStorage","getItem","setStoredItem","data","setItem","stringify","getKeyForPanels","panels","map","panel","id","order","join","usePanelsStorage","$","_c","t0","get","_temp2","set","_temp3","t1","Symbol","for","setDebounced","panels_0","widths","stored_0","key_0","stored","key","Array","isArray","some","_temp","undefined","val","ElementMap","InitialDragState","PanelElement","PanelsState","ResizerElement","getNextWidth","panel","nextWidth","containerWidth","maxWidth","maxWidthPx","minWidth","minWidthPx","Math","min","max","getNextWidths","delta","panelBefore","panelAfter","panelsState","initialDragState","panels","widths","prevWidths","initialWidths","nextWidths","pivotPanel","index","findIndex","id","width","abs","deltaApplied","deltaRemaining","toPrecision","localeCompare","undefined","numeric","length","getPanelWidth","getOffset","event","MouseEvent","handleElement","HTMLDivElement","initialOffset","initialHandleElementRect","DOMRect","pointerOffset","clientX","rect","getBoundingClientRect","elementOffset","left","isPanel","element","type","isResizer","getSortedElements","elements","Array","from","values","sort","order","a","b","validateWidths","widthsToValidate","total","reduce","map","remainingWidth","toFixed","getDefaultWidths","panelsWithoutWidth","remainingWidthTotal","widthsWithNulls","defaultSize","defaultWidth","CSSProperties","FunctionComponent","PropsWithChildren","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","PresentationPanelsContext","styled","ElementMap","InitialDragState","PanelElement","PanelsState","ResizerElement","usePanelsStorage","getDefaultWidths","getNextWidths","getOffset","getPanelWidth","getSortedElements","isPanel","isResizer","validateWidths","PanelsWrapper","div","Panels","t0","$","_c","children","panelsEl","t1","Symbol","for","Map","elements","setElements","t2","t3","filter","panels","t4","widths","setWidths","activeResizer","setActiveResizer","t5","panelsRef","t6","id","flexGrow","pointerEvents","undefined","getPanelStyle","t7","id_0","data","prev","has","next","set","registerElement","t8","id_1","prev_0","next_0","delete","unregisterElement","t9","containerWidth","window","innerWidth","dragOffset","panelAfter","panelBefore","resizerIndex","resizerRect","startX","dragRef","t10","id_2","event","elementsArr","index","findIndex","el","resizer","get","resizeElement","current","reduce","acc","el_0","i","acc_0","el_1","i_0","pageX","getBoundingClientRect","startDragging","t11","stopDragging","t12","id_3","event_0","preventDefault","stopPropagation","resizer_0","resizeElement_0","offset","prevWidths","rect","delta","width","nextWidths","widthsChanged","some","prevWidth","i_1","drag","t13","t14","storage","t15","t16","widths_0","length","storedWidths","validatedStoredWidths","defaultWidths","t17","t18","setDebounced","t19","t20","resizeObserver","ResizeObserver","panels_0","prevWidths_0","nextWidths_0","widthsChanged_0","prevWidth_0","i_2","observe","disconnect","t21","t22","context","t23","t24","Box","Card","CardProps","Container","Flex","Inline","Stack","Text","ReactNode","useTranslation","Button","presentationLocaleNamespace","ErrorCard","props","$","_c","children","message","onContinueAnyway","onRetry","restProps","t","t0","t1","retryButton","t2","t3","continueAnywayButton","t4","t5","t6","t7","t8","t9","t10","forwardRef","PropsWithChildren","useCallback","useMemo","getPublishedId","useUnique","StateLink","useRouter","BackLinkProps","PaneRouterContext","PaneRouterContextValue","ReferenceChildLinkProps","PresentationParamsContextValue","PresentationSearchParams","StructureDocumentPaneParams","encodeQueryString","params","Record","parts","Object","entries","map","key","value","join","length","resolveQueryStringFromParams","nextParams","allowed","Array","safeNextParams","filter","includes","reduce","obj","undefined","BackLink","props","ref","$","_c","restProps","searchParams","t0","t1","type","_searchParams","t2","ReferenceChildLink","documentId","documentType","parentRefPath","template","t3","id","PresentationPaneRouterProvider","children","onStructureParams","structureParams","refs","state","routerState","resolvePathFromState","fromEntries","routerSearchParams","path","qs","createPathWithParams","Symbol","for","t4","t5","t6","childLinkProps","childId","find","r","_id","_type","t7","t8","backLinkProps","childLinkProps_0","t9","nextParams_0","inspect","t10","index","groupIndex","siblingIndex","payload","hasGroupSiblings","groupLength","routerPanesState","ChildLink","ParameterizedLink","_temp","closeCurrentAndAfter","_temp2","handleEditReference","_temp3","replaceCurrent","_temp4","closeCurrent","_temp5","duplicateCurrent","_temp6","setView","_temp7","setParams","setPayload","_temp8","navigateIntent","_temp9","context","t11","intentName","intentParams","options_0","console","warn","options","viewId","pane_0","pane","Error","Card","Code","Flex","Label","Stack","ErrorInfo","useCallback","useEffect","useMemo","useState","getPublishedId","useTranslation","DocumentListPane","StructureDocumentListPane","PaneLayout","PaneNode","StructureToolProvider","styled","ErrorBoundary","ErrorCard","presentationLocaleNamespace","MainDocumentState","PresentationSearchParams","StructureDocumentPaneParams","usePresentationTool","PresentationPaneRouterProvider","RootLayout","Root","WrappedCode","props","$","_c","mainDocumentState","onStructureParams","searchParams","refs","t","devMode","t0","t1","document","_id","t2","r","filter","map","_temp","ids","t3","params","t4","t5","id","options","schemaTypeName","title","type","pane","errorParams","setErrorParams","t6","Symbol","for","handleRetry","structureParams","_temp2","t7","t8","t9","t10","error","message","t11","r_0","Card","Code","Label","Stack","ErrorInfo","Suspense","useCallback","useEffect","useMemo","useState","Path","useTranslation","decodeJsonParams","DocumentPane","StructureDocumentPane","DocumentPaneNode","PaneLayout","styled","ErrorBoundary","ErrorCard","presentationLocaleNamespace","PresentationSpinner","PresentationSearchParams","StructureDocumentPaneParams","usePresentationTool","PresentationPaneRouterProvider","WrappedCode","props","$","_c","documentId","documentType","onFocusPath","onStructureParams","searchParams","structureParams","template","templateParams","t","devMode","t0","t1","t2","id","type","templateParameters","t3","options","title","paneDocumentNode","errorParams","setErrorParams","t4","Symbol","for","handleRetry","t5","t6","t7","t8","error","message","t9","height","t10","Path","StructureToolProvider","PresentationSearchParams","StructureDocumentPaneParams","DocumentPane","DocumentPanel","props","$","_c","documentId","documentType","onFocusPath","onStructureParams","searchParams","structureParams","t0","SchemaType","useEffect","useState","getPreviewStateObservable","PreviewValue","SanityDocument","useDocumentPreviewStore","usePerspective","PreviewState","isLoading","snapshot","Partial","usePreviewState","documentId","schemaType","$","_c","documentPreviewStore","t0","Symbol","for","preview","setPreview","perspectiveStack","t1","t2","subscription","subscribe","state","unsubscribe","WarningOutlineIcon","Box","Card","Flex","Text","HTMLProps","useCallback","useMemo","getPreviewValueWithFallback","Path","PreviewCard","SanityDefaultPreview","Translate","useSchema","useTranslation","StateLink","presentationLocaleNamespace","MainDocumentState","PresentationSearchParams","StructureDocumentPaneParams","DocumentListPane","DocumentPanel","usePreviewState","ContentEditor","props","$","_c","documentId","documentType","mainDocumentState","onFocusPath","onStructureParams","refs","searchParams","structureParams","t","schema","t0","document","_id","_type","props_0","id","type","_searchParams","Object","entries","MainDocumentLink","t1","t2","get","schemaType","previewState","t3","bb0","t4","snapshot","fallback","t5","t6","t7","preview","Code","path","useState","v4","uuid","usePanelId","id","$","_c","t0","panelId","FunctionComponent","MouseEvent","ReactMouseEvent","useCallback","useContext","useEffect","useLayoutEffect","useRef","PresentationPanelsContext","styled","usePanelId","Resizer","div","ResizerInner","$disabled","PanelResizer","id","order","disabled","t0","$","_c","propId","t1","undefined","el","context","Error","activeResizer","drag","startDragging","stopDragging","registerElement","unregisterElement","isDragging","t2","event","nativeEvent","onMouseDown","t3","e","onDrag","t4","current","blur","onDragStop","t5","t6","setDocumentStyles","bodyStyle","document","body","style","documentStyle","documentElement","cursor","userSelect","removeProperty","resetDocumentStyles","window","addEventListener","removeEventListener","t7","t8","type","t10","t9","Symbol","for","t11","t12","Dispatch","FunctionComponent","PropsWithChildren","SetStateAction","CommentIntentGetter","CommentsIntentProvider","Path","SanityDocument","ContentEditor","DisplayedDocumentBroadcasterProvider","Panel","PanelResizer","MainDocumentState","PresentationParamsContextValue","PresentationSearchParams","StructureDocumentPaneParams","PresentationContentProps","documentId","documentsOnPage","_id","_type","documentType","getCommentIntent","mainDocumentState","onFocusPath","path","onStructureParams","params","searchParams","setDisplayedDocument","Partial","structureParams","PresentationContentWrapper","props","$","_c","t0","Symbol","for","t1","children","t2","PresentationContent","FunctionComponent","PropsWithChildren","useCallback","PresentationNavigateContext","PresentationNavigate","PresentationNavigateContextValue","PresentationNavigateProvider","navigate","props","$","_c","children","_navigate","t0","preview","t1","document","undefined","Dispatch","SetStateAction","useEffect","useState","useLocalState","key","defaultValue","$","_c","t0","JSON","parse","localStorage","getItem","stringify","value","setValue","t1","t2","setItem","t3","memo","useCallback","useMemo","Panel","PanelResizer","NavigatorOptions","useLocalState","UsePresentationNavigatorProps","unstable_navigator","UsePresentationNavigatorState","navigatorEnabled","toggleNavigator","usePresentationNavigator","props","$","_c","navigatorProvided","component","_navigatorEnabled","setNavigatorEnabled","t0","bb0","undefined","t1","_temp","PresentationNavigator","Component","t2","t3","enabled","NavigatorComponent","minWidth","maxWidth","navigatorDisabled","Navigator","FunctionComponent","PropsWithChildren","useMemo","PresentationParamsContext","PresentationParamsContextValue","PresentationParamsProvider","params","props","$","_c","children","t0","context","t1","FunctionComponent","PropsWithChildren","useMemo","PresentationContext","PresentationContextValue","PresentationNavigate","PresentationParamsContextValue","PresentationSearchParams","StructureDocumentPaneParams","PresentationProvider","devMode","name","navigate","params","searchParams","structureParams","props","$","_c","children","t0","t1","context","t2","useSelector","PreviewUrlRef","useAllowPatterns","previewUrlRef","allowPatterns","_temp","Array","isArray","TypeError","state","context","allowOrigins","encodeStudioPerspective","studioPerspective","Array","isArray","join","useId","useReactId","$","_c","id","t0","startsWith","replace","Box","motion","VariantLabels","Variants","forwardRef","ReactEventHandler","useEffect","useImperativeHandle","useRef","createGlobalStyle","styled","useId","IFrameProps","animate","initial","onLoad","HTMLIFrameElement","preventClick","src","variants","style","React","CSSProperties","IFrame","props","forwardedRef","$","_c","ref","t0","Symbol","for","current","t1","t2","instance","handleBlur","document","activeElement","dispatchEvent","MouseEvent","bubbles","cancelable","window","addEventListener","removeEventListener","viewTransitionName","t3","t4","t5","t6","t7","IFrameElement","create","iframe","IFrameOverlay","GlobalViewTransition","LaunchIcon","urlSearchParamPreviewPerspective","Text","useCallback","useMemo","useTranslation","Button","Tooltip","presentationLocaleNamespace","PresentationPerspective","encodeStudioPerspective","PreviewProps","OpenPreviewButton","props","$","_c","openPopup","previewLocationOrigin","previewLocationRoute","perspective","targetOrigin","t0","url","URL","searchParams","set","pathname","search","openPreviewLink","t","t1","event","preventDefault","currentTarget","href","handleOpenPopup","t2","t3","t4","Symbol","for","t5","t6","t7","useSelector","PreviewUrlRef","useTargetOrigin","previewUrlRef","targetOrigin","_temp","TypeError","state","context","previewUrl","origin","ResetIcon","TextInput","TextInputClearButtonProps","ChangeEvent","KeyboardEvent","ReactNode","useCallback","useEffect","useMemo","useRef","useState","useActiveWorkspace","useTranslation","presentationLocaleNamespace","PreviewUrlRef","useAllowPatterns","useTargetOrigin","PreviewLocationInput","props","$","_c","fontSize","t0","onChange","padding","t1","prefix","suffix","value","previewUrlRef","undefined","allowOrigins","targetOrigin","t","basePath","t2","activeWorkspace","inputRef","sessionValue","setSessionValue","customValidity","setCustomValidity","t3","Symbol","for","event","currentTarget","handleChange","t4","event_0","key","absoluteValue","toString","Array","isArray","some","pattern","test","origin","context","reportValidity","startsWith","nextValue","current","blur","handleKeyDown","t5","handleBlur","t6","nextValue_0","handleClear","t7","t8","t9","t10","icon","resetButton","t11","t12","zIndex","t13","URL","t14","ClientPerspective","SyncTag","CopyIcon","ShareIcon","SanityMonogram","fetchSharedAccessQuery","disablePreviewAccessSharing","enablePreviewAccessSharing","setSecretSearchParams","Box","Card","Grid","Menu","MenuDivider","Spinner","Stack","Switch","Text","useToast","AnimatePresence","motion","lazy","memo","Suspense","useCallback","useEffect","useMemo","useState","useClient","useCurrentUser","useTranslation","styled","Button","MenuButton","MenuItem","Tooltip","API_VERSION","presentationLocaleNamespace","encodeStudioPerspective","PreviewProps","QRCodeSVG","SharePreviewMenuProps","canToggleSharePreviewAccess","canUseSharedPreviewAccess","previewLocationRoute","initialUrl","perspective","QrCodeLogoSize","QrCodeLogoPadding","QrSize","StyledSanityMonogram","MotionSpinner","create","MotionText","MotionMonogram","SharePreviewMenu","SharePreviewMenuComponent","props","t","push","pushToast","client","apiVersion","currentUser","loading","setLoading","enabling","setEnabling","disabling","setDisabling","secret","setSecret","busy","url","error","setError","handleUnableToToggle","closable","status","title","context","handleDisableSharing","window","location","href","id","handleEnableSharing","previewUrlSecret","handleCopyUrl","Error","navigator","clipboard","writeText","toString","controller","AbortController","usedTags","fetchShareSecret","lastLiveEventId","signal","AbortSignal","result","syncTags","fetch","filterResponse","tag","Array","isArray","aborted","subscription","live","events","subscribe","next","event","type","abort","tags","some","includes","finally","unsubscribe","maxWidth","undefined","cursor","justifyContent","alignItems","gridTemplateColumns","gridTemplateRows","position","aspectRatio","display","opacity","textWrap","textAlign","constrainSize","placement","portal","displayName","DesktopIcon","MobileDeviceIcon","PanelLeftIcon","RefreshIcon","withoutSecretSearchParams","Box","Card","Flex","Hotkeys","Switch","Text","useSelector","RefObject","useCallback","useMemo","useTranslation","Button","Tooltip","presentationLocaleNamespace","HeaderOptions","useId","OpenPreviewButton","PreviewProps","PreviewLocationInput","SharePreviewMenu","PreviewHeaderProps","iframeRef","HTMLIFrameElement","renderDefault","props","React","JSX","Element","PreviewHeaderDefault","$","_c","canSharePreviewAccess","canToggleSharePreviewAccess","canUseSharedPreviewAccess","initialUrl","navigatorEnabled","onPathChange","onRefresh","openPopup","overlaysConnection","presentationRef","perspective","previewUrl","setViewport","targetOrigin","toggleNavigator","toggleOverlay","viewport","previewUrlRef","t","t0","toggleViewportSize","t1","location","origin","previewLocationOrigin","t2","current","send","type","Object","assign","src","handleRefresh","isLoading","_temp","isLoaded","_temp2","isRefreshing","_temp3","isReloading","_temp4","overlaysEnabled","_temp5","t3","previewURL","URL","pathname","search","previewLocationRoute","perspectiveToggleTooltipId","previewUrlBusy","_temp6","t4","Symbol","for","width","t5","content","fallbackPlacements","placement","t6","whiteSpace","t7","t8","context","t9","t10","marginTop","marginBottom","t11","t12","t13","lineHeight","borderRadius","userSelect","t14","undefined","t15","margin","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","node","style","setProperty","t35","t36","t37","t38","t39","t40","t41","t42","t43","t44","PreviewHeader","_temp7","HeaderComponent","options","component","header","position","minHeight","props_0","state","matches","state_0","state_1","loaded","state_2","state_3","visualEditingOverlaysEnabled","state_4","hasTag","createConnectionMachine","createController","createCompatibilityActors","VisualEditingControllerMsg","VisualEditingNodeMsg","urlSearchParamPreviewPerspective","urlSearchParamVercelProtectionBypass","urlSearchParamVercelSetBypassCookie","VercelSetBypassCookieValue","Card","Code","Flex","Label","Spinner","Stack","Text","usePrefersReducedMotion","useToast","useSelector","AnimatePresence","motion","MotionConfig","forwardRef","memo","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","useSyncExternalStore","flushSync","Translate","useTranslation","useEffectEvent","Button","TooltipDelayGroupProvider","ErrorCard","MAX_TIME_TO_OVERLAYS_CONNECTION","presentationLocaleNamespace","PresentationMachineRef","PreviewUrlRef","ConnectionStatus","HeaderOptions","PresentationPerspective","PresentationViewport","useAllowPatterns","usePresentationNavigate","usePresentationTool","encodeStudioPerspective","IFrame","PreviewHeader","MotionFlex","create","PreviewProps","canSharePreviewAccess","canToggleSharePreviewAccess","canUseSharedPreviewAccess","header","initialUrl","URL","loadersConnection","navigatorEnabled","onPathChange","nextPath","onRefresh","fallback","openPopup","url","overlaysConnection","presentationRef","perspective","previewUrl","setViewport","mode","targetOrigin","toggleNavigator","toggleOverlay","viewport","vercelProtectionBypass","previewUrlRef","Preview","HTMLIFrameElement","PreviewComponent","props","forwardedRef","stablePerspective","setStablePerspective","urlPerspective","searchParams","get","set","prev","t","devMode","prefersReducedMotion","ref","previewHeader","current","isLoading","state","matches","loaded","timedOut","setTimedOut","isRefreshing","somethingIsWrong","setSomethingIsWrong","iframeIsBusy","handleRetry","src","toString","send","type","handleContinueAnyway","setContinueAnyway","continueAnyway","showOverlaysConnectionStatus","setShowOverlaysConnectionState","undefined","timeout","setTimeout","clearTimeout","console","error","onIFrameLoad","preventIframeInteraction","canUseViewTransition","CSS","supports","iframeAnimations","currentViewport","setCurrentViewport","iframeStyle","setIframeStyle","iframeVariants","update","document","startViewTransition","types","toast","allowOrigins","checkOrigin","setCheckOrigin","reportedMismatches","Set","reportMismatchingOrigin","reportedOrigin","some","allow","test","has","add","warn","push","closable","id","status","duration","Infinity","title","description","origin","navigate","navigateEvent","nextUrl","pathname","search","hash","target","contentWindow","controller","addTarget","comlink","createChannel","name","heartbeat","connectTo","provide","actors","on","data","stop","start","destroy","interval","setInterval","postMessage","domain","from","AbortController","window","addEventListener","MessageEvent","signal","abort","clearInterval","position","cursor","spinnerVariants","inset","backdropFilter","WebkitBackdropFilter","WebkitTransition","zIndex","sizes","opacity","context","errorVariants","background","displayName","desktop","width","height","mobile","initial","animate","exit","boxShadow","scale","idle","reloading","active","defineWarnOnce","warned","args","console","warn","validateApiPerspective","isEqual","MutableRefObject","useCallback","useMemo","useRef","useState","FrameState","PresentationPerspective","defineWarnOnce","DocumentOnPage","_id","_type","DocumentCache","Record","KeyedDocumentCache","warnOnceAboutCrossDatasetReference","useDocumentsOnPage","perspective","frameStateRef","$","_c","t0","Symbol","for","published","setPublished","t1","previewDrafts","setPreviewDrafts","urlRef","t2","key","perspective_0","t3","sourceDocuments","undefined","documents","filter","_temp","setCache","cache","next","document","current","url","prev","setDocumentsOnPage","keyedCache","t4","uniqueDocuments","Object","values","reduce","_temp2","documentsOnPage","t5","acc","cache_0","forEach","doc","sourceDocument","_projectId","parse","value","_a","index","result","char","prefix","i","_c","route","ResponseQueryOptions","match","Path","useEffect","useRef","useState","useClient","usePerspective","RouterState","useRouter","useEffectEvent","API_VERSION","DocumentResolver","DocumentResolverContext","MainDocument","MainDocumentState","PresentationNavigate","fnOrObj","arg","T","ctx","U","context","Function","getQueryFromResult","resolver","resolve","filter","undefined","type","getParamsFromResult","Record","params","getRouteContext","route","url","URL","routes","Array","isArray","origin","path","absolute","pathname","matcher","decode","decodeURIComponent","result","e","Error","useMainDocument","props","$","_c","navigate","navigationHistory","targetOrigin","resolvers","t0","t1","state","routerState","perspectiveStack","t2","Symbol","for","apiVersion","client","t3","_searchParams","find","_temp","relativeUrl","mainDocumentState","setMainDocumentState","mainDocumentIdRef","t4","doc","current","_id","document","at","id","_type","handleResponse","t5","url_0","length","query","controller","AbortController","options","perspective","signal","tag","fetch","then","doc_0","catch","name","abort","t6","key","studioPath","urlStringToPath","PresentationStateParams","parseId","rawId","undefined","segments","decodeURIComponent","split","shift","join","parsePath","rawPath","toString","parseRouterState","state","id","path","type","MutableRefObject","useCallback","useEffect","useMemo","useRef","useState","getPublishedId","RouterContextValue","RouterState","SearchParam","CombinedSearchParams","FrameState","PresentationNavigate","PresentationParamsContextValue","PresentationSearchParams","PresentationStateParams","StructureDocumentPaneParams","parseRouterState","pruneObject","obj","T","Object","fromEntries","entries","filter","value","undefined","useParams","initialPreviewUrl","routerNavigate","routerState","routerSearchParams","frameStateRef","URL","k","navigate","navigationHistory","params","searchParams","structureParams","id","path","type","preview","toString","perspective","viewport","inspect","rev","since","template","templateParams","view","pathKey","instruction","comment","changesInspectorTab","pruned","routerStateRef","current","setNavigationHistory","nextState","nextSearchState","forceReplace","_searchParams","routerSearchState","reduce","acc","key","state","searchState","replace","url","prev","Controller","useCallback","useEffect","useState","POPUP_CHECK_INTERVAL","usePopups","controller","$","_c","popups","setPopups","_temp","t0","Symbol","for","url","source","window","open","prev","Set","add","t1","t2","unsubs","size","source_0","closed","push","addTarget","forEach","_temp2","t3","t4","interval","setInterval","source_1","prev_0","next","source_2","delete","clearInterval","t5","unsub","usePerspective","PresentationPerspective","usePresentationPerspective","perspectiveStack","selectedPerspectiveName","t0","selectedReleaseId","undefined","perspective","StatusEvent","useCallback","useMemo","useState","ConnectionStatus","useStatus","$","_c","t0","Symbol","for","Map","statusMap","setStatusMap","t1","bb0","values","Array","from","find","_temp","handshaking","filter","_temp2","length","some","_temp3","memoStatus","t2","event","prev","next","status","delete","connection","hasConnected_0","get","hasConnected","status_1","set","setStatusFromEvent","t3","status_0","studioPath","Controller","createConnectionMachine","createController","Message","createCompatibilityActors","PreviewKitNodeMsg","VisualEditingControllerMsg","VisualEditingNodeMsg","urlSearchParamVercelProtectionBypass","urlSearchParamVercelSetBypassCookie","BoundaryElementProvider","Flex","useActorRef","useSelector","lazy","Suspense","useCallback","useEffect","useMemo","useRef","useState","CommentIntentGetter","COMMENTS_INSPECTOR_NAME","Path","SanityDocument","Tool","useDataset","useProjectId","useUnique","useWorkspace","RouterContextValue","useRouter","styled","useEffectEvent","DEFAULT_TOOL_NAME","EDIT_INTENT_MODE","PostMessageFeatures","presentationMachine","PreviewUrlRef","SharedStateProvider","Panel","Panels","PresentationContent","PresentationNavigateProvider","usePresentationNavigator","PresentationParamsProvider","PresentationProvider","Preview","FrameState","PresentationNavigate","PresentationPluginOptions","PresentationStateParams","PresentationViewport","StructureDocumentPaneParams","VisualEditingConnection","useAllowPatterns","useDocumentsOnPage","useMainDocument","useParams","usePopups","usePresentationPerspective","useStatus","useTargetOrigin","debounce","LiveQueries","PostMessageDocuments","PostMessageRefreshMutations","PostMessagePerspective","PostMessagePreviewSnapshots","PostMessageSchema","PostMessageTelemetry","Container","PresentationTool","props","tool","canToggleSharePreviewAccess","canUseSharedPreviewAccess","vercelProtectionBypass","initialPreviewUrl","URL","previewUrlRef","React","JSX","Element","allowOrigins","targetOrigin","components","options","name","unstable_navigator","unstable_header","navigate","routerNavigate","state","routerState","routerSearchParams","Object","fromEntries","_searchParams","perspective","canSharePreviewAccess","context","previewMode","shareAccess","devMode","option","window","location","hostname","iframeRef","HTMLIFrameElement","controller","setController","visualEditingComlink","setVisualEditingComlink","frameStateRef","title","undefined","url","_navigate","navigationHistory","params","searchParams","structureParams","presentationRef","viewport","documentsOnPage","setDocumentsOnPage","projectId","dataset","mainDocumentState","path","preview","resolvers","resolve","mainDocuments","overlaysConnection","setOverlaysConnection","loadersConnection","setLoadersConnection","previewKitConnection","setPreviewKitConnection","open","handleOpenPopup","isLoading","matches","target","current","contentWindow","addTarget","destroy","handleNavigate","nextState","nextSearchState","forceReplace","comlink","createChannel","heartbeat","connectTo","provide","actors","on","data","type","id","startsWith","toString","urlWithoutSearch","search","split","URLSearchParams","delete","size","send","enabled","documents","source","clearTimeout","refreshRef","onStatus","stop","start","handleFocusPath","nextPath","handlePreviewPath","Array","isArray","some","pattern","test","origin","handleStructureParams","post","frameOrigin","previewOrigin","newUrl","pathname","hash","toggleOverlay","displayedDocument","setDisplayedDocument","Partial","handleKeyUp","e","KeyboardEvent","isAltKey","handleKeydown","isHotkey","addEventListener","removeEventListener","boundaryElement","setBoundaryElement","HTMLDivElement","navigatorEnabled","toggleNavigator","PresentationNavigator","handleRefresh","fallback","setTimeout","livePreviewEnabled","workspace","getCommentIntent","inspect","mode","setViewport","next","length","event","key","IS_MAC","navigator","platform","MODIFIERS","Record","alt","ctrl","mod","shift","keys","every","toUpperCase","createPreviewSecret","SanityClient","fromPromise","PromiseActorLogic","defineCreatePreviewSecretActor","client","currentUserId","secret","expiresAt","Date","location","href","fetchSharedAccessQuery","SanityClient","fromPromise","PromiseActorLogic","defineReadSharedSecretActor","client","fetch","tag","fromPromise","PromiseActorLogic","PreviewUrlAllowOption","PreviewUrlAllowOptionContext","Context","Pick","allowOption","Input","Omit","defineResolveAllowPatternsActor","client","URLPattern","input","initialUrl","origin","maybePatterns","patterns","Array","isArray","urlPatterns","map","value","urlPattern","hostname","Error","some","pattern","test","SanityClient","fromPromise","PromiseActorLogic","PresentationPerspective","PreviewUrlOption","encodeStudioPerspective","defineResolveInitialUrlActor","client","studioBasePath","previewUrlOption","perspective","URL","previewSearchParam","input","origin","location","initial","previewUrlSecret","studioPreviewPerspective","preview","fromPromise","PromiseActorLogic","PreviewUrlOption","PreviewUrlPreviewMode","PreviewUrlPreviewModeOptionContext","Options","Omit","Context","Pick","previewUrlOption","Input","defineResolvePreviewModeActor","client","input","targetOrigin","draftMode","enable","shareAccess","previewMode","origin","urlSearchParamPreviewPathname","urlSearchParamPreviewPerspective","urlSearchParamPreviewSecret","SanityClient","fromPromise","PromiseActorLogic","PresentationPerspective","PreviewUrlOption","PreviewUrlPreviewMode","encodeStudioPerspective","ResolvePreviewModeUrlInput","previewUrlSecret","resolvedPreviewMode","initialUrl","URL","defineResolvePreviewModeUrlActor","client","studioBasePath","previewUrlOption","perspective","input","initial","studioPreviewPerspective","previewSearchParam","toString","Error","url","enable","searchParams","set","pathname","search","hash","fromPromise","resolveUrlFromPreviewSearchParamActor","URL","initialUrl","previewSearchParam","allowOrigins","URLPattern","input","previewSearchParamUrl","origin","some","pattern","test","err","schemaIdSingleton","schemaType","schemaTypeSingleton","SanityDocument","uuid","throwError","DocumentValuePermission","PermissionCheckResult","ActorRefFrom","assign","fromObservable","fromPromise","log","setup","ResolvePreviewModeUrlInput","resolveUrlFromPreviewSearchParamActor","PreviewUrlPreviewMode","Context","initialUrl","URL","previewUrl","allowOrigins","URLPattern","error","Error","previewSearchParam","previewUrlSecret","secret","expiresAt","Date","previewAccessSharingCreatePermission","previewAccessSharingReadPermission","previewAccessSharingUpdatePermission","previewUrlSecretPermission","previewMode","SetPreviewSearchParamEvent","type","Event","Input","Omit","CheckPermissionInput","checkPermissionName","document","Partial","shareAccessSingletonDocument","_id","_type","previewUrlSecretDocument","previewUrlMachine","types","context","events","input","tags","actions","_","params","message","cause","actors","Promise","reject","targetOrigin","guards","has checked permissions","Boolean","search param has new origin","event","previewSearchParamUrl","origin","can create preview secret","granted","has preview mode with created secret","has preview mode with share access","has preview mode without permissions","delays","expiredSecret","now","getTime","Math","max","createMachine","id","invoke","src","onError","target","onSnapshot","snapshot","on","states","checkingPermissions","always","guard","resolvingInitialUrl","onDone","output","resolvingAllowPatterns","resolvingUrlFromPreviewSearchParam","resolvingPreviewMode","reenter","success","createPreviewSecret","readShareAccess","resolvePreviewUrl","resolvedPreviewMode","after","initial","PreviewUrlRef","useToast","useActorRef","useSelector","useEffect","useActiveWorkspace","useClient","useCurrentUser","useGrantsStore","useTranslation","useRouter","fromObservable","defineCreatePreviewSecretActor","defineReadSharedSecretActor","defineResolveAllowPatternsActor","defineResolveInitialUrlActor","defineResolvePreviewModeActor","defineResolvePreviewModeUrlActor","API_VERSION","presentationLocaleNamespace","previewUrlMachine","PreviewUrlRef","PreviewUrlAllowOption","PreviewUrlOption","usePresentationPerspective","usePreviewUrlActorRef","previewUrlOption","allowOption","$","_c","grantsStore","t0","Symbol","for","apiVersion","client","currentUser","currentUserId","id","workspace","studioBasePath","activeWorkspace","basePath","router","t1","state","_searchParams","routerSearchParams","URLSearchParams","get","previewSearchParam","push","pushToast","t","perspective","t2","t3","closable","status","duration","Infinity","title","t4","t5","input","checkDocumentPermission","checkPermissionName","document","provide","actions","actors","actorRef","send","type","error","_temp","hasTag","context","useToast","useSelector","useEffect","Translate","useTranslation","useRouter","presentationLocaleNamespace","PreviewUrlRef","useReportInvalidPreviewSearchParam","previewUrlRef","$","_c","t","push","pushToast","router","t0","state","_searchParams","routerSearchParams","URLSearchParams","get","previewSearchParam","allowOrigins","_temp","currentOrigin","_temp2","t1","t2","Array","isArray","nextOrigin","URL","origin","some","pattern","test","closable","id","status","duration","Infinity","title","description","Code","blockedOrigin","state_0","context","previewUrl","subcribeToVercelProtectionBypass","useEffect","useReducer","useState","useClient","API_VERSION","VercelProtectionBypassReadyState","useVercelBypassSecret","$","_c","t0","Symbol","for","apiVersion","client","vercelProtectionBypassReadyState","ready","_temp","vercelProtectionBypassSecret","setVercelProtectionBypassSecret","t1","t2","unsubscribe","secret","t3","useSelector","Tool","PresentationSpinner","PresentationTool","PresentationPluginOptions","usePreviewUrlActorRef","useReportInvalidPreviewSearchParam","useVercelBypassSecret","PresentationToolGrantsCheck","t0","$","_c","tool","previewUrlRef","options","previewUrl","allowOrigins","previewAccessSharingCreatePermission","_temp","previewAccessSharingUpdatePermission","_temp2","previewAccessSharingReadPermission","_temp3","previewUrlSecretPermission","_temp4","url","_temp5","vercelProtectionBypass","vercelProtectionBypassReadyState","granted","t1","Symbol","for","t2","t3","state_3","state","context","state_2","state_1","state_0"],"sources":["https://cdn.jsdelivr.net/npm/framer-motion@12.18.1/dist/es/components/MotionConfig/index.mjs","https://cdn.jsdelivr.net/npm/@xstate/react@6.0.0/dist/xstate-react.esm.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/features/PostMessageFeatures.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/machines/presentation-machine.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/overlays/SharedStateProvider.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/panels/Panel.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/util/debounce.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/panels/usePanelsStorage.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/panels/util.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/panels/Panels.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/components/ErrorCard.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/editor/PresentationPaneRouterProvider.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/editor/DocumentListPane.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/editor/DocumentPane.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/editor/DocumentPanel.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/editor/usePreviewState.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/editor/ContentEditor.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/panels/usePanelId.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/panels/PanelResizer.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationContent.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationNavigateProvider.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useLocalState.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationNavigator.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationParamsProvider.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationProvider.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useAllowPatterns.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/util/encodeStudioPerspective.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useId.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/preview/IFrame.tsx","https://cdn.jsdelivr.net/npm/@sanity/preview-url-secret@2.1.11/dist/without-secret-search-params.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/preview/OpenPreviewButton.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useTargetOrigin.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/preview/PreviewLocationInput.tsx","https://cdn.jsdelivr.net/npm/@sanity/preview-url-secret@2.1.11/dist/_chunks-es/generateSecret.js","https://cdn.jsdelivr.net/npm/@sanity/preview-url-secret@2.1.11/dist/toggle-preview-access-sharing.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/preview/SharePreviewMenu.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/preview/PreviewHeader.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/preview/Preview.tsx","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/util/warnOnce.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useDocumentsOnPage.ts","https://cdn.jsdelivr.net/npm/path-to-regexp@6.3.0/dist.es2015/index.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useMainDocument.ts","https://cdn.jsdelivr.net/npm/valibot@1.1.0/dist/index.js","https://cdn.jsdelivr.net/npm/@sanity/visual-editing-csm@2.0.18/dist/index.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/util/parse.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useParams.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/usePopups.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/usePresentationPerspective.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useStatus.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationTool.tsx","https://cdn.jsdelivr.net/npm/@sanity/preview-url-secret@2.1.11/dist/create-secret.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/create-preview-secret.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/read-shared-secret.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/resolve-allow-patterns.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/resolve-initial-url.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/resolve-preview-mode.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/resolve-preview-mode-url.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/actors/resolve-url-from-preview-search-param.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/machines/preview-url.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/usePreviewUrlActorRef.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useReportInvalidPreviewSearchParam.tsx","https://cdn.jsdelivr.net/npm/@sanity/preview-url-secret@2.1.11/dist/toggle-vercel-protection-bypass.js","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/useVercelBypassSecret.ts","https://github.com/sanity-io/sanity/blob/v3.93.0/packages/sanity/src/presentation/PresentationToolGrantsCheck.tsx"],"sourcesContent":["\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport { useContext, useMemo } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { loadExternalIsValidProp } from '../../render/dom/utils/filter-props.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * `MotionConfig` is used to set configuration options for all children `motion` components.\n *\n * ```jsx\n * import { motion, MotionConfig } from \"framer-motion\"\n *\n * export function App() {\n * return (\n * <MotionConfig transition={{ type: \"spring\" }}>\n * <motion.div animate={{ x: 100 }} />\n * </MotionConfig>\n * )\n * }\n * ```\n *\n * @public\n */\nfunction MotionConfig({ children, isValidProp, ...config }) {\n isValidProp && loadExternalIsValidProp(isValidProp);\n /**\n * Inherit props from any parent MotionConfig components\n */\n config = { ...useContext(MotionConfigContext), ...config };\n /**\n * Don't allow isStatic to change between renders as it affects how many hooks\n * motion components fire.\n */\n config.isStatic = useConstant(() => config.isStatic);\n /**\n * Creating a new config context object will re-render every `motion` component\n * every time it renders. So we only want to create a new one sparingly.\n */\n const context = useMemo(() => config, [\n JSON.stringify(config.transition),\n config.transformPagePoint,\n config.reducedMotion,\n ]);\n return (jsx(MotionConfigContext.Provider, { value: context, children: children }));\n}\n\nexport { MotionConfig };\n","import * as React from 'react';\nimport { useEffect, useState, useCallback } from 'react';\nimport useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';\nimport { toObserver, createActor } from 'xstate';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\n\nconst forEachActor = (actorRef, callback) => {\n callback(actorRef);\n const children = actorRef.getSnapshot().children;\n if (children) {\n Object.values(children).forEach(child => {\n forEachActor(child, callback);\n });\n }\n};\nfunction stopRootWithRehydration(actorRef) {\n // persist snapshot here in a custom way allows us to persist inline actors and to preserve actor references\n // we do it to avoid setState in useEffect when the effect gets \"reconnected\"\n // this currently only happens in Strict Effects but it simulates the Offscreen aka Activity API\n // it also just allows us to end up with a somewhat more predictable behavior for the users\n const persistedSnapshots = [];\n forEachActor(actorRef, ref => {\n persistedSnapshots.push([ref, ref.getSnapshot()]);\n // muting observers allow us to avoid `useSelector` from being notified about the stopped snapshot\n // React reconnects its subscribers (from the useSyncExternalStore) on its own\n // and userland subscribers should basically always do the same anyway\n // as each subscription should have its own cleanup logic and that should be called each such reconnect\n ref.observers = new Set();\n });\n const systemSnapshot = actorRef.system.getSnapshot?.();\n actorRef.stop();\n actorRef.system._snapshot = systemSnapshot;\n persistedSnapshots.forEach(([ref, snapshot]) => {\n ref._processingStatus = 0;\n ref._snapshot = snapshot;\n });\n}\n\nfunction useIdleActorRef(logic, ...[options]) {\n let [[currentConfig, actorRef], setCurrent] = useState(() => {\n const actorRef = createActor(logic, options);\n return [logic.config, actorRef];\n });\n if (logic.config !== currentConfig) {\n const newActorRef = createActor(logic, {\n ...options,\n snapshot: actorRef.getPersistedSnapshot({\n __unsafeAllowInlineActors: true\n })\n });\n setCurrent([logic.config, newActorRef]);\n actorRef = newActorRef;\n }\n\n // TODO: consider using `useAsapEffect` that would do this in `useInsertionEffect` is that's available\n useIsomorphicLayoutEffect(() => {\n actorRef.logic.implementations = logic.implementations;\n });\n return actorRef;\n}\nfunction useActorRef(machine, ...[options, observerOrListener]) {\n const actorRef = useIdleActorRef(machine, options);\n useEffect(() => {\n if (!observerOrListener) {\n return;\n }\n const sub = actorRef.subscribe(toObserver(observerOrListener));\n return () => {\n sub.unsubscribe();\n };\n }, [observerOrListener]);\n useEffect(() => {\n actorRef.start();\n return () => {\n stopRootWithRehydration(actorRef);\n };\n }, [actorRef]);\n return actorRef;\n}\n\nfunction defaultCompare(a, b) {\n return a === b;\n}\nfunction useSelector(actor, selector, compare = defaultCompare) {\n const subscribe = useCallback(handleStoreChange => {\n if (!actor) {\n return () => {};\n }\n const {\n unsubscribe\n } = actor.subscribe(handleStoreChange);\n return unsubscribe;\n }, [actor]);\n const boundGetSnapshot = useCallback(() => actor?.getSnapshot(), [actor]);\n const selectedSnapshot = useSyncExternalStoreWithSelector(subscribe, boundGetSnapshot, boundGetSnapshot, selector, compare);\n return selectedSnapshot;\n}\n\nfunction createActorContext(actorLogic, actorOptions) {\n const ReactContext = /*#__PURE__*/React.createContext(null);\n const OriginalProvider = ReactContext.Provider;\n function Provider({\n children,\n logic: providedLogic = actorLogic,\n machine,\n options: providedOptions\n }) {\n if (machine) {\n throw new Error(`The \"machine\" prop has been deprecated. Please use \"logic\" instead.`);\n }\n const actor = useActorRef(providedLogic, {\n ...actorOptions,\n ...providedOptions\n });\n return /*#__PURE__*/React.createElement(OriginalProvider, {\n value: actor,\n children\n });\n }\n\n // TODO: add properties to actor ref to make more descriptive\n Provider.displayName = `ActorProvider`;\n function useContext() {\n const actor = React.useContext(ReactContext);\n if (!actor) {\n throw new Error(`You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}> component.`);\n }\n return actor;\n }\n function useSelector$1(selector, compare) {\n const actor = useContext();\n return useSelector(actor, selector, compare);\n }\n return {\n Provider: Provider,\n useActorRef: useContext,\n useSelector: useSelector$1\n };\n}\n\n// From https://github.com/reduxjs/react-redux/blob/720f0ba79236cdc3e1115f4ef9a7760a21784b48/src/utils/shallowEqual.ts\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\nfunction useActor(logic, ...[options]) {\n const actorRef = useIdleActorRef(logic, options);\n const getSnapshot = useCallback(() => {\n return actorRef.getSnapshot();\n }, [actorRef]);\n const subscribe = useCallback(handleStoreChange => {\n const {\n unsubscribe\n } = actorRef.subscribe(handleStoreChange);\n return unsubscribe;\n }, [actorRef]);\n const actorSnapshot = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n actorRef.start();\n return () => {\n stopRootWithRehydration(actorRef);\n };\n }, [actorRef]);\n return [actorSnapshot, actorRef.send, actorRef];\n}\n\n/** @alias useActor */\nfunction useMachine(machine, ...[options]) {\n return useActor(machine, options);\n}\n\nexport { createActorContext, shallowEqual, useActor, useActorRef, useMachine, useSelector };\n","import {type FC, memo, useEffect} from 'react'\n\nimport {type VisualEditingConnection} from '../types'\n\nexport interface PostMessagePreviewsProps {\n comlink: VisualEditingConnection\n}\n\nconst PostMessageFeatures: FC<PostMessagePreviewsProps> = (props) => {\n const {comlink} = props\n\n useEffect(() => {\n return comlink.on('visual-editing/features', () => ({\n features: {\n optimistic: true,\n },\n }))\n }, [comlink])\n\n return null\n}\n\nexport default memo(PostMessageFeatures)\n","import {type ActorRefFrom, assign, setup} from 'xstate'\n\ninterface Context {\n url: URL | null\n error: Error | null\n visualEditingOverlaysEnabled: boolean\n}\n\ntype Event =\n | {type: 'toggle visual editing overlays'; enabled: boolean}\n | {type: 'iframe loaded'}\n | {type: 'iframe refresh'}\n | {type: 'iframe reload'}\n\nexport const presentationMachine = setup({\n types: {} as {\n context: Context\n events: Event\n tags: 'busy' | 'error'\n },\n actions: {\n //\n },\n actors: {\n //\n },\n guards: {\n //\n },\n}).createMachine({\n // eslint-disable-next-line tsdoc/syntax\n /** @xstate-layout N4IgpgJg5mDOIC5QAUBOcwDsAuBDbAlgPaYAEAKkUQDYDEBAZqrgLZinrVG4QDaADAF1EoAA5FYBQiREgAHogAsAJgA0IAJ6IAHAEYAdIoCcJowFY9R-vzPLlAX3vq0GHPmJlKNfVx4FMUPRMrOy+EJACwkgg4pLSmLIKCLoAbIr6Zoop2tqKAMxpJnnF6loIZkbK+uZ5umapKXmK-Cm6js7osFh48RRU1D7c4RC02ERQUNTsAG4EsACuuNSkkFL+UKRE02Co1LgasJGysWsy0UnaZinVyrpGAOx1Rim2efeliPe3hma1Zvy6XT8W4OJwgFxdNy9LwDMKQILMNgcMBMOAACyO0RO8USiAK930LWU-3uiiB9yaKXemkQjW01V+txS-GKqUe7XBnW67hIfW8cJGjER7E4Q0xYgkpwS5zxVMJKWJ-FJ5Mp1LKFn4Pz+DSaLTaYIh3Oh-UGPEg+nQqNgaPWCJCpAF4pikpxMoQKWZ+gp+TSZLy1hSH3deXpNSZLNqVP1HVcPQ8fNhQ3Nor8ATtSMdQmOLo8uPdnu9BUUfoDQY1WrqOuarUcYMwRHC8Gihqh8Zh2biubdAFpAzSEL2OS247yYfodqgiKgO1K8yog7ptATFL9dFljMDrHkh1zW6OTWF1jPXaAkmY1YgKnktfxtC9dPd+Io9DvYzzPAekxBj13T3i7vKirKkqqpBsYVQ1HUFjFs0t6KK+kIjh+-JfvoBAQFMP5nH+CDaMo16KjYyjMvUNh5GWOT6MoLL8A8ygrk0dQIUabafmaEAWiinQ2gEWHSjhjJUYuj73Pcd63noQaNEYFb-Dk2S0cxe7IYm7GcYevFYjm2HyJeeQQb8tFkikVjGNoFGajUt73o+z61vYQA */\n id: 'Presentation Tool',\n context: {\n url: null,\n error: null,\n visualEditingOverlaysEnabled: false,\n },\n\n on: {\n 'iframe reload': {\n actions: assign({url: null}),\n target: '.loading',\n },\n },\n\n states: {\n error: {\n description:\n 'Failed to load, either because of a misconfiguration, a network error, or an unexpected error',\n tags: ['error'],\n },\n loading: {\n on: {\n 'iframe loaded': {\n target: 'loaded',\n },\n },\n tags: ['busy'],\n },\n loaded: {\n on: {\n 'toggle visual editing overlays': {\n actions: assign({\n visualEditingOverlaysEnabled: ({event}) => event.enabled,\n }),\n },\n 'iframe refresh': {\n target: '.refreshing',\n },\n 'iframe reload': {\n target: '.reloading',\n },\n },\n\n states: {\n idle: {},\n refreshing: {\n on: {\n 'iframe loaded': {\n target: 'idle',\n },\n },\n tags: ['busy'],\n },\n reloading: {\n on: {\n 'iframe loaded': {\n target: 'idle',\n },\n },\n tags: ['busy'],\n },\n },\n initial: 'idle',\n },\n },\n initial: 'loading',\n})\n\nexport type PresentationMachineRef = ActorRefFrom<typeof presentationMachine>\n","import {type Serializable, type SerializableObject} from '@sanity/presentation-comlink'\nimport {\n type FunctionComponent,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport {PresentationSharedStateContext} from 'sanity/_singletons'\n\nimport {type VisualEditingConnection} from '../types'\nimport {type PresentationSharedStateContextValue} from './types'\n\nexport const SharedStateProvider: FunctionComponent<\n PropsWithChildren<{\n comlink: VisualEditingConnection | null\n }>\n> = function (props) {\n const {comlink, children} = props\n\n const sharedState = useRef<SerializableObject>({})\n\n useEffect(() => {\n return comlink?.on('visual-editing/shared-state', () => {\n return {state: sharedState.current}\n })\n }, [comlink])\n\n const setValue = useCallback(\n (key: string, value: Serializable) => {\n sharedState.current[key] = value\n comlink?.post('presentation/shared-state', {key, value})\n },\n [comlink],\n )\n\n const removeValue = useCallback(\n (key: string) => {\n comlink?.post('presentation/shared-state', {key})\n delete sharedState.current[key]\n },\n [comlink],\n )\n\n const context = useMemo<PresentationSharedStateContextValue>(\n () => ({removeValue, setValue}),\n [removeValue, setValue],\n )\n\n return (\n <PresentationSharedStateContext.Provider value={context}>\n {children}\n </PresentationSharedStateContext.Provider>\n )\n}\n","import {type FunctionComponent, type PropsWithChildren, useContext, useLayoutEffect} from 'react'\nimport {PresentationPanelsContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\ninterface PanelProps extends PropsWithChildren {\n defaultSize?: number | null\n id: string\n minWidth?: number\n maxWidth?: number\n order?: number\n}\n\nconst Root = styled.div`\n overflow: hidden;\n flex-basis: 0;\n flex-shrink: 1;\n`\n\nexport const Panel: FunctionComponent<PanelProps> = function ({\n children,\n defaultSize = null,\n id,\n minWidth,\n maxWidth,\n order = 0,\n}) {\n const context = useContext(PresentationPanelsContext)\n\n if (context === null) {\n throw Error(`Panel components must be rendered within a PanelGroup container`)\n }\n\n const {getPanelStyle, registerElement, unregisterElement} = context\n\n const style = getPanelStyle(id)\n\n useLayoutEffect(() => {\n registerElement(id, {\n id,\n type: 'panel',\n defaultSize,\n maxWidth: maxWidth ?? null,\n minWidth: minWidth ?? 0,\n order,\n })\n\n return () => {\n unregisterElement(id)\n }\n }, [id, defaultSize, order, maxWidth, minWidth, registerElement, unregisterElement])\n\n return <Root style={style}>{children}</Root>\n}\n","export function debounce<F extends (...args: Parameters<F>) => ReturnType<F>>(\n fn: F,\n timeout: number,\n): F {\n let timer: ReturnType<typeof setTimeout>\n return ((...args: Parameters<F>) => {\n clearTimeout(timer)\n timer = setTimeout(() => {\n fn.apply(fn, args)\n }, timeout)\n }) as F\n}\n","import {useMemo} from 'react'\n\nimport {debounce} from '../util/debounce'\nimport {type PanelElement} from './types'\n\nconst itemKey = 'presentation/panels'\n\ntype StoredPanelsState = Record<string, number[]>\n\nconst getStoredItem = () => {\n // @todo Validate\n return JSON.parse(localStorage.getItem(itemKey) || '{}') as StoredPanelsState\n}\nconst setStoredItem = (data: StoredPanelsState) => {\n localStorage.setItem(itemKey, JSON.stringify(data))\n}\n\nconst getKeyForPanels = (panels: PanelElement[]) => {\n return panels.map((panel) => [panel.id, panel.order].join(':')).join(',')\n}\n\nexport function usePanelsStorage(): {\n get: (panels: PanelElement[]) => number[] | undefined\n set: (panels: PanelElement[], widths: number[]) => void\n setDebounced: (panels: PanelElement[], widths: number[]) => void\n} {\n return useMemo(() => {\n const get = (panels: PanelElement[]) => {\n const stored = getStoredItem()\n const key = getKeyForPanels(panels)\n return Array.isArray(stored[key]) && stored[key].some((val) => val === null)\n ? undefined\n : stored[key]\n }\n\n const set = (panels: PanelElement[], widths: number[]) => {\n const stored = getStoredItem()\n const key = getKeyForPanels(panels)\n const data = {\n ...stored,\n [key]: widths,\n }\n setStoredItem(data)\n }\n\n const setDebounced = debounce(set, 100)\n return {\n get,\n set,\n setDebounced,\n }\n }, [])\n}\n","/* eslint-disable @typescript-eslint/no-shadow,no-eq-null */\nimport {\n type ElementMap,\n type InitialDragState,\n type PanelElement,\n type PanelsState,\n type ResizerElement,\n} from './types'\n\nfunction getNextWidth(panel: PanelElement, nextWidth: number, containerWidth: number) {\n const {maxWidth: maxWidthPx, minWidth: minWidthPx} = panel\n const maxWidth = maxWidthPx == null ? 100 : (maxWidthPx / containerWidth) * 100\n const minWidth = (minWidthPx / containerWidth) * 100\n return Math.min(maxWidth, Math.max(minWidth, nextWidth))\n}\n\n// eslint-disable-next-line max-params\nexport function getNextWidths(\n delta: number,\n containerWidth: number,\n panelBefore: PanelElement,\n panelAfter: PanelElement,\n panelsState: PanelsState,\n initialDragState: InitialDragState,\n): number[] {\n const {panels, widths: prevWidths} = panelsState\n const {widths: initialWidths} = initialDragState\n\n const widths = initialWidths || prevWidths\n const nextWidths = [...widths]\n\n {\n const pivotPanel = delta < 0 ? panelAfter : panelBefore\n const index = panels.findIndex((panel) => panel.id === pivotPanel.id)\n const width = widths[index]\n const nextWidth = getNextWidth(pivotPanel, width + Math.abs(delta), containerWidth)\n if (width === nextWidth) {\n return widths\n }\n delta = delta < 0 ? width - nextWidth : nextWidth - width\n }\n\n let deltaApplied = 0\n let pivotPanel = delta < 0 ? panelBefore : panelAfter\n let index = panels.findIndex((panel) => panel.id === pivotPanel.id)\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const panel = panels[index]\n const width = widths[index]\n\n const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied)\n\n const nextWidth = getNextWidth(panel, width - deltaRemaining, containerWidth)\n\n if (width !== nextWidth) {\n deltaApplied += width - nextWidth\n nextWidths[index] = nextWidth\n\n if (\n deltaApplied.toPrecision(10).localeCompare(Math.abs(delta).toPrecision(10), undefined, {\n numeric: true,\n }) >= 0\n ) {\n break\n }\n }\n\n if (delta < 0) {\n if (--index < 0) {\n break\n }\n } else if (++index >= panels.length) {\n break\n }\n }\n\n if (deltaApplied === 0) {\n return widths\n }\n\n pivotPanel = delta < 0 ? panelAfter : panelBefore\n index = panels.findIndex((panel) => panel.id === pivotPanel.id)\n nextWidths[index] = widths[index] + deltaApplied\n\n return nextWidths\n}\n\nexport function getPanelWidth(panels: PanelElement[], id: string, widths: number[]): string {\n if (panels.length === 1) return '100'\n\n const index = panels.findIndex((panel) => panel.id === id)\n const width = widths[index]\n\n // eslint-disable-next-line no-eq-null\n if (width == null) return '0'\n\n return width.toPrecision(10)\n}\n\nexport function getOffset(\n event: MouseEvent,\n handleElement: HTMLDivElement,\n initialOffset: number = 0,\n initialHandleElementRect: DOMRect | null = null,\n): number {\n const pointerOffset = event.clientX\n\n const rect = initialHandleElementRect || handleElement.getBoundingClientRect()\n const elementOffset = rect.left\n\n return pointerOffset - elementOffset - initialOffset\n}\n\nexport function isPanel(element: PanelElement | ResizerElement): element is PanelElement {\n return element.type === 'panel'\n}\n\nexport function isResizer(element: PanelElement | ResizerElement): element is ResizerElement {\n return element.type === 'resizer'\n}\n\nexport function getSortedElements(elements: ElementMap): Array<PanelElement | ResizerElement> {\n return Array.from(elements.values()).sort(({order: a}, {order: b}) => {\n if (a == null && b == null) return 0\n if (a == null) return -1\n if (b == null) return 1\n return a - b\n })\n}\n\nexport function validateWidths(\n panels: PanelElement[],\n widthsToValidate: number[],\n containerWidth: number,\n): number[] {\n // Clamp widths proportionally to total 100\n const total = widthsToValidate.reduce((total, width) => total + width, 0)\n const widths = [...widthsToValidate].map((width) => (width / total) * 100)\n\n let remainingWidth = 0\n\n for (let index = 0; index < panels.length; index++) {\n const panel = panels[index]\n const width = widths[index]\n const nextWidth = getNextWidth(panel, width, containerWidth)\n if (width != nextWidth) {\n remainingWidth += width - nextWidth\n widths[index] = nextWidth\n }\n }\n\n if (remainingWidth.toFixed(3) !== '0.000') {\n for (let index = 0; index < panels.length; index++) {\n const panel = panels[index]\n\n let {maxWidth, minWidth} = panel\n\n minWidth = (minWidth / containerWidth) * 100\n if (maxWidth != null) {\n maxWidth = (maxWidth / containerWidth) * 100\n }\n\n const width = Math.min(\n // eslint-disable-next-line no-negated-condition\n maxWidth != null ? maxWidth : 100,\n Math.max(minWidth, widths[index] + remainingWidth),\n )\n\n if (width !== widths[index]) {\n remainingWidth -= width - widths[index]\n widths[index] = width\n\n if (Math.abs(remainingWidth).toFixed(3) === '0.000') {\n break\n }\n }\n }\n }\n\n return widths\n}\n\nexport function getDefaultWidths(panels: PanelElement[]): number[] {\n let panelsWithoutWidth = panels.length\n let remainingWidthTotal = 100\n\n const widthsWithNulls = panels.map((panel) => {\n if (panel.defaultSize) {\n remainingWidthTotal -= panel.defaultSize\n panelsWithoutWidth -= 1\n return panel.defaultSize\n }\n return null\n })\n\n const defaultWidth = remainingWidthTotal / panelsWithoutWidth\n const widths = widthsWithNulls.map((width) => {\n if (width === null) return defaultWidth\n return width\n })\n\n return widths\n}\n","// Slightly modified version of react-resizable-panels\n// https://github.com/bvaughn/react-resizable-panels/tree/main/packages/react-resizable-panels\n\nimport {\n type CSSProperties,\n type FunctionComponent,\n type PropsWithChildren,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {PresentationPanelsContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {\n type ElementMap,\n type InitialDragState,\n type PanelElement,\n type PanelsState,\n type ResizerElement,\n} from './types'\nimport {usePanelsStorage} from './usePanelsStorage'\nimport {\n getDefaultWidths,\n getNextWidths,\n getOffset,\n getPanelWidth,\n getSortedElements,\n isPanel,\n isResizer,\n validateWidths,\n} from './util'\n\nconst PanelsWrapper = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n overflow: hidden;\n width: 100%;\n`\n\nexport const Panels: FunctionComponent<PropsWithChildren> = function ({children}) {\n const panelsEl = useRef<HTMLDivElement | null>(null)\n\n const [elements, setElements] = useState<ElementMap>(new Map())\n\n const panels = useMemo(() => getSortedElements(elements).filter(isPanel), [elements])\n\n const [widths, setWidths] = useState<number[]>([])\n const [activeResizer, setActiveResizer] = useState<string | null>(null)\n\n const panelsRef = useRef<PanelsState>({\n elements,\n panels,\n widths,\n })\n\n const getPanelStyle = useCallback(\n (id: string): CSSProperties => {\n return {\n flexGrow: getPanelWidth(panels, id, widths),\n pointerEvents: activeResizer === null ? undefined : 'none',\n }\n },\n [activeResizer, panels, widths],\n )\n\n const registerElement = useCallback((id: string, data: PanelElement | ResizerElement) => {\n setElements((prev) => {\n if (prev.has(id)) return prev\n const next = new Map(prev)\n next.set(id, data)\n return next\n })\n }, [])\n const unregisterElement = useCallback((id: string) => {\n setElements((prev) => {\n if (!prev.has(id)) return prev\n const next = new Map(prev)\n next.delete(id)\n return next\n })\n }, [])\n\n const dragRef = useRef<InitialDragState>({\n containerWidth: window.innerWidth,\n dragOffset: 0,\n panelAfter: null,\n panelBefore: null,\n resizerIndex: -1,\n resizerRect: null,\n startX: 0,\n widths: [],\n })\n\n const startDragging = useCallback(\n (id: string, event: MouseEvent) => {\n const elementsArr = getSortedElements(elements)\n const index = elementsArr.findIndex((el) => el.id === id)\n\n const resizer = elements.get(id)\n if (!resizer || !isResizer(resizer)) return\n const resizeElement = resizer.el.current\n if (!resizeElement) return\n\n dragRef.current = {\n resizerIndex: index,\n panelBefore: elementsArr.reduce(\n (acc, el, i) => (isPanel(el) && i < index ? el : acc),\n null as PanelElement | null,\n ),\n panelAfter: elementsArr.reduce(\n (acc, el, i) => (acc === null && isPanel(el) && i > index ? el : acc),\n null as PanelElement | null,\n ),\n containerWidth: window.innerWidth,\n startX: event.pageX,\n dragOffset: getOffset(event, resizeElement),\n resizerRect: resizeElement.getBoundingClientRect(),\n widths: panelsRef.current.widths,\n }\n\n setActiveResizer(id)\n },\n [elements],\n )\n\n const stopDragging = useCallback(() => {\n setActiveResizer(null)\n }, [])\n\n const drag = useCallback(\n (id: string, event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n const {containerWidth, dragOffset, panelBefore, panelAfter, resizerRect} = dragRef.current\n\n // eslint-disable-next-line no-eq-null\n if (panelBefore == null || panelAfter == null) {\n return\n }\n\n const resizer = elements.get(id)\n if (!resizer || !isResizer(resizer)) return\n const resizeElement = resizer.el.current\n if (!resizeElement) return\n\n const offset = getOffset(event, resizeElement, dragOffset, resizerRect)\n\n if (offset === 0) {\n return\n }\n\n const {widths: prevWidths} = panelsRef.current\n const rect = panelsEl.current!.getBoundingClientRect()\n const delta = (offset / rect.width) * 100\n\n const nextWidths = getNextWidths(\n delta,\n containerWidth,\n panelBefore,\n panelAfter,\n panelsRef.current,\n dragRef.current,\n )\n\n const widthsChanged = prevWidths.some((prevWidth, i) => prevWidth !== nextWidths[i])\n\n if (widthsChanged) {\n setWidths(nextWidths)\n }\n },\n [elements],\n )\n\n // For setting the panels state\n useLayoutEffect(() => {\n panelsRef.current.elements = elements\n panelsRef.current.panels = panels\n panelsRef.current.widths = widths\n }, [elements, panels, widths])\n\n const storage = usePanelsStorage()\n\n // For setting default sizing when panels are updated\n useLayoutEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {widths} = panelsRef.current\n\n if (widths.length === panels.length) {\n return\n }\n\n const storedWidths = storage.get(panels)\n\n if (storedWidths) {\n const validatedStoredWidths = validateWidths(panels, storedWidths, window.innerWidth)\n setWidths(validatedStoredWidths)\n return\n }\n\n const defaultWidths = getDefaultWidths(panels)\n setWidths(defaultWidths)\n }, [storage, panels])\n\n // For storing current widths in localStorage\n useEffect(() => {\n if (!widths.length) return\n storage.setDebounced(panels, widths)\n }, [storage, panels, widths])\n\n useLayoutEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {panels, widths: prevWidths} = panelsRef.current\n\n const nextWidths = validateWidths(panels, prevWidths, window.innerWidth)\n\n const widthsChanged = prevWidths.some((prevWidth, i) => prevWidth !== nextWidths[i])\n if (widthsChanged) {\n setWidths(nextWidths)\n }\n })\n\n resizeObserver.observe(panelsEl.current!)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [])\n\n const context = useMemo(\n () => ({\n activeResizer,\n drag,\n getPanelStyle,\n registerElement,\n startDragging,\n stopDragging,\n unregisterElement,\n }),\n [\n activeResizer,\n drag,\n getPanelStyle,\n registerElement,\n startDragging,\n stopDragging,\n unregisterElement,\n ],\n )\n\n return (\n <PresentationPanelsContext.Provider value={context}>\n <PanelsWrapper ref={panelsEl}>{children}</PanelsWrapper>\n </PresentationPanelsContext.Provider>\n )\n}\n","/* eslint-disable no-nested-ternary */\nimport {Box, Card, type CardProps, Container, Flex, Inline, Stack, Text} from '@sanity/ui'\nimport {type ReactNode} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Button} from '../../ui-components'\nimport {presentationLocaleNamespace} from '../i18n'\n\nexport function ErrorCard(\n props: {\n children?: ReactNode\n message: string\n onRetry?: () => void\n onContinueAnyway?: () => void\n } & CardProps,\n): React.JSX.Element {\n const {children, message, onRetry, onContinueAnyway, ...restProps} = props\n\n const {t} = useTranslation(presentationLocaleNamespace)\n\n const retryButton = (\n <Button mode=\"ghost\" onClick={onRetry} text={t('error-card.retry-button.text')} />\n )\n const continueAnywayButton = (\n <Button\n mode=\"ghost\"\n tone=\"critical\"\n onClick={onContinueAnyway}\n text={t('error-card.continue-button.text')}\n />\n )\n\n return (\n <Card height=\"fill\" {...restProps}>\n <Flex align=\"center\" height=\"fill\" justify=\"center\">\n <Container padding={4} sizing=\"border\" width={0}>\n <Stack space={4}>\n <Stack space={3}>\n <Text size={1} weight=\"semibold\">\n {t('error-card.title')}\n </Text>\n <Text muted size={1}>\n {message}\n </Text>\n </Stack>\n\n {children}\n\n {onRetry && onContinueAnyway ? (\n <Inline space={2}>\n {retryButton}\n {continueAnywayButton}\n </Inline>\n ) : onRetry ? (\n <Box>{retryButton}</Box>\n ) : onContinueAnyway ? (\n <Box>{continueAnywayButton}</Box>\n ) : null}\n </Stack>\n </Container>\n </Flex>\n </Card>\n )\n}\n","/* eslint-disable no-console */\n\nimport {forwardRef, type PropsWithChildren, useCallback, useMemo} from 'react'\nimport {getPublishedId, useUnique} from 'sanity'\nimport {StateLink, useRouter} from 'sanity/router'\nimport {\n type BackLinkProps,\n PaneRouterContext,\n type PaneRouterContextValue,\n type ReferenceChildLinkProps,\n} from 'sanity/structure'\n\nimport {\n type PresentationParamsContextValue,\n type PresentationSearchParams,\n type StructureDocumentPaneParams,\n} from '../types'\n\nfunction encodeQueryString(params: Record<string, unknown> = {}): string {\n const parts = Object.entries(params)\n .map(([key, value]) => `${key}=${value}`)\n .join('&')\n\n return parts.length ? `?${parts}` : ''\n}\n\nfunction resolveQueryStringFromParams(nextParams: Record<string, string | undefined>) {\n const allowed = [\n 'comment',\n 'inspect',\n 'instruction',\n 'pathKey',\n 'rev',\n 'since',\n 'template',\n 'view',\n ] satisfies Array<keyof PresentationParamsContextValue> as string[]\n\n const safeNextParams = Object.entries(nextParams)\n .filter(([key]) => allowed.includes(key))\n .reduce((obj, [key, value]) => {\n if (value == undefined) return obj\n return {...obj, [key]: value}\n }, {})\n\n return encodeQueryString(safeNextParams)\n}\n\nconst BackLink = forwardRef(function BackLink(\n props: BackLinkProps & {searchParams: PresentationSearchParams},\n ref: React.ForwardedRef<HTMLAnchorElement>,\n) {\n const {searchParams, ...restProps} = props\n return (\n <StateLink\n {...restProps}\n ref={ref}\n state={{\n type: undefined,\n _searchParams: Object.entries(searchParams),\n }}\n title={undefined}\n />\n )\n})\n\nconst ReferenceChildLink = forwardRef(function ReferenceChildLink(\n props: ReferenceChildLinkProps & {searchParams: PresentationSearchParams},\n ref: React.ForwardedRef<HTMLAnchorElement>,\n) {\n const {\n documentId,\n documentType,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parentRefPath,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n template,\n searchParams,\n ...restProps\n } = props\n\n return (\n <StateLink\n {...restProps}\n ref={ref}\n state={{\n id: documentId,\n type: documentType,\n _searchParams: Object.entries(searchParams),\n }}\n title={undefined}\n />\n )\n})\n\nexport function PresentationPaneRouterProvider(\n props: PropsWithChildren<{\n onStructureParams: (params: StructureDocumentPaneParams) => void\n refs?: {_id: string; _type: string}[]\n searchParams: PresentationSearchParams\n structureParams: StructureDocumentPaneParams\n }>,\n): React.JSX.Element {\n const {children, onStructureParams, structureParams, searchParams, refs} = props\n\n const {state: routerState, resolvePathFromState} = useRouter()\n\n const routerSearchParams = useUnique(Object.fromEntries(routerState._searchParams || []))\n\n const createPathWithParams: PaneRouterContextValue['createPathWithParams'] = useCallback(\n (nextParams) => {\n const path = resolvePathFromState(routerState)\n const qs = resolveQueryStringFromParams({\n ...routerSearchParams,\n ...nextParams,\n })\n return `${path}${qs}`\n },\n [resolvePathFromState, routerSearchParams, routerState],\n )\n\n const context: PaneRouterContextValue = useMemo(() => {\n return {\n index: 0,\n groupIndex: 0,\n siblingIndex: 0,\n payload: {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: structureParams as any,\n hasGroupSiblings: false,\n groupLength: 1,\n routerPanesState: [],\n ChildLink: (childLinkProps) => {\n const {childId, ...restProps} = childLinkProps\n const ref = refs?.find((r) => r._id === childId || getPublishedId(r._id) === childId)\n if (ref) {\n return (\n <StateLink\n {...restProps}\n state={{\n id: childId,\n type: ref._type,\n _searchParams: Object.entries(searchParams),\n }}\n />\n )\n }\n\n return <div {...restProps} />\n },\n BackLink: (backLinkProps) => <BackLink {...backLinkProps} searchParams={searchParams} />,\n ReferenceChildLink: (childLinkProps) => (\n <ReferenceChildLink {...childLinkProps} searchParams={searchParams} />\n ),\n ParameterizedLink: () => {\n throw new Error('ParameterizedLink not implemented')\n },\n closeCurrentAndAfter: () => {\n console.warn('closeCurrentAndAfter')\n },\n handleEditReference: (options) => {\n console.warn('handleEditReference', options)\n },\n replaceCurrent: (pane) => {\n console.warn('replaceCurrent', pane)\n },\n closeCurrent: () => {\n console.warn('closeCurrent')\n },\n duplicateCurrent: (pane) => {\n console.warn('duplicateCurrent', pane)\n },\n setView: (viewId) => {\n console.warn('setView', viewId)\n },\n setParams: (nextParams) => {\n // eslint-disable-next-line no-warning-comments\n // @todo set inspect param to undefined manually as param is missing from object when closing inspector\n onStructureParams({\n ...nextParams,\n inspect: nextParams.inspect ?? undefined,\n } as StructureDocumentPaneParams)\n },\n setPayload: (payload) => {\n console.warn('setPayload', payload)\n },\n navigateIntent: (intentName, intentParams, options) => {\n console.warn('navigateIntent', intentName, intentParams, options)\n },\n createPathWithParams,\n }\n }, [createPathWithParams, onStructureParams, refs, searchParams, structureParams])\n\n return <PaneRouterContext.Provider value={context}>{children}</PaneRouterContext.Provider>\n}\n","import {Card, Code, Flex, Label, Stack} from '@sanity/ui'\nimport {type ErrorInfo, useCallback, useEffect, useMemo, useState} from 'react'\nimport {getPublishedId, useTranslation} from 'sanity'\nimport {\n DocumentListPane as StructureDocumentListPane,\n PaneLayout,\n type PaneNode,\n StructureToolProvider,\n} from 'sanity/structure'\nimport {styled} from 'styled-components'\n\nimport {ErrorBoundary} from '../../ui-components'\nimport {ErrorCard} from '../components/ErrorCard'\nimport {presentationLocaleNamespace} from '../i18n'\nimport {\n type MainDocumentState,\n type PresentationSearchParams,\n type StructureDocumentPaneParams,\n} from '../types'\nimport {usePresentationTool} from '../usePresentationTool'\nimport {PresentationPaneRouterProvider} from './PresentationPaneRouterProvider'\n\nconst RootLayout = styled(PaneLayout)`\n height: 100%;\n`\n\nconst Root = styled(Flex)`\n & > div {\n min-width: none !important;\n max-width: none !important;\n }\n`\n\nconst WrappedCode = styled(Code)`\n white-space: pre-wrap;\n`\n\nexport function DocumentListPane(props: {\n mainDocumentState?: MainDocumentState\n onStructureParams: (params: StructureDocumentPaneParams) => void\n searchParams: PresentationSearchParams\n refs: {_id: string; _type: string}[]\n}): React.JSX.Element {\n const {mainDocumentState, onStructureParams, searchParams, refs} = props\n\n const {t} = useTranslation(presentationLocaleNamespace)\n const {devMode} = usePresentationTool()\n\n const ids = useMemo(\n () =>\n refs\n .filter((r) => getPublishedId(r._id) !== mainDocumentState?.document?._id)\n .map((r) => getPublishedId(r._id)),\n [mainDocumentState, refs],\n )\n\n const pane: Extract<PaneNode, {type: 'documentList'}> = useMemo(\n () => ({\n id: '$root',\n options: {\n filter: '_id in $ids',\n params: {ids},\n // defaultOrdering: [{field: '_updatedAt', direction: 'desc'}],\n },\n schemaTypeName: '',\n title: t('document-list-pane.document-list.title'),\n type: 'documentList',\n }),\n [ids, t],\n )\n\n const [errorParams, setErrorParams] = useState<{\n info: ErrorInfo\n error: Error\n } | null>(null)\n\n const handleRetry = useCallback(() => setErrorParams(null), [])\n\n const [structureParams] = useState(() => ({}))\n\n // Reset error state when `refs` value schanges\n useEffect(() => setErrorParams(null), [refs])\n\n if (errorParams) {\n return (\n <ErrorCard flex={1} message={t('document-list-pane.error.text')} onRetry={handleRetry}>\n {devMode && (\n // show runtime error message in dev mode\n <Card overflow=\"auto\" padding={3} radius={2} tone=\"critical\">\n <Stack space={3}>\n <Label muted size={0}>\n {t('presentation-error.label')}\n </Label>\n <WrappedCode size={1}>{errorParams.error.message}</WrappedCode>\n </Stack>\n </Card>\n )}\n </ErrorCard>\n )\n }\n\n return (\n <ErrorBoundary onCatch={setErrorParams}>\n <RootLayout>\n <StructureToolProvider>\n <PresentationPaneRouterProvider\n onStructureParams={onStructureParams}\n structureParams={structureParams}\n searchParams={searchParams}\n refs={refs}\n >\n <Root direction=\"column\" flex={1}>\n <StructureDocumentListPane\n index={0}\n itemId=\"$root\"\n pane={pane}\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n paneKey=\"$root\"\n />\n </Root>\n </PresentationPaneRouterProvider>\n </StructureToolProvider>\n </RootLayout>\n </ErrorBoundary>\n )\n}\n","import {Card, Code, Label, Stack} from '@sanity/ui'\nimport {type ErrorInfo, Suspense, useCallback, useEffect, useMemo, useState} from 'react'\nimport {type Path, useTranslation} from 'sanity'\nimport {decodeJsonParams} from 'sanity/router'\nimport {\n DocumentPane as StructureDocumentPane,\n type DocumentPaneNode,\n PaneLayout,\n} from 'sanity/structure'\nimport {styled} from 'styled-components'\n\nimport {ErrorBoundary} from '../../ui-components'\nimport {ErrorCard} from '../components/ErrorCard'\nimport {presentationLocaleNamespace} from '../i18n'\nimport {PresentationSpinner} from '../PresentationSpinner'\nimport {type PresentationSearchParams, type StructureDocumentPaneParams} from '../types'\nimport {usePresentationTool} from '../usePresentationTool'\nimport {PresentationPaneRouterProvider} from './PresentationPaneRouterProvider'\n\nconst WrappedCode = styled(Code)`\n white-space: pre-wrap;\n`\n\nexport function DocumentPane(props: {\n documentId: string\n documentType: string\n onFocusPath: (path: Path) => void\n onStructureParams: (params: StructureDocumentPaneParams) => void\n structureParams: StructureDocumentPaneParams\n searchParams: PresentationSearchParams\n}): React.JSX.Element {\n const {documentId, documentType, onFocusPath, onStructureParams, searchParams, structureParams} =\n props\n const {template, templateParams} = structureParams\n\n const {t} = useTranslation(presentationLocaleNamespace)\n const {devMode} = usePresentationTool()\n\n const paneDocumentNode: DocumentPaneNode = useMemo(\n () => ({\n id: documentId,\n options: {\n id: documentId,\n type: documentType,\n template,\n templateParameters: decodeJsonParams(templateParams),\n },\n title: '',\n type: 'document',\n }),\n [documentId, documentType, template, templateParams],\n )\n\n const [errorParams, setErrorParams] = useState<{\n info: ErrorInfo\n error: Error\n } | null>(null)\n\n const handleRetry = useCallback(() => setErrorParams(null), [])\n\n // Reset error state when parameters change\n useEffect(() => {\n setErrorParams(null)\n }, [documentId, documentType, structureParams])\n\n if (errorParams) {\n return (\n <ErrorCard flex={1} message={t('document-pane.error.text')} onRetry={handleRetry}>\n {devMode && (\n // show runtime error message in dev mode\n <Card overflow=\"auto\" padding={3} radius={2} tone=\"critical\">\n <Stack space={3}>\n <Label muted size={0}>\n {t('presentation-error.label')}\n </Label>\n <WrappedCode size={1}>{errorParams.error.message}</WrappedCode>\n </Stack>\n </Card>\n )}\n </ErrorCard>\n )\n }\n\n return (\n <ErrorBoundary onCatch={setErrorParams}>\n <PaneLayout style={{height: '100%'}}>\n <PresentationPaneRouterProvider\n searchParams={searchParams}\n onStructureParams={onStructureParams}\n structureParams={structureParams}\n >\n <Suspense fallback={<PresentationSpinner />}>\n <StructureDocumentPane\n // eslint-disable-next-line @sanity/i18n/no-attribute-string-literals\n paneKey=\"document\"\n index={1}\n itemId=\"document\"\n pane={paneDocumentNode}\n onFocusPath={onFocusPath}\n />\n </Suspense>\n </PresentationPaneRouterProvider>\n </PaneLayout>\n </ErrorBoundary>\n )\n}\n","import {type Path} from 'sanity'\n\nimport {StructureToolProvider} from '../../structure/StructureToolProvider'\nimport {type PresentationSearchParams, type StructureDocumentPaneParams} from '../types'\nimport {DocumentPane} from './DocumentPane'\n\nexport function DocumentPanel(props: {\n documentId: string\n documentType: string\n onFocusPath: (path: Path) => void\n onStructureParams: (params: StructureDocumentPaneParams) => void\n searchParams: PresentationSearchParams\n structureParams: StructureDocumentPaneParams\n}): React.JSX.Element {\n const {documentId, documentType, onFocusPath, onStructureParams, searchParams, structureParams} =\n props\n return (\n <StructureToolProvider>\n <DocumentPane\n documentId={documentId}\n documentType={documentType}\n onFocusPath={onFocusPath}\n onStructureParams={onStructureParams}\n searchParams={searchParams}\n structureParams={structureParams}\n />\n </StructureToolProvider>\n )\n}\n","import {type SchemaType} from '@sanity/types'\nimport {useEffect, useState} from 'react'\nimport {\n getPreviewStateObservable,\n type PreviewValue,\n type SanityDocument,\n useDocumentPreviewStore,\n usePerspective,\n} from 'sanity'\n\ninterface PreviewState {\n isLoading?: boolean\n snapshot?: PreviewValue | Partial<SanityDocument> | null\n}\n\nexport default function usePreviewState(documentId: string, schemaType?: SchemaType): PreviewState {\n const documentPreviewStore = useDocumentPreviewStore()\n const [preview, setPreview] = useState<PreviewState>({})\n const {perspectiveStack} = usePerspective()\n useEffect(() => {\n if (!schemaType) {\n return undefined\n }\n const subscription = getPreviewStateObservable(\n documentPreviewStore,\n schemaType,\n documentId,\n perspectiveStack,\n ).subscribe((state) => {\n setPreview(state)\n })\n\n return () => {\n subscription?.unsubscribe()\n }\n }, [documentPreviewStore, schemaType, documentId, perspectiveStack])\n\n return preview\n}\n","import {WarningOutlineIcon} from '@sanity/icons'\nimport {Box, Card, Flex, Text} from '@sanity/ui'\nimport {type HTMLProps, useCallback, useMemo} from 'react'\nimport {\n getPreviewValueWithFallback,\n type Path,\n PreviewCard,\n SanityDefaultPreview,\n Translate,\n useSchema,\n useTranslation,\n} from 'sanity'\nimport {StateLink} from 'sanity/router'\n\nimport {presentationLocaleNamespace} from '../i18n'\nimport {\n type MainDocumentState,\n type PresentationSearchParams,\n type StructureDocumentPaneParams,\n} from '../types'\nimport {DocumentListPane} from './DocumentListPane'\nimport {DocumentPanel} from './DocumentPanel'\nimport usePreviewState from './usePreviewState'\n\nexport function ContentEditor(props: {\n documentId?: string\n documentType?: string\n mainDocumentState?: MainDocumentState\n onFocusPath: (path: Path) => void\n onStructureParams: (params: StructureDocumentPaneParams) => void\n refs: {_id: string; _type: string}[]\n structureParams: StructureDocumentPaneParams\n searchParams: PresentationSearchParams\n}): React.JSX.Element {\n const {\n documentId,\n documentType,\n mainDocumentState,\n onFocusPath,\n onStructureParams,\n refs,\n searchParams,\n structureParams,\n } = props\n\n const {t} = useTranslation(presentationLocaleNamespace)\n const schema = useSchema()\n\n const MainDocumentLink = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (props: HTMLProps<HTMLAnchorElement>) => {\n return (\n <StateLink\n {...props}\n state={{\n id: mainDocumentState?.document?._id,\n type: mainDocumentState?.document?._type,\n _searchParams: Object.entries(searchParams),\n }}\n />\n )\n },\n [mainDocumentState, searchParams],\n )\n\n const schemaType = useMemo(\n () => schema.get(mainDocumentState?.document?._type || 'shoe')!,\n [mainDocumentState, schema],\n )\n\n const previewState = usePreviewState(mainDocumentState?.document?._id || '', schemaType)\n\n const preview = useMemo(() => {\n if (!mainDocumentState?.document) return null\n\n return (\n <SanityDefaultPreview\n {...getPreviewValueWithFallback({\n snapshot: previewState.snapshot,\n fallback: mainDocumentState!.document,\n })}\n schemaType={schemaType}\n status={\n <Card padding={1} radius={2} shadow={1}>\n <Text muted size={0} weight=\"medium\">\n {t('main-document.label')}\n </Text>\n </Card>\n }\n />\n )\n }, [mainDocumentState, schemaType, t, previewState])\n\n if (documentId && documentType) {\n return (\n <DocumentPanel\n documentId={documentId}\n documentType={documentType}\n onFocusPath={onFocusPath}\n onStructureParams={onStructureParams}\n searchParams={searchParams}\n structureParams={structureParams}\n />\n )\n }\n\n return (\n <Flex direction=\"column\" flex={1} height=\"fill\">\n {mainDocumentState && (\n <Card padding={3} tone={mainDocumentState.document ? 'inherit' : 'caution'}>\n {mainDocumentState.document ? (\n <PreviewCard\n __unstable_focusRing\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n as={MainDocumentLink as any}\n data-as=\"a\"\n radius={2}\n sizing=\"border\"\n tone=\"inherit\"\n >\n {preview}\n </PreviewCard>\n ) : (\n <Card padding={2} radius={2} tone=\"inherit\">\n <Flex gap={3}>\n <Box flex=\"none\">\n <Text size={1}>\n <WarningOutlineIcon />\n </Text>\n </Box>\n <Box flex={1}>\n <Text size={1}>\n <Translate\n t={t}\n i18nKey=\"main-document.missing.text\"\n components={{Code: 'code'}}\n values={{path: mainDocumentState.path}}\n />\n </Text>\n </Box>\n </Flex>\n </Card>\n )}\n </Card>\n )}\n\n <DocumentListPane\n mainDocumentState={mainDocumentState}\n onStructureParams={onStructureParams}\n searchParams={searchParams}\n refs={refs}\n />\n </Flex>\n )\n}\n","import {useState} from 'react'\nimport {v4 as uuid} from 'uuid'\n\nexport function usePanelId(id?: string): string {\n const [panelId] = useState(() => id || uuid())\n return panelId\n}\n","import {\n type FunctionComponent,\n type MouseEvent as ReactMouseEvent,\n useCallback,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n} from 'react'\nimport {PresentationPanelsContext} from 'sanity/_singletons'\nimport {styled} from 'styled-components'\n\nimport {usePanelId} from './usePanelId'\n\nconst Resizer = styled.div`\n position: relative;\n`\nconst ResizerInner = styled.div<{\n $disabled: boolean\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n left: -5px;\n width: 9px;\n z-index: 10;\n cursor: ${({$disabled}) => ($disabled ? 'auto' : 'ew-resize')};\n\n /* Border */\n & > span:nth-child(1) {\n display: block;\n border-left: 1px solid var(--card-border-color);\n position: absolute;\n top: 0;\n left: 4px;\n bottom: 0;\n transition: opacity 200ms;\n }\n\n ${({$disabled}) =>\n !$disabled &&\n `\n /* Hover effect */\n & > span:nth-child(2) {\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 9px;\n bottom: 0;\n background-color: var(--card-border-color);\n opacity: 0;\n transition: opacity 150ms;\n }\n\n @media (hover: hover) {\n &:hover > span:nth-child(2) {\n opacity: 0.2;\n }\n }\n `}\n`\n\nexport const PanelResizer: FunctionComponent<{\n id?: string\n order: number\n disabled?: boolean\n}> = function ({id: propId, order, disabled = false}) {\n const el = useRef<HTMLDivElement>(null)\n\n const context = useContext(PresentationPanelsContext)\n\n if (context === null) {\n throw Error(`Panel components must be rendered within a PanelGroup container`)\n }\n\n const id = usePanelId(propId)\n\n const {activeResizer, drag, startDragging, stopDragging, registerElement, unregisterElement} =\n context\n\n const isDragging = activeResizer === id\n\n if (context === null) {\n throw Error(`Panel components must be rendered within a PanelGroup container`)\n }\n\n const onMouseDown = useCallback(\n (event: ReactMouseEvent) => {\n startDragging(id, event.nativeEvent)\n },\n [id, startDragging],\n )\n\n const onDrag = useCallback(\n (e: MouseEvent) => {\n drag(id, e)\n },\n [id, drag],\n )\n\n const onDragStop = useCallback(() => {\n el.current!.blur()\n stopDragging()\n }, [stopDragging])\n\n useEffect(() => {\n if (!isDragging || disabled) return\n\n // Set styles to prevent text selection and force an ew-resize cursor whilst\n // dragging. Return a reset callback so we can revert to any values that\n // might have been present before dragging started.\n function setDocumentStyles() {\n const bodyStyle = document.body.style\n const documentStyle = document.documentElement.style\n\n const {cursor} = documentStyle\n const {userSelect} = bodyStyle\n\n documentStyle.cursor = 'ew-resize'\n bodyStyle.userSelect = 'none'\n\n return () => {\n if (cursor) documentStyle.cursor = cursor\n else documentStyle.removeProperty('cursor')\n\n if (userSelect) bodyStyle.userSelect = userSelect\n else bodyStyle.removeProperty('user-select')\n }\n }\n\n const resetDocumentStyles = setDocumentStyles()\n window.addEventListener('mousemove', onDrag)\n window.addEventListener('mouseup', onDragStop)\n window.addEventListener('contextmenu', onDragStop)\n\n // eslint-disable-next-line consistent-return\n return () => {\n resetDocumentStyles()\n window.removeEventListener('mousemove', onDrag)\n window.removeEventListener('mouseup', onDragStop)\n window.removeEventListener('contextmenu', onDragStop)\n }\n }, [disabled, isDragging, onDrag, onDragStop])\n\n useLayoutEffect(() => {\n registerElement(id, {id, order, type: 'resizer', el})\n\n return () => {\n unregisterElement(id)\n }\n }, [id, order, registerElement, unregisterElement])\n\n return (\n <Resizer onMouseDown={onMouseDown} ref={el}>\n <ResizerInner $disabled={disabled}>\n <span />\n <span />\n </ResizerInner>\n </Resizer>\n )\n}\n","import {\n type Dispatch,\n type FunctionComponent,\n type PropsWithChildren,\n type SetStateAction,\n} from 'react'\nimport {\n type CommentIntentGetter,\n CommentsIntentProvider,\n type Path,\n type SanityDocument,\n} from 'sanity'\n\nimport {ContentEditor} from './editor/ContentEditor'\nimport {DisplayedDocumentBroadcasterProvider} from './loader/DisplayedDocumentBroadcaster'\nimport {Panel} from './panels/Panel'\nimport {PanelResizer} from './panels/PanelResizer'\nimport {\n type MainDocumentState,\n type PresentationParamsContextValue,\n type PresentationSearchParams,\n type StructureDocumentPaneParams,\n} from './types'\n\nexport interface PresentationContentProps {\n documentId: PresentationParamsContextValue['id']\n documentsOnPage: {_id: string; _type: string}[]\n documentType: PresentationParamsContextValue['type']\n getCommentIntent: CommentIntentGetter\n mainDocumentState: MainDocumentState | undefined\n onFocusPath: (path: Path) => void\n onStructureParams: (params: StructureDocumentPaneParams) => void\n searchParams: PresentationSearchParams\n setDisplayedDocument: Dispatch<SetStateAction<Partial<SanityDocument> | null | undefined>>\n structureParams: StructureDocumentPaneParams\n}\n\nconst PresentationContentWrapper: FunctionComponent<\n PropsWithChildren<{\n documentId?: string\n getCommentIntent: CommentIntentGetter\n setDisplayedDocument: Dispatch<SetStateAction<Partial<SanityDocument> | null | undefined>>\n }>\n> = (props) => {\n const {documentId, setDisplayedDocument, getCommentIntent} = props\n return (\n <>\n <PanelResizer order={4} />\n <Panel id=\"content\" minWidth={325} order={5}>\n <DisplayedDocumentBroadcasterProvider\n documentId={documentId}\n setDisplayedDocument={setDisplayedDocument}\n >\n <CommentsIntentProvider getIntent={getCommentIntent}>\n {props.children}\n </CommentsIntentProvider>\n </DisplayedDocumentBroadcasterProvider>\n </Panel>\n </>\n )\n}\n\nexport const PresentationContent: FunctionComponent<PresentationContentProps> = (props) => {\n const {\n documentId,\n documentsOnPage,\n documentType,\n getCommentIntent,\n mainDocumentState,\n onFocusPath,\n onStructureParams,\n searchParams,\n setDisplayedDocument,\n structureParams,\n } = props\n\n return (\n <PresentationContentWrapper\n documentId={documentId}\n getCommentIntent={getCommentIntent}\n setDisplayedDocument={setDisplayedDocument}\n >\n <ContentEditor\n documentId={documentId}\n documentType={documentType}\n mainDocumentState={mainDocumentState}\n onFocusPath={onFocusPath}\n onStructureParams={onStructureParams}\n refs={documentsOnPage}\n searchParams={searchParams}\n structureParams={structureParams}\n />\n </PresentationContentWrapper>\n )\n}\n","import {type FunctionComponent, type PropsWithChildren, useCallback} from 'react'\nimport {PresentationNavigateContext} from 'sanity/_singletons'\n\nimport {type PresentationNavigate, type PresentationNavigateContextValue} from './types'\n\nexport const PresentationNavigateProvider: FunctionComponent<\n PropsWithChildren<{\n navigate: PresentationNavigate\n }>\n> = function (props) {\n const {children, navigate: _navigate} = props\n\n const navigate = useCallback<PresentationNavigateContextValue>(\n (preview, document = undefined) => {\n _navigate(document || {}, preview ? {preview} : {})\n },\n [_navigate],\n )\n\n return (\n <PresentationNavigateContext.Provider value={navigate}>\n {children}\n </PresentationNavigateContext.Provider>\n )\n}\n","import {type Dispatch, type SetStateAction, useEffect, useState} from 'react'\n\nexport function useLocalState<T>(key: string, defaultValue: T): [T, Dispatch<SetStateAction<T>>] {\n const [value, setValue] = useState<T>(() =>\n JSON.parse(localStorage.getItem(key) ?? JSON.stringify(defaultValue)),\n )\n\n useEffect(() => {\n localStorage.setItem(key, JSON.stringify(value))\n }, [key, value])\n\n return [value, setValue]\n}\n","import {memo, useCallback, useMemo} from 'react'\n\nimport {Panel} from './panels/Panel'\nimport {PanelResizer} from './panels/PanelResizer'\nimport {type NavigatorOptions} from './types'\nimport {useLocalState} from './useLocalState'\n\n/** @internal */\nexport interface UsePresentationNavigatorProps {\n unstable_navigator?: NavigatorOptions\n}\n\n/** @internal */\nexport interface UsePresentationNavigatorState {\n navigatorEnabled: boolean\n toggleNavigator: (() => void) | undefined\n}\n\n/** @internal */\nexport function usePresentationNavigator(\n props: UsePresentationNavigatorProps,\n): [UsePresentationNavigatorState, () => React.JSX.Element] {\n const {unstable_navigator} = props\n\n const navigatorProvided = !!unstable_navigator?.component\n const [_navigatorEnabled, setNavigatorEnabled] = useLocalState<boolean>(\n 'presentation/navigator',\n navigatorProvided,\n )\n const navigatorEnabled = navigatorProvided ? _navigatorEnabled : false\n const toggleNavigator = useMemo(() => {\n if (!navigatorProvided) return undefined\n\n return () => setNavigatorEnabled((enabled) => !enabled)\n }, [navigatorProvided, setNavigatorEnabled])\n\n const Component = useCallback(\n function PresentationNavigator() {\n return <>{navigatorEnabled && <Navigator {...unstable_navigator!} />}</>\n },\n [navigatorEnabled, unstable_navigator],\n )\n\n return [{navigatorEnabled, toggleNavigator}, Component]\n}\n\nfunction NavigatorComponent(props: NavigatorOptions) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {minWidth, maxWidth, component: NavigatorComponent} = props\n // eslint-disable-next-line no-eq-null\n const navigatorDisabled = minWidth != null && maxWidth != null && minWidth === maxWidth\n return (\n <>\n <Panel id=\"navigator\" minWidth={minWidth} maxWidth={maxWidth} order={1}>\n <NavigatorComponent />\n </Panel>\n <PanelResizer order={2} disabled={navigatorDisabled} />\n </>\n )\n}\nconst Navigator = memo(NavigatorComponent)\n","import {type FunctionComponent, type PropsWithChildren, useMemo} from 'react'\nimport {PresentationParamsContext} from 'sanity/_singletons'\n\nimport {type PresentationParamsContextValue} from './types'\n\nexport const PresentationParamsProvider: FunctionComponent<\n PropsWithChildren<{\n params: PresentationParamsContextValue\n }>\n> = function (props) {\n const {children, params} = props\n\n const context = useMemo<PresentationParamsContextValue>(() => params, [params])\n\n return (\n <PresentationParamsContext.Provider value={context}>\n {children}\n </PresentationParamsContext.Provider>\n )\n}\n","import {type FunctionComponent, type PropsWithChildren, useMemo} from 'react'\nimport {PresentationContext} from 'sanity/_singletons'\n\nimport {\n type PresentationContextValue,\n type PresentationNavigate,\n type PresentationParamsContextValue,\n type PresentationSearchParams,\n type StructureDocumentPaneParams,\n} from './types'\n\nexport const PresentationProvider: FunctionComponent<\n PropsWithChildren<{\n devMode: boolean\n name: string\n navigate: PresentationNavigate\n params: PresentationParamsContextValue\n searchParams: PresentationSearchParams\n structureParams: StructureDocumentPaneParams\n }>\n> = function (props) {\n const {children, devMode, name, navigate, params, searchParams, structureParams} = props\n\n const context = useMemo<PresentationContextValue>(\n () => ({\n devMode,\n name,\n navigate,\n params,\n searchParams,\n structureParams,\n }),\n [devMode, name, navigate, params, searchParams, structureParams],\n )\n\n return <PresentationContext.Provider value={context}>{children}</PresentationContext.Provider>\n}\n","import {useSelector} from '@xstate/react'\n\nimport {type PreviewUrlRef} from './machines/preview-url'\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function useAllowPatterns(previewUrlRef: PreviewUrlRef) {\n const allowPatterns = useSelector(previewUrlRef, (state) => state.context.allowOrigins)\n if (!Array.isArray(allowPatterns)) {\n throw new TypeError('allowPatterns must be an array')\n }\n return allowPatterns\n}\n","/**\n * When encoding the current studio perspective it's necessary to deal with it sometimes being an array, in a consistent way.\n */\nexport function encodeStudioPerspective(studioPerspective: string[] | string): string {\n return Array.isArray(studioPerspective) ? studioPerspective.join(',') : studioPerspective\n}\n","import {useId as useReactId} from 'react'\n\nexport function useId(): string {\n const id = useReactId()\n // Uses the new format introduced in: https://github.com/facebook/react/pull/32001\n return id.startsWith(':') ? id.replace(/^:(.+):$/, '\\u00AB$1\\u00BB') : id\n}\n","import {Box} from '@sanity/ui'\nimport {motion, type VariantLabels, type Variants} from 'framer-motion'\nimport {forwardRef, type ReactEventHandler, useEffect, useImperativeHandle, useRef} from 'react'\nimport {createGlobalStyle, styled} from 'styled-components'\n\nimport {useId} from '../useId'\n\ninterface IFrameProps {\n animate: VariantLabels\n initial: VariantLabels\n onLoad: ReactEventHandler<HTMLIFrameElement>\n preventClick: boolean\n src: string\n variants: Variants\n style: React.CSSProperties\n}\n\nexport const IFrame = forwardRef<HTMLIFrameElement, IFrameProps>(\n function IFrame(props, forwardedRef) {\n const {animate, initial, onLoad, preventClick, src, variants, style} = props\n\n const ref = useRef<HTMLIFrameElement | null>(null)\n // Forward the iframe ref to the parent component\n useImperativeHandle<HTMLIFrameElement | null, HTMLIFrameElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n /**\n * Ensure that clicking outside of menus and dialogs will close as focus shifts to the iframe\n */\n\n useEffect(() => {\n if (!ref.current) {\n return undefined\n }\n const instance = ref.current\n function handleBlur() {\n if (instance !== document.activeElement) {\n return\n }\n\n instance.dispatchEvent(new MouseEvent('mousedown', {bubbles: true, cancelable: true}))\n }\n window.addEventListener('blur', handleBlur)\n return () => {\n window.removeEventListener('blur', handleBlur)\n }\n }, [])\n\n const viewTransitionName = useId()\n\n return (\n <>\n <IFrameElement\n style={{\n ...style,\n viewTransitionName,\n }}\n animate={animate}\n initial={initial}\n onLoad={onLoad}\n ref={ref}\n src={src}\n variants={variants}\n />\n {preventClick && <IFrameOverlay />}\n <GlobalViewTransition />\n </>\n )\n },\n)\n\nconst IFrameElement = motion.create(styled.iframe`\n box-shadow: 0 0 0 1px var(--card-border-color);\n border: 0;\n max-height: 100%;\n width: 100%;\n view-transition-class: presentation-tool-iframe;\n`)\n\nconst IFrameOverlay = styled(Box)`\n position: absolute;\n inset: 0;\n background: transparent;\n`\n\nconst GlobalViewTransition = createGlobalStyle`\nhtml:active-view-transition-type(sanity-iframe-viewport) {\n view-transition-name: none;\n &::view-transition {\n pointer-events: none;\n }\n /* &::view-transition-old(root) {\n display: none;\n }\n &::view-transition-new(root) {\n animation: none;\n } */\n}\n`\n","import { urlSearchParamPreviewPathname, urlSearchParamPreviewSecret, urlSearchParamPreviewPerspective, urlSearchParamVercelProtectionBypass, urlSearchParamVercelSetBypassCookie } from \"./constants.js\";\nfunction withoutSecretSearchParams(url) {\n const newUrl = new URL(url), { searchParams } = newUrl;\n return searchParams.delete(urlSearchParamPreviewPathname), searchParams.delete(urlSearchParamPreviewSecret), searchParams.delete(urlSearchParamPreviewPerspective), searchParams.delete(urlSearchParamVercelProtectionBypass), searchParams.delete(urlSearchParamVercelSetBypassCookie), newUrl;\n}\nfunction hasSecretSearchParams(url) {\n return url.searchParams.has(urlSearchParamPreviewSecret);\n}\nfunction setSecretSearchParams(url, secret, redirectTo, perspective) {\n const newUrl = new URL(url), { searchParams } = newUrl;\n return secret && (searchParams.set(urlSearchParamPreviewSecret, secret), searchParams.set(urlSearchParamPreviewPathname, redirectTo)), searchParams.set(urlSearchParamPreviewPerspective, perspective), newUrl;\n}\nexport {\n hasSecretSearchParams,\n setSecretSearchParams,\n withoutSecretSearchParams\n};\n//# sourceMappingURL=without-secret-search-params.js.map\n","import {LaunchIcon} from '@sanity/icons'\nimport {urlSearchParamPreviewPerspective} from '@sanity/preview-url-secret/constants'\nimport {Text} from '@sanity/ui'\nimport {useCallback, useMemo} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Button, Tooltip} from '../../ui-components'\nimport {presentationLocaleNamespace} from '../i18n'\nimport {type PresentationPerspective} from '../types'\nimport {encodeStudioPerspective} from '../util/encodeStudioPerspective'\nimport {type PreviewProps} from './Preview'\n\n/** @internal */\nexport function OpenPreviewButton(\n props: Pick<PreviewProps, 'openPopup'> & {\n previewLocationOrigin?: string\n previewLocationRoute: string\n perspective: PresentationPerspective\n targetOrigin: string\n },\n): React.ReactNode {\n const {openPopup, previewLocationOrigin, previewLocationRoute, perspective, targetOrigin} = props\n\n const openPreviewLink = useMemo(() => {\n const url = new URL(previewLocationRoute, previewLocationOrigin || targetOrigin)\n url.searchParams.set(urlSearchParamPreviewPerspective, encodeStudioPerspective(perspective))\n const {pathname, search} = url\n\n return `${previewLocationOrigin}${pathname}${search}`\n }, [perspective, previewLocationOrigin, previewLocationRoute, targetOrigin])\n\n const {t} = useTranslation(presentationLocaleNamespace)\n\n const handleOpenPopup = useCallback(\n (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n event.preventDefault()\n openPopup(event.currentTarget.href)\n },\n [openPopup],\n )\n\n return (\n <Tooltip\n animate\n content={<Text size={1}>{t('share-url.menu-item.open.text')}</Text>}\n fallbackPlacements={['bottom-start']}\n placement=\"bottom\"\n portal\n >\n <Button\n as=\"a\"\n aria-label={t('share-url.menu-item.open.text')}\n icon={LaunchIcon}\n mode=\"bleed\"\n href={openPreviewLink}\n rel=\"opener\"\n target=\"_blank\"\n tooltipProps={null}\n // @ts-expect-error the `as=\"a\"` prop isn't enough to change the type of event.target from <div> to <a>\n onClick={handleOpenPopup}\n />\n </Tooltip>\n )\n}\n","import {useSelector} from '@xstate/react'\n\nimport {type PreviewUrlRef} from './machines/preview-url'\n\nexport function useTargetOrigin(previewUrlRef: PreviewUrlRef): string {\n const targetOrigin = useSelector(previewUrlRef, (state) => state.context.previewUrl?.origin)\n if (!targetOrigin) {\n throw new TypeError('targetOrigin is required')\n }\n return targetOrigin\n}\n","import {ResetIcon} from '@sanity/icons'\nimport {TextInput, type TextInputClearButtonProps} from '@sanity/ui'\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {useActiveWorkspace, useTranslation} from 'sanity'\n\nimport {presentationLocaleNamespace} from '../i18n'\nimport {type PreviewUrlRef} from '../machines/preview-url'\nimport {useAllowPatterns} from '../useAllowPatterns'\nimport {useTargetOrigin} from '../useTargetOrigin'\n\nexport function PreviewLocationInput(props: {\n fontSize?: number\n onChange: (value: string) => void\n previewUrlRef: PreviewUrlRef\n padding?: number\n prefix?: ReactNode\n suffix?: ReactNode\n value: string\n}): React.JSX.Element {\n const {fontSize = 1, onChange, padding = 3, prefix, suffix, value, previewUrlRef} = props\n const allowOrigins = useAllowPatterns(previewUrlRef)\n const targetOrigin = useTargetOrigin(previewUrlRef)\n\n const {t} = useTranslation(presentationLocaleNamespace)\n const {basePath = '/'} = useActiveWorkspace()?.activeWorkspace || {}\n\n const inputRef = useRef<HTMLInputElement | null>(null)\n const [sessionValue, setSessionValue] = useState<string | undefined>(undefined)\n const [customValidity, setCustomValidity] = useState<string | undefined>(undefined)\n\n const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n setSessionValue(event.currentTarget.value)\n }, [])\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n if (sessionValue === undefined) {\n return\n }\n\n let absoluteValue = sessionValue\n try {\n absoluteValue = new URL(sessionValue, targetOrigin).toString()\n } catch {\n // ignore\n }\n\n if (Array.isArray(allowOrigins)) {\n if (!allowOrigins.some((pattern) => pattern.test(absoluteValue))) {\n setCustomValidity(\n t('preview-location-input.error', {\n origin: targetOrigin,\n context: 'origin-not-allowed',\n }),\n )\n event.currentTarget.reportValidity()\n return\n }\n // `origin` is an empty string '' if the Studio is embedded, and that's when we need to protect against recursion\n } else if (\n !targetOrigin &&\n (absoluteValue.startsWith(`${basePath}/`) || absoluteValue === basePath)\n ) {\n setCustomValidity(\n t('preview-location-input.error', {basePath, context: 'same-base-path'}),\n )\n return\n }\n\n const nextValue = absoluteValue === targetOrigin ? `${targetOrigin}/` : absoluteValue\n\n setCustomValidity(undefined)\n setSessionValue(undefined)\n\n onChange(nextValue)\n\n inputRef.current?.blur()\n }\n\n if (event.key === 'Escape') {\n setCustomValidity(undefined)\n setSessionValue(undefined)\n }\n },\n [allowOrigins, basePath, onChange, sessionValue, t, targetOrigin],\n )\n\n const handleBlur = useCallback(() => {\n setCustomValidity(undefined)\n setSessionValue(undefined)\n }, [])\n\n const handleClear = useCallback(() => {\n setCustomValidity(undefined)\n let nextValue = value\n try {\n nextValue = new URL(value, targetOrigin).toString()\n } catch {\n // ignore\n }\n setSessionValue(nextValue)\n }, [targetOrigin, value])\n\n useEffect(() => {\n setCustomValidity(undefined)\n setSessionValue(undefined)\n }, [targetOrigin, value])\n\n const resetButton: TextInputClearButtonProps = useMemo(() => ({icon: ResetIcon}), [])\n\n return (\n <>\n <TextInput\n clearButton={customValidity ? resetButton : undefined}\n customValidity={customValidity}\n fontSize={fontSize}\n onBlur={handleBlur}\n onClear={handleClear}\n onChange={handleChange}\n onKeyDownCapture={handleKeyDown}\n padding={padding}\n prefix={prefix}\n style={{zIndex: 1}}\n radius={2}\n ref={inputRef}\n space={padding}\n suffix={suffix}\n value={sessionValue === undefined ? new URL(value, targetOrigin).toString() : sessionValue}\n />\n </>\n )\n}\n","function generateUrlSecret() {\n if (typeof crypto < \"u\") {\n const array = new Uint8Array(16);\n crypto.getRandomValues(array);\n let key = \"\";\n for (let i = 0; i < array.length; i++)\n key += array[i].toString(16).padStart(2, \"0\");\n return key = btoa(key).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/[=]+$/, \"\"), key;\n }\n return Math.random().toString(36).slice(2);\n}\nexport {\n generateUrlSecret\n};\n//# sourceMappingURL=generateSecret.js.map\n","import { apiVersion, schemaIdSingleton, schemaTypeSingleton, tag } from \"./constants.js\";\nimport { generateUrlSecret } from \"./_chunks-es/generateSecret.js\";\nasync function enablePreviewAccessSharing(_client, source, studioUrl, userId) {\n const client = _client.withConfig({ apiVersion }), newSecret = generateUrlSecret(), patch = client.patch(schemaIdSingleton).set({ secret: newSecret, studioUrl, userId });\n return await client.transaction().createIfNotExists({ _id: schemaIdSingleton, _type: schemaTypeSingleton, source, studioUrl, userId }).patch(patch).commit({ tag }), { secret: newSecret };\n}\nasync function disablePreviewAccessSharing(_client, source, studioUrl, userId) {\n const client = _client.withConfig({ apiVersion }), patch = client.patch(schemaIdSingleton).set({ secret: null, studioUrl, userId });\n await client.transaction().createIfNotExists({ _id: schemaIdSingleton, _type: schemaTypeSingleton, source, studioUrl, userId }).patch(patch).commit({ tag });\n}\nexport {\n disablePreviewAccessSharing,\n enablePreviewAccessSharing\n};\n//# sourceMappingURL=toggle-preview-access-sharing.js.map\n","/* eslint-disable @typescript-eslint/no-shadow,no-negated-condition,no-nested-ternary */\nimport {type ClientPerspective, type SyncTag} from '@sanity/client'\nimport {CopyIcon, ShareIcon} from '@sanity/icons'\nimport {SanityMonogram} from '@sanity/logos'\nimport {fetchSharedAccessQuery} from '@sanity/preview-url-secret/constants'\nimport {\n disablePreviewAccessSharing,\n enablePreviewAccessSharing,\n} from '@sanity/preview-url-secret/toggle-preview-access-sharing'\nimport {setSecretSearchParams} from '@sanity/preview-url-secret/without-secret-search-params'\nimport {\n Box,\n Card,\n Grid,\n Menu,\n MenuDivider,\n Spinner,\n Stack,\n Switch,\n Text,\n useToast,\n} from '@sanity/ui'\nimport {AnimatePresence, motion} from 'framer-motion'\nimport {lazy, memo, Suspense, useCallback, useEffect, useMemo, useState} from 'react'\nimport {useClient, useCurrentUser, useTranslation} from 'sanity'\nimport {styled} from 'styled-components'\n\nimport {Button, MenuButton, MenuItem, Tooltip} from '../../ui-components'\nimport {API_VERSION} from '../constants'\nimport {presentationLocaleNamespace} from '../i18n'\nimport {encodeStudioPerspective} from '../util/encodeStudioPerspective'\nimport {type PreviewProps} from './Preview'\n\nconst QRCodeSVG = lazy(() => import('./QRCodeSVG'))\n\nexport interface SharePreviewMenuProps {\n canToggleSharePreviewAccess: boolean\n canUseSharedPreviewAccess: boolean\n previewLocationRoute: string\n initialUrl: PreviewProps['initialUrl']\n perspective: ClientPerspective\n}\n\nconst QrCodeLogoSize = 24\nconst QrCodeLogoPadding = 16\nconst QrSize = 224\n\nconst StyledSanityMonogram = styled(SanityMonogram)`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n height: ${QrCodeLogoSize}px;\n width: ${QrCodeLogoSize}px;\n`\n\nconst MotionSpinner = motion.create(Spinner)\nconst MotionText = motion.create(Text)\nconst MotionMonogram = motion.create(StyledSanityMonogram)\n\nexport const SharePreviewMenu = memo(function SharePreviewMenuComponent(\n props: SharePreviewMenuProps,\n) {\n const {\n canToggleSharePreviewAccess,\n canUseSharedPreviewAccess,\n initialUrl,\n previewLocationRoute,\n perspective,\n } = props\n const {t} = useTranslation(presentationLocaleNamespace)\n const {push: pushToast} = useToast()\n const client = useClient({apiVersion: API_VERSION})\n const currentUser = useCurrentUser()\n const [loading, setLoading] = useState(true)\n const [enabling, setEnabling] = useState(false)\n const [disabling, setDisabling] = useState(false)\n const [secret, setSecret] = useState<string | null>(null)\n const busy = enabling || disabling || loading\n const url = useMemo(\n () =>\n secret\n ? setSecretSearchParams(\n initialUrl,\n secret,\n previewLocationRoute,\n encodeStudioPerspective(perspective),\n )\n : null,\n [initialUrl, perspective, previewLocationRoute, secret],\n )\n\n const [error, setError] = useState<unknown>(null)\n if (error) {\n throw error\n }\n\n const handleUnableToToggle = useCallback(() => {\n pushToast({\n closable: true,\n status: 'warning',\n title: t('share-preview-menu.error_toggle-sharing', {context: 'toggle-sharing'}),\n })\n }, [pushToast, t])\n\n const handleDisableSharing = useCallback(async () => {\n try {\n setDisabling(true)\n await disablePreviewAccessSharing(\n client,\n 'sanity/presentation',\n typeof window === 'undefined' ? '' : location.href,\n currentUser?.id,\n )\n setSecret(null)\n } catch (error) {\n setError(error)\n } finally {\n setDisabling(false)\n }\n }, [client, currentUser?.id])\n const handleEnableSharing = useCallback(async () => {\n try {\n setEnabling(true)\n\n const previewUrlSecret = await enablePreviewAccessSharing(\n client,\n 'sanity/presentation',\n typeof window === 'undefined' ? '' : location.href,\n currentUser?.id,\n )\n setSecret(previewUrlSecret.secret)\n } catch (error) {\n setError(error)\n } finally {\n setEnabling(false)\n }\n }, [client, currentUser?.id])\n\n const handleCopyUrl = useCallback(() => {\n try {\n if (!url) {\n throw new Error('No URL to copy')\n }\n navigator.clipboard.writeText(url.toString())\n pushToast({\n closable: true,\n status: 'success',\n title: t('share-url.clipboard.status', {context: 'success'}),\n })\n } catch (error) {\n setError(error)\n }\n }, [pushToast, t, url])\n\n useEffect(() => {\n let controller = new AbortController()\n let usedTags: SyncTag[] = []\n async function fetchShareSecret(lastLiveEventId: string | null, signal: AbortSignal) {\n const {result, syncTags} = await client.fetch<string | null>(\n fetchSharedAccessQuery,\n {},\n {filterResponse: false, lastLiveEventId, tag: 'presentation.fetch-shared-access-secret'},\n )\n if (Array.isArray(syncTags)) {\n usedTags = syncTags\n }\n if (!signal.aborted) {\n setSecret(result)\n }\n }\n const subscription = client.live.events().subscribe({\n next: (event) => {\n if (event.type === 'message') {\n controller.abort()\n controller = new AbortController()\n if (event.tags.some((tag) => usedTags.includes(tag))) {\n fetchShareSecret(event.id, controller.signal)\n }\n }\n },\n error: setError,\n })\n\n fetchShareSecret(null, controller.signal).finally(() => setLoading(false))\n\n return () => {\n subscription.unsubscribe()\n controller.abort()\n }\n }, [client])\n\n return (\n <MenuButton\n button={\n <Button\n aria-label={t('preview-frame.share-button.aria-label')}\n icon={ShareIcon}\n mode=\"bleed\"\n tooltipProps={null}\n />\n }\n id=\"share-menu\"\n menu={\n <Menu style={{maxWidth: 248}} padding={canUseSharedPreviewAccess ? undefined : 0}>\n {canUseSharedPreviewAccess ? (\n <>\n <label style={{cursor: 'pointer'}}>\n <Grid\n columns={2}\n rows={2}\n gapX={3}\n gapY={1}\n style={{\n justifyContent: 'center',\n alignItems: 'center',\n gridTemplateColumns: 'min-content 1fr',\n gridTemplateRows: 'min-content',\n }}\n paddingTop={3}\n paddingX={3}\n >\n <Tooltip\n animate\n content={\n <Text size={1}>\n {t('share-preview-menu.toggle-button.tooltip', {\n context: url ? 'disable' : 'enable',\n })}\n </Text>\n }\n fallbackPlacements={['bottom-start']}\n placement=\"bottom\"\n portal\n >\n <Switch\n checked={enabling || (url !== null && !disabling)}\n readOnly={enabling || disabling}\n indeterminate={loading}\n onChange={\n !canToggleSharePreviewAccess\n ? handleUnableToToggle\n : url\n ? handleDisableSharing\n : handleEnableSharing\n }\n />\n </Tooltip>\n <Text size={1} weight=\"medium\">\n {t('share-preview-menu.toggle-button.label', {context: 'first-line'})}\n </Text>\n <span />\n <Text muted size={1}>\n {t('share-preview-menu.toggle-button.label', {context: 'second-line'})}\n </Text>\n </Grid>\n </label>\n <Box padding={3} paddingTop={2}>\n <Stack space={3}>\n <Card\n tone={busy || !url ? 'transparent' : undefined}\n style={{\n position: 'relative',\n aspectRatio: '1 / 1',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <AnimatePresence>\n {busy ? (\n <MotionSpinner\n muted\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n exit={{opacity: 0}}\n />\n ) : url ? (\n <>\n <Suspense fallback={<Spinner />}>\n <QRCodeSVG\n title={t('share-preview-menu.qr-code.title', {url: url.toString()})}\n value={url.toString()}\n size={QrSize}\n color=\"var(--card-fg-color)\"\n logoSize={QrCodeLogoSize + QrCodeLogoPadding}\n />\n <MotionMonogram\n initial={{opacity: -0.5}}\n animate={{opacity: 1.5}}\n exit={{opacity: 0}}\n />\n </Suspense>\n </>\n ) : (\n <MotionText\n muted\n size={1}\n style={{maxWidth: '100px', textWrap: 'pretty', textAlign: 'center'}}\n initial={{opacity: 0}}\n animate={{opacity: 1}}\n exit={{opacity: 0}}\n >\n {t('share-preview-menu.qr-code.placeholder')}\n </MotionText>\n )}\n </AnimatePresence>\n </Card>\n <Text muted size={1}>\n {t('share-preview-menu.qr-code.instructions')}\n </Text>\n </Stack>\n </Box>\n <MenuDivider />\n <MenuItem\n disabled={!url || disabling}\n icon={CopyIcon}\n onClick={handleCopyUrl}\n text={t('share-preview-menu.copy-url.text')}\n />\n </>\n ) : (\n <Card padding={2} tone=\"caution\" radius={3}>\n <Text style={{textWrap: 'pretty'}}>\n {t('share-preview-menu.error', {context: 'missing-grants'})}\n </Text>\n </Card>\n )}\n </Menu>\n }\n popover={{\n constrainSize: true,\n placement: 'bottom',\n portal: true,\n }}\n />\n )\n})\nSharePreviewMenu.displayName = 'Memo(SharePreviewMenu)'\n","/* eslint-disable no-nested-ternary */\nimport {DesktopIcon, MobileDeviceIcon, PanelLeftIcon, RefreshIcon} from '@sanity/icons'\nimport {withoutSecretSearchParams} from '@sanity/preview-url-secret/without-secret-search-params'\nimport {Box, Card, Flex, Hotkeys, Switch, Text} from '@sanity/ui'\nimport {useSelector} from '@xstate/react'\nimport {type RefObject, useCallback, useMemo} from 'react'\nimport {useTranslation} from 'sanity'\n\nimport {Button, Tooltip} from '../../ui-components'\nimport {presentationLocaleNamespace} from '../i18n'\nimport {type HeaderOptions} from '../types'\nimport {useId} from '../useId'\nimport {OpenPreviewButton} from './OpenPreviewButton'\nimport {type PreviewProps} from './Preview'\nimport {PreviewLocationInput} from './PreviewLocationInput'\nimport {SharePreviewMenu} from './SharePreviewMenu'\n\n/** @public */\nexport interface PreviewHeaderProps extends PreviewProps {\n iframeRef: RefObject<HTMLIFrameElement | null>\n renderDefault: (props: PreviewHeaderProps) => React.JSX.Element\n}\n\nconst PreviewHeaderDefault = (props: Omit<PreviewHeaderProps, 'renderDefault'>) => {\n const {\n canSharePreviewAccess,\n canToggleSharePreviewAccess,\n canUseSharedPreviewAccess,\n iframeRef,\n initialUrl,\n navigatorEnabled,\n onPathChange,\n onRefresh,\n openPopup,\n overlaysConnection,\n presentationRef,\n perspective,\n previewUrl,\n setViewport,\n targetOrigin,\n toggleNavigator,\n toggleOverlay,\n viewport,\n previewUrlRef,\n } = props\n\n const {t} = useTranslation(presentationLocaleNamespace)\n\n const toggleViewportSize = useCallback(\n () => setViewport(viewport === 'desktop' ? 'mobile' : 'desktop'),\n [setViewport, viewport],\n )\n\n const previewLocationOrigin = useMemo(() => {\n return targetOrigin === location.origin ? '' : targetOrigin\n }, [targetOrigin])\n\n const handleRefresh = () => {\n onRefresh(() => {\n if (!iframeRef.current) {\n return\n }\n presentationRef.send({type: 'iframe reload'})\n // Funky way to reload an iframe without CORS issues\n // eslint-disable-next-line no-self-assign\n // ref.current.src = ref.current.src\n Object.assign(iframeRef.current, {src: `${targetOrigin}${previewUrl || '/'}`})\n })\n }\n\n const isLoading = useSelector(presentationRef, (state) => state.matches('loading'))\n const isLoaded = useSelector(presentationRef, (state) => state.matches('loaded'))\n const isRefreshing = useSelector(presentationRef, (state) =>\n state.matches({loaded: 'refreshing'}),\n )\n const isReloading = useSelector(presentationRef, (state) => state.matches({loaded: 'reloading'}))\n const overlaysEnabled = useSelector(\n presentationRef,\n (state) => state.context.visualEditingOverlaysEnabled,\n )\n\n const previewLocationRoute = useMemo(() => {\n const previewURL = new URL(previewUrl || '/', targetOrigin)\n const {pathname, search} = withoutSecretSearchParams(previewURL)\n\n return `${pathname}${search}`\n }, [previewUrl, targetOrigin])\n\n const perspectiveToggleTooltipId = useId()\n\n /**\n * If the preview URL machine is busy it means it's about to change the target origin and reload the iframe,\n * so we show a spinner\n */\n const previewUrlBusy = useSelector(previewUrlRef, (state) => state.hasTag('busy'))\n\n return (\n <Flex align=\"center\" gap={1} paddingX={1} style={{width: '100%'}}>\n {toggleNavigator && (\n <Button\n aria-label={t('preview-frame.navigator.toggle-button.aria-label')}\n icon={PanelLeftIcon}\n mode=\"bleed\"\n onClick={toggleNavigator}\n selected={navigatorEnabled}\n tooltipProps={{\n content: <Text size={1}>{t('preview-frame.navigator.toggle-button.tooltip')}</Text>,\n fallbackPlacements: ['bottom-start'],\n placement: 'bottom',\n }}\n />\n )}\n\n <Tooltip\n animate\n content={\n <Flex align=\"center\" style={{whiteSpace: 'nowrap'}}>\n <Box padding={1}>\n <Text size={1}>\n {t('preview-frame.overlay.toggle-button.tooltip', {\n context: overlaysEnabled ? 'disable' : 'enable',\n })}\n </Text>\n </Box>\n <Box paddingY={1}>\n <Hotkeys keys={['Alt']} style={{marginTop: -4, marginBottom: -4}} />\n </Box>\n </Flex>\n }\n fallbackPlacements={['bottom-start']}\n placement=\"bottom\"\n portal\n >\n <Card\n as=\"label\"\n flex=\"none\"\n padding={3}\n marginX={1}\n style={{\n lineHeight: 0,\n borderRadius: 999,\n userSelect: 'none',\n }}\n tone={overlaysEnabled ? 'transparent' : undefined}\n >\n <Flex align=\"center\" gap={3}>\n <div style={{margin: -4}}>\n <Switch\n indeterminate={!isLoaded}\n checked={overlaysEnabled}\n onChange={toggleOverlay}\n disabled={isLoading || overlaysConnection !== 'connected'}\n />\n </div>\n <Box>\n <Text muted={!overlaysEnabled} size={1} weight=\"medium\">\n {t('preview-frame.overlay.toggle-button.text')}\n </Text>\n </Box>\n </Flex>\n </Card>\n </Tooltip>\n\n <Box flex={1}>\n <PreviewLocationInput\n previewUrlRef={previewUrlRef}\n prefix={\n <Box padding={1}>\n <Tooltip\n animate\n content={\n <Text size={1}>\n {isLoaded\n ? t('preview-frame.refresh-button.tooltip')\n : t('preview-frame.status', {\n context: isLoading\n ? 'loading'\n : isRefreshing\n ? 'refreshing'\n : isReloading\n ? 'reloading'\n : 'unknown',\n })}\n </Text>\n }\n fallbackPlacements={['bottom-end']}\n placement=\"bottom\"\n portal\n >\n <Button\n aria-label={t('preview-frame.refresh-button.aria-label')}\n icon={RefreshIcon}\n mode=\"bleed\"\n loading={isReloading || isRefreshing || previewUrlBusy}\n onClick={handleRefresh}\n tooltipProps={null}\n />\n </Tooltip>\n </Box>\n }\n onChange={onPathChange}\n suffix={\n <Box padding={1}>\n <OpenPreviewButton\n openPopup={openPopup}\n previewLocationOrigin={previewLocationOrigin}\n previewLocationRoute={previewLocationRoute}\n perspective={perspective}\n targetOrigin={targetOrigin}\n />\n </Box>\n }\n value={previewLocationRoute}\n />\n </Box>\n\n <Flex align=\"center\" flex=\"none\" gap={1}>\n <Tooltip\n animate\n // eslint-disable-next-line react/jsx-no-bind\n ref={(node) => {\n node?.style.setProperty('view-transition-name', perspectiveToggleTooltipId)\n }}\n content={\n <Text size={1}>\n {t('preview-frame.viewport-button.tooltip', {\n context: viewport === 'desktop' ? 'narrow' : 'full',\n })}\n </Text>\n }\n fallbackPlacements={['bottom-start']}\n placement=\"bottom\"\n portal\n >\n <Button\n data-testid=\"preview-viewport-toggle\"\n data-viewport={viewport}\n aria-label={t('preview-frame.viewport-button.aria-label')}\n icon={viewport === 'desktop' ? MobileDeviceIcon : DesktopIcon}\n mode=\"bleed\"\n onClick={toggleViewportSize}\n tooltipProps={null}\n />\n </Tooltip>\n </Flex>\n\n {canSharePreviewAccess && (\n <Flex align=\"center\" flex=\"none\" gap={1}>\n <SharePreviewMenu\n canToggleSharePreviewAccess={canToggleSharePreviewAccess}\n canUseSharedPreviewAccess={canUseSharedPreviewAccess}\n previewLocationRoute={previewLocationRoute}\n initialUrl={initialUrl}\n perspective={perspective}\n />\n </Flex>\n )}\n </Flex>\n )\n}\n\n/** @internal */\nexport function PreviewHeader(\n props: Omit<PreviewHeaderProps, 'renderDefault'> & {options?: HeaderOptions},\n): React.JSX.Element {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const renderDefault = useCallback((props: Omit<PreviewHeaderProps, 'renderDefault'>) => {\n return <PreviewHeaderDefault {...props} />\n }, [])\n\n const HeaderComponent = props.options?.component\n const header = HeaderComponent ? (\n <HeaderComponent {...props} renderDefault={renderDefault} />\n ) : (\n renderDefault(props)\n )\n\n return (\n <Card flex=\"none\" padding={2} borderBottom style={{position: 'relative'}}>\n <Flex align=\"center\" style={{minHeight: 0}}>\n {header}\n </Flex>\n </Card>\n )\n}\n","/* eslint-disable react/no-unused-prop-types,no-nested-ternary */\nimport {createConnectionMachine, createController} from '@sanity/comlink'\nimport {\n createCompatibilityActors,\n type VisualEditingControllerMsg,\n type VisualEditingNodeMsg,\n} from '@sanity/presentation-comlink'\nimport {\n urlSearchParamPreviewPerspective,\n urlSearchParamVercelProtectionBypass,\n urlSearchParamVercelSetBypassCookie,\n type VercelSetBypassCookieValue,\n} from '@sanity/preview-url-secret/constants'\nimport {\n Card,\n Code,\n Flex,\n Label,\n Spinner,\n Stack,\n Text,\n usePrefersReducedMotion,\n useToast,\n} from '@sanity/ui'\nimport {useSelector} from '@xstate/react'\nimport {AnimatePresence, motion, MotionConfig} from 'framer-motion'\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport {flushSync} from 'react-dom'\nimport {Translate, useTranslation} from 'sanity'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {Button, TooltipDelayGroupProvider} from '../../ui-components'\nimport {ErrorCard} from '../components/ErrorCard'\nimport {MAX_TIME_TO_OVERLAYS_CONNECTION} from '../constants'\nimport {presentationLocaleNamespace} from '../i18n'\nimport {type PresentationMachineRef} from '../machines/presentation-machine'\nimport {type PreviewUrlRef} from '../machines/preview-url'\nimport {\n type ConnectionStatus,\n type HeaderOptions,\n type PresentationPerspective,\n type PresentationViewport,\n} from '../types'\nimport {useAllowPatterns} from '../useAllowPatterns'\nimport {usePresentationNavigate} from '../usePresentationNavigate'\nimport {usePresentationTool} from '../usePresentationTool'\nimport {encodeStudioPerspective} from '../util/encodeStudioPerspective'\nimport {IFrame} from './IFrame'\nimport {PreviewHeader} from './PreviewHeader'\n\nconst MotionFlex = motion.create(Flex)\n\n/** @public */\nexport interface PreviewProps {\n canSharePreviewAccess: boolean\n canToggleSharePreviewAccess: boolean\n canUseSharedPreviewAccess: boolean\n header?: HeaderOptions\n initialUrl: URL\n loadersConnection: ConnectionStatus\n navigatorEnabled: boolean\n onPathChange: (nextPath: string) => void\n onRefresh: (fallback: () => void) => void\n openPopup: (url: string) => void\n overlaysConnection: ConnectionStatus\n presentationRef: PresentationMachineRef\n perspective: PresentationPerspective\n previewUrl?: string\n setViewport: (mode: 'desktop' | 'mobile') => void\n targetOrigin: string\n toggleNavigator?: () => void\n toggleOverlay: () => void\n viewport: PresentationViewport\n vercelProtectionBypass: string | null\n previewUrlRef: PreviewUrlRef\n}\n\nexport const Preview = memo(\n forwardRef<HTMLIFrameElement, PreviewProps>(function PreviewComponent(props, forwardedRef) {\n const {\n header,\n initialUrl,\n loadersConnection,\n overlaysConnection,\n perspective,\n viewport,\n vercelProtectionBypass,\n presentationRef,\n previewUrlRef,\n } = props\n\n const [stablePerspective, setStablePerspective] = useState<typeof perspective | null>(null)\n const urlPerspective = encodeStudioPerspective(\n stablePerspective === null ? perspective : stablePerspective,\n )\n const previewUrl = useMemo(() => {\n const url = new URL(initialUrl)\n // Always set the perspective that's being used, even if preview mode isn't configured\n if (!url.searchParams.get(urlSearchParamPreviewPerspective)) {\n url.searchParams.set(urlSearchParamPreviewPerspective, urlPerspective)\n }\n\n if (vercelProtectionBypass || url.searchParams.get(urlSearchParamVercelProtectionBypass)) {\n // samesitenone is required since the request is from an iframe\n url.searchParams.set(\n urlSearchParamVercelSetBypassCookie,\n 'samesitenone' satisfies VercelSetBypassCookieValue,\n )\n }\n // If there's a vercel protection bypass secret in the context, set it if none exists already\n if (vercelProtectionBypass && !url.searchParams.get(urlSearchParamVercelProtectionBypass)) {\n url.searchParams.set(urlSearchParamVercelProtectionBypass, vercelProtectionBypass)\n }\n\n return url\n }, [initialUrl, urlPerspective, vercelProtectionBypass])\n\n useEffect(() => {\n /**\n * If the preview iframe is connected to the loader, we know that switching the perspective can be done without reloading the iframe.\n */\n if (loadersConnection === 'connected') {\n /**\n * Only set the stable perspective if it hasn't been set yet.\n */\n setStablePerspective((prev) => (prev === null ? perspective : prev))\n }\n }, [loadersConnection, perspective])\n\n const {t} = useTranslation(presentationLocaleNamespace)\n const {devMode} = usePresentationTool()\n const prefersReducedMotion = usePrefersReducedMotion()\n const ref = useRef<HTMLIFrameElement | null>(null)\n\n const previewHeader = <PreviewHeader {...props} iframeRef={ref} options={header} />\n\n // Forward the iframe ref to the parent component\n useImperativeHandle<HTMLIFrameElement | null, HTMLIFrameElement | null>(\n forwardedRef,\n () => ref.current,\n )\n\n const isLoading = useSelector(\n presentationRef,\n (state) => state.matches('loading') || state.matches({loaded: 'reloading'}),\n )\n\n const [timedOut, setTimedOut] = useState(false)\n const isRefreshing = useSelector(presentationRef, (state) =>\n state.matches({loaded: 'refreshing'}),\n )\n const [somethingIsWrong, setSomethingIsWrong] = useState(false)\n const iframeIsBusy = isLoading || isRefreshing || overlaysConnection === 'connecting'\n\n const handleRetry = useCallback(() => {\n if (!ref.current) {\n return\n }\n\n ref.current.src = previewUrl.toString()\n\n presentationRef.send({type: 'iframe reload'})\n }, [presentationRef, previewUrl])\n const handleContinueAnyway = useCallback(() => {\n setContinueAnyway(true)\n }, [])\n\n const [continueAnyway, setContinueAnyway] = useState(false)\n const [showOverlaysConnectionStatus, setShowOverlaysConnectionState] = useState(false)\n useEffect(() => {\n if (isLoading || isRefreshing) {\n return undefined\n }\n\n if (overlaysConnection === 'connecting' || overlaysConnection === 'reconnecting') {\n const timeout = setTimeout(() => {\n setShowOverlaysConnectionState(true)\n }, 5_000)\n return () => clearTimeout(timeout)\n }\n return undefined\n }, [overlaysConnection, isLoading, isRefreshing])\n\n useEffect(() => {\n if (isLoading || isRefreshing || !showOverlaysConnectionStatus) {\n return undefined\n }\n if (overlaysConnection === 'connected') {\n setSomethingIsWrong(false)\n setShowOverlaysConnectionState(false)\n setTimedOut(false)\n setContinueAnyway(false)\n }\n if (overlaysConnection === 'connecting') {\n const timeout = setTimeout(() => {\n setTimedOut(true)\n // eslint-disable-next-line no-console\n console.error(\n `Unable to connect to visual editing. Make sure you've setup '@sanity/visual-editing' correctly`,\n )\n }, MAX_TIME_TO_OVERLAYS_CONNECTION)\n return () => clearTimeout(timeout)\n }\n if (overlaysConnection === 'reconnecting') {\n const timeout = setTimeout(() => {\n setTimedOut(true)\n setSomethingIsWrong(true)\n }, MAX_TIME_TO_OVERLAYS_CONNECTION)\n return () => clearTimeout(timeout)\n }\n return undefined\n }, [isLoading, overlaysConnection, isRefreshing, showOverlaysConnectionStatus])\n\n const onIFrameLoad = useCallback(() => {\n presentationRef.send({type: 'iframe loaded'})\n }, [presentationRef])\n\n const preventIframeInteraction = useMemo(() => {\n return (\n (isLoading || (overlaysConnection === 'connecting' && !isRefreshing)) && !continueAnyway\n )\n }, [continueAnyway, isLoading, isRefreshing, overlaysConnection])\n\n const canUseViewTransition = useSyncExternalStore(\n // eslint-disable-next-line no-empty-function\n useCallback(() => () => {}, []),\n () => CSS.supports(`(view-transition-name: test)`),\n )\n const iframeAnimations = useMemo(() => {\n return [\n preventIframeInteraction ? 'background' : 'active',\n isLoading ? 'reloading' : 'idle',\n // If CSS View Transitions are supported, then transition iframe viewport dimensions with that instead of Motion\n canUseViewTransition ? '' : viewport,\n showOverlaysConnectionStatus && !continueAnyway ? 'timedOut' : '',\n ]\n }, [\n canUseViewTransition,\n continueAnyway,\n isLoading,\n preventIframeInteraction,\n showOverlaysConnectionStatus,\n viewport,\n ])\n\n const [currentViewport, setCurrentViewport] = useState(viewport)\n const [iframeStyle, setIframeStyle] = useState(iframeVariants[viewport])\n useEffect(() => {\n if (canUseViewTransition && viewport !== currentViewport) {\n const update = () => {\n setCurrentViewport(viewport)\n setIframeStyle(iframeVariants[viewport])\n }\n if (\n !prefersReducedMotion &&\n 'startViewTransition' in document &&\n typeof document.startViewTransition === 'function'\n ) {\n document.startViewTransition({\n // @ts-expect-error - fix typings\n update: () => flushSync(() => update()),\n types: ['sanity-iframe-viewport'],\n })\n } else {\n update()\n }\n }\n }, [canUseViewTransition, prefersReducedMotion, currentViewport, viewport])\n\n const toast = useToast()\n const allowOrigins = useAllowPatterns(previewUrlRef)\n const [checkOrigin, setCheckOrigin] = useState<false | string>(false)\n const [reportedMismatches] = useState(new Set<string>())\n const reportMismatchingOrigin = useEffectEvent((reportedOrigin: string) => {\n if (allowOrigins.some((allow) => allow.test(reportedOrigin))) {\n setCheckOrigin(reportedOrigin)\n return\n }\n if (reportedMismatches.has(reportedOrigin)) return\n reportedMismatches.add(reportedOrigin)\n console.warn('Visual Editing is here but misconfigured', {reportedOrigin})\n toast.push({\n closable: true,\n id: `presentation-iframe-origin-mismatch-${reportedOrigin}`,\n status: 'error',\n duration: Infinity,\n title: t('preview-frame.configuration.error.title'),\n description: (\n <Translate\n t={t}\n i18nKey=\"preview-frame.configuration.error.description\"\n components={{Code: 'code'}}\n values={{\n targetOrigin: previewUrl.origin,\n reportedOrigin,\n }}\n />\n ),\n })\n })\n const navigate = usePresentationNavigate()\n const navigateEvent = useEffectEvent((url: string) => {\n if (!checkOrigin) return\n const nextUrl = new URL(url, checkOrigin)\n navigate(`${checkOrigin}${nextUrl.pathname}${nextUrl.search}${nextUrl.hash}`)\n })\n useEffect(() => {\n if (!checkOrigin) {\n return undefined\n }\n const target = ref.current?.contentWindow\n if (!target) {\n return undefined\n }\n const controller = createController({targetOrigin: checkOrigin})\n controller.addTarget(target)\n const comlink = controller.createChannel<VisualEditingControllerMsg, VisualEditingNodeMsg>(\n {\n name: 'presentation',\n heartbeat: true,\n connectTo: 'visual-editing',\n },\n createConnectionMachine<VisualEditingControllerMsg, VisualEditingNodeMsg>().provide({\n actors: createCompatibilityActors<VisualEditingControllerMsg>(),\n }),\n )\n\n comlink.on('visual-editing/navigate', (data) => {\n navigateEvent(data.url)\n })\n const stop = comlink.start()\n\n return () => {\n stop()\n controller.destroy()\n }\n }, [checkOrigin])\n useEffect(() => {\n if (overlaysConnection === 'connecting' || overlaysConnection === 'reconnecting') {\n const interval = setInterval(() => {\n ref.current?.contentWindow?.postMessage(\n {domain: 'sanity/channels', from: 'presentation', type: 'presentation/status'},\n /**\n * The targetOrigin is set to '*' intentionally here, as we need to find out if the iframe is misconfigured and has the wrong origin\n */\n '*',\n )\n }, 1_000)\n\n const controller = new AbortController()\n window.addEventListener(\n 'message',\n ({data}: MessageEvent<unknown>) => {\n /**\n * Listen for replies to presentation/status\n */\n if (\n data &&\n typeof data === 'object' &&\n 'domain' in data &&\n data.domain === 'sanity/channels' &&\n 'type' in data &&\n data.type === 'visual-editing/status' &&\n 'data' in data &&\n typeof data.data === 'object' &&\n data.data &&\n 'origin' in data.data &&\n typeof data.data.origin === 'string'\n ) {\n reportMismatchingOrigin(data.data.origin)\n }\n },\n {signal: controller.signal},\n )\n\n return () => {\n controller.abort()\n clearInterval(interval)\n }\n }\n return undefined\n }, [overlaysConnection, timedOut])\n\n return (\n <MotionConfig transition={prefersReducedMotion ? {duration: 0} : undefined}>\n <TooltipDelayGroupProvider>\n {previewHeader}\n <Card flex={1} tone=\"transparent\">\n <Flex\n align=\"center\"\n height=\"fill\"\n justify=\"center\"\n padding={(canUseViewTransition ? currentViewport : viewport) === 'desktop' ? 0 : 2}\n sizing=\"border\"\n style={{\n position: 'relative',\n cursor: iframeIsBusy ? 'wait' : undefined,\n }}\n >\n <AnimatePresence>\n {!somethingIsWrong &&\n !isLoading &&\n !isRefreshing &&\n // viewport, // using CSS View Transitions instead of framer motion to drive this\n showOverlaysConnectionStatus &&\n !continueAnyway ? (\n <MotionFlex\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={spinnerVariants}\n justify=\"center\"\n align=\"center\"\n style={{\n inset: '0',\n position: 'absolute',\n backdropFilter: timedOut\n ? 'blur(16px) saturate(0.5) grayscale(0.5)'\n : 'blur(2px)',\n ['transition' as string]: 'backdrop-filter 0.2s ease-in-out',\n // @TODO Because of Safari we have to do this\n WebkitBackdropFilter: timedOut\n ? 'blur(16px) saturate(0.5) grayscale(0.5)'\n : 'blur(2px)',\n WebkitTransition: '-webkit-backdrop-filter 0.2s ease-in-out',\n zIndex: 1,\n }}\n >\n <Flex\n style={{...sizes[viewport]}}\n justify=\"center\"\n align=\"center\"\n direction=\"column\"\n gap={4}\n >\n {timedOut && (\n <Button\n disabled\n mode=\"ghost\"\n text={t('preview-frame.continue-button.text')}\n style={{opacity: 0}}\n />\n )}\n <Card\n radius={2}\n tone={timedOut ? 'caution' : 'inherit'}\n padding={4}\n shadow={1}\n >\n <Flex justify=\"center\" align=\"center\" direction=\"column\" gap={4}>\n <Spinner muted />\n <Text muted size={1}>\n {timedOut\n ? t('preview-frame.status', {context: 'timeout'})\n : t('preview-frame.status', {context: 'connecting'})}\n </Text>\n </Flex>\n </Card>\n {timedOut && (\n <Button\n // mode=\"ghost\"\n tone=\"critical\"\n onClick={handleContinueAnyway}\n text={t('preview-frame.continue-button.text')}\n />\n )}\n </Flex>\n </MotionFlex>\n ) : (isLoading || (overlaysConnection === 'connecting' && !isRefreshing)) &&\n !continueAnyway ? (\n <MotionFlex\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={spinnerVariants}\n justify=\"center\"\n align=\"center\"\n style={{\n inset: '0',\n position: 'absolute',\n // boxShadow: '0 0 0 1px var(--card-shadow-outline-color)',\n }}\n >\n <Flex\n style={{...sizes[viewport]}}\n justify=\"center\"\n align=\"center\"\n direction=\"column\"\n gap={4}\n >\n <Spinner muted />\n <Text muted size={1}>\n {t('preview-frame.status', {context: 'loading'})}\n </Text>\n </Flex>\n </MotionFlex>\n ) : somethingIsWrong && !continueAnyway ? (\n <MotionFlex\n initial=\"initial\"\n animate=\"animate\"\n exit=\"exit\"\n variants={errorVariants}\n justify=\"center\"\n align=\"center\"\n style={{\n background: 'var(--card-bg-color)',\n inset: '0',\n position: 'absolute',\n }}\n >\n <ErrorCard\n flex={1}\n message={t('preview-frame.connection.error.text')}\n onRetry={handleRetry}\n onContinueAnyway={handleContinueAnyway}\n >\n {devMode && (\n <>\n {overlaysConnection !== 'connected' && (\n <Card padding={3} radius={2} tone=\"critical\">\n <Stack space={3}>\n <Label muted size={0}>\n {t('preview-frame.overlay.connection-status.label')}\n </Label>\n <Code size={1}>\n {t('channel.status', {context: overlaysConnection})}\n </Code>\n </Stack>\n </Card>\n )}\n\n {loadersConnection !== 'connected' && (\n <Card padding={3} radius={2} tone=\"critical\">\n <Stack space={3}>\n <Label muted size={0}>\n {t('preview-frame.loader.connection-status.label')}\n </Label>\n <Code size={1}>\n {t('channel.status', {context: loadersConnection})}\n </Code>\n </Stack>\n </Card>\n )}\n </>\n )}\n </ErrorCard>\n </MotionFlex>\n ) : null}\n </AnimatePresence>\n <IFrame\n animate={iframeAnimations}\n initial={['background']}\n onLoad={onIFrameLoad}\n preventClick={preventIframeInteraction}\n ref={ref}\n src={previewUrl.toString()}\n style={iframeStyle}\n variants={iframeVariants}\n />\n </Flex>\n </Card>\n </TooltipDelayGroupProvider>\n </MotionConfig>\n )\n }),\n)\nPreview.displayName = 'Memo(ForwardRef(Preview))'\n\nconst sizes = {\n desktop: {\n width: '100%',\n height: '100%',\n },\n mobile: {\n width: 375,\n height: 650,\n },\n}\n\nconst spinnerVariants = {\n initial: {opacity: 1},\n animate: {opacity: [0, 0, 1]},\n exit: {opacity: [1, 0, 0]},\n}\n\nconst errorVariants = {\n initial: {opacity: 1},\n animate: {opacity: [0, 0, 1]},\n exit: {opacity: [1, 0, 0]},\n}\n\nconst iframeVariants = {\n desktop: {\n ...sizes.desktop,\n boxShadow: '0 0 0 0px var(--card-border-color)',\n },\n mobile: {\n ...sizes.mobile,\n boxShadow: '0 0 0 1px var(--card-border-color)',\n },\n background: {\n opacity: 0,\n scale: 1,\n },\n idle: {\n scale: 1,\n },\n reloading: {\n scale: [1, 1, 1, 0.98],\n },\n active: {\n opacity: [0, 0, 1],\n scale: 1,\n },\n timedOut: {\n opacity: [0, 0, 1],\n },\n}\n","/** @internal */\nexport function defineWarnOnce() {\n let warned = false\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (...args: any[]): void => {\n if (!warned) {\n // eslint-disable-next-line no-console\n console.warn(...args)\n warned = true\n }\n }\n}\n","import {validateApiPerspective} from '@sanity/client'\nimport isEqual from 'fast-deep-equal'\nimport {type MutableRefObject, useCallback, useMemo, useRef, useState} from 'react'\n\nimport {type FrameState, type PresentationPerspective} from './types'\nimport {defineWarnOnce} from './util/warnOnce'\n\nexport type DocumentOnPage = {\n _id: string\n _type: string\n}\n\ntype DocumentCache = Record<string, DocumentOnPage>\ntype KeyedDocumentCache = Record<string, DocumentCache>\n\nconst warnOnceAboutCrossDatasetReference = defineWarnOnce()\n\n/**\n * @TODO should be refactored to an lru-cache that is keyed by the perspective, which could be an array (if it is, it should use consistent sorting),\n * and the url path (optionally the origin too), so that swapping between perspectives and urls is fast.\n */\nexport function useDocumentsOnPage(\n perspective: PresentationPerspective,\n frameStateRef: MutableRefObject<FrameState>,\n): [\n DocumentOnPage[],\n (key: string, perspective: PresentationPerspective, state: DocumentOnPage[]) => void,\n] {\n validateApiPerspective(perspective)\n\n const [published, setPublished] = useState<KeyedDocumentCache>({})\n const [previewDrafts, setPreviewDrafts] = useState<KeyedDocumentCache>({})\n\n // Used to compare the frame url with its value when the cache was last updated\n // If the url has changed, the entire cache is replaced\n const urlRef = useRef<string | undefined>('')\n\n const setDocumentsOnPage = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (key: string, perspective: PresentationPerspective, sourceDocuments: DocumentOnPage[] = []) => {\n const documents = sourceDocuments.filter((sourceDocument) => {\n if ('_projectId' in sourceDocument && sourceDocument._projectId) {\n // eslint-disable-next-line no-warning-comments\n // @TODO Handle cross dataset references\n\n warnOnceAboutCrossDatasetReference(\n 'Cross dataset references are not supported yet, ignoring source document',\n sourceDocument,\n )\n return false\n }\n return sourceDocument\n })\n\n const setCache = perspective === 'published' ? setPublished : setPreviewDrafts\n\n setCache((cache) => {\n // Create the `next` documents, dedupe by `_id`\n const next: Record<string, DocumentOnPage> = {}\n for (const document of documents) {\n next[document._id] = document\n }\n\n // If the frame url has changed, replace the entire cache with the next documents\n if (urlRef.current !== frameStateRef.current.url) {\n urlRef.current = frameStateRef.current.url\n return {[key]: next}\n }\n\n // If the keyed cache has changed, return the entire cache and replace the keyed part\n const prev = cache[key]\n if (!isEqual(prev, next)) {\n return {...cache, [key]: next}\n }\n\n // Otherwise return the entire cache as is\n return cache\n })\n },\n [frameStateRef],\n )\n\n const documentsOnPage = useMemo(() => {\n const keyedCache = perspective === 'published' ? published : previewDrafts\n const uniqueDocuments = Object.values(keyedCache).reduce((acc, cache) => {\n Object.values(cache).forEach((doc) => {\n acc[doc._id] = doc\n })\n return acc\n }, {})\n\n return Object.values(uniqueDocuments)\n }, [perspective, previewDrafts, published])\n\n return [documentsOnPage, setDocumentsOnPage]\n}\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a, _b = options.delimiter, delimiter = _b === void 0 ? \"/#?\" : _b;\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n var isSafe = function (value) {\n for (var _i = 0, delimiter_1 = delimiter; _i < delimiter_1.length; _i++) {\n var char = delimiter_1[_i];\n if (value.indexOf(char) > -1)\n return true;\n }\n return false;\n };\n var safePattern = function (prefix) {\n var prev = result[result.length - 1];\n var prevText = prefix || (prev && typeof prev === \"string\" ? prev : \"\");\n if (prev && !prevText) {\n throw new TypeError(\"Must have text between two parameters, missing text after \\\"\".concat(prev.name, \"\\\"\"));\n }\n if (!prevText || isSafe(prevText))\n return \"[^\".concat(escapeString(delimiter), \"]+?\");\n return \"(?:(?!\".concat(escapeString(prevText), \")[^\").concat(escapeString(delimiter), \"])+?\");\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || safePattern(prefix),\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? safePattern(prefix) : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n throw new TypeError(\"Can not repeat \\\"\".concat(token.name, \"\\\" without a prefix and suffix\"));\n }\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import {type ResponseQueryOptions} from '@sanity/client'\nimport {match, type Path} from 'path-to-regexp'\nimport {useEffect, useRef, useState} from 'react'\nimport {useClient, usePerspective} from 'sanity'\nimport {type RouterState, useRouter} from 'sanity/router'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {API_VERSION} from './constants'\nimport {\n type DocumentResolver,\n type DocumentResolverContext,\n type MainDocument,\n type MainDocumentState,\n type PresentationNavigate,\n} from './types'\n\n// Helper function to \"unwrap\" a result when it is either explicitly provided or\n// returned as the result of a passed function\nfunction fnOrObj<T, U>(arg: T | ((ctx: U) => T), context: U): T {\n return arg instanceof Function ? arg(context) : arg\n}\n\nfunction getQueryFromResult(\n resolver: DocumentResolver,\n context: DocumentResolverContext,\n): string | undefined {\n if (resolver.resolve) {\n const filter = resolver.resolve(context)?.filter\n return filter\n ? `// groq\n*[${filter}][0]{_id, _type}`\n : undefined\n }\n\n if ('type' in resolver) {\n return `// groq\n*[_type == \"${resolver.type}\"][0]{_id, _type}`\n }\n\n return `// groq\n*[${fnOrObj(resolver.filter, context)}][0]{_id, _type}`\n}\n\nfunction getParamsFromResult(\n resolver: DocumentResolver,\n context: DocumentResolverContext,\n): Record<string, string> {\n if (resolver.resolve) {\n return resolver.resolve(context)?.params ?? context.params\n }\n\n if ('type' in resolver) {\n return {}\n }\n\n return fnOrObj(resolver.params, context) ?? context.params\n}\n\nexport function getRouteContext(route: Path, url: URL): DocumentResolverContext | undefined {\n const routes = Array.isArray(route) ? route : [route]\n\n for (route of routes) {\n let origin: DocumentResolverContext['origin']\n let path = route\n\n // Handle absolute URLs\n if (typeof route === 'string') {\n try {\n const absolute = new URL(route)\n origin = absolute.origin\n path = absolute.pathname\n } catch {\n // Ignore, as we assume a relative path\n }\n }\n\n // If an origin has been explicitly provided, check that it matches\n if (origin && url.origin !== origin) continue\n\n try {\n const matcher = match<Record<string, string>>(path, {decode: decodeURIComponent})\n const result = matcher(url.pathname)\n if (result) {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const {params, path} = result\n return {origin, params, path}\n }\n } catch (e) {\n throw new Error(`\"${route}\" is not a valid route pattern`)\n }\n }\n return undefined\n}\n\nexport function useMainDocument(props: {\n navigate?: PresentationNavigate\n navigationHistory: RouterState[]\n path?: string\n targetOrigin: string\n resolvers?: DocumentResolver[]\n}): MainDocumentState | undefined {\n const {navigate, navigationHistory, path, targetOrigin, resolvers = []} = props\n const {state: routerState} = useRouter()\n const {perspectiveStack} = usePerspective()\n const client = useClient({apiVersion: API_VERSION})\n const relativeUrl =\n path || routerState._searchParams?.find(([key]) => key === 'preview')?.[1] || ''\n\n const [mainDocumentState, setMainDocumentState] = useState<MainDocumentState | undefined>(\n undefined,\n )\n const mainDocumentIdRef = useRef<string | undefined>(undefined)\n\n const handleResponse = useEffectEvent((doc: MainDocument | undefined, url: URL) => {\n if (!doc || mainDocumentIdRef.current !== doc._id) {\n setMainDocumentState({\n document: doc,\n path: url.pathname,\n })\n mainDocumentIdRef.current = doc?._id\n\n // We only want to force a navigation to the main document if\n // the path changed but the document ID did not. An explicit\n // document navigation should take precedence over displaying\n // the main document. We determine if an explicit document\n // navigation has occured by comparing the IDs of the last two\n // resultant navigation states.\n if (navigationHistory.at(-1)?.id === navigationHistory.at(-2)?.id) {\n navigate?.({\n id: doc?._id,\n type: doc?._type,\n })\n }\n }\n })\n\n useEffect(() => {\n const url = new URL(relativeUrl, targetOrigin)\n\n if (resolvers.length) {\n let result:\n | {\n context: DocumentResolverContext\n resolver: DocumentResolver\n }\n | undefined\n for (const resolver of resolvers) {\n const context = getRouteContext(resolver.route, url)\n if (context) {\n result = {context, resolver}\n break\n }\n }\n\n if (result) {\n const query = getQueryFromResult(result.resolver, result.context)\n const params = getParamsFromResult(result.resolver, result.context)\n if (query) {\n const controller = new AbortController()\n const options: ResponseQueryOptions = {\n perspective: perspectiveStack,\n signal: controller.signal,\n tag: 'use-main-document',\n }\n\n client\n .fetch<MainDocument | undefined>(query, params, options)\n .then((doc) => handleResponse(doc, url))\n .catch((e) => {\n if (e instanceof Error && e.name === 'AbortError') return\n setMainDocumentState({document: undefined, path: url.pathname})\n mainDocumentIdRef.current = undefined\n })\n return () => {\n controller.abort()\n }\n }\n }\n }\n setMainDocumentState(undefined)\n mainDocumentIdRef.current = undefined\n return undefined\n }, [client, perspectiveStack, relativeUrl, resolvers, targetOrigin])\n\n return mainDocumentState\n}\n","// src/storages/globalConfig/globalConfig.ts\nvar store;\nfunction setGlobalConfig(config2) {\n store = { ...store, ...config2 };\n}\n// @__NO_SIDE_EFFECTS__\nfunction getGlobalConfig(config2) {\n return {\n lang: config2?.lang ?? store?.lang,\n message: config2?.message,\n abortEarly: config2?.abortEarly ?? store?.abortEarly,\n abortPipeEarly: config2?.abortPipeEarly ?? store?.abortPipeEarly\n };\n}\nfunction deleteGlobalConfig() {\n store = void 0;\n}\n\n// src/storages/globalMessage/globalMessage.ts\nvar store2;\nfunction setGlobalMessage(message2, lang) {\n if (!store2) store2 = /* @__PURE__ */ new Map();\n store2.set(lang, message2);\n}\n// @__NO_SIDE_EFFECTS__\nfunction getGlobalMessage(lang) {\n return store2?.get(lang);\n}\nfunction deleteGlobalMessage(lang) {\n store2?.delete(lang);\n}\n\n// src/storages/schemaMessage/schemaMessage.ts\nvar store3;\nfunction setSchemaMessage(message2, lang) {\n if (!store3) store3 = /* @__PURE__ */ new Map();\n store3.set(lang, message2);\n}\n// @__NO_SIDE_EFFECTS__\nfunction getSchemaMessage(lang) {\n return store3?.get(lang);\n}\nfunction deleteSchemaMessage(lang) {\n store3?.delete(lang);\n}\n\n// src/storages/specificMessage/specificMessage.ts\nvar store4;\nfunction setSpecificMessage(reference, message2, lang) {\n if (!store4) store4 = /* @__PURE__ */ new Map();\n if (!store4.get(reference)) store4.set(reference, /* @__PURE__ */ new Map());\n store4.get(reference).set(lang, message2);\n}\n// @__NO_SIDE_EFFECTS__\nfunction getSpecificMessage(reference, lang) {\n return store4?.get(reference)?.get(lang);\n}\nfunction deleteSpecificMessage(reference, lang) {\n store4?.get(reference)?.delete(lang);\n}\n\n// src/utils/_stringify/_stringify.ts\n// @__NO_SIDE_EFFECTS__\nfunction _stringify(input) {\n const type = typeof input;\n if (type === \"string\") {\n return `\"${input}\"`;\n }\n if (type === \"number\" || type === \"bigint\" || type === \"boolean\") {\n return `${input}`;\n }\n if (type === \"object\" || type === \"function\") {\n return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? \"null\";\n }\n return type;\n}\n\n// src/utils/_addIssue/_addIssue.ts\nfunction _addIssue(context, label, dataset, config2, other) {\n const input = other && \"input\" in other ? other.input : dataset.value;\n const expected = other?.expected ?? context.expects ?? null;\n const received = other?.received ?? _stringify(input);\n const issue = {\n kind: context.kind,\n type: context.type,\n input,\n expected,\n received,\n message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : \"R\"}eceived ${received}`,\n requirement: context.requirement,\n path: other?.path,\n issues: other?.issues,\n lang: config2.lang,\n abortEarly: config2.abortEarly,\n abortPipeEarly: config2.abortPipeEarly\n };\n const isSchema = context.kind === \"schema\";\n const message2 = other?.message ?? context.message ?? getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? getSchemaMessage(issue.lang) : null) ?? config2.message ?? getGlobalMessage(issue.lang);\n if (message2 !== void 0) {\n issue.message = typeof message2 === \"function\" ? (\n // @ts-expect-error\n message2(issue)\n ) : message2;\n }\n if (isSchema) {\n dataset.typed = false;\n }\n if (dataset.issues) {\n dataset.issues.push(issue);\n } else {\n dataset.issues = [issue];\n }\n}\n\n// src/utils/_getByteCount/_getByteCount.ts\nvar textEncoder;\n// @__NO_SIDE_EFFECTS__\nfunction _getByteCount(input) {\n if (!textEncoder) {\n textEncoder = new TextEncoder();\n }\n return textEncoder.encode(input).length;\n}\n\n// src/utils/_getGraphemeCount/_getGraphemeCount.ts\nvar segmenter;\n// @__NO_SIDE_EFFECTS__\nfunction _getGraphemeCount(input) {\n if (!segmenter) {\n segmenter = new Intl.Segmenter();\n }\n const segments = segmenter.segment(input);\n let count = 0;\n for (const _ of segments) {\n count++;\n }\n return count;\n}\n\n// src/utils/_getLastMetadata/_getLastMetadata.ts\n// @__NO_SIDE_EFFECTS__\nfunction _getLastMetadata(schema, type) {\n if (\"pipe\" in schema) {\n const nestedSchemas = [];\n for (let index = schema.pipe.length - 1; index >= 0; index--) {\n const item = schema.pipe[index];\n if (item.kind === \"schema\" && \"pipe\" in item) {\n nestedSchemas.push(item);\n } else if (item.kind === \"metadata\" && item.type === type) {\n return item[type];\n }\n }\n for (const nestedSchema of nestedSchemas) {\n const result = /* @__PURE__ */ _getLastMetadata(nestedSchema, type);\n if (result !== void 0) {\n return result;\n }\n }\n }\n}\n\n// src/utils/_getStandardProps/_getStandardProps.ts\n// @__NO_SIDE_EFFECTS__\nfunction _getStandardProps(context) {\n return {\n version: 1,\n vendor: \"valibot\",\n validate(value2) {\n return context[\"~run\"]({ value: value2 }, getGlobalConfig());\n }\n };\n}\n\n// src/utils/_getWordCount/_getWordCount.ts\nvar store5;\n// @__NO_SIDE_EFFECTS__\nfunction _getWordCount(locales, input) {\n if (!store5) {\n store5 = /* @__PURE__ */ new Map();\n }\n if (!store5.get(locales)) {\n store5.set(locales, new Intl.Segmenter(locales, { granularity: \"word\" }));\n }\n const segments = store5.get(locales).segment(input);\n let count = 0;\n for (const segment of segments) {\n if (segment.isWordLike) {\n count++;\n }\n }\n return count;\n}\n\n// src/utils/_isLuhnAlgo/_isLuhnAlgo.ts\nvar NON_DIGIT_REGEX = /\\D/gu;\n// @__NO_SIDE_EFFECTS__\nfunction _isLuhnAlgo(input) {\n const number2 = input.replace(NON_DIGIT_REGEX, \"\");\n let length2 = number2.length;\n let bit = 1;\n let sum = 0;\n while (length2) {\n const value2 = +number2[--length2];\n bit ^= 1;\n sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value2] : value2;\n }\n return sum % 10 === 0;\n}\n\n// src/utils/_isValidObjectKey/_isValidObjectKey.ts\n// @__NO_SIDE_EFFECTS__\nfunction _isValidObjectKey(object2, key) {\n return Object.hasOwn(object2, key) && key !== \"__proto__\" && key !== \"prototype\" && key !== \"constructor\";\n}\n\n// src/utils/_joinExpects/_joinExpects.ts\n// @__NO_SIDE_EFFECTS__\nfunction _joinExpects(values2, separator) {\n const list = [...new Set(values2)];\n if (list.length > 1) {\n return `(${list.join(` ${separator} `)})`;\n }\n return list[0] ?? \"never\";\n}\n\n// src/utils/entriesFromList/entriesFromList.ts\n// @__NO_SIDE_EFFECTS__\nfunction entriesFromList(list, schema) {\n const entries2 = {};\n for (const key of list) {\n entries2[key] = schema;\n }\n return entries2;\n}\n\n// src/utils/entriesFromObjects/entriesFromObjects.ts\n// @__NO_SIDE_EFFECTS__\nfunction entriesFromObjects(schemas) {\n const entries2 = {};\n for (const schema of schemas) {\n Object.assign(entries2, schema.entries);\n }\n return entries2;\n}\n\n// src/utils/getDotPath/getDotPath.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDotPath(issue) {\n if (issue.path) {\n let key = \"\";\n for (const item of issue.path) {\n if (typeof item.key === \"string\" || typeof item.key === \"number\") {\n if (key) {\n key += `.${item.key}`;\n } else {\n key += item.key;\n }\n } else {\n return null;\n }\n }\n return key;\n }\n return null;\n}\n\n// src/utils/isOfKind/isOfKind.ts\n// @__NO_SIDE_EFFECTS__\nfunction isOfKind(kind, object2) {\n return object2.kind === kind;\n}\n\n// src/utils/isOfType/isOfType.ts\n// @__NO_SIDE_EFFECTS__\nfunction isOfType(type, object2) {\n return object2.type === type;\n}\n\n// src/utils/isValiError/isValiError.ts\n// @__NO_SIDE_EFFECTS__\nfunction isValiError(error) {\n return error instanceof ValiError;\n}\n\n// src/utils/ValiError/ValiError.ts\nvar ValiError = class extends Error {\n /**\n * Creates a Valibot error with useful information.\n *\n * @param issues The error issues.\n */\n constructor(issues) {\n super(issues[0].message);\n this.name = \"ValiError\";\n this.issues = issues;\n }\n};\n\n// src/actions/args/args.ts\n// @__NO_SIDE_EFFECTS__\nfunction args(schema) {\n return {\n kind: \"transformation\",\n type: \"args\",\n reference: args,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = (...args_) => {\n const argsDataset = this.schema[\"~run\"]({ value: args_ }, config2);\n if (argsDataset.issues) {\n throw new ValiError(argsDataset.issues);\n }\n return func(...argsDataset.value);\n };\n return dataset;\n }\n };\n}\n\n// src/actions/args/argsAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction argsAsync(schema) {\n return {\n kind: \"transformation\",\n type: \"args\",\n reference: argsAsync,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = async (...args2) => {\n const argsDataset = await schema[\"~run\"]({ value: args2 }, config2);\n if (argsDataset.issues) {\n throw new ValiError(argsDataset.issues);\n }\n return func(...argsDataset.value);\n };\n return dataset;\n }\n };\n}\n\n// src/actions/await/awaitAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction awaitAsync() {\n return {\n kind: \"transformation\",\n type: \"await\",\n reference: awaitAsync,\n async: true,\n async \"~run\"(dataset) {\n dataset.value = await dataset.value;\n return dataset;\n }\n };\n}\n\n// src/regex.ts\nvar BASE64_REGEX = /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\nvar BIC_REGEX = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\nvar CUID2_REGEX = /^[a-z][\\da-z]*$/u;\nvar DECIMAL_REGEX = /^[+-]?(?:\\d*\\.)?\\d+$/u;\nvar DIGITS_REGEX = /^\\d+$/u;\nvar EMAIL_REGEX = /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-z]+(?:[.-][\\da-z]+)*\\.[a-z]{2,}$/iu;\nvar EMOJI_REGEX = (\n // eslint-disable-next-line redos-detector/no-unsafe-regex, regexp/no-dupe-disjunctions -- false positives\n /^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}))*)+$/u\n);\nvar HEXADECIMAL_REGEX = /^(?:0[hx])?[\\da-fA-F]+$/u;\nvar HEX_COLOR_REGEX = /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\nvar IMEI_REGEX = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\nvar IPV4_REGEX = (\n // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive\n /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$/u\n);\nvar IPV6_REGEX = /^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\nvar IP_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$|^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\nvar ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\nvar ISO_DATE_TIME_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\nvar ISO_TIME_REGEX = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\nvar ISO_TIME_SECOND_REGEX = /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\nvar ISO_TIMESTAMP_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}(?:\\.\\d{1,9})?(?:Z|[+-](?:0\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/u;\nvar ISO_WEEK_REGEX = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\nvar MAC48_REGEX = /^(?:[\\da-f]{2}:){5}[\\da-f]{2}$|^(?:[\\da-f]{2}-){5}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){2}[\\da-f]{4}$/iu;\nvar MAC64_REGEX = /^(?:[\\da-f]{2}:){7}[\\da-f]{2}$|^(?:[\\da-f]{2}-){7}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){3}[\\da-f]{4}$|^(?:[\\da-f]{4}:){3}[\\da-f]{4}$/iu;\nvar MAC_REGEX = /^(?:[\\da-f]{2}:){5}[\\da-f]{2}$|^(?:[\\da-f]{2}-){5}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){2}[\\da-f]{4}$|^(?:[\\da-f]{2}:){7}[\\da-f]{2}$|^(?:[\\da-f]{2}-){7}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){3}[\\da-f]{4}$|^(?:[\\da-f]{4}:){3}[\\da-f]{4}$/iu;\nvar NANO_ID_REGEX = /^[\\w-]+$/u;\nvar OCTAL_REGEX = /^(?:0o)?[0-7]+$/u;\nvar RFC_EMAIL_REGEX = (\n // eslint-disable-next-line regexp/prefer-w, no-useless-escape, regexp/no-useless-escape, regexp/require-unicode-regexp\n /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\n);\nvar SLUG_REGEX = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\nvar ULID_REGEX = /^[\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{26}$/u;\nvar UUID_REGEX = /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n\n// src/actions/base64/base64.ts\n// @__NO_SIDE_EFFECTS__\nfunction base64(message2) {\n return {\n kind: \"validation\",\n type: \"base64\",\n reference: base64,\n async: false,\n expects: null,\n requirement: BASE64_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"Base64\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/bic/bic.ts\n// @__NO_SIDE_EFFECTS__\nfunction bic(message2) {\n return {\n kind: \"validation\",\n type: \"bic\",\n reference: bic,\n async: false,\n expects: null,\n requirement: BIC_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"BIC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/brand/brand.ts\n// @__NO_SIDE_EFFECTS__\nfunction brand(name) {\n return {\n kind: \"transformation\",\n type: \"brand\",\n reference: brand,\n async: false,\n name,\n \"~run\"(dataset) {\n return dataset;\n }\n };\n}\n\n// src/actions/bytes/bytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction bytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"bytes\",\n reference: bytes,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 !== this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/check/check.ts\n// @__NO_SIDE_EFFECTS__\nfunction check(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check\",\n reference: check,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/check/checkAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction checkAsync(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check\",\n reference: checkAsync,\n async: true,\n expects: null,\n requirement,\n message: message2,\n async \"~run\"(dataset, config2) {\n if (dataset.typed && !await this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/checkItems/checkItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction checkItems(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check_items\",\n reference: checkItems,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n for (let index = 0; index < dataset.value.length; index++) {\n const item = dataset.value[index];\n if (!this.requirement(item, index, dataset.value)) {\n _addIssue(this, \"item\", dataset, config2, {\n input: item,\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input: dataset.value,\n key: index,\n value: item\n }\n ]\n });\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/checkItems/checkItemsAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction checkItemsAsync(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check_items\",\n reference: checkItemsAsync,\n async: true,\n expects: null,\n requirement,\n message: message2,\n async \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const requirementResults = await Promise.all(\n dataset.value.map(this.requirement)\n );\n for (let index = 0; index < dataset.value.length; index++) {\n if (!requirementResults[index]) {\n const item = dataset.value[index];\n _addIssue(this, \"item\", dataset, config2, {\n input: item,\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input: dataset.value,\n key: index,\n value: item\n }\n ]\n });\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/creditCard/creditCard.ts\nvar CREDIT_CARD_REGEX = /^(?:\\d{14,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\nvar SANITIZE_REGEX = /[- ]/gu;\nvar PROVIDER_REGEX_LIST = [\n // American Express\n /^3[47]\\d{13}$/u,\n // Diners Club\n /^3(?:0[0-5]|[68]\\d)\\d{11,13}$/u,\n // Discover\n /^6(?:011|5\\d{2})\\d{12,15}$/u,\n // JCB\n /^(?:2131|1800|35\\d{3})\\d{11}$/u,\n // Mastercard\n // eslint-disable-next-line redos-detector/no-unsafe-regex\n /^5[1-5]\\d{2}|(?:222\\d|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)\\d{12}$/u,\n // UnionPay\n /^(?:6[27]\\d{14,17}|81\\d{14,17})$/u,\n // Visa\n /^4\\d{12}(?:\\d{3,6})?$/u\n];\n// @__NO_SIDE_EFFECTS__\nfunction creditCard(message2) {\n return {\n kind: \"validation\",\n type: \"credit_card\",\n reference: creditCard,\n async: false,\n expects: null,\n requirement(input) {\n let sanitized;\n return CREDIT_CARD_REGEX.test(input) && // Remove any hyphens and blanks\n (sanitized = input.replace(SANITIZE_REGEX, \"\")) && // Check if it matches a provider\n PROVIDER_REGEX_LIST.some((regex2) => regex2.test(sanitized)) && // Check if passes luhn algorithm\n _isLuhnAlgo(sanitized);\n },\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"credit card\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/cuid2/cuid2.ts\n// @__NO_SIDE_EFFECTS__\nfunction cuid2(message2) {\n return {\n kind: \"validation\",\n type: \"cuid2\",\n reference: cuid2,\n async: false,\n expects: null,\n requirement: CUID2_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"Cuid2\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/decimal/decimal.ts\n// @__NO_SIDE_EFFECTS__\nfunction decimal(message2) {\n return {\n kind: \"validation\",\n type: \"decimal\",\n reference: decimal,\n async: false,\n expects: null,\n requirement: DECIMAL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"decimal\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/description/description.ts\n// @__NO_SIDE_EFFECTS__\nfunction description(description_) {\n return {\n kind: \"metadata\",\n type: \"description\",\n reference: description,\n description: description_\n };\n}\n\n// src/actions/digits/digits.ts\n// @__NO_SIDE_EFFECTS__\nfunction digits(message2) {\n return {\n kind: \"validation\",\n type: \"digits\",\n reference: digits,\n async: false,\n expects: null,\n requirement: DIGITS_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"digits\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/email/email.ts\n// @__NO_SIDE_EFFECTS__\nfunction email(message2) {\n return {\n kind: \"validation\",\n type: \"email\",\n reference: email,\n expects: null,\n async: false,\n requirement: EMAIL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"email\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/emoji/emoji.ts\n// @__NO_SIDE_EFFECTS__\nfunction emoji(message2) {\n return {\n kind: \"validation\",\n type: \"emoji\",\n reference: emoji,\n async: false,\n expects: null,\n requirement: EMOJI_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"emoji\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/empty/empty.ts\n// @__NO_SIDE_EFFECTS__\nfunction empty(message2) {\n return {\n kind: \"validation\",\n type: \"empty\",\n reference: empty,\n async: false,\n expects: \"0\",\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length > 0) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/endsWith/endsWith.ts\n// @__NO_SIDE_EFFECTS__\nfunction endsWith(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"ends_with\",\n reference: endsWith,\n async: false,\n expects: `\"${requirement}\"`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.endsWith(this.requirement)) {\n _addIssue(this, \"end\", dataset, config2, {\n received: `\"${dataset.value.slice(-this.requirement.length)}\"`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/entries/entries.ts\n// @__NO_SIDE_EFFECTS__\nfunction entries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"entries\",\n reference: entries,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count !== this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/everyItem/everyItem.ts\n// @__NO_SIDE_EFFECTS__\nfunction everyItem(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"every_item\",\n reference: everyItem,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.every(this.requirement)) {\n _addIssue(this, \"item\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/excludes/excludes.ts\n// @__NO_SIDE_EFFECTS__\nfunction excludes(requirement, message2) {\n const received = _stringify(requirement);\n return {\n kind: \"validation\",\n type: \"excludes\",\n reference: excludes,\n async: false,\n expects: `!${received}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.includes(this.requirement)) {\n _addIssue(this, \"content\", dataset, config2, { received });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/filterItems/filterItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction filterItems(operation) {\n return {\n kind: \"transformation\",\n type: \"filter_items\",\n reference: filterItems,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.filter(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/findItem/findItem.ts\n// @__NO_SIDE_EFFECTS__\nfunction findItem(operation) {\n return {\n kind: \"transformation\",\n type: \"find_item\",\n reference: findItem,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.find(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/finite/finite.ts\n// @__NO_SIDE_EFFECTS__\nfunction finite(message2) {\n return {\n kind: \"validation\",\n type: \"finite\",\n reference: finite,\n async: false,\n expects: null,\n requirement: Number.isFinite,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"finite\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/flavor/flavor.ts\n// @__NO_SIDE_EFFECTS__\nfunction flavor(name) {\n return {\n kind: \"transformation\",\n type: \"flavor\",\n reference: flavor,\n async: false,\n name,\n \"~run\"(dataset) {\n return dataset;\n }\n };\n}\n\n// src/actions/graphemes/graphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction graphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"graphemes\",\n reference: graphemes,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count !== this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/gtValue/gtValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction gtValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"gt_value\",\n reference: gtValue,\n async: false,\n expects: `>${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value > this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/hash/hash.ts\nvar HASH_LENGTHS = {\n md4: 32,\n md5: 32,\n sha1: 40,\n sha256: 64,\n sha384: 96,\n sha512: 128,\n ripemd128: 32,\n ripemd160: 40,\n tiger128: 32,\n tiger160: 40,\n tiger192: 48,\n crc32: 8,\n crc32b: 8,\n adler32: 8\n};\n// @__NO_SIDE_EFFECTS__\nfunction hash(types, message2) {\n return {\n kind: \"validation\",\n type: \"hash\",\n reference: hash,\n expects: null,\n async: false,\n requirement: RegExp(\n types.map((type) => `^[a-f0-9]{${HASH_LENGTHS[type]}}$`).join(\"|\"),\n \"iu\"\n ),\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"hash\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/hexadecimal/hexadecimal.ts\n// @__NO_SIDE_EFFECTS__\nfunction hexadecimal(message2) {\n return {\n kind: \"validation\",\n type: \"hexadecimal\",\n reference: hexadecimal,\n async: false,\n expects: null,\n requirement: HEXADECIMAL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"hexadecimal\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/hexColor/hexColor.ts\n// @__NO_SIDE_EFFECTS__\nfunction hexColor(message2) {\n return {\n kind: \"validation\",\n type: \"hex_color\",\n reference: hexColor,\n async: false,\n expects: null,\n requirement: HEX_COLOR_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"hex color\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/imei/imei.ts\n// @__NO_SIDE_EFFECTS__\nfunction imei(message2) {\n return {\n kind: \"validation\",\n type: \"imei\",\n reference: imei,\n async: false,\n expects: null,\n requirement(input) {\n return IMEI_REGEX.test(input) && _isLuhnAlgo(input);\n },\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"IMEI\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/includes/includes.ts\n// @__NO_SIDE_EFFECTS__\nfunction includes(requirement, message2) {\n const expects = _stringify(requirement);\n return {\n kind: \"validation\",\n type: \"includes\",\n reference: includes,\n async: false,\n expects,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.includes(this.requirement)) {\n _addIssue(this, \"content\", dataset, config2, {\n received: `!${expects}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/integer/integer.ts\n// @__NO_SIDE_EFFECTS__\nfunction integer(message2) {\n return {\n kind: \"validation\",\n type: \"integer\",\n reference: integer,\n async: false,\n expects: null,\n requirement: Number.isInteger,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"integer\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ip/ip.ts\n// @__NO_SIDE_EFFECTS__\nfunction ip(message2) {\n return {\n kind: \"validation\",\n type: \"ip\",\n reference: ip,\n async: false,\n expects: null,\n requirement: IP_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"IP\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ipv4/ipv4.ts\n// @__NO_SIDE_EFFECTS__\nfunction ipv4(message2) {\n return {\n kind: \"validation\",\n type: \"ipv4\",\n reference: ipv4,\n async: false,\n expects: null,\n requirement: IPV4_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"IPv4\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ipv6/ipv6.ts\n// @__NO_SIDE_EFFECTS__\nfunction ipv6(message2) {\n return {\n kind: \"validation\",\n type: \"ipv6\",\n reference: ipv6,\n async: false,\n expects: null,\n requirement: IPV6_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"IPv6\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoDate/isoDate.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoDate(message2) {\n return {\n kind: \"validation\",\n type: \"iso_date\",\n reference: isoDate,\n async: false,\n expects: null,\n requirement: ISO_DATE_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"date\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoDateTime/isoDateTime.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoDateTime(message2) {\n return {\n kind: \"validation\",\n type: \"iso_date_time\",\n reference: isoDateTime,\n async: false,\n expects: null,\n requirement: ISO_DATE_TIME_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"date-time\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoTime/isoTime.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoTime(message2) {\n return {\n kind: \"validation\",\n type: \"iso_time\",\n reference: isoTime,\n async: false,\n expects: null,\n requirement: ISO_TIME_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"time\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoTimeSecond/isoTimeSecond.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoTimeSecond(message2) {\n return {\n kind: \"validation\",\n type: \"iso_time_second\",\n reference: isoTimeSecond,\n async: false,\n expects: null,\n requirement: ISO_TIME_SECOND_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"time-second\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoTimestamp/isoTimestamp.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoTimestamp(message2) {\n return {\n kind: \"validation\",\n type: \"iso_timestamp\",\n reference: isoTimestamp,\n async: false,\n expects: null,\n requirement: ISO_TIMESTAMP_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"timestamp\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoWeek/isoWeek.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoWeek(message2) {\n return {\n kind: \"validation\",\n type: \"iso_week\",\n reference: isoWeek,\n async: false,\n expects: null,\n requirement: ISO_WEEK_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"week\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/length/length.ts\n// @__NO_SIDE_EFFECTS__\nfunction length(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"length\",\n reference: length,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length !== this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ltValue/ltValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction ltValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"lt_value\",\n reference: ltValue,\n async: false,\n expects: `<${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value < this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mac/mac.ts\n// @__NO_SIDE_EFFECTS__\nfunction mac(message2) {\n return {\n kind: \"validation\",\n type: \"mac\",\n reference: mac,\n async: false,\n expects: null,\n requirement: MAC_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"MAC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mac48/mac48.ts\n// @__NO_SIDE_EFFECTS__\nfunction mac48(message2) {\n return {\n kind: \"validation\",\n type: \"mac48\",\n reference: mac48,\n async: false,\n expects: null,\n requirement: MAC48_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"48-bit MAC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mac64/mac64.ts\n// @__NO_SIDE_EFFECTS__\nfunction mac64(message2) {\n return {\n kind: \"validation\",\n type: \"mac64\",\n reference: mac64,\n async: false,\n expects: null,\n requirement: MAC64_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"64-bit MAC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mapItems/mapItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction mapItems(operation) {\n return {\n kind: \"transformation\",\n type: \"map_items\",\n reference: mapItems,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.map(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/maxBytes/maxBytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxBytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_bytes\",\n reference: maxBytes,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 > this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxEntries/maxEntries.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxEntries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_entries\",\n reference: maxEntries,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count > this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxGraphemes/maxGraphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxGraphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_graphemes\",\n reference: maxGraphemes,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count > this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxLength/maxLength.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxLength(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_length\",\n reference: maxLength,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length > this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxSize/maxSize.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxSize(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_size\",\n reference: maxSize,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size > this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxValue/maxValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_value\",\n reference: maxValue,\n async: false,\n expects: `<=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value <= this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxWords/maxWords.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxWords(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_words\",\n reference: maxWords,\n async: false,\n expects: `<=${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count > this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/metadata/metadata.ts\n// @__NO_SIDE_EFFECTS__\nfunction metadata(metadata_) {\n return {\n kind: \"metadata\",\n type: \"metadata\",\n reference: metadata,\n metadata: metadata_\n };\n}\n\n// src/actions/mimeType/mimeType.ts\n// @__NO_SIDE_EFFECTS__\nfunction mimeType(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"mime_type\",\n reference: mimeType,\n async: false,\n expects: _joinExpects(\n requirement.map((option) => `\"${option}\"`),\n \"|\"\n ),\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.includes(dataset.value.type)) {\n _addIssue(this, \"MIME type\", dataset, config2, {\n received: `\"${dataset.value.type}\"`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minBytes/minBytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction minBytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_bytes\",\n reference: minBytes,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 < this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minEntries/minEntries.ts\n// @__NO_SIDE_EFFECTS__\nfunction minEntries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_entries\",\n reference: minEntries,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count < this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minGraphemes/minGraphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction minGraphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_graphemes\",\n reference: minGraphemes,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count < this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minLength/minLength.ts\n// @__NO_SIDE_EFFECTS__\nfunction minLength(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_length\",\n reference: minLength,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length < this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minSize/minSize.ts\n// @__NO_SIDE_EFFECTS__\nfunction minSize(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_size\",\n reference: minSize,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size < this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minValue/minValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction minValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_value\",\n reference: minValue,\n async: false,\n expects: `>=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value >= this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minWords/minWords.ts\n// @__NO_SIDE_EFFECTS__\nfunction minWords(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_words\",\n reference: minWords,\n async: false,\n expects: `>=${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count < this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/multipleOf/multipleOf.ts\n// @__NO_SIDE_EFFECTS__\nfunction multipleOf(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"multiple_of\",\n reference: multipleOf,\n async: false,\n expects: `%${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value % this.requirement != 0) {\n _addIssue(this, \"multiple\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/nanoid/nanoid.ts\n// @__NO_SIDE_EFFECTS__\nfunction nanoid(message2) {\n return {\n kind: \"validation\",\n type: \"nanoid\",\n reference: nanoid,\n async: false,\n expects: null,\n requirement: NANO_ID_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"Nano ID\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/nonEmpty/nonEmpty.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonEmpty(message2) {\n return {\n kind: \"validation\",\n type: \"non_empty\",\n reference: nonEmpty,\n async: false,\n expects: \"!0\",\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length === 0) {\n _addIssue(this, \"length\", dataset, config2, {\n received: \"0\"\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/normalize/normalize.ts\n// @__NO_SIDE_EFFECTS__\nfunction normalize(form) {\n return {\n kind: \"transformation\",\n type: \"normalize\",\n reference: normalize,\n async: false,\n form,\n \"~run\"(dataset) {\n dataset.value = dataset.value.normalize(this.form);\n return dataset;\n }\n };\n}\n\n// src/actions/notBytes/notBytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction notBytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_bytes\",\n reference: notBytes,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 === this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notEntries/notEntries.ts\n// @__NO_SIDE_EFFECTS__\nfunction notEntries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_entries\",\n reference: notEntries,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count === this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notGraphemes/notGraphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction notGraphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_graphemes\",\n reference: notGraphemes,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count === this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notLength/notLength.ts\n// @__NO_SIDE_EFFECTS__\nfunction notLength(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_length\",\n reference: notLength,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length === this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notSize/notSize.ts\n// @__NO_SIDE_EFFECTS__\nfunction notSize(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_size\",\n reference: notSize,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size === this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notValue/notValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction notValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_value\",\n reference: notValue,\n async: false,\n expects: requirement instanceof Date ? `!${requirement.toJSON()}` : `!${_stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && this.requirement <= dataset.value && this.requirement >= dataset.value) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notValues/notValues.ts\n// @__NO_SIDE_EFFECTS__\nfunction notValues(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_values\",\n reference: notValues,\n async: false,\n expects: `!${_joinExpects(\n requirement.map(\n (value2) => value2 instanceof Date ? value2.toJSON() : _stringify(value2)\n ),\n \"|\"\n )}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && this.requirement.some(\n (value2) => value2 <= dataset.value && value2 >= dataset.value\n )) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notWords/notWords.ts\n// @__NO_SIDE_EFFECTS__\nfunction notWords(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_words\",\n reference: notWords,\n async: false,\n expects: `!${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count === this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/octal/octal.ts\n// @__NO_SIDE_EFFECTS__\nfunction octal(message2) {\n return {\n kind: \"validation\",\n type: \"octal\",\n reference: octal,\n async: false,\n expects: null,\n requirement: OCTAL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"octal\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/parseJson/parseJson.ts\n// @__NO_SIDE_EFFECTS__\nfunction parseJson(config2, message2) {\n return {\n kind: \"transformation\",\n type: \"parse_json\",\n reference: parseJson,\n config: config2,\n message: message2,\n async: false,\n \"~run\"(dataset, config3) {\n try {\n dataset.value = JSON.parse(dataset.value, this.config?.reviver);\n } catch (error) {\n if (error instanceof Error) {\n _addIssue(this, \"JSON\", dataset, config3, {\n received: `\"${error.message}\"`\n });\n dataset.typed = false;\n } else {\n throw error;\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/partialCheck/utils/_isPartiallyTyped/_isPartiallyTyped.ts\n// @__NO_SIDE_EFFECTS__\nfunction _isPartiallyTyped(dataset, paths) {\n if (dataset.issues) {\n for (const path of paths) {\n for (const issue of dataset.issues) {\n let typed = false;\n const bound = Math.min(path.length, issue.path?.length ?? 0);\n for (let index = 0; index < bound; index++) {\n if (\n // @ts-expect-error\n path[index] !== issue.path[index].key && // @ts-expect-error\n (path[index] !== \"$\" || issue.path[index].type !== \"array\")\n ) {\n typed = true;\n break;\n }\n }\n if (!typed) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n// src/actions/partialCheck/partialCheck.ts\n// @__NO_SIDE_EFFECTS__\nfunction partialCheck(paths, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"partial_check\",\n reference: partialCheck,\n async: false,\n expects: null,\n paths,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if ((dataset.typed || _isPartiallyTyped(dataset, paths)) && // @ts-expect-error\n !this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/partialCheck/partialCheckAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction partialCheckAsync(paths, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"partial_check\",\n reference: partialCheckAsync,\n async: true,\n expects: null,\n paths,\n requirement,\n message: message2,\n async \"~run\"(dataset, config2) {\n if ((dataset.typed || _isPartiallyTyped(dataset, paths)) && // @ts-expect-error\n !await this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/rawCheck/rawCheck.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawCheck(action) {\n return {\n kind: \"validation\",\n type: \"raw_check\",\n reference: rawCheck,\n async: false,\n expects: null,\n \"~run\"(dataset, config2) {\n action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info)\n });\n return dataset;\n }\n };\n}\n\n// src/actions/rawCheck/rawCheckAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawCheckAsync(action) {\n return {\n kind: \"validation\",\n type: \"raw_check\",\n reference: rawCheckAsync,\n async: true,\n expects: null,\n async \"~run\"(dataset, config2) {\n await action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info)\n });\n return dataset;\n }\n };\n}\n\n// src/actions/rawTransform/rawTransform.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawTransform(action) {\n return {\n kind: \"transformation\",\n type: \"raw_transform\",\n reference: rawTransform,\n async: false,\n \"~run\"(dataset, config2) {\n const output = action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info),\n NEVER: null\n });\n if (dataset.issues) {\n dataset.typed = false;\n } else {\n dataset.value = output;\n }\n return dataset;\n }\n };\n}\n\n// src/actions/rawTransform/rawTransformAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawTransformAsync(action) {\n return {\n kind: \"transformation\",\n type: \"raw_transform\",\n reference: rawTransformAsync,\n async: true,\n async \"~run\"(dataset, config2) {\n const output = await action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info),\n NEVER: null\n });\n if (dataset.issues) {\n dataset.typed = false;\n } else {\n dataset.value = output;\n }\n return dataset;\n }\n };\n}\n\n// src/actions/readonly/readonly.ts\n// @__NO_SIDE_EFFECTS__\nfunction readonly() {\n return {\n kind: \"transformation\",\n type: \"readonly\",\n reference: readonly,\n async: false,\n \"~run\"(dataset) {\n return dataset;\n }\n };\n}\n\n// src/actions/reduceItems/reduceItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction reduceItems(operation, initial) {\n return {\n kind: \"transformation\",\n type: \"reduce_items\",\n reference: reduceItems,\n async: false,\n operation,\n initial,\n \"~run\"(dataset) {\n dataset.value = dataset.value.reduce(this.operation, this.initial);\n return dataset;\n }\n };\n}\n\n// src/actions/regex/regex.ts\n// @__NO_SIDE_EFFECTS__\nfunction regex(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"regex\",\n reference: regex,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"format\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/returns/returns.ts\n// @__NO_SIDE_EFFECTS__\nfunction returns(schema) {\n return {\n kind: \"transformation\",\n type: \"returns\",\n reference: returns,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = (...args_) => {\n const returnsDataset = this.schema[\"~run\"](\n { value: func(...args_) },\n config2\n );\n if (returnsDataset.issues) {\n throw new ValiError(returnsDataset.issues);\n }\n return returnsDataset.value;\n };\n return dataset;\n }\n };\n}\n\n// src/actions/returns/returnsAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction returnsAsync(schema) {\n return {\n kind: \"transformation\",\n type: \"returns\",\n reference: returnsAsync,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = async (...args_) => {\n const returnsDataset = await this.schema[\"~run\"](\n { value: await func(...args_) },\n config2\n );\n if (returnsDataset.issues) {\n throw new ValiError(returnsDataset.issues);\n }\n return returnsDataset.value;\n };\n return dataset;\n }\n };\n}\n\n// src/actions/rfcEmail/rfcEmail.ts\n// @__NO_SIDE_EFFECTS__\nfunction rfcEmail(message2) {\n return {\n kind: \"validation\",\n type: \"rfc_email\",\n reference: rfcEmail,\n expects: null,\n async: false,\n requirement: RFC_EMAIL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"email\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/safeInteger/safeInteger.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeInteger(message2) {\n return {\n kind: \"validation\",\n type: \"safe_integer\",\n reference: safeInteger,\n async: false,\n expects: null,\n requirement: Number.isSafeInteger,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"safe integer\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/size/size.ts\n// @__NO_SIDE_EFFECTS__\nfunction size(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"size\",\n reference: size,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size !== this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/slug/slug.ts\n// @__NO_SIDE_EFFECTS__\nfunction slug(message2) {\n return {\n kind: \"validation\",\n type: \"slug\",\n reference: slug,\n async: false,\n expects: null,\n requirement: SLUG_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"slug\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/someItem/someItem.ts\n// @__NO_SIDE_EFFECTS__\nfunction someItem(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"some_item\",\n reference: someItem,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.some(this.requirement)) {\n _addIssue(this, \"item\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/sortItems/sortItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction sortItems(operation) {\n return {\n kind: \"transformation\",\n type: \"sort_items\",\n reference: sortItems,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.sort(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/startsWith/startsWith.ts\n// @__NO_SIDE_EFFECTS__\nfunction startsWith(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"starts_with\",\n reference: startsWith,\n async: false,\n expects: `\"${requirement}\"`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.startsWith(this.requirement)) {\n _addIssue(this, \"start\", dataset, config2, {\n received: `\"${dataset.value.slice(0, this.requirement.length)}\"`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/stringifyJson/stringifyJson.ts\n// @__NO_SIDE_EFFECTS__\nfunction stringifyJson(config2, message2) {\n return {\n kind: \"transformation\",\n type: \"stringify_json\",\n reference: stringifyJson,\n message: message2,\n config: config2,\n async: false,\n \"~run\"(dataset, config3) {\n try {\n const output = JSON.stringify(\n dataset.value,\n // @ts-expect-error\n this.config?.replacer,\n this.config?.space\n );\n if (output === void 0) {\n _addIssue(this, \"JSON\", dataset, config3);\n dataset.typed = false;\n }\n dataset.value = output;\n } catch (error) {\n if (error instanceof Error) {\n _addIssue(this, \"JSON\", dataset, config3, {\n received: `\"${error.message}\"`\n });\n dataset.typed = false;\n } else {\n throw error;\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/title/title.ts\n// @__NO_SIDE_EFFECTS__\nfunction title(title_) {\n return {\n kind: \"metadata\",\n type: \"title\",\n reference: title,\n title: title_\n };\n}\n\n// src/actions/toLowerCase/toLowerCase.ts\n// @__NO_SIDE_EFFECTS__\nfunction toLowerCase() {\n return {\n kind: \"transformation\",\n type: \"to_lower_case\",\n reference: toLowerCase,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.toLowerCase();\n return dataset;\n }\n };\n}\n\n// src/actions/toMaxValue/toMaxValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction toMaxValue(requirement) {\n return {\n kind: \"transformation\",\n type: \"to_max_value\",\n reference: toMaxValue,\n async: false,\n requirement,\n \"~run\"(dataset) {\n dataset.value = dataset.value > this.requirement ? this.requirement : dataset.value;\n return dataset;\n }\n };\n}\n\n// src/actions/toMinValue/toMinValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction toMinValue(requirement) {\n return {\n kind: \"transformation\",\n type: \"to_min_value\",\n reference: toMinValue,\n async: false,\n requirement,\n \"~run\"(dataset) {\n dataset.value = dataset.value < this.requirement ? this.requirement : dataset.value;\n return dataset;\n }\n };\n}\n\n// src/actions/toUpperCase/toUpperCase.ts\n// @__NO_SIDE_EFFECTS__\nfunction toUpperCase() {\n return {\n kind: \"transformation\",\n type: \"to_upper_case\",\n reference: toUpperCase,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.toUpperCase();\n return dataset;\n }\n };\n}\n\n// src/actions/transform/transform.ts\n// @__NO_SIDE_EFFECTS__\nfunction transform(operation) {\n return {\n kind: \"transformation\",\n type: \"transform\",\n reference: transform,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = this.operation(dataset.value);\n return dataset;\n }\n };\n}\n\n// src/actions/transform/transformAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction transformAsync(operation) {\n return {\n kind: \"transformation\",\n type: \"transform\",\n reference: transformAsync,\n async: true,\n operation,\n async \"~run\"(dataset) {\n dataset.value = await this.operation(dataset.value);\n return dataset;\n }\n };\n}\n\n// src/actions/trim/trim.ts\n// @__NO_SIDE_EFFECTS__\nfunction trim() {\n return {\n kind: \"transformation\",\n type: \"trim\",\n reference: trim,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.trim();\n return dataset;\n }\n };\n}\n\n// src/actions/trimEnd/trimEnd.ts\n// @__NO_SIDE_EFFECTS__\nfunction trimEnd() {\n return {\n kind: \"transformation\",\n type: \"trim_end\",\n reference: trimEnd,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.trimEnd();\n return dataset;\n }\n };\n}\n\n// src/actions/trimStart/trimStart.ts\n// @__NO_SIDE_EFFECTS__\nfunction trimStart() {\n return {\n kind: \"transformation\",\n type: \"trim_start\",\n reference: trimStart,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.trimStart();\n return dataset;\n }\n };\n}\n\n// src/actions/ulid/ulid.ts\n// @__NO_SIDE_EFFECTS__\nfunction ulid(message2) {\n return {\n kind: \"validation\",\n type: \"ulid\",\n reference: ulid,\n async: false,\n expects: null,\n requirement: ULID_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"ULID\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/url/url.ts\n// @__NO_SIDE_EFFECTS__\nfunction url(message2) {\n return {\n kind: \"validation\",\n type: \"url\",\n reference: url,\n async: false,\n expects: null,\n requirement(input) {\n try {\n new URL(input);\n return true;\n } catch {\n return false;\n }\n },\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"URL\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/uuid/uuid.ts\n// @__NO_SIDE_EFFECTS__\nfunction uuid(message2) {\n return {\n kind: \"validation\",\n type: \"uuid\",\n reference: uuid,\n async: false,\n expects: null,\n requirement: UUID_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"UUID\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/value/value.ts\n// @__NO_SIDE_EFFECTS__\nfunction value(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"value\",\n reference: value,\n async: false,\n expects: requirement instanceof Date ? requirement.toJSON() : _stringify(requirement),\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(this.requirement <= dataset.value && this.requirement >= dataset.value)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/values/values.ts\n// @__NO_SIDE_EFFECTS__\nfunction values(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"values\",\n reference: values,\n async: false,\n expects: `${_joinExpects(\n requirement.map(\n (value2) => value2 instanceof Date ? value2.toJSON() : _stringify(value2)\n ),\n \"|\"\n )}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.some(\n (value2) => value2 <= dataset.value && value2 >= dataset.value\n )) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/words/words.ts\n// @__NO_SIDE_EFFECTS__\nfunction words(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"words\",\n reference: words,\n async: false,\n expects: `${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count !== this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/assert/assert.ts\nfunction assert(schema, input) {\n const issues = schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n if (issues) {\n throw new ValiError(issues);\n }\n}\n\n// src/methods/config/config.ts\n// @__NO_SIDE_EFFECTS__\nfunction config(schema, config2) {\n return {\n ...schema,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config_) {\n return schema[\"~run\"](dataset, { ...config_, ...config2 });\n }\n };\n}\n\n// src/methods/getFallback/getFallback.ts\n// @__NO_SIDE_EFFECTS__\nfunction getFallback(schema, dataset, config2) {\n return typeof schema.fallback === \"function\" ? (\n // @ts-expect-error\n schema.fallback(dataset, config2)\n ) : (\n // @ts-expect-error\n schema.fallback\n );\n}\n\n// src/methods/fallback/fallback.ts\n// @__NO_SIDE_EFFECTS__\nfunction fallback(schema, fallback2) {\n return {\n ...schema,\n fallback: fallback2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const outputDataset = schema[\"~run\"](dataset, config2);\n return outputDataset.issues ? { typed: true, value: getFallback(this, outputDataset, config2) } : outputDataset;\n }\n };\n}\n\n// src/methods/fallback/fallbackAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction fallbackAsync(schema, fallback2) {\n return {\n ...schema,\n fallback: fallback2,\n async: true,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const outputDataset = await schema[\"~run\"](dataset, config2);\n return outputDataset.issues ? {\n typed: true,\n value: await getFallback(this, outputDataset, config2)\n } : outputDataset;\n }\n };\n}\n\n// src/methods/flatten/flatten.ts\n// @__NO_SIDE_EFFECTS__\nfunction flatten(issues) {\n const flatErrors = {};\n for (const issue of issues) {\n if (issue.path) {\n const dotPath = getDotPath(issue);\n if (dotPath) {\n if (!flatErrors.nested) {\n flatErrors.nested = {};\n }\n if (flatErrors.nested[dotPath]) {\n flatErrors.nested[dotPath].push(issue.message);\n } else {\n flatErrors.nested[dotPath] = [issue.message];\n }\n } else {\n if (flatErrors.other) {\n flatErrors.other.push(issue.message);\n } else {\n flatErrors.other = [issue.message];\n }\n }\n } else {\n if (flatErrors.root) {\n flatErrors.root.push(issue.message);\n } else {\n flatErrors.root = [issue.message];\n }\n }\n }\n return flatErrors;\n}\n\n// src/methods/forward/forward.ts\n// @__NO_SIDE_EFFECTS__\nfunction forward(action, path) {\n return {\n ...action,\n \"~run\"(dataset, config2) {\n const prevIssues = dataset.issues && [...dataset.issues];\n dataset = action[\"~run\"](dataset, config2);\n if (dataset.issues) {\n for (const issue of dataset.issues) {\n if (!prevIssues?.includes(issue)) {\n let pathInput = dataset.value;\n for (const key of path) {\n const pathValue = pathInput[key];\n const pathItem = {\n type: \"unknown\",\n origin: \"value\",\n input: pathInput,\n key,\n value: pathValue\n };\n if (issue.path) {\n issue.path.push(pathItem);\n } else {\n issue.path = [pathItem];\n }\n if (!pathValue) {\n break;\n }\n pathInput = pathValue;\n }\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/forward/forwardAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction forwardAsync(action, path) {\n return {\n ...action,\n async: true,\n async \"~run\"(dataset, config2) {\n const prevIssues = dataset.issues && [...dataset.issues];\n dataset = await action[\"~run\"](dataset, config2);\n if (dataset.issues) {\n for (const issue of dataset.issues) {\n if (!prevIssues?.includes(issue)) {\n let pathInput = dataset.value;\n for (const key of path) {\n const pathValue = pathInput[key];\n const pathItem = {\n type: \"unknown\",\n origin: \"value\",\n input: pathInput,\n key,\n value: pathValue\n };\n if (issue.path) {\n issue.path.push(pathItem);\n } else {\n issue.path = [pathItem];\n }\n if (!pathValue) {\n break;\n }\n pathInput = pathValue;\n }\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/getDefault/getDefault.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDefault(schema, dataset, config2) {\n return typeof schema.default === \"function\" ? (\n // @ts-expect-error\n schema.default(dataset, config2)\n ) : (\n // @ts-expect-error\n schema.default\n );\n}\n\n// src/methods/getDefaults/getDefaults.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDefaults(schema) {\n if (\"entries\" in schema) {\n const object2 = {};\n for (const key in schema.entries) {\n object2[key] = /* @__PURE__ */ getDefaults(schema.entries[key]);\n }\n return object2;\n }\n if (\"items\" in schema) {\n return schema.items.map(getDefaults);\n }\n return getDefault(schema);\n}\n\n// src/methods/getDefaults/getDefaultsAsync.ts\n// @__NO_SIDE_EFFECTS__\nasync function getDefaultsAsync(schema) {\n if (\"entries\" in schema) {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(schema.entries).map(async ([key, value2]) => [\n key,\n await /* @__PURE__ */ getDefaultsAsync(value2)\n ])\n )\n );\n }\n if (\"items\" in schema) {\n return Promise.all(schema.items.map(getDefaultsAsync));\n }\n return getDefault(schema);\n}\n\n// src/methods/getDescription/getDescription.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDescription(schema) {\n return _getLastMetadata(schema, \"description\");\n}\n\n// src/methods/getFallbacks/getFallbacks.ts\n// @__NO_SIDE_EFFECTS__\nfunction getFallbacks(schema) {\n if (\"entries\" in schema) {\n const object2 = {};\n for (const key in schema.entries) {\n object2[key] = /* @__PURE__ */ getFallbacks(schema.entries[key]);\n }\n return object2;\n }\n if (\"items\" in schema) {\n return schema.items.map(getFallbacks);\n }\n return getFallback(schema);\n}\n\n// src/methods/getFallbacks/getFallbacksAsync.ts\n// @__NO_SIDE_EFFECTS__\nasync function getFallbacksAsync(schema) {\n if (\"entries\" in schema) {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(schema.entries).map(async ([key, value2]) => [\n key,\n await /* @__PURE__ */ getFallbacksAsync(value2)\n ])\n )\n );\n }\n if (\"items\" in schema) {\n return Promise.all(schema.items.map(getFallbacksAsync));\n }\n return getFallback(schema);\n}\n\n// src/methods/getMetadata/getMetadata.ts\n// @__NO_SIDE_EFFECTS__\nfunction getMetadata(schema) {\n const result = {};\n function depthFirstMerge(schema2) {\n if (\"pipe\" in schema2) {\n for (const item of schema2.pipe) {\n if (item.kind === \"schema\" && \"pipe\" in item) {\n depthFirstMerge(item);\n } else if (item.kind === \"metadata\" && item.type === \"metadata\") {\n Object.assign(result, item.metadata);\n }\n }\n }\n }\n depthFirstMerge(schema);\n return result;\n}\n\n// src/methods/getTitle/getTitle.ts\n// @__NO_SIDE_EFFECTS__\nfunction getTitle(schema) {\n return _getLastMetadata(schema, \"title\");\n}\n\n// src/methods/is/is.ts\n// @__NO_SIDE_EFFECTS__\nfunction is(schema, input) {\n return !schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n}\n\n// src/schemas/any/any.ts\n// @__NO_SIDE_EFFECTS__\nfunction any() {\n return {\n kind: \"schema\",\n type: \"any\",\n reference: any,\n expects: \"any\",\n async: false,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset) {\n dataset.typed = true;\n return dataset;\n }\n };\n}\n\n// src/schemas/array/array.ts\n// @__NO_SIDE_EFFECTS__\nfunction array(item, message2) {\n return {\n kind: \"schema\",\n type: \"array\",\n reference: array,\n expects: \"Array\",\n async: false,\n item,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < input.length; key++) {\n const value2 = input[key];\n const itemDataset = this.item[\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/array/arrayAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction arrayAsync(item, message2) {\n return {\n kind: \"schema\",\n type: \"array\",\n reference: arrayAsync,\n expects: \"Array\",\n async: true,\n item,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n input.map((value2) => this.item[\"~run\"]({ value: value2 }, config2))\n );\n for (let key = 0; key < itemDatasets.length; key++) {\n const itemDataset = itemDatasets[key];\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: input[key]\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/bigint/bigint.ts\n// @__NO_SIDE_EFFECTS__\nfunction bigint(message2) {\n return {\n kind: \"schema\",\n type: \"bigint\",\n reference: bigint,\n expects: \"bigint\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"bigint\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/blob/blob.ts\n// @__NO_SIDE_EFFECTS__\nfunction blob(message2) {\n return {\n kind: \"schema\",\n type: \"blob\",\n reference: blob,\n expects: \"Blob\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof Blob) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/boolean/boolean.ts\n// @__NO_SIDE_EFFECTS__\nfunction boolean(message2) {\n return {\n kind: \"schema\",\n type: \"boolean\",\n reference: boolean,\n expects: \"boolean\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"boolean\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/custom/custom.ts\n// @__NO_SIDE_EFFECTS__\nfunction custom(check2, message2) {\n return {\n kind: \"schema\",\n type: \"custom\",\n reference: custom,\n expects: \"unknown\",\n async: false,\n check: check2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.check(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/custom/customAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction customAsync(check2, message2) {\n return {\n kind: \"schema\",\n type: \"custom\",\n reference: customAsync,\n expects: \"unknown\",\n async: true,\n check: check2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (await this.check(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/date/date.ts\n// @__NO_SIDE_EFFECTS__\nfunction date(message2) {\n return {\n kind: \"schema\",\n type: \"date\",\n reference: date,\n expects: \"Date\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof Date) {\n if (!isNaN(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2, {\n received: '\"Invalid Date\"'\n });\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/enum/enum.ts\n// @__NO_SIDE_EFFECTS__\nfunction enum_(enum__, message2) {\n const options = [];\n for (const key in enum__) {\n if (`${+key}` !== key || typeof enum__[key] !== \"string\" || !Object.is(enum__[enum__[key]], +key)) {\n options.push(enum__[key]);\n }\n }\n return {\n kind: \"schema\",\n type: \"enum\",\n reference: enum_,\n expects: _joinExpects(options.map(_stringify), \"|\"),\n async: false,\n enum: enum__,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.options.includes(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/exactOptional/exactOptional.ts\n// @__NO_SIDE_EFFECTS__\nfunction exactOptional(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"exact_optional\",\n reference: exactOptional,\n expects: wrapped.expects,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/exactOptional/exactOptionalAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction exactOptionalAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"exact_optional\",\n reference: exactOptionalAsync,\n expects: wrapped.expects,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/file/file.ts\n// @__NO_SIDE_EFFECTS__\nfunction file(message2) {\n return {\n kind: \"schema\",\n type: \"file\",\n reference: file,\n expects: \"File\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof File) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/function/function.ts\n// @__NO_SIDE_EFFECTS__\nfunction function_(message2) {\n return {\n kind: \"schema\",\n type: \"function\",\n reference: function_,\n expects: \"Function\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"function\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/instance/instance.ts\n// @__NO_SIDE_EFFECTS__\nfunction instance(class_, message2) {\n return {\n kind: \"schema\",\n type: \"instance\",\n reference: instance,\n expects: class_.name,\n async: false,\n class: class_,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof this.class) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/intersect/utils/_merge/_merge.ts\n// @__NO_SIDE_EFFECTS__\nfunction _merge(value1, value2) {\n if (typeof value1 === typeof value2) {\n if (value1 === value2 || value1 instanceof Date && value2 instanceof Date && +value1 === +value2) {\n return { value: value1 };\n }\n if (value1 && value2 && value1.constructor === Object && value2.constructor === Object) {\n for (const key in value2) {\n if (key in value1) {\n const dataset = /* @__PURE__ */ _merge(value1[key], value2[key]);\n if (dataset.issue) {\n return dataset;\n }\n value1[key] = dataset.value;\n } else {\n value1[key] = value2[key];\n }\n }\n return { value: value1 };\n }\n if (Array.isArray(value1) && Array.isArray(value2)) {\n if (value1.length === value2.length) {\n for (let index = 0; index < value1.length; index++) {\n const dataset = /* @__PURE__ */ _merge(value1[index], value2[index]);\n if (dataset.issue) {\n return dataset;\n }\n value1[index] = dataset.value;\n }\n return { value: value1 };\n }\n }\n }\n return { issue: true };\n}\n\n// src/schemas/intersect/intersect.ts\n// @__NO_SIDE_EFFECTS__\nfunction intersect(options, message2) {\n return {\n kind: \"schema\",\n type: \"intersect\",\n reference: intersect,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"&\"\n ),\n async: false,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.options.length) {\n const input = dataset.value;\n let outputs;\n dataset.typed = true;\n for (const schema of this.options) {\n const optionDataset = schema[\"~run\"]({ value: input }, config2);\n if (optionDataset.issues) {\n if (dataset.issues) {\n dataset.issues.push(...optionDataset.issues);\n } else {\n dataset.issues = optionDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!optionDataset.typed) {\n dataset.typed = false;\n }\n if (dataset.typed) {\n if (outputs) {\n outputs.push(optionDataset.value);\n } else {\n outputs = [optionDataset.value];\n }\n }\n }\n if (dataset.typed) {\n dataset.value = outputs[0];\n for (let index = 1; index < outputs.length; index++) {\n const mergeDataset = _merge(dataset.value, outputs[index]);\n if (mergeDataset.issue) {\n _addIssue(this, \"type\", dataset, config2, {\n received: \"unknown\"\n });\n break;\n }\n dataset.value = mergeDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/intersect/intersectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction intersectAsync(options, message2) {\n return {\n kind: \"schema\",\n type: \"intersect\",\n reference: intersectAsync,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"&\"\n ),\n async: true,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (this.options.length) {\n const input = dataset.value;\n let outputs;\n dataset.typed = true;\n const optionDatasets = await Promise.all(\n this.options.map((schema) => schema[\"~run\"]({ value: input }, config2))\n );\n for (const optionDataset of optionDatasets) {\n if (optionDataset.issues) {\n if (dataset.issues) {\n dataset.issues.push(...optionDataset.issues);\n } else {\n dataset.issues = optionDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!optionDataset.typed) {\n dataset.typed = false;\n }\n if (dataset.typed) {\n if (outputs) {\n outputs.push(optionDataset.value);\n } else {\n outputs = [optionDataset.value];\n }\n }\n }\n if (dataset.typed) {\n dataset.value = outputs[0];\n for (let index = 1; index < outputs.length; index++) {\n const mergeDataset = _merge(dataset.value, outputs[index]);\n if (mergeDataset.issue) {\n _addIssue(this, \"type\", dataset, config2, {\n received: \"unknown\"\n });\n break;\n }\n dataset.value = mergeDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/lazy/lazy.ts\n// @__NO_SIDE_EFFECTS__\nfunction lazy(getter) {\n return {\n kind: \"schema\",\n type: \"lazy\",\n reference: lazy,\n expects: \"unknown\",\n async: false,\n getter,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n return this.getter(dataset.value)[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/lazy/lazyAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction lazyAsync(getter) {\n return {\n kind: \"schema\",\n type: \"lazy\",\n reference: lazyAsync,\n expects: \"unknown\",\n async: true,\n getter,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n return (await this.getter(dataset.value))[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/literal/literal.ts\n// @__NO_SIDE_EFFECTS__\nfunction literal(literal_, message2) {\n return {\n kind: \"schema\",\n type: \"literal\",\n reference: literal,\n expects: _stringify(literal_),\n async: false,\n literal: literal_,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === this.literal) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseObject/looseObject.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseObject(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"loose_object\",\n reference: looseObject,\n expects: \"Object\",\n async: false,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n dataset.value[key] = input[key];\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseObject/looseObjectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseObjectAsync(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"loose_object\",\n reference: looseObjectAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n );\n for (const [key, value2, valueSchema, valueDataset] of valueDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n dataset.value[key] = input[key];\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseTuple/looseTuple.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseTuple(items, message2) {\n return {\n kind: \"schema\",\n type: \"loose_tuple\",\n reference: looseTuple,\n expects: \"Array\",\n async: false,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n dataset.value.push(input[key]);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseTuple/looseTupleAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseTupleAsync(items, message2) {\n return {\n kind: \"schema\",\n type: \"loose_tuple\",\n reference: looseTupleAsync,\n expects: \"Array\",\n async: true,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [key, value2, await item[\"~run\"]({ value: value2 }, config2)];\n })\n );\n for (const [key, value2, itemDataset] of itemDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n dataset.value.push(input[key]);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/map/map.ts\n// @__NO_SIDE_EFFECTS__\nfunction map(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"map\",\n reference: map,\n expects: \"Map\",\n async: false,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Map) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Map();\n for (const [inputKey, inputValue] of input) {\n const keyDataset = this.key[\"~run\"]({ value: inputKey }, config2);\n if (keyDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"key\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of keyDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n const valueDataset = this.value[\"~run\"](\n { value: inputValue },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"value\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.set(keyDataset.value, valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/map/mapAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction mapAsync(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"map\",\n reference: mapAsync,\n expects: \"Map\",\n async: true,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Map) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Map();\n const datasets = await Promise.all(\n [...input].map(\n ([inputKey, inputValue]) => Promise.all([\n inputKey,\n inputValue,\n this.key[\"~run\"]({ value: inputKey }, config2),\n this.value[\"~run\"]({ value: inputValue }, config2)\n ])\n )\n );\n for (const [\n inputKey,\n inputValue,\n keyDataset,\n valueDataset\n ] of datasets) {\n if (keyDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"key\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of keyDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (valueDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"value\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.set(keyDataset.value, valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nan/nan.ts\n// @__NO_SIDE_EFFECTS__\nfunction nan(message2) {\n return {\n kind: \"schema\",\n type: \"nan\",\n reference: nan,\n expects: \"NaN\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (Number.isNaN(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/never/never.ts\n// @__NO_SIDE_EFFECTS__\nfunction never(message2) {\n return {\n kind: \"schema\",\n type: \"never\",\n reference: never,\n expects: \"never\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n _addIssue(this, \"type\", dataset, config2);\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullable/nonNullable.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullable(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullable\",\n reference: nonNullable,\n expects: \"!null\",\n async: false,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value !== null) {\n dataset = this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullable/nonNullableAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullableAsync(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullable\",\n reference: nonNullableAsync,\n expects: \"!null\",\n async: true,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value !== null) {\n dataset = await this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullish/nonNullish.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullish(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullish\",\n reference: nonNullish,\n expects: \"(!null & !undefined)\",\n async: false,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (!(dataset.value === null || dataset.value === void 0)) {\n dataset = this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullish/nonNullishAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullishAsync(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullish\",\n reference: nonNullishAsync,\n expects: \"(!null & !undefined)\",\n async: true,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (!(dataset.value === null || dataset.value === void 0)) {\n dataset = await this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonOptional/nonOptional.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonOptional(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_optional\",\n reference: nonOptional,\n expects: \"!undefined\",\n async: false,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value !== void 0) {\n dataset = this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonOptional/nonOptionalAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonOptionalAsync(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_optional\",\n reference: nonOptionalAsync,\n expects: \"!undefined\",\n async: true,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value !== void 0) {\n dataset = await this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/null/null.ts\n// @__NO_SIDE_EFFECTS__\nfunction null_(message2) {\n return {\n kind: \"schema\",\n type: \"null\",\n reference: null_,\n expects: \"null\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === null) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nullable/nullable.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullable(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullable\",\n reference: nullable,\n expects: `(${wrapped.expects} | null)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === null) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === null) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/nullable/nullableAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullableAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullable\",\n reference: nullableAsync,\n expects: `(${wrapped.expects} | null)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === null) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === null) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/nullish/nullish.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullish(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullish\",\n reference: nullish,\n expects: `(${wrapped.expects} | null | undefined)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === null || dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/nullish/nullishAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullishAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullish\",\n reference: nullishAsync,\n expects: `(${wrapped.expects} | null | undefined)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === null || dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/number/number.ts\n// @__NO_SIDE_EFFECTS__\nfunction number(message2) {\n return {\n kind: \"schema\",\n type: \"number\",\n reference: number,\n expects: \"number\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"number\" && !isNaN(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/object/object.ts\n// @__NO_SIDE_EFFECTS__\nfunction object(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"object\",\n reference: object,\n expects: \"Object\",\n async: false,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/object/objectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction objectAsync(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"object\",\n reference: objectAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n );\n for (const [key, value2, valueSchema, valueDataset] of valueDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/objectWithRest/objectWithRest.ts\n// @__NO_SIDE_EFFECTS__\nfunction objectWithRest(entries2, rest, message2) {\n return {\n kind: \"schema\",\n type: \"object_with_rest\",\n reference: objectWithRest,\n expects: \"Object\",\n async: false,\n entries: entries2,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n const valueDataset = this.rest[\"~run\"](\n // @ts-expect-error\n { value: input[key] },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/objectWithRest/objectWithRestAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction objectWithRestAsync(entries2, rest, message2) {\n return {\n kind: \"schema\",\n type: \"object_with_rest\",\n reference: objectWithRestAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const [normalDatasets, restDatasets] = await Promise.all([\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value asynchronously\n Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n ),\n // Parse other entries with rest schema asynchronously\n // Hint: We exclude specific keys for security reasons\n Promise.all(\n Object.entries(input).filter(\n ([key]) => _isValidObjectKey(input, key) && !(key in this.entries)\n ).map(\n async ([key, value2]) => [\n key,\n value2,\n await this.rest[\"~run\"]({ value: value2 }, config2)\n ]\n )\n )\n ]);\n for (const [key, value2, valueSchema, valueDataset] of normalDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const [key, value2, valueDataset] of restDatasets) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/optional/optional.ts\n// @__NO_SIDE_EFFECTS__\nfunction optional(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"optional\",\n reference: optional,\n expects: `(${wrapped.expects} | undefined)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/optional/optionalAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction optionalAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"optional\",\n reference: optionalAsync,\n expects: `(${wrapped.expects} | undefined)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/picklist/picklist.ts\n// @__NO_SIDE_EFFECTS__\nfunction picklist(options, message2) {\n return {\n kind: \"schema\",\n type: \"picklist\",\n reference: picklist,\n expects: _joinExpects(options.map(_stringify), \"|\"),\n async: false,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.options.includes(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/promise/promise.ts\n// @__NO_SIDE_EFFECTS__\nfunction promise(message2) {\n return {\n kind: \"schema\",\n type: \"promise\",\n reference: promise,\n expects: \"Promise\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof Promise) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/record/record.ts\n// @__NO_SIDE_EFFECTS__\nfunction record(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"record\",\n reference: record,\n expects: \"Object\",\n async: false,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const entryKey in input) {\n if (_isValidObjectKey(input, entryKey)) {\n const entryValue = input[entryKey];\n const keyDataset = this.key[\"~run\"]({ value: entryKey }, config2);\n if (keyDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"key\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of keyDataset.issues) {\n issue.path = [pathItem];\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n const valueDataset = this.value[\"~run\"](\n { value: entryValue },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n if (keyDataset.typed) {\n dataset.value[keyDataset.value] = valueDataset.value;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/record/recordAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction recordAsync(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"record\",\n reference: recordAsync,\n expects: \"Object\",\n async: true,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const datasets = await Promise.all(\n Object.entries(input).filter(([key2]) => _isValidObjectKey(input, key2)).map(\n ([entryKey, entryValue]) => Promise.all([\n entryKey,\n entryValue,\n this.key[\"~run\"]({ value: entryKey }, config2),\n this.value[\"~run\"]({ value: entryValue }, config2)\n ])\n )\n );\n for (const [\n entryKey,\n entryValue,\n keyDataset,\n valueDataset\n ] of datasets) {\n if (keyDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"key\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of keyDataset.issues) {\n issue.path = [pathItem];\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n if (keyDataset.typed) {\n dataset.value[keyDataset.value] = valueDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/set/set.ts\n// @__NO_SIDE_EFFECTS__\nfunction set(value2, message2) {\n return {\n kind: \"schema\",\n type: \"set\",\n reference: set,\n expects: \"Set\",\n async: false,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Set) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Set();\n for (const inputValue of input) {\n const valueDataset = this.value[\"~run\"](\n { value: inputValue },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"set\",\n origin: \"value\",\n input,\n key: null,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.add(valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/set/setAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction setAsync(value2, message2) {\n return {\n kind: \"schema\",\n type: \"set\",\n reference: setAsync,\n expects: \"Set\",\n async: true,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Set) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Set();\n const valueDatasets = await Promise.all(\n [...input].map(\n async (inputValue) => [\n inputValue,\n await this.value[\"~run\"]({ value: inputValue }, config2)\n ]\n )\n );\n for (const [inputValue, valueDataset] of valueDatasets) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"set\",\n origin: \"value\",\n input,\n key: null,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.add(valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictObject/strictObject.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictObject(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"strict_object\",\n reference: strictObject,\n expects: \"Object\",\n async: false,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (!(key in this.entries)) {\n _addIssue(this, \"key\", dataset, config2, {\n input: key,\n expected: \"never\",\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictObject/strictObjectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictObjectAsync(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"strict_object\",\n reference: strictObjectAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n );\n for (const [key, value2, valueSchema, valueDataset] of valueDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (!(key in this.entries)) {\n _addIssue(this, \"key\", dataset, config2, {\n input: key,\n expected: \"never\",\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictTuple/strictTuple.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictTuple(items, message2) {\n return {\n kind: \"schema\",\n type: \"strict_tuple\",\n reference: strictTuple,\n expects: \"Array\",\n async: false,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!(dataset.issues && config2.abortEarly) && this.items.length < input.length) {\n _addIssue(this, \"type\", dataset, config2, {\n input: input[this.items.length],\n expected: \"never\",\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input,\n key: this.items.length,\n value: input[this.items.length]\n }\n ]\n });\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictTuple/strictTupleAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictTupleAsync(items, message2) {\n return {\n kind: \"schema\",\n type: \"strict_tuple\",\n reference: strictTupleAsync,\n expects: \"Array\",\n async: true,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [key, value2, await item[\"~run\"]({ value: value2 }, config2)];\n })\n );\n for (const [key, value2, itemDataset] of itemDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!(dataset.issues && config2.abortEarly) && this.items.length < input.length) {\n _addIssue(this, \"type\", dataset, config2, {\n input: input[this.items.length],\n expected: \"never\",\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input,\n key: this.items.length,\n value: input[this.items.length]\n }\n ]\n });\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/string/string.ts\n// @__NO_SIDE_EFFECTS__\nfunction string(message2) {\n return {\n kind: \"schema\",\n type: \"string\",\n reference: string,\n expects: \"string\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"string\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/symbol/symbol.ts\n// @__NO_SIDE_EFFECTS__\nfunction symbol(message2) {\n return {\n kind: \"schema\",\n type: \"symbol\",\n reference: symbol,\n expects: \"symbol\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"symbol\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tuple/tuple.ts\n// @__NO_SIDE_EFFECTS__\nfunction tuple(items, message2) {\n return {\n kind: \"schema\",\n type: \"tuple\",\n reference: tuple,\n expects: \"Array\",\n async: false,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tuple/tupleAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction tupleAsync(items, message2) {\n return {\n kind: \"schema\",\n type: \"tuple\",\n reference: tupleAsync,\n expects: \"Array\",\n async: true,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [key, value2, await item[\"~run\"]({ value: value2 }, config2)];\n })\n );\n for (const [key, value2, itemDataset] of itemDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tupleWithRest/tupleWithRest.ts\n// @__NO_SIDE_EFFECTS__\nfunction tupleWithRest(items, rest, message2) {\n return {\n kind: \"schema\",\n type: \"tuple_with_rest\",\n reference: tupleWithRest,\n expects: \"Array\",\n async: false,\n items,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n const value2 = input[key];\n const itemDataset = this.rest[\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tupleWithRest/tupleWithRestAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction tupleWithRestAsync(items, rest, message2) {\n return {\n kind: \"schema\",\n type: \"tuple_with_rest\",\n reference: tupleWithRestAsync,\n expects: \"Array\",\n async: true,\n items,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const [normalDatasets, restDatasets] = await Promise.all([\n // Parse schema of each normal item\n Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [\n key,\n value2,\n await item[\"~run\"]({ value: value2 }, config2)\n ];\n })\n ),\n // Parse other items with rest schema\n Promise.all(\n input.slice(this.items.length).map(async (value2, key) => {\n return [\n key + this.items.length,\n value2,\n await this.rest[\"~run\"]({ value: value2 }, config2)\n ];\n })\n )\n ]);\n for (const [key, value2, itemDataset] of normalDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const [key, value2, itemDataset] of restDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/undefined/undefined.ts\n// @__NO_SIDE_EFFECTS__\nfunction undefined_(message2) {\n return {\n kind: \"schema\",\n type: \"undefined\",\n reference: undefined_,\n expects: \"undefined\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/undefinedable/undefinedable.ts\n// @__NO_SIDE_EFFECTS__\nfunction undefinedable(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"undefinedable\",\n reference: undefinedable,\n expects: `(${wrapped.expects} | undefined)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/undefinedable/undefinedableAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction undefinedableAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"undefinedable\",\n reference: undefinedableAsync,\n expects: `(${wrapped.expects} | undefined)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/union/utils/_subIssues/_subIssues.ts\n// @__NO_SIDE_EFFECTS__\nfunction _subIssues(datasets) {\n let issues;\n if (datasets) {\n for (const dataset of datasets) {\n if (issues) {\n issues.push(...dataset.issues);\n } else {\n issues = dataset.issues;\n }\n }\n }\n return issues;\n}\n\n// src/schemas/union/union.ts\n// @__NO_SIDE_EFFECTS__\nfunction union(options, message2) {\n return {\n kind: \"schema\",\n type: \"union\",\n reference: union,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"|\"\n ),\n async: false,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n let validDataset;\n let typedDatasets;\n let untypedDatasets;\n for (const schema of this.options) {\n const optionDataset = schema[\"~run\"]({ value: dataset.value }, config2);\n if (optionDataset.typed) {\n if (optionDataset.issues) {\n if (typedDatasets) {\n typedDatasets.push(optionDataset);\n } else {\n typedDatasets = [optionDataset];\n }\n } else {\n validDataset = optionDataset;\n break;\n }\n } else {\n if (untypedDatasets) {\n untypedDatasets.push(optionDataset);\n } else {\n untypedDatasets = [optionDataset];\n }\n }\n }\n if (validDataset) {\n return validDataset;\n }\n if (typedDatasets) {\n if (typedDatasets.length === 1) {\n return typedDatasets[0];\n }\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(typedDatasets)\n });\n dataset.typed = true;\n } else if (untypedDatasets?.length === 1) {\n return untypedDatasets[0];\n } else {\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(untypedDatasets)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/union/unionAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction unionAsync(options, message2) {\n return {\n kind: \"schema\",\n type: \"union\",\n reference: unionAsync,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"|\"\n ),\n async: true,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n let validDataset;\n let typedDatasets;\n let untypedDatasets;\n for (const schema of this.options) {\n const optionDataset = await schema[\"~run\"](\n { value: dataset.value },\n config2\n );\n if (optionDataset.typed) {\n if (optionDataset.issues) {\n if (typedDatasets) {\n typedDatasets.push(optionDataset);\n } else {\n typedDatasets = [optionDataset];\n }\n } else {\n validDataset = optionDataset;\n break;\n }\n } else {\n if (untypedDatasets) {\n untypedDatasets.push(optionDataset);\n } else {\n untypedDatasets = [optionDataset];\n }\n }\n }\n if (validDataset) {\n return validDataset;\n }\n if (typedDatasets) {\n if (typedDatasets.length === 1) {\n return typedDatasets[0];\n }\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(typedDatasets)\n });\n dataset.typed = true;\n } else if (untypedDatasets?.length === 1) {\n return untypedDatasets[0];\n } else {\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(untypedDatasets)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/unknown/unknown.ts\n// @__NO_SIDE_EFFECTS__\nfunction unknown() {\n return {\n kind: \"schema\",\n type: \"unknown\",\n reference: unknown,\n expects: \"unknown\",\n async: false,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset) {\n dataset.typed = true;\n return dataset;\n }\n };\n}\n\n// src/schemas/variant/variant.ts\n// @__NO_SIDE_EFFECTS__\nfunction variant(key, options, message2) {\n return {\n kind: \"schema\",\n type: \"variant\",\n reference: variant,\n expects: \"Object\",\n async: false,\n key,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n let outputDataset;\n let maxDiscriminatorPriority = 0;\n let invalidDiscriminatorKey = this.key;\n let expectedDiscriminators = [];\n const parseOptions = (variant2, allKeys) => {\n for (const schema of variant2.options) {\n if (schema.type === \"variant\") {\n parseOptions(schema, new Set(allKeys).add(schema.key));\n } else {\n let keysAreValid = true;\n let currentPriority = 0;\n for (const currentKey of allKeys) {\n const discriminatorSchema = schema.entries[currentKey];\n if (currentKey in input ? discriminatorSchema[\"~run\"](\n // @ts-expect-error\n { typed: false, value: input[currentKey] },\n { abortEarly: true }\n ).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n keysAreValid = false;\n if (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n maxDiscriminatorPriority = currentPriority;\n invalidDiscriminatorKey = currentKey;\n expectedDiscriminators = [];\n }\n if (invalidDiscriminatorKey === currentKey) {\n expectedDiscriminators.push(\n schema.entries[currentKey].expects\n );\n }\n break;\n }\n currentPriority++;\n }\n if (keysAreValid) {\n const optionDataset = schema[\"~run\"]({ value: input }, config2);\n if (!outputDataset || !outputDataset.typed && optionDataset.typed) {\n outputDataset = optionDataset;\n }\n }\n }\n if (outputDataset && !outputDataset.issues) {\n break;\n }\n }\n };\n parseOptions(this, /* @__PURE__ */ new Set([this.key]));\n if (outputDataset) {\n return outputDataset;\n }\n _addIssue(this, \"type\", dataset, config2, {\n // @ts-expect-error\n input: input[invalidDiscriminatorKey],\n expected: _joinExpects(expectedDiscriminators, \"|\"),\n path: [\n {\n type: \"object\",\n origin: \"value\",\n input,\n key: invalidDiscriminatorKey,\n // @ts-expect-error\n value: input[invalidDiscriminatorKey]\n }\n ]\n });\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/variant/variantAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction variantAsync(key, options, message2) {\n return {\n kind: \"schema\",\n type: \"variant\",\n reference: variantAsync,\n expects: \"Object\",\n async: true,\n key,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n let outputDataset;\n let maxDiscriminatorPriority = 0;\n let invalidDiscriminatorKey = this.key;\n let expectedDiscriminators = [];\n const parseOptions = async (variant2, allKeys) => {\n for (const schema of variant2.options) {\n if (schema.type === \"variant\") {\n await parseOptions(schema, new Set(allKeys).add(schema.key));\n } else {\n let keysAreValid = true;\n let currentPriority = 0;\n for (const currentKey of allKeys) {\n const discriminatorSchema = schema.entries[currentKey];\n if (currentKey in input ? (await discriminatorSchema[\"~run\"](\n // @ts-expect-error\n { typed: false, value: input[currentKey] },\n { abortEarly: true }\n )).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n keysAreValid = false;\n if (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n maxDiscriminatorPriority = currentPriority;\n invalidDiscriminatorKey = currentKey;\n expectedDiscriminators = [];\n }\n if (invalidDiscriminatorKey === currentKey) {\n expectedDiscriminators.push(\n schema.entries[currentKey].expects\n );\n }\n break;\n }\n currentPriority++;\n }\n if (keysAreValid) {\n const optionDataset = await schema[\"~run\"](\n { value: input },\n config2\n );\n if (!outputDataset || !outputDataset.typed && optionDataset.typed) {\n outputDataset = optionDataset;\n }\n }\n }\n if (outputDataset && !outputDataset.issues) {\n break;\n }\n }\n };\n await parseOptions(this, /* @__PURE__ */ new Set([this.key]));\n if (outputDataset) {\n return outputDataset;\n }\n _addIssue(this, \"type\", dataset, config2, {\n // @ts-expect-error\n input: input[invalidDiscriminatorKey],\n expected: _joinExpects(expectedDiscriminators, \"|\"),\n path: [\n {\n type: \"object\",\n origin: \"value\",\n input,\n key: invalidDiscriminatorKey,\n // @ts-expect-error\n value: input[invalidDiscriminatorKey]\n }\n ]\n });\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/void/void.ts\n// @__NO_SIDE_EFFECTS__\nfunction void_(message2) {\n return {\n kind: \"schema\",\n type: \"void\",\n reference: void_,\n expects: \"void\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/methods/keyof/keyof.ts\n// @__NO_SIDE_EFFECTS__\nfunction keyof(schema, message2) {\n return picklist(Object.keys(schema.entries), message2);\n}\n\n// src/methods/message/message.ts\n// @__NO_SIDE_EFFECTS__\nfunction message(schema, message_) {\n return {\n ...schema,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n return schema[\"~run\"](dataset, { ...config2, message: message_ });\n }\n };\n}\n\n// src/methods/omit/omit.ts\n// @__NO_SIDE_EFFECTS__\nfunction omit(schema, keys) {\n const entries2 = {\n ...schema.entries\n };\n for (const key of keys) {\n delete entries2[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/parse/parse.ts\nfunction parse(schema, input, config2) {\n const dataset = schema[\"~run\"]({ value: input }, getGlobalConfig(config2));\n if (dataset.issues) {\n throw new ValiError(dataset.issues);\n }\n return dataset.value;\n}\n\n// src/methods/parse/parseAsync.ts\nasync function parseAsync(schema, input, config2) {\n const dataset = await schema[\"~run\"](\n { value: input },\n getGlobalConfig(config2)\n );\n if (dataset.issues) {\n throw new ValiError(dataset.issues);\n }\n return dataset.value;\n}\n\n// src/methods/parser/parser.ts\n// @__NO_SIDE_EFFECTS__\nfunction parser(schema, config2) {\n const func = (input) => parse(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/parser/parserAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction parserAsync(schema, config2) {\n const func = (input) => parseAsync(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/partial/partial.ts\n// @__NO_SIDE_EFFECTS__\nfunction partial(schema, keys) {\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? optional(schema.entries[key]) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/partial/partialAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction partialAsync(schema, keys) {\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? optionalAsync(schema.entries[key]) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/pick/pick.ts\n// @__NO_SIDE_EFFECTS__\nfunction pick(schema, keys) {\n const entries2 = {};\n for (const key of keys) {\n entries2[key] = schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/pipe/pipe.ts\n// @__NO_SIDE_EFFECTS__\nfunction pipe(...pipe2) {\n return {\n ...pipe2[0],\n pipe: pipe2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n for (const item of pipe2) {\n if (item.kind !== \"metadata\") {\n if (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n dataset.typed = false;\n break;\n }\n if (!dataset.issues || !config2.abortEarly && !config2.abortPipeEarly) {\n dataset = item[\"~run\"](dataset, config2);\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/pipe/pipeAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction pipeAsync(...pipe2) {\n return {\n ...pipe2[0],\n pipe: pipe2,\n async: true,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n for (const item of pipe2) {\n if (item.kind !== \"metadata\") {\n if (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n dataset.typed = false;\n break;\n }\n if (!dataset.issues || !config2.abortEarly && !config2.abortPipeEarly) {\n dataset = await item[\"~run\"](dataset, config2);\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/required/required.ts\n// @__NO_SIDE_EFFECTS__\nfunction required(schema, arg2, arg3) {\n const keys = Array.isArray(arg2) ? arg2 : void 0;\n const message2 = Array.isArray(arg2) ? arg3 : arg2;\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? nonOptional(schema.entries[key], message2) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/required/requiredAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction requiredAsync(schema, arg2, arg3) {\n const keys = Array.isArray(arg2) ? arg2 : void 0;\n const message2 = Array.isArray(arg2) ? arg3 : arg2;\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? nonOptionalAsync(schema.entries[key], message2) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/safeParse/safeParse.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeParse(schema, input, config2) {\n const dataset = schema[\"~run\"]({ value: input }, getGlobalConfig(config2));\n return {\n typed: dataset.typed,\n success: !dataset.issues,\n output: dataset.value,\n issues: dataset.issues\n };\n}\n\n// src/methods/safeParse/safeParseAsync.ts\n// @__NO_SIDE_EFFECTS__\nasync function safeParseAsync(schema, input, config2) {\n const dataset = await schema[\"~run\"](\n { value: input },\n getGlobalConfig(config2)\n );\n return {\n typed: dataset.typed,\n success: !dataset.issues,\n output: dataset.value,\n issues: dataset.issues\n };\n}\n\n// src/methods/safeParser/safeParser.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeParser(schema, config2) {\n const func = (input) => safeParse(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/safeParser/safeParserAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeParserAsync(schema, config2) {\n const func = (input) => safeParseAsync(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/summarize/summarize.ts\n// @__NO_SIDE_EFFECTS__\nfunction summarize(issues) {\n let summary = \"\";\n for (const issue of issues) {\n if (summary) {\n summary += \"\\n\";\n }\n summary += `\\xD7 ${issue.message}`;\n const dotPath = getDotPath(issue);\n if (dotPath) {\n summary += `\n \\u2192 at ${dotPath}`;\n }\n }\n return summary;\n}\n\n// src/methods/unwrap/unwrap.ts\n// @__NO_SIDE_EFFECTS__\nfunction unwrap(schema) {\n return schema.wrapped;\n}\nexport {\n BASE64_REGEX,\n BIC_REGEX,\n CUID2_REGEX,\n DECIMAL_REGEX,\n DIGITS_REGEX,\n EMAIL_REGEX,\n EMOJI_REGEX,\n HEXADECIMAL_REGEX,\n HEX_COLOR_REGEX,\n IMEI_REGEX,\n IPV4_REGEX,\n IPV6_REGEX,\n IP_REGEX,\n ISO_DATE_REGEX,\n ISO_DATE_TIME_REGEX,\n ISO_TIMESTAMP_REGEX,\n ISO_TIME_REGEX,\n ISO_TIME_SECOND_REGEX,\n ISO_WEEK_REGEX,\n MAC48_REGEX,\n MAC64_REGEX,\n MAC_REGEX,\n NANO_ID_REGEX,\n OCTAL_REGEX,\n RFC_EMAIL_REGEX,\n SLUG_REGEX,\n ULID_REGEX,\n UUID_REGEX,\n ValiError,\n _addIssue,\n _getByteCount,\n _getGraphemeCount,\n _getLastMetadata,\n _getStandardProps,\n _getWordCount,\n _isLuhnAlgo,\n _isValidObjectKey,\n _joinExpects,\n _stringify,\n any,\n args,\n argsAsync,\n array,\n arrayAsync,\n assert,\n awaitAsync,\n base64,\n bic,\n bigint,\n blob,\n boolean,\n brand,\n bytes,\n check,\n checkAsync,\n checkItems,\n checkItemsAsync,\n config,\n creditCard,\n cuid2,\n custom,\n customAsync,\n date,\n decimal,\n deleteGlobalConfig,\n deleteGlobalMessage,\n deleteSchemaMessage,\n deleteSpecificMessage,\n description,\n digits,\n email,\n emoji,\n empty,\n endsWith,\n entries,\n entriesFromList,\n entriesFromObjects,\n enum_ as enum,\n enum_,\n everyItem,\n exactOptional,\n exactOptionalAsync,\n excludes,\n fallback,\n fallbackAsync,\n file,\n filterItems,\n findItem,\n finite,\n flatten,\n flavor,\n forward,\n forwardAsync,\n function_ as function,\n function_,\n getDefault,\n getDefaults,\n getDefaultsAsync,\n getDescription,\n getDotPath,\n getFallback,\n getFallbacks,\n getFallbacksAsync,\n getGlobalConfig,\n getGlobalMessage,\n getMetadata,\n getSchemaMessage,\n getSpecificMessage,\n getTitle,\n graphemes,\n gtValue,\n hash,\n hexColor,\n hexadecimal,\n imei,\n includes,\n instance,\n integer,\n intersect,\n intersectAsync,\n ip,\n ipv4,\n ipv6,\n is,\n isOfKind,\n isOfType,\n isValiError,\n isoDate,\n isoDateTime,\n isoTime,\n isoTimeSecond,\n isoTimestamp,\n isoWeek,\n keyof,\n lazy,\n lazyAsync,\n length,\n literal,\n looseObject,\n looseObjectAsync,\n looseTuple,\n looseTupleAsync,\n ltValue,\n mac,\n mac48,\n mac64,\n map,\n mapAsync,\n mapItems,\n maxBytes,\n maxEntries,\n maxGraphemes,\n maxLength,\n maxSize,\n maxValue,\n maxWords,\n message,\n metadata,\n mimeType,\n minBytes,\n minEntries,\n minGraphemes,\n minLength,\n minSize,\n minValue,\n minWords,\n multipleOf,\n nan,\n nanoid,\n never,\n nonEmpty,\n nonNullable,\n nonNullableAsync,\n nonNullish,\n nonNullishAsync,\n nonOptional,\n nonOptionalAsync,\n normalize,\n notBytes,\n notEntries,\n notGraphemes,\n notLength,\n notSize,\n notValue,\n notValues,\n notWords,\n null_ as null,\n null_,\n nullable,\n nullableAsync,\n nullish,\n nullishAsync,\n number,\n object,\n objectAsync,\n objectWithRest,\n objectWithRestAsync,\n octal,\n omit,\n optional,\n optionalAsync,\n parse,\n parseAsync,\n parseJson,\n parser,\n parserAsync,\n partial,\n partialAsync,\n partialCheck,\n partialCheckAsync,\n pick,\n picklist,\n pipe,\n pipeAsync,\n promise,\n rawCheck,\n rawCheckAsync,\n rawTransform,\n rawTransformAsync,\n readonly,\n record,\n recordAsync,\n reduceItems,\n regex,\n required,\n requiredAsync,\n returns,\n returnsAsync,\n rfcEmail,\n safeInteger,\n safeParse,\n safeParseAsync,\n safeParser,\n safeParserAsync,\n set,\n setAsync,\n setGlobalConfig,\n setGlobalMessage,\n setSchemaMessage,\n setSpecificMessage,\n size,\n slug,\n someItem,\n sortItems,\n startsWith,\n strictObject,\n strictObjectAsync,\n strictTuple,\n strictTupleAsync,\n string,\n stringifyJson,\n summarize,\n symbol,\n title,\n toLowerCase,\n toMaxValue,\n toMinValue,\n toUpperCase,\n transform,\n transformAsync,\n trim,\n trimEnd,\n trimStart,\n tuple,\n tupleAsync,\n tupleWithRest,\n tupleWithRestAsync,\n ulid,\n undefined_ as undefined,\n undefined_,\n undefinedable,\n undefinedableAsync,\n union,\n unionAsync,\n unknown,\n unwrap,\n url,\n uuid,\n value,\n values,\n variant,\n variantAsync,\n void_ as void,\n void_,\n words\n};\n","import { getPublishedId, studioPath } from \"@sanity/client/csm\";\nimport { pipe, string, minLength, optional, object, is, record, unknown, safeParse, parse } from \"valibot\";\nconst lengthyStr$1 = pipe(string(), minLength(1)), optionalLengthyStr = optional(lengthyStr$1), sanityNodeSchema = object({\n baseUrl: lengthyStr$1,\n dataset: optionalLengthyStr,\n id: lengthyStr$1,\n path: lengthyStr$1,\n projectId: optionalLengthyStr,\n tool: optionalLengthyStr,\n type: optionalLengthyStr,\n workspace: optionalLengthyStr\n});\nfunction isValidSanityNode(node) {\n return is(sanityNodeSchema, node);\n}\nfunction isArray(value) {\n return value !== null && Array.isArray(value);\n}\nfunction pathToUrlString(path) {\n let str = \"\";\n for (const segment of path) {\n if (typeof segment == \"string\") {\n str && (str += \".\"), str += segment;\n continue;\n }\n if (typeof segment == \"number\") {\n str && (str += \":\"), str += `${segment}`;\n continue;\n }\n if (isArray(segment)) {\n str && (str += \":\"), str += `${segment.join(\",\")}}`;\n continue;\n }\n if (segment._key) {\n str && (str += \":\"), str += `${segment._key}`;\n continue;\n }\n }\n return str;\n}\nfunction encodeSanityNodeData(node) {\n const { id: _id, path, baseUrl, tool, workspace, type } = node;\n return isValidSanityNode(node) ? [\n [\"id\", getPublishedId(_id)],\n [\"type\", type],\n [\"path\", pathToUrlString(studioPath.fromString(path))],\n [\"base\", encodeURIComponent(baseUrl)],\n [\"workspace\", workspace],\n [\"tool\", tool]\n ].filter(([, value]) => !!value).map((part) => part.join(\"=\")).join(\";\") : void 0;\n}\nfunction createDataAttribute(props) {\n function normalizePath(path) {\n return path ? typeof path == \"string\" ? studioPath.fromString(path) : path : [];\n }\n function toString(props2) {\n if (!props2.id) throw new Error(\"`id` is required to create a data attribute\");\n if (!props2.type) throw new Error(\"`type` is required to create a data attribute\");\n if (!props2.path || !props2.path.length)\n throw new Error(\"`path` is required to create a data attribute\");\n const attrs = {\n baseUrl: props2.baseUrl || \"/\",\n workspace: props2.workspace,\n tool: props2.tool,\n type: props2.type,\n id: props2.id,\n path: typeof props2.path == \"string\" ? props2.path : studioPath.toString(props2.path)\n };\n return encodeSanityNodeData(attrs);\n }\n const DataAttribute = (path) => toString({\n ...props,\n path: [...normalizePath(props.path), ...normalizePath(path)]\n });\n return DataAttribute.toString = function() {\n return toString(props);\n }, DataAttribute.combine = function(attrs) {\n return createDataAttribute({\n ...props,\n ...attrs\n });\n }, DataAttribute.scope = function(path) {\n return createDataAttribute({\n ...props,\n path: [...normalizePath(props.path), ...normalizePath(path)]\n });\n }, DataAttribute;\n}\nconst RE_SEGMENT_WITH_INDEX = /^([\\w-]+):(0|[1-9][0-9]*)$/, RE_SEGMENT_WITH_TUPLE = /^([\\w-]+):([0-9]+),([0-9]+)$/, RE_SEGMENT_WITH_KEY = /^([\\w-]+):([\\w-]+)$/;\nfunction urlStringToPath(str) {\n const path = [];\n for (const segment of str.split(\".\")) {\n const withIndex = RE_SEGMENT_WITH_INDEX.exec(segment);\n if (withIndex) {\n path.push(withIndex[1], Number(withIndex[2]));\n continue;\n }\n const withTuple = RE_SEGMENT_WITH_TUPLE.exec(segment);\n if (withTuple) {\n path.push(withTuple[1], [Number(withTuple[2]), Number(withTuple[3])]);\n continue;\n }\n const withKey = RE_SEGMENT_WITH_KEY.exec(segment);\n if (withKey) {\n path.push(withKey[1], { _key: withKey[2] });\n continue;\n }\n path.push(segment);\n }\n return path;\n}\nconst lengthyStr = pipe(string(), minLength(1)), sanityLegacyNodeSchema = object({\n origin: lengthyStr,\n href: lengthyStr,\n data: optional(record(string(), unknown()))\n});\nfunction decodeSanityString(str) {\n const data = str.split(\";\").reduce((acc, segment) => {\n const [key, value] = segment.split(\"=\");\n if (!key || segment.includes(\"=\") && !value) return acc;\n switch (key) {\n case \"id\":\n acc.id = value;\n break;\n case \"type\":\n acc.type = value;\n break;\n case \"path\":\n acc.path = studioPath.toString(urlStringToPath(value));\n break;\n case \"base\":\n acc.baseUrl = decodeURIComponent(value);\n break;\n case \"tool\":\n acc.tool = value;\n break;\n case \"workspace\":\n acc.workspace = value;\n break;\n case \"projectId\":\n acc.projectId = value;\n break;\n case \"dataset\":\n acc.dataset = value;\n break;\n }\n return acc;\n }, {});\n if (isValidSanityNode(data))\n return data;\n}\nfunction decodeSanityObject(data) {\n const sanityNode = safeParse(sanityNodeSchema, data);\n if (sanityNode.success)\n return sanityNode.output;\n const sanityLegacyNode = safeParse(sanityLegacyNodeSchema, data);\n if (sanityLegacyNode.success)\n try {\n const url = new URL(\n sanityLegacyNode.output.href,\n typeof document > \"u\" ? \"https://example.com\" : location.origin\n );\n return url.searchParams.size > 0 ? parse(sanityNodeSchema, Object.fromEntries(url.searchParams.entries())) : sanityLegacyNode.output;\n } catch (err) {\n return console.error(\"Failed to parse sanity node\", err), sanityLegacyNode.output;\n }\n}\nfunction decodeSanityNodeData(data) {\n if (typeof data == \"object\" && data !== null)\n return decodeSanityObject(data);\n try {\n const obj = JSON.parse(data);\n return decodeSanityObject(obj);\n } catch {\n return decodeSanityString(data);\n }\n}\nexport {\n createDataAttribute,\n decodeSanityNodeData,\n encodeSanityNodeData,\n pathToUrlString,\n urlStringToPath\n};\n//# sourceMappingURL=index.js.map\n","import {studioPath} from '@sanity/client/csm'\nimport {urlStringToPath} from '@sanity/visual-editing-csm'\n\nimport {type PresentationStateParams} from '../types'\n\nexport function parseId(rawId: string | undefined): string | undefined {\n if (rawId === undefined) {\n return undefined\n }\n\n const segments = decodeURIComponent(rawId)?.split('.')\n\n if (segments[0] === 'drafts') {\n segments.shift()\n }\n\n return segments.join('.')\n}\n\nexport function parsePath(rawPath: string | undefined): string | undefined {\n if (rawPath === undefined) {\n return undefined\n }\n\n return studioPath.toString(urlStringToPath(decodeURIComponent(rawPath)))\n}\n\nexport function parseRouterState(state: PresentationStateParams): PresentationStateParams {\n return {\n id: parseId(state.id),\n path: parsePath(state.path),\n type: state.type,\n }\n}\n","/* eslint-disable @typescript-eslint/no-shadow */\nimport {type MutableRefObject, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {getPublishedId} from 'sanity'\nimport {type RouterContextValue, type RouterState, type SearchParam} from 'sanity/router'\n\nimport {\n type CombinedSearchParams,\n type FrameState,\n type PresentationNavigate,\n type PresentationParamsContextValue,\n type PresentationSearchParams,\n type PresentationStateParams,\n type StructureDocumentPaneParams,\n} from './types'\nimport {parseRouterState} from './util/parse'\n\nfunction pruneObject<T extends RouterState | PresentationParamsContextValue>(obj: T): T {\n return Object.fromEntries(\n Object.entries(obj).filter(\n ([, value]) => value !== undefined && value !== '' && value !== null,\n ),\n ) as T\n}\n\nexport function useParams({\n initialPreviewUrl,\n routerNavigate,\n routerState,\n routerSearchParams,\n frameStateRef,\n}: {\n initialPreviewUrl: URL\n routerNavigate: RouterContextValue['navigate']\n routerState: RouterState & PresentationStateParams\n routerSearchParams: {\n [k: string]: string\n }\n frameStateRef: MutableRefObject<FrameState>\n}): {\n navigate: PresentationNavigate\n navigationHistory: RouterState[]\n params: PresentationParamsContextValue\n searchParams: PresentationSearchParams\n structureParams: StructureDocumentPaneParams\n} {\n const params = useMemo<PresentationParamsContextValue>(() => {\n const {id, path, type} = parseRouterState(routerState)\n\n return {\n id,\n type,\n path,\n preview: routerSearchParams.preview || initialPreviewUrl.toString(),\n perspective: routerSearchParams.perspective,\n viewport: routerSearchParams.viewport,\n inspect: routerSearchParams.inspect,\n rev: routerSearchParams.rev,\n since: routerSearchParams.since,\n template: routerSearchParams.template,\n templateParams: routerSearchParams.templateParams,\n view: routerSearchParams.view,\n // assist\n pathKey: routerSearchParams.pathKey,\n instruction: routerSearchParams.instruction,\n // comments\n comment: routerSearchParams.comment,\n changesInspectorTab: routerSearchParams.changesInspectorTab as 'history' | 'review',\n }\n }, [routerState, routerSearchParams, initialPreviewUrl])\n\n const structureParams = useMemo<StructureDocumentPaneParams>(() => {\n const pruned = pruneObject({\n inspect: params.inspect,\n path: params.path,\n rev: params.rev,\n since: params.since,\n template: params.template,\n templateParams: params.templateParams,\n view: params.view,\n // assist\n pathKey: params.pathKey,\n instruction: params.instruction,\n // comments\n comment: params.comment,\n changesInspectorTab: params.changesInspectorTab,\n })\n return pruned\n }, [\n params.changesInspectorTab,\n params.comment,\n params.inspect,\n params.instruction,\n params.path,\n params.pathKey,\n params.rev,\n params.since,\n params.template,\n params.templateParams,\n params.view,\n ])\n\n const searchParams = useMemo<PresentationSearchParams>(() => {\n const pruned = pruneObject({\n perspective: params.perspective,\n preview: params.preview,\n viewport: params.viewport,\n })\n return pruned\n }, [params.perspective, params.preview, params.viewport])\n\n const routerStateRef = useRef(routerState)\n\n useEffect(() => {\n routerStateRef.current = routerState\n }, [routerState])\n\n const [navigationHistory, setNavigationHistory] = useState<RouterState[]>([routerState])\n\n const navigate = useCallback<PresentationNavigate>(\n (nextState, nextSearchState = {}, forceReplace) => {\n // Force navigation to use published IDs only\n if (nextState.id) nextState.id = getPublishedId(nextState.id)\n\n // Extract type, id and path as 'routerState'\n const {_searchParams: routerSearchParams, ...routerState} = routerStateRef.current\n\n // Convert array of search params to an object\n const routerSearchState = (routerSearchParams || []).reduce((acc, [key, value]) => {\n acc[key as keyof CombinedSearchParams] = value as undefined | 'history' | 'review'\n return acc\n }, {} as CombinedSearchParams)\n\n // Merge routerState and incoming state\n const state: RouterState = pruneObject({\n ...routerState,\n ...nextState,\n })\n\n // Merge routerSearchState and incoming searchState\n const searchState = pruneObject({\n ...routerSearchState,\n ...nextSearchState,\n })\n\n // If the document has changed, clear the template and templateParams\n if (routerState.id !== state.id) {\n delete searchState.template\n delete searchState.templateParams\n }\n\n state._searchParams = Object.entries(searchState).reduce(\n (acc, [key, value]) => [...acc, [key, value] as SearchParam],\n [] as SearchParam[],\n )\n\n const replace = forceReplace ?? searchState.preview === frameStateRef.current.url\n\n setNavigationHistory((prev) => [...prev, state])\n routerNavigate(state, {replace})\n },\n [routerNavigate, frameStateRef],\n )\n\n return {\n navigate,\n navigationHistory,\n params,\n searchParams,\n structureParams,\n }\n}\n","import {type Controller} from '@sanity/comlink'\nimport {useCallback, useEffect, useState} from 'react'\n\nimport {POPUP_CHECK_INTERVAL} from './constants'\n\n/**\n * A hook for managing popup Window contexts\n *\n * This hook handles:\n * - Opening new popup Windows, and adding them as targets to the controller\n * - Tracking existing popup windows, and cleaning up closed popups\n *\n * @param controller - Comlink controller instance that manages communication\n * between Window contexts\n *\n * @returns An object containing:\n * - popups: A Set of currently open popup Window objects\n * - open: Function to open a new popup Window with the specified URL\n *\n */\nexport const usePopups = (\n controller?: Controller,\n): {\n popups: Set<Window>\n open: (url: string) => void\n} => {\n // State to keep track of open popup windows\n const [popups, setPopups] = useState<Set<Window>>(() => new Set())\n\n // Function to open a new popup window\n const open = useCallback((url: string) => {\n const source = window.open(url, '_blank')\n if (source) {\n setPopups((prev) => new Set(prev).add(source))\n }\n }, [])\n\n // Handles syncing the existing popups with the controller\n useEffect(() => {\n const unsubs: Array<() => void> = []\n if (popups.size && controller) {\n // loop popups and add targets\n for (const source of popups) {\n if (source && 'closed' in source && !source.closed) {\n unsubs.push(controller.addTarget(source))\n }\n }\n }\n return () => {\n unsubs.forEach((unsub) => unsub())\n }\n }, [controller, popups])\n\n // Checks for closed popups and removes them from the tracked Set\n useEffect(() => {\n if (popups.size) {\n const interval = setInterval(() => {\n const closed = new Set<Window>()\n for (const source of popups) {\n if (source && 'closed' in source && source.closed) {\n closed.add(source)\n }\n }\n if (closed.size) {\n setPopups((prev) => {\n const next = new Set(prev)\n for (const source of closed) {\n next.delete(source)\n }\n return next\n })\n }\n }, POPUP_CHECK_INTERVAL)\n\n return () => {\n clearInterval(interval)\n }\n }\n return undefined\n }, [popups])\n\n return {popups, open}\n}\n","import {usePerspective} from 'sanity'\n\nimport {type PresentationPerspective} from './types'\n\n/**\n * @internal\n */\nexport function usePresentationPerspective(): PresentationPerspective {\n const {perspectiveStack, selectedPerspectiveName = 'drafts', selectedReleaseId} = usePerspective()\n const perspective = (\n selectedReleaseId ? perspectiveStack : selectedPerspectiveName\n ) as PresentationPerspective\n return perspective\n}\n","import {type StatusEvent} from '@sanity/comlink'\nimport {useCallback, useMemo, useState} from 'react'\n\nimport {type ConnectionStatus} from './types'\n\n/**\n * A hook that manages and returns the connection status of multiple channels\n *\n * returns an array containing the\n * current status and a function to update the status based on incoming events\n *\n * The status can be one of the following:\n * - 'connected': If any channel is connected\n * - 'connecting': If the first connection is being established\n * - 'reconnecting': If a reconnection is in progress\n * - 'idle': If no connections have been made yet\n *\n * The function to update the status takes a `StatusEvent` object which includes\n * the channel and the status\n */\nexport function useStatus(): [ConnectionStatus, (event: StatusEvent) => void] {\n // State to keep track of the status of each channel\n const [statusMap, setStatusMap] = useState(\n new Map<string, {status: ConnectionStatus; hasConnected: boolean}>(),\n )\n\n // Memoized computation of the overall status based on the status of individual channels\n const memoStatus = useMemo(() => {\n const values = Array.from(statusMap.values())\n // If any channel is connected, return the `connected` status\n if (values.find(({status}) => status === 'connected')) {\n return 'connected'\n }\n // If the initial connection is being established, return `connecting` status\n const handshaking = values.filter(({status}) => status === 'connecting')\n if (handshaking.length) {\n return handshaking.some(({hasConnected}) => !hasConnected) ? 'connecting' : 'reconnecting'\n }\n // If nothing has happened yet, return `idle` status\n return 'idle'\n }, [statusMap])\n\n // Callback to update the status map based on the received event\n const setStatusFromEvent = useCallback((event: StatusEvent) => {\n setStatusMap((prev) => {\n const next = new Map(prev)\n if (event.status === 'disconnected') {\n // Remove the channel from the map if a disconnect event is received\n next.delete(event.connection)\n } else {\n // Update the status and connection flag for the channel\n const hasConnected =\n next.get(event.connection)?.hasConnected || event.status === 'connected'\n const status = event.status === 'handshaking' ? 'connecting' : event.status\n next.set(event.connection, {status, hasConnected})\n }\n return next\n })\n }, [])\n\n // Return the overall status and the function to update the status\n return [memoStatus, setStatusFromEvent]\n}\n","/* eslint-disable max-statements,@typescript-eslint/no-shadow */\nimport {studioPath} from '@sanity/client/csm'\nimport {\n type Controller,\n createConnectionMachine,\n createController,\n type Message,\n} from '@sanity/comlink'\nimport {\n createCompatibilityActors,\n type PreviewKitNodeMsg,\n type VisualEditingControllerMsg,\n type VisualEditingNodeMsg,\n} from '@sanity/presentation-comlink'\nimport {\n urlSearchParamVercelProtectionBypass,\n urlSearchParamVercelSetBypassCookie,\n} from '@sanity/preview-url-secret/constants'\nimport {BoundaryElementProvider, Flex} from '@sanity/ui'\nimport {useActorRef, useSelector} from '@xstate/react'\nimport {lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {\n type CommentIntentGetter,\n COMMENTS_INSPECTOR_NAME,\n type Path,\n type SanityDocument,\n type Tool,\n useDataset,\n useProjectId,\n useUnique,\n useWorkspace,\n} from 'sanity'\nimport {type RouterContextValue, useRouter} from 'sanity/router'\nimport {styled} from 'styled-components'\nimport {useEffectEvent} from 'use-effect-event'\n\nimport {DEFAULT_TOOL_NAME, EDIT_INTENT_MODE} from './constants'\nimport PostMessageFeatures from './features/PostMessageFeatures'\nimport {presentationMachine} from './machines/presentation-machine'\nimport {type PreviewUrlRef} from './machines/preview-url'\nimport {SharedStateProvider} from './overlays/SharedStateProvider'\nimport {Panel} from './panels/Panel'\nimport {Panels} from './panels/Panels'\nimport {PresentationContent} from './PresentationContent'\nimport {PresentationNavigateProvider} from './PresentationNavigateProvider'\nimport {usePresentationNavigator} from './PresentationNavigator'\nimport {PresentationParamsProvider} from './PresentationParamsProvider'\nimport {PresentationProvider} from './PresentationProvider'\nimport {Preview} from './preview/Preview'\nimport {\n type FrameState,\n type PresentationNavigate,\n type PresentationPluginOptions,\n type PresentationStateParams,\n type PresentationViewport,\n type StructureDocumentPaneParams,\n type VisualEditingConnection,\n} from './types'\nimport {useAllowPatterns} from './useAllowPatterns'\nimport {useDocumentsOnPage} from './useDocumentsOnPage'\nimport {useMainDocument} from './useMainDocument'\nimport {useParams} from './useParams'\nimport {usePopups} from './usePopups'\nimport {usePresentationPerspective} from './usePresentationPerspective'\nimport {useStatus} from './useStatus'\nimport {useTargetOrigin} from './useTargetOrigin'\nimport {debounce} from './util/debounce'\n\nconst LiveQueries = lazy(() => import('./loader/LiveQueries'))\nconst PostMessageDocuments = lazy(() => import('./overlays/PostMessageDocuments'))\nconst PostMessageRefreshMutations = lazy(() => import('./editor/PostMessageRefreshMutations'))\nconst PostMessagePerspective = lazy(() => import('./PostMessagePerspective'))\nconst PostMessagePreviewSnapshots = lazy(() => import('./editor/PostMessagePreviewSnapshots'))\nconst PostMessageSchema = lazy(() => import('./overlays/schema/PostMessageSchema'))\nconst PostMessageTelemetry = lazy(() => import('./PostMessageTelemetry'))\n\nconst Container = styled(Flex)`\n overflow-x: auto;\n`\n\nexport default function PresentationTool(props: {\n tool: Tool<PresentationPluginOptions>\n canToggleSharePreviewAccess: boolean\n canUseSharedPreviewAccess: boolean\n vercelProtectionBypass: string | null\n initialPreviewUrl: URL\n previewUrlRef: PreviewUrlRef\n}): React.JSX.Element {\n const {\n canToggleSharePreviewAccess,\n canUseSharedPreviewAccess,\n tool,\n vercelProtectionBypass,\n initialPreviewUrl,\n previewUrlRef,\n } = props\n\n const allowOrigins = useAllowPatterns(previewUrlRef)\n const targetOrigin = useTargetOrigin(previewUrlRef)\n\n const components = tool.options?.components\n const name = tool.name || DEFAULT_TOOL_NAME\n const {unstable_navigator, unstable_header} = components || {}\n\n const {navigate: routerNavigate, state: routerState} = useRouter() as RouterContextValue & {\n state: PresentationStateParams\n }\n const routerSearchParams = useUnique(Object.fromEntries(routerState._searchParams || []))\n const perspective = usePresentationPerspective()\n\n const canSharePreviewAccess = useSelector(\n previewUrlRef,\n (state) => state.context.previewMode?.shareAccess !== false,\n )\n\n const [devMode] = useState(() => {\n const option = tool.options?.devMode\n\n if (typeof option === 'function') return option()\n if (typeof option === 'boolean') return option\n\n return typeof window !== 'undefined' && window.location.hostname === 'localhost'\n })\n\n const iframeRef = useRef<HTMLIFrameElement>(null)\n\n const [controller, setController] = useState<Controller>()\n const [visualEditingComlink, setVisualEditingComlink] = useState<VisualEditingConnection | null>(\n null,\n )\n\n const frameStateRef = useRef<FrameState>({\n title: undefined,\n url: undefined,\n })\n\n const {\n navigate: _navigate,\n navigationHistory,\n params,\n searchParams,\n structureParams,\n } = useParams({\n initialPreviewUrl,\n routerNavigate,\n routerState,\n routerSearchParams,\n frameStateRef,\n })\n\n // Most navigation events should be debounced, so use this unless explicitly needed\n const navigate = useMemo(() => debounce<PresentationNavigate>(_navigate, 50), [_navigate])\n\n const presentationRef = useActorRef(presentationMachine)\n\n const viewport = useMemo(() => (params.viewport ? 'mobile' : 'desktop'), [params.viewport])\n\n const [documentsOnPage, setDocumentsOnPage] = useDocumentsOnPage(perspective, frameStateRef)\n\n const projectId = useProjectId()\n const dataset = useDataset()\n\n const mainDocumentState = useMainDocument({\n // Prevent flash of content by using immediate navigation\n navigate: _navigate,\n navigationHistory,\n path: params.preview,\n targetOrigin,\n resolvers: tool.options?.resolve?.mainDocuments,\n })\n\n const [overlaysConnection, setOverlaysConnection] = useStatus()\n const [loadersConnection, setLoadersConnection] = useStatus()\n const [previewKitConnection, setPreviewKitConnection] = useStatus()\n\n const {open: handleOpenPopup} = usePopups(controller)\n\n const isLoading = useSelector(presentationRef, (state) => state.matches('loading'))\n\n useEffect(() => {\n const target = iframeRef.current?.contentWindow\n\n if (!target || isLoading) return undefined\n\n const controller = createController({targetOrigin})\n controller.addTarget(target)\n setController(controller)\n\n return () => {\n controller.destroy()\n setController(undefined)\n }\n }, [targetOrigin, isLoading])\n\n const handleNavigate = useEffectEvent<typeof navigate>(\n (nextState, nextSearchState, forceReplace) =>\n navigate(nextState, nextSearchState, forceReplace),\n )\n useEffect(() => {\n if (!controller) return undefined\n\n const comlink = controller.createChannel<VisualEditingControllerMsg, VisualEditingNodeMsg>(\n {\n name: 'presentation',\n heartbeat: true,\n connectTo: 'visual-editing',\n },\n createConnectionMachine<VisualEditingControllerMsg, VisualEditingNodeMsg>().provide({\n actors: createCompatibilityActors<VisualEditingControllerMsg>(),\n }),\n )\n\n comlink.on('visual-editing/focus', (data) => {\n if (!('id' in data)) return\n handleNavigate({\n type: data.type,\n id: data.id,\n path: data.path,\n })\n })\n\n comlink.on('visual-editing/navigate', (data) => {\n const {title} = data\n let url = data.url\n /**\n * The URL is relative, we need to resolve it to an absolute URL\n */\n if (!url.startsWith('http')) {\n try {\n url = new URL(url, targetOrigin).toString()\n } catch {\n // ignore\n }\n }\n\n if (frameStateRef.current.url !== url) {\n try {\n // Handle bypass params being forwarded to the final URL\n const [urlWithoutSearch, search] = url.split('?')\n const searchParams = new URLSearchParams(search)\n searchParams.delete(urlSearchParamVercelProtectionBypass)\n searchParams.delete(urlSearchParamVercelSetBypassCookie)\n handleNavigate(\n {},\n {preview: `${urlWithoutSearch}${searchParams.size > 0 ? '?' : ''}${searchParams}`},\n )\n } catch {\n handleNavigate({}, {preview: url})\n }\n }\n frameStateRef.current = {title, url}\n })\n\n comlink.on('visual-editing/meta', (data) => {\n frameStateRef.current.title = data.title\n })\n\n comlink.on('visual-editing/toggle', (data) => {\n presentationRef.send({type: 'toggle visual editing overlays', enabled: data.enabled})\n })\n\n comlink.on('visual-editing/documents', (data) => {\n setDocumentsOnPage(\n 'visual-editing',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data.perspective as unknown as any,\n data.documents,\n )\n })\n\n // @todo This won't work for multiple window contexts?\n comlink.on('visual-editing/refreshing', (data) => {\n if (data.source === 'manual') {\n clearTimeout(refreshRef.current)\n } else if (data.source === 'mutation') {\n presentationRef.send({type: 'iframe refresh'})\n }\n })\n\n comlink.on('visual-editing/refreshed', () => {\n presentationRef.send({type: 'iframe loaded'})\n })\n\n comlink.onStatus(setOverlaysConnection)\n\n const stop = comlink.start()\n setVisualEditingComlink(comlink)\n return () => {\n stop()\n setVisualEditingComlink(null)\n }\n }, [controller, presentationRef, setDocumentsOnPage, setOverlaysConnection, targetOrigin])\n\n useEffect(() => {\n if (!controller) return undefined\n const comlink = controller.createChannel<Message, PreviewKitNodeMsg>(\n {\n name: 'presentation',\n connectTo: 'preview-kit',\n heartbeat: true,\n },\n createConnectionMachine<Message, PreviewKitNodeMsg>().provide({\n actors: createCompatibilityActors(),\n }),\n )\n\n comlink.onStatus(setPreviewKitConnection)\n\n comlink.on('preview-kit/documents', (data) => {\n if (data.projectId === projectId && data.dataset === dataset) {\n setDocumentsOnPage(\n 'preview-kit',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data.perspective as unknown as any,\n data.documents,\n )\n }\n })\n\n return comlink.start()\n }, [controller, dataset, projectId, setDocumentsOnPage, setPreviewKitConnection, targetOrigin])\n\n const handleFocusPath = useCallback(\n (nextPath: Path) => {\n // Don't need to explicitly set the id here because it was either already set via postMessage or is the same if navigating in the document pane\n navigate({path: studioPath.toString(nextPath)}, {}, true)\n },\n [navigate],\n )\n\n const handlePreviewPath = useCallback(\n (nextPath: string) => {\n const url = new URL(nextPath, targetOrigin)\n const preview = url.toString()\n if (params.preview === preview) {\n return\n }\n if (Array.isArray(allowOrigins)) {\n if (allowOrigins.some((pattern) => pattern.test(preview))) {\n navigate({}, {preview})\n }\n } else if (url.origin === targetOrigin) {\n navigate({}, {preview})\n }\n },\n [targetOrigin, params.preview, allowOrigins, navigate],\n )\n\n const handleStructureParams = useCallback(\n (structureParams: StructureDocumentPaneParams) => {\n navigate({}, structureParams)\n },\n [navigate],\n )\n\n // Dispatch a focus or blur message when the id or path change\n useEffect(() => {\n if (params.id && params.path) {\n visualEditingComlink?.post('presentation/focus', {id: params.id, path: params.path})\n } else {\n visualEditingComlink?.post('presentation/blur')\n }\n }, [params.id, params.path, visualEditingComlink])\n\n // Dispatch a navigation message when the preview param changes\n useEffect(() => {\n if (\n frameStateRef.current.url &&\n params.preview &&\n frameStateRef.current.url !== params.preview\n ) {\n try {\n const frameOrigin = new URL(frameStateRef.current.url, targetOrigin).origin\n const previewOrigin = new URL(params.preview, targetOrigin).origin\n if (frameOrigin !== previewOrigin) {\n return\n }\n } catch {\n // ignore\n }\n\n frameStateRef.current.url = params.preview\n if (overlaysConnection === 'connected') {\n /**\n * Translate the possibly absolute params url back to a relative URL\n */\n let url = params.preview\n if (url.startsWith('http')) {\n try {\n const newUrl = new URL(params.preview, targetOrigin)\n url = newUrl.pathname + newUrl.search + newUrl.hash\n } catch {\n // ignore\n }\n }\n visualEditingComlink?.post('presentation/navigate', {\n url,\n type: 'replace',\n })\n }\n }\n }, [overlaysConnection, targetOrigin, params.preview, visualEditingComlink])\n\n const toggleOverlay = useCallback(\n () => visualEditingComlink?.post('presentation/toggle-overlay'),\n [visualEditingComlink],\n )\n\n const [displayedDocument, setDisplayedDocument] = useState<\n Partial<SanityDocument> | null | undefined\n >(null)\n\n useEffect(() => {\n const handleKeyUp = (e: KeyboardEvent) => {\n if (isAltKey(e)) {\n toggleOverlay()\n }\n }\n const handleKeydown = (e: KeyboardEvent) => {\n if (isAltKey(e)) {\n toggleOverlay()\n }\n\n if (isHotkey(['mod', '\\\\'], e)) {\n toggleOverlay()\n }\n }\n window.addEventListener('keydown', handleKeydown)\n window.addEventListener('keyup', handleKeyUp)\n return () => {\n window.removeEventListener('keydown', handleKeydown)\n window.removeEventListener('keyup', handleKeyUp)\n }\n }, [toggleOverlay])\n\n const [boundaryElement, setBoundaryElement] = useState<HTMLDivElement | null>(null)\n\n const [{navigatorEnabled, toggleNavigator}, PresentationNavigator] = usePresentationNavigator({\n unstable_navigator,\n })\n\n const refreshRef = useRef<number>(undefined)\n const handleRefresh = useCallback(\n (fallback: () => void) => {\n presentationRef.send({type: 'iframe refresh'})\n if (visualEditingComlink) {\n // We only wait 300ms for the iframe to ack the refresh request before running the fallback logic\n refreshRef.current = window.setTimeout(fallback, 300)\n visualEditingComlink.post('presentation/refresh', {\n source: 'manual',\n livePreviewEnabled:\n previewKitConnection === 'connected' || loadersConnection === 'connected',\n })\n return\n }\n fallback()\n },\n [loadersConnection, presentationRef, previewKitConnection, visualEditingComlink],\n )\n\n const workspace = useWorkspace()\n\n const getCommentIntent = useCallback<CommentIntentGetter>(\n ({id, type, path}) => {\n if (frameStateRef.current.url) {\n return {\n title: frameStateRef.current.title || frameStateRef.current.url,\n name: 'edit',\n params: {\n id,\n path,\n type,\n inspect: COMMENTS_INSPECTOR_NAME,\n workspace: workspace.name,\n mode: EDIT_INTENT_MODE,\n preview: params.preview,\n },\n }\n }\n return undefined\n },\n [params.preview, workspace.name],\n )\n\n const setViewport = useCallback(\n (next: PresentationViewport) => {\n // Omit the viewport URL search param if the next viewport state is the\n // default: 'desktop'\n const viewport = next === 'desktop' ? undefined : 'mobile'\n navigate({}, {viewport}, true)\n },\n [navigate],\n )\n\n return (\n <>\n <PresentationProvider\n devMode={devMode}\n name={name}\n navigate={navigate}\n params={params}\n searchParams={searchParams}\n structureParams={structureParams}\n >\n <PresentationNavigateProvider navigate={navigate}>\n <PresentationParamsProvider params={params}>\n <SharedStateProvider comlink={visualEditingComlink}>\n <Container data-testid=\"presentation-root\" height=\"fill\">\n <Panels>\n <PresentationNavigator />\n <Panel\n id=\"preview\"\n minWidth={325}\n defaultSize={navigatorEnabled ? 50 : 75}\n order={3}\n >\n <Flex direction=\"column\" flex={1} height=\"fill\" ref={setBoundaryElement}>\n <BoundaryElementProvider element={boundaryElement}>\n <Preview\n // @TODO move closer to the <iframe> element itself to allow for more precise handling of when to reload the iframe and when to reconnect when the target origin changes\n // Make sure the iframe is unmounted if the targetOrigin has changed\n key={targetOrigin}\n canSharePreviewAccess={canSharePreviewAccess}\n canToggleSharePreviewAccess={canToggleSharePreviewAccess}\n canUseSharedPreviewAccess={canUseSharedPreviewAccess}\n header={unstable_header}\n initialUrl={initialPreviewUrl}\n loadersConnection={loadersConnection}\n navigatorEnabled={navigatorEnabled}\n onPathChange={handlePreviewPath}\n onRefresh={handleRefresh}\n openPopup={handleOpenPopup}\n overlaysConnection={overlaysConnection}\n previewUrl={params.preview}\n perspective={perspective}\n ref={iframeRef}\n setViewport={setViewport}\n targetOrigin={targetOrigin}\n toggleNavigator={toggleNavigator}\n toggleOverlay={toggleOverlay}\n viewport={viewport}\n vercelProtectionBypass={vercelProtectionBypass}\n presentationRef={presentationRef}\n previewUrlRef={previewUrlRef}\n />\n </BoundaryElementProvider>\n </Flex>\n </Panel>\n <PresentationContent\n documentId={params.id}\n documentsOnPage={documentsOnPage}\n documentType={params.type}\n getCommentIntent={getCommentIntent}\n mainDocumentState={mainDocumentState}\n onFocusPath={handleFocusPath}\n onStructureParams={handleStructureParams}\n searchParams={searchParams}\n setDisplayedDocument={setDisplayedDocument}\n structureParams={structureParams}\n />\n </Panels>\n </Container>\n </SharedStateProvider>\n </PresentationParamsProvider>\n </PresentationNavigateProvider>\n </PresentationProvider>\n <Suspense>\n {controller && (\n <LiveQueries\n controller={controller}\n perspective={perspective}\n liveDocument={displayedDocument}\n onDocumentsOnPage={setDocumentsOnPage}\n onLoadersConnection={setLoadersConnection}\n />\n )}\n {visualEditingComlink && params.id && params.type && (\n <PostMessageRefreshMutations\n comlink={visualEditingComlink}\n id={params.id}\n type={params.type}\n loadersConnection={loadersConnection}\n previewKitConnection={previewKitConnection}\n />\n )}\n {visualEditingComlink && (\n <PostMessageSchema comlink={visualEditingComlink} perspective={perspective} />\n )}\n {visualEditingComlink && documentsOnPage.length > 0 && (\n <PostMessagePreviewSnapshots\n comlink={visualEditingComlink}\n perspective={perspective}\n refs={documentsOnPage}\n />\n )}\n {visualEditingComlink && (\n <PostMessageDocuments comlink={visualEditingComlink} perspective={perspective} />\n )}\n {visualEditingComlink && <PostMessageFeatures comlink={visualEditingComlink} />}\n {visualEditingComlink && (\n <PostMessagePerspective comlink={visualEditingComlink} perspective={perspective} />\n )}\n {visualEditingComlink && <PostMessageTelemetry comlink={visualEditingComlink} />}\n </Suspense>\n </>\n )\n}\n\n// @TODO reconcile with core utils\nfunction isAltKey(event: KeyboardEvent): boolean {\n return event.key === 'Alt'\n}\n\n// @TODO reconcile with core utils\nconst IS_MAC =\n typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform)\nconst MODIFIERS: Record<string, 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey'> = {\n alt: 'altKey',\n ctrl: 'ctrlKey',\n mod: IS_MAC ? 'metaKey' : 'ctrlKey',\n shift: 'shiftKey',\n}\n// @TODO reconcile with core utils\nfunction isHotkey(keys: string[], event: KeyboardEvent): boolean {\n return keys.every((key) => {\n if (MODIFIERS[key]) {\n return event[MODIFIERS[key]]\n }\n return event.key === key.toUpperCase()\n })\n}\n","import { uuid } from \"@sanity/uuid\";\nimport { apiVersion, SECRET_TTL, schemaType, tag, deleteExpiredSecretsQuery } from \"./constants.js\";\nimport { generateUrlSecret } from \"./_chunks-es/generateSecret.js\";\nasync function createPreviewSecret(_client, source, studioUrl, userId, id = uuid()) {\n const client = _client.withConfig({ apiVersion });\n try {\n const expiresAt = new Date(Date.now() + 1e3 * SECRET_TTL), _id = `drafts.${id}`, newSecret = generateUrlSecret(), patch = client.patch(_id).set({ secret: newSecret, source, studioUrl, userId });\n return await client.transaction().createOrReplace({ _id, _type: schemaType }).patch(patch).commit({ tag }), { secret: newSecret, expiresAt };\n } finally {\n try {\n await client.delete({ query: deleteExpiredSecretsQuery });\n } catch (err) {\n console.error(\"Failed to delete expired secrets\", err);\n }\n }\n}\nexport {\n createPreviewSecret\n};\n//# sourceMappingURL=create-secret.js.map\n","import {createPreviewSecret} from '@sanity/preview-url-secret/create-secret'\nimport {type SanityClient} from 'sanity'\nimport {fromPromise, type PromiseActorLogic} from 'xstate'\n\n/** @internal */\nexport function defineCreatePreviewSecretActor({\n client,\n currentUserId,\n}: {\n client: SanityClient\n currentUserId: string | undefined\n}): PromiseActorLogic<{\n secret: string\n expiresAt: Date\n}> {\n return fromPromise(async () => {\n return await createPreviewSecret(client, 'sanity/presentation', location.href, currentUserId)\n })\n}\n","import {fetchSharedAccessQuery} from '@sanity/preview-url-secret/constants'\nimport {type SanityClient} from 'sanity'\nimport {fromPromise, type PromiseActorLogic} from 'xstate'\n\n/** @internal */\nexport function defineReadSharedSecretActor({\n client,\n}: {\n client: SanityClient\n}): PromiseActorLogic<string | null> {\n return fromPromise(async () => {\n return client.fetch<string | null>(\n fetchSharedAccessQuery,\n {},\n {tag: 'presentation.fallback-to-shared-access-secret'},\n )\n })\n}\n","import {fromPromise, type PromiseActorLogic} from 'xstate'\n\nimport {type PreviewUrlAllowOption, type PreviewUrlAllowOptionContext} from '../types'\n\ninterface Context extends Pick<PreviewUrlAllowOptionContext, 'client'> {\n allowOption: PreviewUrlAllowOption | undefined\n}\ntype Input = Omit<PreviewUrlAllowOptionContext, 'client' | 'origin'>\n\n/** @internal */\nexport function defineResolveAllowPatternsActor({\n client,\n allowOption,\n}: Context): PromiseActorLogic<URLPattern[], Input> {\n return fromPromise<URLPattern[], Input>(async ({input}) => {\n const {initialUrl} = input\n\n /**\n * Lazy load the URLPattern polyfill on-demand, if needed\n */\n if (typeof URLPattern === 'undefined') {\n await import('urlpattern-polyfill')\n }\n\n /**\n * If no allow option is provided, we use the initial URL to infer the pattern\n */\n if (!allowOption) {\n return [new URLPattern(initialUrl.origin)]\n }\n\n const maybePatterns =\n typeof allowOption === 'function'\n ? await allowOption({client, origin, initialUrl})\n : allowOption\n const patterns = Array.isArray(maybePatterns) ? maybePatterns : [maybePatterns]\n const urlPatterns = patterns.map((value) => {\n const urlPattern = new URLPattern(value)\n if (urlPattern.hostname === '*') {\n throw new Error(\n `It's insecure to allow any hostname, it could disclose data to a malicious site`,\n )\n }\n return urlPattern\n })\n /**\n * If the declared patterns don't consider the initial URL valid, we add it to the list of patterns\n */\n if (!urlPatterns.some((pattern) => pattern.test(initialUrl.origin))) {\n return [...urlPatterns, new URLPattern(initialUrl.origin)]\n }\n\n return urlPatterns\n })\n}\n","import {type SanityClient} from 'sanity'\nimport {fromPromise, type PromiseActorLogic} from 'xstate'\n\nimport {type PresentationPerspective, type PreviewUrlOption} from '../types'\nimport {encodeStudioPerspective} from '../util/encodeStudioPerspective'\n\n/** @internal */\nexport function defineResolveInitialUrlActor({\n client,\n studioBasePath,\n previewUrlOption,\n perspective,\n}: {\n client: SanityClient\n studioBasePath: string\n previewUrlOption: PreviewUrlOption | undefined\n perspective: PresentationPerspective\n}): PromiseActorLogic<URL, {previewSearchParam: string | null}> {\n return fromPromise<URL, {previewSearchParam: string | null}>(\n async ({input}: {input: {previewSearchParam: string | null}}) => {\n const {origin} = location\n /**\n * If the previewUrlOption is a function, we need to resolve it and maintain backwards compatibility\n */\n if (typeof previewUrlOption === 'function') {\n const initial = await previewUrlOption({\n client,\n studioBasePath,\n // @TODO handle checking permissions here, and then generating a secret\n previewUrlSecret: '',\n studioPreviewPerspective: encodeStudioPerspective(perspective),\n previewSearchParam: input.previewSearchParam,\n })\n return new URL(initial, origin)\n }\n\n /**\n * Provide backwards compatibility for versions where `previewUrl` where optional\n */\n if (!previewUrlOption) {\n return new URL('/', origin)\n }\n /**\n * Support setting `previewUrl` as a string shorthand\n */\n if (typeof previewUrlOption === 'string') {\n return new URL(previewUrlOption, origin)\n }\n\n if (typeof previewUrlOption.initial === 'function') {\n const initial = await previewUrlOption.initial({\n client,\n origin,\n })\n return new URL(initial, origin)\n }\n\n if (typeof previewUrlOption.initial === 'string') {\n return new URL(previewUrlOption.initial, origin)\n }\n\n return new URL(previewUrlOption.preview || '/', previewUrlOption.origin || origin)\n },\n )\n}\n","import {fromPromise, type PromiseActorLogic} from 'xstate'\n\nimport {\n type PreviewUrlOption,\n type PreviewUrlPreviewMode,\n type PreviewUrlPreviewModeOptionContext,\n} from '../types'\n\ntype Options = Omit<PreviewUrlPreviewModeOptionContext, 'origin'>\n\ninterface Context extends Pick<Options, 'client'> {\n previewUrlOption: PreviewUrlOption | undefined\n}\ntype Input = Omit<Options, 'client'>\n\n/** @internal */\nexport function defineResolvePreviewModeActor({\n client,\n previewUrlOption,\n}: Context): PromiseActorLogic<PreviewUrlPreviewMode | false, Input> {\n return fromPromise<PreviewUrlPreviewMode | false, Input>(async ({input}) => {\n const {targetOrigin} = input\n\n /**\n * Handle legacy draftMode options\n */\n if (typeof previewUrlOption === 'object' && previewUrlOption?.draftMode) {\n return {\n enable: previewUrlOption.draftMode.enable,\n shareAccess: previewUrlOption.draftMode.shareAccess ?? true,\n }\n }\n\n /**\n * If no preview mode option is provided, we disable preview mode\n */\n if (\n !previewUrlOption ||\n typeof previewUrlOption === 'string' ||\n typeof previewUrlOption === 'function' ||\n !previewUrlOption.previewMode\n ) {\n return false\n }\n\n /**\n * If the option is a function, we resolve it\n */\n const previewMode =\n typeof previewUrlOption.previewMode === 'function'\n ? await previewUrlOption.previewMode({client, origin, targetOrigin})\n : previewUrlOption.previewMode\n\n if (previewMode === false) {\n return false\n }\n\n /**\n * Return only supported preview mode options, filter out unknowns\n */\n return {\n enable: previewMode.enable,\n shareAccess: previewMode.shareAccess ?? true,\n }\n })\n}\n","import {\n urlSearchParamPreviewPathname,\n urlSearchParamPreviewPerspective,\n urlSearchParamPreviewSecret,\n} from '@sanity/preview-url-secret/constants'\nimport {type SanityClient} from 'sanity'\nimport {fromPromise, type PromiseActorLogic} from 'xstate'\n\nimport {\n type PresentationPerspective,\n type PreviewUrlOption,\n type PreviewUrlPreviewMode,\n} from '../types'\nimport {encodeStudioPerspective} from '../util/encodeStudioPerspective'\n\n/** @internal */\nexport interface ResolvePreviewModeUrlInput {\n previewUrlSecret: string\n resolvedPreviewMode: PreviewUrlPreviewMode\n initialUrl: URL\n}\n\n/** @internal */\nexport function defineResolvePreviewModeUrlActor({\n client,\n studioBasePath,\n previewUrlOption,\n perspective,\n}: {\n client: SanityClient\n studioBasePath: string\n previewUrlOption: PreviewUrlOption | undefined\n perspective: PresentationPerspective\n}): PromiseActorLogic<URL, ResolvePreviewModeUrlInput> {\n return fromPromise<URL, ResolvePreviewModeUrlInput>(async ({input}) => {\n const {previewUrlSecret, resolvedPreviewMode, initialUrl} = input\n\n /**\n * If the previewUrlOption is a function, we need to resolve it and maintain backwards compatibility\n */\n if (typeof previewUrlOption === 'function') {\n const initial = await previewUrlOption({\n client,\n studioBasePath,\n previewUrlSecret,\n studioPreviewPerspective: encodeStudioPerspective(perspective),\n previewSearchParam: initialUrl.toString(),\n })\n return new URL(initial, initialUrl)\n }\n\n /**\n * If the resolved preview mode is false then we have an unexpected state that shouldn't be possible\n */\n if (!resolvedPreviewMode) {\n throw new Error('Resolved preview mode is false')\n }\n\n const url = new URL(resolvedPreviewMode.enable, initialUrl)\n\n url.searchParams.set(urlSearchParamPreviewSecret, previewUrlSecret)\n url.searchParams.set(urlSearchParamPreviewPerspective, encodeStudioPerspective(perspective))\n if (initialUrl.pathname !== url.pathname) {\n url.searchParams.set(\n urlSearchParamPreviewPathname,\n `${initialUrl.pathname}${initialUrl.search}${initialUrl.hash}`,\n )\n }\n\n return url\n })\n}\n","import {fromPromise} from 'xstate'\n\n/** @internal */\nexport const resolveUrlFromPreviewSearchParamActor = fromPromise<\n URL,\n {initialUrl: URL; previewSearchParam: string | null | undefined; allowOrigins: URLPattern[]}\n>(async ({input}) => {\n const {previewSearchParam, initialUrl, allowOrigins} = input\n\n /**\n * If the preview search param is falsy we can skip\n */\n if (!previewSearchParam) {\n return initialUrl\n }\n\n /**\n * Validate the previewSearchParam\n */\n try {\n const previewSearchParamUrl = new URL(previewSearchParam, initialUrl.origin)\n if (!allowOrigins.some((pattern) => pattern.test(previewSearchParamUrl.origin))) {\n return initialUrl\n }\n return previewSearchParamUrl\n } catch (err) {\n return initialUrl\n }\n})\n","import {\n schemaIdSingleton,\n schemaType,\n schemaTypeSingleton,\n} from '@sanity/preview-url-secret/constants'\nimport {type SanityDocument} from '@sanity/types'\nimport {uuid} from '@sanity/uuid'\nimport {throwError} from 'rxjs'\nimport {type DocumentValuePermission, type PermissionCheckResult} from 'sanity'\nimport {type ActorRefFrom, assign, fromObservable, fromPromise, log, setup} from 'xstate'\n\nimport {type ResolvePreviewModeUrlInput} from '../actors/resolve-preview-mode-url'\nimport {resolveUrlFromPreviewSearchParamActor} from '../actors/resolve-url-from-preview-search-param'\nimport {type PreviewUrlPreviewMode} from '../types'\n\ninterface Context {\n initialUrl: URL | null\n previewUrl: URL | null\n allowOrigins: URLPattern[] | null\n error: Error | null\n previewSearchParam: string | null\n previewUrlSecret: {secret: string; expiresAt: Date} | null\n previewAccessSharingCreatePermission: PermissionCheckResult | null\n previewAccessSharingReadPermission: PermissionCheckResult | null\n previewAccessSharingUpdatePermission: PermissionCheckResult | null\n previewUrlSecretPermission: PermissionCheckResult | null\n previewMode: PreviewUrlPreviewMode | null\n}\n\ntype SetPreviewSearchParamEvent = {\n type: 'set preview search param'\n previewSearchParam: string | null\n}\ntype Event = SetPreviewSearchParamEvent\n\ntype Input = Omit<SetPreviewSearchParamEvent, 'type'>\n\nexport interface CheckPermissionInput {\n checkPermissionName: DocumentValuePermission\n document: Partial<SanityDocument> | null\n}\n\n/**\n * Used for permissions checks\n */\nexport const shareAccessSingletonDocument = {_id: schemaIdSingleton, _type: schemaTypeSingleton}\nexport const previewUrlSecretDocument = {\n _id: `drafts.${uuid()}`,\n _type: schemaType,\n}\n\nexport const previewUrlMachine = setup({\n types: {} as {\n context: Context\n events: Event\n input: Input\n tags: 'busy' | 'error'\n },\n actions: {\n 'notify preview will likely fail': log(\n `Missing permissions to create preview secret, or read shared preview secret. Preview will likely fail loading.`,\n ),\n 'assign preview search param': assign({\n previewSearchParam: (_, params: {previewSearchParam: string | null}) =>\n params.previewSearchParam,\n }),\n 'assign error': assign({\n error: (_, params: {message: string; error: unknown}) => {\n return params.error instanceof Error\n ? params.error\n : new Error(params.message, {cause: params.error})\n },\n }),\n },\n actors: {\n 'check permission': fromObservable<PermissionCheckResult, CheckPermissionInput>(() =>\n throwError(\n () =>\n new Error(\n `The 'check permission' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'check permission': fromObservable(({input}: {input: CheckPermissionInput}) => ...)}})`,\n ),\n ),\n ),\n 'resolve initial url': fromPromise<URL, {previewSearchParam: string | null}>(() =>\n Promise.reject(\n new Error(\n `The 'resolve initial url' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'resolve initial url': fromPromise(...)}})`,\n ),\n ),\n ),\n 'resolve allow patterns': fromPromise<URLPattern[], {initialUrl: URL}>(() =>\n Promise.reject(\n new Error(\n `The 'resolve allow patterns' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'resolve allow pattern': fromPromise(...)}})`,\n ),\n ),\n ),\n 'resolve url from preview search param': resolveUrlFromPreviewSearchParamActor,\n 'resolve preview mode': fromPromise<PreviewUrlPreviewMode | false, {targetOrigin: string}>(() =>\n Promise.reject(\n new Error(\n `The 'resolve preview mode' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'resolve preview mode': fromPromise(...)}})`,\n ),\n ),\n ),\n 'create preview secret': fromPromise<{\n secret: string\n expiresAt: Date\n }>(async () =>\n Promise.reject(\n new Error(\n `The 'create preview secret' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'create preview secret': fromPromise(...)}})`,\n ),\n ),\n ),\n 'read shared preview secret': fromPromise<string | null>(async () =>\n Promise.reject(\n new Error(\n `The 'read shared preview secret' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'read shared preview secret': fromPromise(...)}})`,\n ),\n ),\n ),\n 'resolve preview mode url': fromPromise<URL, ResolvePreviewModeUrlInput>(() =>\n Promise.reject(\n new Error(\n `The 'resolve preview mode url' actor is not implemented. Add it to previewUrlMachine.provide({actors: {'resolve preview mode url': fromPromise(...)}})`,\n ),\n ),\n ),\n },\n guards: {\n 'has checked permissions': ({context}) => {\n return Boolean(\n context.previewAccessSharingCreatePermission &&\n context.previewAccessSharingReadPermission &&\n context.previewAccessSharingUpdatePermission &&\n context.previewUrlSecretPermission,\n )\n },\n 'search param has new origin': ({context, event}) => {\n if (!context.previewUrl || !event.previewSearchParam) {\n return false\n }\n try {\n const previewSearchParamUrl = new URL(event.previewSearchParam, context.previewUrl)\n return context.previewUrl.origin !== previewSearchParamUrl.origin\n } catch {\n return false\n }\n },\n 'can create preview secret': ({context}) => {\n return context.previewUrlSecretPermission?.granted === true\n },\n\n 'has preview mode with created secret': ({context}, params: PreviewUrlPreviewMode | false) => {\n if (params === false) {\n return false\n }\n return context.previewUrlSecretPermission?.granted === true\n },\n 'has preview mode with share access': ({context}, params: PreviewUrlPreviewMode | false) => {\n if (params === false) {\n return false\n }\n return context.previewAccessSharingReadPermission?.granted === true\n },\n 'has preview mode without permissions': ({context}, params: PreviewUrlPreviewMode | false) => {\n if (params === false) {\n return false\n }\n return (\n context.previewAccessSharingReadPermission?.granted === false &&\n context.previewUrlSecretPermission?.granted === false\n )\n },\n },\n delays: {\n expiredSecret: ({context}) => {\n if (!context.previewUrlSecret?.expiresAt) {\n return 0\n }\n const now = Date.now()\n const expiresAt = context.previewUrlSecret.expiresAt.getTime()\n return Math.max(expiresAt - now, 0)\n },\n },\n}).createMachine({\n // eslint-disable-next-line tsdoc/syntax\n /** @xstate-layout N4IgpgJg5mDOIC5QAUBOYBuBLMB3ABAKoBKAMgMRiqoD2qAdAA4A2AhgC4BmdAtvWphwESpBFgB2GGgGMOWGuIDaABgC6K1YlCMasLO3nitIAB6IArAA56AZgCcAdkcBGS8vMAmO+YBszgDQgAJ6Izs4+9M7KACzKztGWHg4OPubmAL7pgQLYeERklNR0TGxcvPzoucJkYpIycgqKzupqxjp6BgrGZggAtM520ZHRdjZjNjFe7oEhCGERUbHxicmpGVkgOUL5FFS0DCwc3Kh8W3kitVKynUoeLZpIIO36ht2IvV62Hl7elmE2lh83xmoXCkRicQSSRS5gSmWylW2IkK+xKR3KZ2qogkVwaShs9zauheXUePV6gPo3jSUyi-xBczBi0hKxh5mc8M2iPOBVgYHY+EY3IIfNYqGkAAtBWLWDwNESOq8yaCbM56A4bB5fGllHYvD4fAz4h56CNfG5LKqHMpLdFOZidvRJWBpABrCRQZBUHhYWB6BSwcjyx7PG5vPrs5TqjWqyyjTXRDwMjwxei68J2ZQ2nyWXN2jYOkT0dCwGjMbDiKAASXEL1YzEIqGY5AgCjA9BxNFd7cLZGLcDLFertYM9cbzEu9RuGmD2mJYeVfRGdipyh86Yc0XiE3MDK3JssIwcrmtPjGSXzCMEPNI-dL5Y9NbrDabKOKhzKJwq16xd8Hj5HLAxybSdrkMGdWhDeclVAclN3odlzBsKwBjSSxjwcZM7DVeJ1w8P4xmidk7HtYVHRLf9KwAQWYZgaFwZAOHYKhxEDVtxHbTtu2-KpyIHB9qNo+jGPYZjUFY0C8Qgh450VUlYPedkHHoHwnDSZDVOiGwfGiBlUhXXwwjsQYtKSYzSJ-Pj7yHGi6IYpiWMDPZ31KY5TjIosKIEqBbOEhzxNgSTpzUWcnmg+TTHePV6Hw3MYgzaItJ0hlYRNTNkLiHxBl1GILN4zz+KHccADFaB4TEAGUwDFSVGNQWUWzbDs6m43tby8oqm1KmhyuFKqaolOrZSC8CQsg2SSSMRdel8ZSNUTdlcw8M07AZQZrDXdaDRtUZnHWK98r7DqPRKsrKuq8VBplHg3wOVyMQ8o7CpOrqzr6i7auukbGjGmSwrkqaFL6MJlLiWFlC1EGty0hknAiXVVPMRx12UJwOQLR72ueytMQAWRoCAwEajjmqkVrMb-by8YJsBvqUX6FUm8Nem2+hbWPUZErGTcjS8NUJg8AE9T1ZwHHwvKkSe6yPWpwnic4lqewp46ceFfHCbpmdmkZhcgZmyxzFsDmTPcXUUiNRKDy3ZQJlVLSkYlm9KaHWWifYhWyaVyyCul1Wf3V2nOzAn71DuHWYMivovGsBxPCy74beWaJDWCUJzBSFTrUcQYdMzIFHd-FXPTVmn5dJrsvcOrHfeL-2ac1kKCXDiLyWcNKJiiHM-BtONwgtnMEM1DVNwhhI7B8AurMo2uqgD260U-dzval6fXYbwkoIB5moijLLkm5tvYRBo1nGQtND11ZaIdzEiMeX6vV5LuW+QFIVLNFS7pXquVxv+pnF1FtYP4OY7AG3QohJMqcEDeGUq4NwYQBhLEnkWWAABXaQ0g4CBhfoKMiH9JRf1lKFUMEceiizVPA0+7gtQQy8LzXU6obaJTFtEJwHhXDIL7G-WepccHcO2PgqUjBrrEPCoDSOFI3C2AGHtQ8sIiJJGTILZS7JRaeGSKw7CnDbz8LwAHJ06AOBgHOtIdA7Ay5cUrpLHRT92ymOqsxExZj16iK3gAqI6oaQ6QtE4YylhkynzmkCBGNgNR7VvgdaxTBbEGIccY969jzHOTuuiL8bVol10JrEoxTj+QuN-iQlu7xwjKX1P8bSTC0hGhcKaBIOZAQGkBKE7RGSeFZMMRACqEoxRgCohgrBFjFY8Sibo3A+iOldJ6X0zBfp8l-UKeIshjgqTGTiPYPaGotS7igd8QWtgsp6iQnFOEd8q6tKEOM6qnTunoGmQM5JC83LDKdqMy5rBrlTP6bMoOUkGab3-kDU+ERVEpnsEjDRVSdljBXKeQY3h5gOBaa8mmzt4k-nHIMz2zzfzIvaYVNFVRxxzObosxAfg1Q2jSOERIh5kIBNGKaNZ2lvjhFhEimJHUCVCAxQ8j8Tz0m4vbJyzERKfnBQ3hNXWkdyWeJsCMVhqNsK6mTO4Q2Q9DysLCEhDw7LMntjQV8wMJhYDsCMfQVgnAxIAAowAmEYFgdAnSXRmIAJTkAFTEg1MzYCuIBZHKYKlUiqWwrCMJkDZgDAYceRMfwUisPYZYTIGxxA03gI8NqJLmZ6msKqENcjErqIZL0cethvDGXLew9hiYWnOjdDLb0vp-SsUzdNcwEMEJ7WTohDMfgU4RpTCpUJnhYrHghuEFpRcnyjhfMwFtet2Q2FNOwsWZarBan8TsuMkRvhIzPJGDwmkWnJLnf6g0aZl0mQTURDdsxYiGwwsRIEgwEwTuxj5IS9lRKORPeSJCOF4XgrUZqbZsxwZszcJtbC4RUg2FfTXU6PVzoDSGjwH9ik-gxRGG4NtxkkZblhgyxIhFQG5lSPEODj89VoYjKqGKURkij0zImXSUCwiozZuDLUCQQY6tOVEr1WDqMsxNCkP4RFPBZj+I4I0qoRMODjIlceBzkK6raWAIT7DDZlNPhUuVkKI0pEXbHBISF1yAiIqpi5KL7E5ISWYoTna2b6Qg+DcFN7EAphLdpdOWVoPJ0RXxl5HKrmTNuYahzaQviaQPVERa8mlGeBUnnQyDStSwcCzi4L1kuV4HHNR4DCFdRaVVFSzcZ4VVIVsDEVhZ5QnWlYZZvRKLj3-KlT0FIKjVRZghkCXwqkjQGzVFxvOMisoWYy46QV9ABN+mo3mFZZ427lp032jzVa2bJGtCUtciak1AA */\n id: 'Preview URL',\n context: ({input}) => ({\n initialUrl: null,\n previewUrl: null,\n error: null,\n allowOrigins: null,\n previewSearchParam: input.previewSearchParam,\n previewUrlSecret: null,\n previewAccessSharingCreatePermission: null,\n previewAccessSharingReadPermission: null,\n previewAccessSharingUpdatePermission: null,\n previewUrlSecretPermission: null,\n previewMode: null,\n }),\n\n invoke: [\n {\n src: 'check permission',\n input: () => ({checkPermissionName: 'read', document: shareAccessSingletonDocument}),\n onError: {\n target: '.error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to check permission',\n error: event.error,\n }),\n },\n },\n onSnapshot: {\n actions: assign({\n previewAccessSharingReadPermission: ({event}) => event.snapshot.context ?? null,\n }),\n },\n },\n {\n src: 'check permission',\n input: () => ({checkPermissionName: 'create', document: shareAccessSingletonDocument}),\n onError: {\n target: '.error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to check permission',\n error: event.error,\n }),\n },\n },\n onSnapshot: {\n actions: assign({\n previewAccessSharingCreatePermission: ({event}) => event.snapshot.context ?? null,\n }),\n },\n },\n {\n src: 'check permission',\n input: () => ({checkPermissionName: 'update', document: shareAccessSingletonDocument}),\n onError: {\n target: '.error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to check permission',\n error: event.error,\n }),\n },\n },\n onSnapshot: {\n actions: assign({\n previewAccessSharingUpdatePermission: ({event}) => event.snapshot.context ?? null,\n }),\n },\n },\n {\n src: 'check permission',\n input: () => ({checkPermissionName: 'create', document: previewUrlSecretDocument}),\n onError: {\n target: '.error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to check permission',\n error: event.error,\n }),\n },\n },\n onSnapshot: {\n actions: assign({\n previewUrlSecretPermission: ({event}) => event.snapshot.context ?? null,\n }),\n },\n },\n ],\n\n on: {\n 'set preview search param': {\n actions: {\n type: 'assign preview search param',\n params: ({event}) => ({previewSearchParam: event.previewSearchParam}),\n },\n },\n },\n\n states: {\n checkingPermissions: {\n always: {\n guard: 'has checked permissions',\n target: 'resolvingInitialUrl',\n },\n tags: 'busy',\n },\n\n resolvingInitialUrl: {\n invoke: {\n src: 'resolve initial url',\n input: ({context}) => ({previewSearchParam: context.previewSearchParam}),\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to resolve initial url',\n error: event.error,\n }),\n },\n },\n onDone: {\n target: 'resolvingAllowPatterns',\n actions: assign({initialUrl: ({event}) => event.output}),\n },\n },\n\n tags: 'busy',\n },\n\n error: {\n type: 'final',\n tags: 'error',\n },\n\n resolvingAllowPatterns: {\n invoke: {\n src: 'resolve allow patterns',\n input: ({context}) => ({initialUrl: context.initialUrl!}),\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to resolve preview url allow patterns',\n error: event.error,\n }),\n },\n },\n onDone: {\n target: 'resolvingUrlFromPreviewSearchParam',\n actions: assign({allowOrigins: ({event}) => event.output}),\n },\n },\n tags: ['busy'],\n },\n\n resolvingUrlFromPreviewSearchParam: {\n id: 'loop',\n invoke: {\n src: 'resolve url from preview search param',\n input: ({context}) => ({\n initialUrl: context.initialUrl!,\n allowOrigins: context.allowOrigins!,\n previewSearchParam: context.previewSearchParam,\n }),\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to resolve preview url from search param',\n error: event.error,\n }),\n },\n },\n onDone: {\n target: 'resolvingPreviewMode',\n actions: assign({initialUrl: ({event}) => event.output}),\n },\n },\n tags: ['busy'],\n },\n\n resolvingPreviewMode: {\n on: {\n 'set preview search param': {\n guard: 'search param has new origin',\n actions: {\n type: 'assign preview search param',\n params: ({event}) => ({previewSearchParam: event.previewSearchParam}),\n },\n target: '#loop',\n reenter: true,\n },\n },\n invoke: {\n src: 'resolve preview mode',\n input: ({context}) => ({targetOrigin: context.initialUrl!.origin}),\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to resolve preview url allow patterns',\n error: event.error,\n }),\n },\n },\n onDone: [\n {\n guard: {\n type: 'has preview mode with created secret',\n params: ({event}) => event.output,\n },\n actions: assign({\n previewMode: ({event}) => event.output as unknown as PreviewUrlPreviewMode,\n }),\n target: 'previewMode.createPreviewSecret',\n },\n {\n guard: {\n type: 'has preview mode with share access',\n params: ({event}) => event.output,\n },\n actions: assign({\n previewMode: ({event}) => event.output as unknown as PreviewUrlPreviewMode,\n }),\n target: 'previewMode.readShareAccess',\n },\n {\n guard: {\n type: 'has preview mode without permissions',\n params: ({event}) => event.output,\n },\n actions: [\n assign({\n previewUrl: ({context}) => context.initialUrl,\n }),\n 'notify preview will likely fail',\n ],\n target: 'success',\n },\n {\n actions: assign({\n previewUrl: ({context}) => context.initialUrl,\n }),\n target: 'success',\n },\n ],\n },\n tags: ['busy'],\n },\n\n success: {\n on: {\n 'set preview search param': {\n guard: 'search param has new origin',\n actions: {\n type: 'assign preview search param',\n params: ({event}) => ({previewSearchParam: event.previewSearchParam}),\n },\n target: '#loop',\n reenter: true,\n },\n },\n },\n\n previewMode: {\n on: {\n 'set preview search param': {\n guard: 'search param has new origin',\n actions: {\n type: 'assign preview search param',\n params: ({event}) => ({previewSearchParam: event.previewSearchParam}),\n },\n target: '#loop',\n reenter: true,\n },\n },\n\n states: {\n createPreviewSecret: {\n invoke: {\n src: 'create preview secret',\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to create preview secret',\n error: event.error,\n }),\n },\n },\n onDone: {\n target: 'resolvePreviewUrl',\n actions: assign({previewUrlSecret: ({event}) => event.output}),\n },\n },\n tags: ['busy'],\n },\n readShareAccess: {\n invoke: {\n src: 'read shared preview secret',\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to read shared preview secret',\n error: event.error,\n }),\n },\n },\n onDone: {\n target: 'resolvePreviewUrl',\n actions: assign({\n previewUrlSecret: ({event}) => ({\n secret: event.output!,\n expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 60 * 24),\n }),\n }),\n },\n },\n tags: ['busy'],\n },\n resolvePreviewUrl: {\n invoke: {\n src: 'resolve preview mode url',\n input: ({context}) => ({\n initialUrl: context.initialUrl!,\n resolvedPreviewMode: context.previewMode!,\n previewUrlSecret: context.previewUrlSecret!.secret,\n }),\n onError: {\n target: 'error',\n actions: {\n type: 'assign error',\n params: ({event}) => ({\n message: 'Failed to resolve preview url',\n error: event.error,\n }),\n },\n },\n onDone: {\n target: 'success',\n actions: assign({previewUrl: ({event}) => event.output}),\n },\n },\n tags: ['busy'],\n },\n error: {\n type: 'final',\n tags: ['error'],\n },\n success: {\n after: {\n expiredSecret: {\n guard: 'can create preview secret',\n actions: assign({previewUrlSecret: null}),\n target: 'createPreviewSecret',\n reenter: true,\n },\n },\n },\n },\n initial: 'readShareAccess',\n },\n },\n\n initial: 'checkingPermissions',\n})\nexport type PreviewUrlRef = ActorRefFrom<typeof previewUrlMachine>\n","import {useToast} from '@sanity/ui'\nimport {useActorRef, useSelector} from '@xstate/react'\nimport {useEffect} from 'react'\nimport {useActiveWorkspace, useClient, useCurrentUser, useGrantsStore, useTranslation} from 'sanity'\nimport {useRouter} from 'sanity/router'\nimport {fromObservable} from 'xstate'\n\nimport {defineCreatePreviewSecretActor} from './actors/create-preview-secret'\nimport {defineReadSharedSecretActor} from './actors/read-shared-secret'\nimport {defineResolveAllowPatternsActor} from './actors/resolve-allow-patterns'\nimport {defineResolveInitialUrlActor} from './actors/resolve-initial-url'\nimport {defineResolvePreviewModeActor} from './actors/resolve-preview-mode'\nimport {defineResolvePreviewModeUrlActor} from './actors/resolve-preview-mode-url'\nimport {API_VERSION} from './constants'\nimport {presentationLocaleNamespace} from './i18n'\nimport {previewUrlMachine, type PreviewUrlRef} from './machines/preview-url'\nimport {type PreviewUrlAllowOption, type PreviewUrlOption} from './types'\nimport {usePresentationPerspective} from './usePresentationPerspective'\n\nexport function usePreviewUrlActorRef(\n previewUrlOption: PreviewUrlOption | undefined,\n allowOption: PreviewUrlAllowOption | undefined,\n): PreviewUrlRef {\n const grantsStore = useGrantsStore()\n const client = useClient({apiVersion: API_VERSION})\n const currentUser = useCurrentUser()\n const currentUserId = currentUser?.id\n const workspace = useActiveWorkspace()\n const studioBasePath = workspace?.activeWorkspace?.basePath || '/'\n const router = useRouter()\n const routerSearchParams = new URLSearchParams(router.state._searchParams)\n const previewSearchParam = routerSearchParams.get('preview')\n const {push: pushToast} = useToast()\n const {t} = useTranslation(presentationLocaleNamespace)\n const perspective = usePresentationPerspective()\n\n const actorRef = useActorRef(\n previewUrlMachine.provide({\n actions: {\n 'notify preview will likely fail': () =>\n pushToast({\n id: 'preview-url-secret.missing-grants',\n closable: true,\n status: 'error',\n duration: Infinity,\n title: t('preview-url-secret.missing-grants'),\n }),\n },\n actors: {\n 'create preview secret': defineCreatePreviewSecretActor({client, currentUserId}),\n 'read shared preview secret': defineReadSharedSecretActor({client}),\n 'resolve allow patterns': defineResolveAllowPatternsActor({\n client,\n allowOption,\n }),\n 'resolve initial url': defineResolveInitialUrlActor({\n client,\n studioBasePath,\n previewUrlOption,\n perspective,\n }),\n 'resolve preview mode': defineResolvePreviewModeActor({\n client,\n previewUrlOption,\n }),\n 'resolve preview mode url': defineResolvePreviewModeUrlActor({\n client,\n studioBasePath,\n previewUrlOption,\n perspective,\n }),\n 'check permission': fromObservable(({input}) =>\n grantsStore.checkDocumentPermission(input.checkPermissionName, input.document),\n ),\n },\n }),\n {input: {previewSearchParam}},\n )\n\n /**\n * Sync changes to router state for the preview search param\n */\n useEffect(() => {\n actorRef.send({type: 'set preview search param', previewSearchParam})\n }, [actorRef, previewSearchParam])\n\n const error = useSelector(actorRef, (state) =>\n // eslint-disable-next-line no-nested-ternary\n state.status === 'error' ? state.error : state.hasTag('error') ? state.context.error : null,\n )\n\n // Propagate the error to the nearest error boundary\n if (error) throw error\n\n return actorRef\n}\n","import {useToast} from '@sanity/ui'\nimport {useSelector} from '@xstate/react'\nimport {useEffect} from 'react'\nimport {Translate, useTranslation} from 'sanity'\nimport {useRouter} from 'sanity/router'\n\nimport {presentationLocaleNamespace} from './i18n'\nimport {type PreviewUrlRef} from './machines/preview-url'\n\nexport function useReportInvalidPreviewSearchParam(previewUrlRef: PreviewUrlRef): void {\n const {t} = useTranslation(presentationLocaleNamespace)\n const {push: pushToast} = useToast()\n const router = useRouter()\n const routerSearchParams = new URLSearchParams(router.state._searchParams)\n const previewSearchParam = routerSearchParams.get('preview')\n\n const allowOrigins = useSelector(previewUrlRef, (state) => state.context.allowOrigins)\n const currentOrigin = useSelector(previewUrlRef, (state) => state.context.previewUrl?.origin)\n useEffect(() => {\n if (!Array.isArray(allowOrigins) || !previewSearchParam || !currentOrigin) return\n const nextOrigin = new URL(previewSearchParam, currentOrigin).origin\n if (!allowOrigins.some((pattern) => pattern.test(nextOrigin))) {\n pushToast({\n closable: true,\n id: `presentation-iframe-origin-mismatch-${nextOrigin}`,\n status: 'error',\n duration: Infinity,\n title: t('preview-search-param.configuration.error.title'),\n description: (\n <Translate\n t={t}\n i18nKey=\"preview-search-param.configuration.error.description\"\n components={{Code: 'code'}}\n values={{\n previewSearchParam,\n blockedOrigin: nextOrigin,\n }}\n />\n ),\n })\n }\n }, [allowOrigins, currentOrigin, previewSearchParam, pushToast, t])\n}\n","import { vercelProtectionBypassSchemaId, vercelProtectionBypassSchemaType, tag, fetchVercelProtectionBypassSecret } from \"./constants.js\";\nasync function enableVercelProtectionBypass(client, secret) {\n const patch = client.patch(vercelProtectionBypassSchemaId).set({ secret });\n await client.transaction().createIfNotExists({ _id: vercelProtectionBypassSchemaId, _type: vercelProtectionBypassSchemaType }).patch(patch).commit({ tag });\n}\nasync function disableVercelProtectionBypass(client) {\n const patch = client.patch(vercelProtectionBypassSchemaId).set({ secret: null });\n await client.transaction().createIfNotExists({ _id: vercelProtectionBypassSchemaId, _type: vercelProtectionBypassSchemaType }).patch(patch).commit({ tag });\n}\nfunction subcribeToVercelProtectionBypass(client, onChange) {\n let controller = new AbortController(), usedTags = [];\n async function fetchSecret(lastLiveEventId, signal) {\n const { result, syncTags } = await client.fetch(\n fetchVercelProtectionBypassSecret,\n {},\n {\n filterResponse: !1,\n lastLiveEventId,\n tag: \"preview-url-secret.fetch-vercel-bypass-protection-secret\"\n }\n );\n Array.isArray(syncTags) && (usedTags = syncTags), signal.aborted || onChange(result);\n }\n const subscription = client.live.events().subscribe({\n next: (event) => {\n event.type === \"message\" && (controller.abort(), controller = new AbortController(), event.tags.some((tag2) => usedTags.includes(tag2)) && fetchSecret(event.id, controller.signal));\n },\n // eslint-disable-next-line no-console\n error: (reason) => console.error(reason)\n });\n return fetchSecret(null, controller.signal), () => {\n subscription.unsubscribe(), controller.abort();\n };\n}\nexport {\n disableVercelProtectionBypass,\n enableVercelProtectionBypass,\n subcribeToVercelProtectionBypass\n};\n//# sourceMappingURL=toggle-vercel-protection-bypass.js.map\n","import {subcribeToVercelProtectionBypass} from '@sanity/preview-url-secret/toggle-vercel-protection-bypass'\nimport {useEffect, useReducer, useState} from 'react'\nimport {useClient} from 'sanity'\n\nimport {API_VERSION} from './constants'\n\ntype VercelProtectionBypassReadyState = 'loading' | 'ready'\n\nexport function useVercelBypassSecret(): [\n vercelProtectionBypassSecret: string | null,\n vercelProtectionBypassReadyState: VercelProtectionBypassReadyState,\n] {\n const client = useClient({apiVersion: API_VERSION})\n const [vercelProtectionBypassReadyState, ready] = useReducer(\n () => 'ready' as 'ready' | 'loading',\n 'loading',\n )\n const [vercelProtectionBypassSecret, setVercelProtectionBypassSecret] = useState<string | null>(\n null,\n )\n\n useEffect(() => {\n const unsubscribe = subcribeToVercelProtectionBypass(client, (secret) => {\n setVercelProtectionBypassSecret(secret)\n ready()\n })\n return () => unsubscribe()\n }, [client])\n\n return [vercelProtectionBypassSecret, vercelProtectionBypassReadyState]\n}\n","import {useSelector} from '@xstate/react'\nimport {type Tool} from 'sanity'\n\nimport {PresentationSpinner} from './PresentationSpinner'\nimport PresentationTool from './PresentationTool'\nimport {type PresentationPluginOptions} from './types'\nimport {usePreviewUrlActorRef} from './usePreviewUrlActorRef'\nimport {useReportInvalidPreviewSearchParam} from './useReportInvalidPreviewSearchParam'\nimport {useVercelBypassSecret} from './useVercelBypassSecret'\n\nexport default function PresentationToolGrantsCheck({\n tool,\n}: {\n tool: Tool<PresentationPluginOptions>\n}): React.JSX.Element {\n const previewUrlRef = usePreviewUrlActorRef(tool.options?.previewUrl, tool.options?.allowOrigins)\n useReportInvalidPreviewSearchParam(previewUrlRef)\n\n const previewAccessSharingCreatePermission = useSelector(\n previewUrlRef,\n (state) => state.context.previewAccessSharingCreatePermission,\n )\n const previewAccessSharingUpdatePermission = useSelector(\n previewUrlRef,\n (state) => state.context.previewAccessSharingUpdatePermission,\n )\n const previewAccessSharingReadPermission = useSelector(\n previewUrlRef,\n (state) => state.context.previewAccessSharingReadPermission,\n )\n const previewUrlSecretPermission = useSelector(\n previewUrlRef,\n (state) => state.context.previewUrlSecretPermission,\n )\n const url = useSelector(previewUrlRef, (state) => state.context.previewUrl)\n // @TODO the vercel protection bypass can be moved to the iframe level\n const [vercelProtectionBypass, vercelProtectionBypassReadyState] = useVercelBypassSecret()\n\n if (\n !url ||\n vercelProtectionBypassReadyState === 'loading' ||\n !previewAccessSharingCreatePermission ||\n typeof previewAccessSharingCreatePermission.granted === 'undefined' ||\n !previewAccessSharingUpdatePermission ||\n typeof previewAccessSharingUpdatePermission.granted === 'undefined' ||\n !previewUrlSecretPermission ||\n !previewAccessSharingReadPermission ||\n typeof previewAccessSharingReadPermission.granted === 'undefined' ||\n typeof previewUrlSecretPermission.granted === 'undefined'\n ) {\n return <PresentationSpinner />\n }\n\n return (\n <PresentationTool\n tool={tool}\n initialPreviewUrl={url}\n vercelProtectionBypass={vercelProtectionBypass}\n canToggleSharePreviewAccess={\n previewAccessSharingCreatePermission?.granted === true &&\n previewAccessSharingUpdatePermission?.granted === true\n }\n canUseSharedPreviewAccess={previewAccessSharingReadPermission?.granted === true}\n previewUrlRef={previewUrlRef}\n />\n )\n}\n"],"x_google_ignoreList":[0,1,29,33,34,40,42,43,50,61],"mappings":"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"}
|