@syntrologie/runtime-sdk 0.2.21 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CAPABILITIES.md +944 -440
- package/README.md +395 -66
- package/dist/RuntimeProvider.d.ts +51 -0
- package/dist/RuntimeProvider.js +113 -0
- package/dist/RuntimeProvider.js.map +1 -0
- package/dist/SmartCanvasApp.d.ts +16 -10
- package/dist/SmartCanvasApp.js +47 -51
- package/dist/SmartCanvasApp.js.map +1 -1
- package/dist/SmartCanvasElement.d.ts +5 -5
- package/dist/SmartCanvasElement.js +24 -14
- package/dist/SmartCanvasElement.js.map +1 -1
- package/dist/SmartCanvasPortal.d.ts +2 -2
- package/dist/SmartCanvasPortal.js +2 -2
- package/dist/SmartCanvasPortal.js.map +1 -1
- package/dist/actions/ActionEngine.d.ts +11 -0
- package/dist/actions/ActionEngine.js +272 -0
- package/dist/actions/ActionEngine.js.map +1 -0
- package/dist/actions/executors/index.d.ts +116 -0
- package/dist/actions/executors/index.js +240 -0
- package/dist/actions/executors/index.js.map +1 -0
- package/dist/actions/executors/tour.d.ts +18 -0
- package/dist/actions/executors/tour.js +332 -0
- package/dist/actions/executors/tour.js.map +1 -0
- package/dist/actions/index.d.ts +10 -0
- package/dist/actions/index.js +12 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/types.d.ts +399 -0
- package/dist/actions/types.js +8 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/actions/validation.d.ts +14 -0
- package/dist/actions/validation.js +577 -0
- package/dist/actions/validation.js.map +1 -0
- package/dist/adaptives/adaptive-chatbot/index.js +9 -0
- package/dist/adaptives/adaptive-chatbot/index.js.map +7 -0
- package/dist/adaptives/adaptive-content/index.js +2 -0
- package/dist/adaptives/adaptive-content/index.js.map +7 -0
- package/dist/adaptives/adaptive-faq/index.js +11 -0
- package/dist/adaptives/adaptive-faq/index.js.map +7 -0
- package/dist/adaptives/adaptive-gamification/index.js +2 -0
- package/dist/adaptives/adaptive-gamification/index.js.map +7 -0
- package/dist/adaptives/adaptive-nav/index.js +11 -0
- package/dist/adaptives/adaptive-nav/index.js.map +7 -0
- package/dist/adaptives/adaptive-overlays/index.js +91 -0
- package/dist/adaptives/adaptive-overlays/index.js.map +7 -0
- package/dist/antiFlicker.js +1 -1
- package/dist/api.d.ts +40 -26
- package/dist/api.js +87 -60
- package/dist/api.js.map +1 -1
- package/dist/apps/AppContext.d.ts +31 -0
- package/dist/apps/AppContext.js +91 -0
- package/dist/apps/AppContext.js.map +1 -0
- package/dist/apps/AppLoader.d.ts +85 -0
- package/dist/apps/AppLoader.js +282 -0
- package/dist/apps/AppLoader.js.map +1 -0
- package/dist/apps/AppRegistry.d.ts +102 -0
- package/dist/apps/AppRegistry.js +317 -0
- package/dist/apps/AppRegistry.js.map +1 -0
- package/dist/apps/examples/gamification-app.example.d.ts +305 -0
- package/dist/apps/examples/gamification-app.example.js +329 -0
- package/dist/apps/examples/gamification-app.example.js.map +1 -0
- package/dist/apps/index.d.ts +14 -0
- package/dist/apps/index.js +16 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/types.d.ts +231 -0
- package/dist/apps/types.js +8 -0
- package/dist/apps/types.js.map +1 -0
- package/dist/blocks/data/ComparisonBlock.d.ts +1 -1
- package/dist/blocks/data/ComparisonBlock.js +40 -40
- package/dist/blocks/data/ComparisonBlock.js.map +1 -1
- package/dist/blocks/data/StatsBlock.d.ts +1 -1
- package/dist/blocks/data/StatsBlock.js +42 -44
- package/dist/blocks/data/StatsBlock.js.map +1 -1
- package/dist/blocks/data/index.d.ts +2 -2
- package/dist/blocks/data/index.js +2 -2
- package/dist/blocks/index.d.ts +5 -5
- package/dist/blocks/index.js +29 -30
- package/dist/blocks/index.js.map +1 -1
- package/dist/blocks/interactive/ChecklistBlock.d.ts +1 -1
- package/dist/blocks/interactive/ChecklistBlock.js +60 -60
- package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
- package/dist/blocks/interactive/RatingBlock.d.ts +1 -1
- package/dist/blocks/interactive/RatingBlock.js +73 -65
- package/dist/blocks/interactive/RatingBlock.js.map +1 -1
- package/dist/blocks/interactive/index.d.ts +2 -2
- package/dist/blocks/interactive/index.js +2 -2
- package/dist/blocks/notification/NotificationBlock.d.ts +2 -2
- package/dist/blocks/notification/NotificationBlock.js +68 -64
- package/dist/blocks/notification/NotificationBlock.js.map +1 -1
- package/dist/blocks/notification/index.d.ts +1 -1
- package/dist/blocks/notification/index.js +1 -1
- package/dist/bootstrap.d.ts +32 -8
- package/dist/bootstrap.js +218 -102
- package/dist/bootstrap.js.map +1 -1
- package/dist/components/ShadowCanvasOverlay.d.ts +6 -6
- package/dist/components/ShadowCanvasOverlay.js +156 -118
- package/dist/components/ShadowCanvasOverlay.js.map +1 -1
- package/dist/components/TileCard.d.ts +5 -5
- package/dist/components/TileCard.js +205 -154
- package/dist/components/TileCard.js.map +1 -1
- package/dist/components/TileWheel.d.ts +3 -3
- package/dist/components/TileWheel.js +29 -7
- package/dist/components/TileWheel.js.map +1 -1
- package/dist/config-validator.d.ts +49 -0
- package/dist/config-validator.js +173 -0
- package/dist/config-validator.js.map +1 -0
- package/dist/configFetcher.d.ts +7 -3
- package/dist/configFetcher.js +70 -29
- package/dist/configFetcher.js.map +1 -1
- package/dist/context/ContextManager.d.ts +3 -3
- package/dist/context/ContextManager.js +19 -18
- package/dist/context/ContextManager.js.map +1 -1
- package/dist/context/index.d.ts +4 -4
- package/dist/context/index.js +3 -3
- package/dist/context/schema.d.ts +9 -9
- package/dist/context/schema.js +2 -2
- package/dist/context/schema.js.map +1 -1
- package/dist/decisions/engine.d.ts +5 -5
- package/dist/decisions/engine.js +13 -13
- package/dist/decisions/engine.js.map +1 -1
- package/dist/decisions/index.d.ts +6 -6
- package/dist/decisions/index.js +5 -5
- package/dist/decisions/schema.d.ts +131 -131
- package/dist/decisions/schema.js +21 -21
- package/dist/decisions/schema.js.map +1 -1
- package/dist/decisions/strategies/rules.d.ts +1 -1
- package/dist/decisions/strategies/rules.js +24 -24
- package/dist/decisions/strategies/rules.js.map +1 -1
- package/dist/decisions/strategies/score.d.ts +1 -1
- package/dist/decisions/strategies/score.js +3 -3
- package/dist/decisions/types.d.ts +19 -19
- package/dist/earlyPatcher.d.ts +8 -20
- package/dist/earlyPatcher.js +13 -62
- package/dist/earlyPatcher.js.map +1 -1
- package/dist/editorLoader.d.ts +19 -7
- package/dist/editorLoader.js +154 -97
- package/dist/editorLoader.js.map +1 -1
- package/dist/events/EventBus.d.ts +3 -3
- package/dist/events/EventBus.js +5 -7
- package/dist/events/EventBus.js.map +1 -1
- package/dist/events/index.d.ts +6 -6
- package/dist/events/index.js +5 -5
- package/dist/events/normalizers/canvas.d.ts +2 -2
- package/dist/events/normalizers/canvas.js +3 -3
- package/dist/events/normalizers/canvas.js.map +1 -1
- package/dist/events/normalizers/posthog.d.ts +25 -1
- package/dist/events/normalizers/posthog.js +35 -27
- package/dist/events/normalizers/posthog.js.map +1 -1
- package/dist/events/schema.d.ts +13 -13
- package/dist/events/schema.js +3 -3
- package/dist/events/schema.js.map +1 -1
- package/dist/events/types.d.ts +7 -1
- package/dist/events/types.js +29 -21
- package/dist/events/types.js.map +1 -1
- package/dist/experiments/adapters/growthbook.d.ts +5 -4
- package/dist/experiments/adapters/growthbook.js +14 -6
- package/dist/experiments/adapters/growthbook.js.map +1 -1
- package/dist/experiments/index.d.ts +3 -3
- package/dist/experiments/index.js +1 -1
- package/dist/experiments/registry.d.ts +2 -2
- package/dist/experiments/registry.js +2 -2
- package/dist/experiments/types.d.ts +10 -1
- package/dist/fetchers/cdnFetcher.d.ts +1 -1
- package/dist/fetchers/cdnFetcher.js +4 -8
- package/dist/fetchers/cdnFetcher.js.map +1 -1
- package/dist/fetchers/experimentsFetcher.d.ts +25 -3
- package/dist/fetchers/experimentsFetcher.js +55 -8
- package/dist/fetchers/experimentsFetcher.js.map +1 -1
- package/dist/fetchers/index.d.ts +3 -3
- package/dist/fetchers/index.js +2 -2
- package/dist/fetchers/index.js.map +1 -1
- package/dist/fetchers/mergeConfigs.d.ts +29 -0
- package/dist/fetchers/mergeConfigs.js +38 -0
- package/dist/fetchers/mergeConfigs.js.map +1 -0
- package/dist/fetchers/registry.d.ts +1 -1
- package/dist/fetchers/registry.js +4 -4
- package/dist/fetchers/types.d.ts +1 -1
- package/dist/hooks/useCanvasOverlays.d.ts +8 -5
- package/dist/hooks/useCanvasOverlays.js +66 -17
- package/dist/hooks/useCanvasOverlays.js.map +1 -1
- package/dist/hooks/useHostPatches.d.ts +2 -2
- package/dist/hooks/useHostPatches.js +8 -8
- package/dist/hooks/useHostPatches.js.map +1 -1
- package/dist/hooks/useShadowCanvasConfig.d.ts +5 -9
- package/dist/hooks/useShadowCanvasConfig.js +7 -5
- package/dist/hooks/useShadowCanvasConfig.js.map +1 -1
- package/dist/hostPatcher/core/patcher.d.ts +1 -1
- package/dist/hostPatcher/core/patcher.js +18 -9
- package/dist/hostPatcher/core/patcher.js.map +1 -1
- package/dist/hostPatcher/core/sanitizer.js +24 -3
- package/dist/hostPatcher/core/sanitizer.js.map +1 -1
- package/dist/hostPatcher/policy/defaultPolicy.js +15 -5
- package/dist/hostPatcher/policy/defaultPolicy.js.map +1 -1
- package/dist/hostPatcher/utils/anchors.js +4 -6
- package/dist/hostPatcher/utils/anchors.js.map +1 -1
- package/dist/index.d.ts +34 -27
- package/dist/index.js +51 -24
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +29 -0
- package/dist/logger.js +81 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics/index.d.ts +1 -1
- package/dist/metrics/index.js +1 -1
- package/dist/metrics/sessionMetrics.d.ts +1 -1
- package/dist/metrics/sessionMetrics.js +6 -6
- package/dist/overlays/fetcher.d.ts +2 -2
- package/dist/overlays/fetcher.js +13 -15
- package/dist/overlays/fetcher.js.map +1 -1
- package/dist/overlays/recipeRegistry.js +2 -2
- package/dist/overlays/recipeRegistry.js.map +1 -1
- package/dist/overlays/runtime/anchor/resolve.js +1 -1
- package/dist/overlays/runtime/anchor/resolve.js.map +1 -1
- package/dist/overlays/runtime/index.d.ts +7 -7
- package/dist/overlays/runtime/index.js +7 -7
- package/dist/overlays/runtime/overlay/highlight.js +39 -39
- package/dist/overlays/runtime/overlay/highlight.js.map +1 -1
- package/dist/overlays/runtime/overlay/modal.js +5 -5
- package/dist/overlays/runtime/overlay/modal.js.map +1 -1
- package/dist/overlays/runtime/overlay/root.js +1 -1
- package/dist/overlays/runtime/overlay/runner.js +88 -28
- package/dist/overlays/runtime/overlay/runner.js.map +1 -1
- package/dist/overlays/runtime/overlay/tooltip.d.ts +1 -1
- package/dist/overlays/runtime/overlay/tooltip.js +13 -15
- package/dist/overlays/runtime/overlay/tooltip.js.map +1 -1
- package/dist/overlays/runtime/utils/dom.js +4 -1
- package/dist/overlays/runtime/utils/dom.js.map +1 -1
- package/dist/overlays/schema.d.ts +146 -146
- package/dist/overlays/schema.js +12 -8
- package/dist/overlays/schema.js.map +1 -1
- package/dist/react.d.ts +7 -7
- package/dist/react.js +4 -4
- package/dist/react.js.map +1 -1
- package/dist/render/RenderContext.d.ts +2 -2
- package/dist/render/RenderContext.js +5 -5
- package/dist/render/RenderContext.js.map +1 -1
- package/dist/render/index.d.ts +3 -3
- package/dist/render/index.js +1 -1
- package/dist/render/types.d.ts +4 -4
- package/dist/runtime.d.ts +32 -8
- package/dist/runtime.js +109 -13
- package/dist/runtime.js.map +1 -1
- package/dist/smart-canvas.esm.js +144 -55
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +14688 -11455
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +145 -55
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/state/StateStore.d.ts +1 -7
- package/dist/state/StateStore.js +15 -9
- package/dist/state/StateStore.js.map +1 -1
- package/dist/state/helpers/cooldowns.d.ts +1 -1
- package/dist/state/helpers/cooldowns.js +1 -1
- package/dist/state/helpers/dismissals.d.ts +1 -1
- package/dist/state/helpers/dismissals.js +1 -1
- package/dist/state/helpers/frequency.d.ts +1 -1
- package/dist/state/helpers/frequency.js +1 -1
- package/dist/state/index.d.ts +4 -4
- package/dist/state/index.js +3 -3
- package/dist/state/schema.d.ts +1 -1
- package/dist/state/schema.js +1 -1
- package/dist/store/example.d.ts +1 -0
- package/dist/store/example.js +43 -0
- package/dist/store/example.js.map +1 -0
- package/dist/store/mini-effector.d.ts +46 -0
- package/dist/store/mini-effector.js +88 -0
- package/dist/store/mini-effector.js.map +1 -0
- package/dist/surfaces/Surfaces.d.ts +11 -0
- package/dist/surfaces/Surfaces.js +361 -0
- package/dist/surfaces/Surfaces.js.map +1 -0
- package/dist/surfaces/index.d.ts +9 -0
- package/dist/surfaces/index.js +12 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/positioning.d.ts +50 -0
- package/dist/surfaces/positioning.js +228 -0
- package/dist/surfaces/positioning.js.map +1 -0
- package/dist/surfaces/types.d.ts +167 -0
- package/dist/surfaces/types.js +23 -0
- package/dist/surfaces/types.js.map +1 -0
- package/dist/telemetry/adapters/noop.d.ts +12 -0
- package/dist/telemetry/adapters/noop.js +42 -0
- package/dist/telemetry/adapters/noop.js.map +1 -0
- package/dist/telemetry/adapters/posthog.d.ts +8 -2
- package/dist/telemetry/adapters/posthog.js +36 -14
- package/dist/telemetry/adapters/posthog.js.map +1 -1
- package/dist/telemetry/index.d.ts +4 -3
- package/dist/telemetry/index.js +3 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/registry.d.ts +2 -9
- package/dist/telemetry/registry.js +4 -2
- package/dist/telemetry/registry.js.map +1 -1
- package/dist/telemetry/types.d.ts +1 -1
- package/dist/theme/ThemeProvider.d.ts +2 -2
- package/dist/theme/ThemeProvider.js +21 -21
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/defaultTheme.d.ts +4 -5
- package/dist/theme/defaultTheme.js +127 -118
- package/dist/theme/defaultTheme.js.map +1 -1
- package/dist/theme/extractHostTheme.d.ts +1 -1
- package/dist/theme/extractHostTheme.js +43 -45
- package/dist/theme/extractHostTheme.js.map +1 -1
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.js +3 -3
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/types.d.ts +2 -2
- package/dist/token.d.ts +2 -0
- package/dist/token.js +3 -6
- package/dist/token.js.map +1 -1
- package/dist/types-only.d.ts +32 -0
- package/dist/types-only.js +11 -0
- package/dist/types-only.js.map +1 -0
- package/dist/types.d.ts +89 -56
- package/dist/types.js +14 -2
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +13 -0
- package/dist/version.js +14 -0
- package/dist/version.js.map +1 -0
- package/dist/widgets/WidgetRegistry.d.ts +145 -0
- package/dist/widgets/WidgetRegistry.js +191 -0
- package/dist/widgets/WidgetRegistry.js.map +1 -0
- package/dist/widgets/index.d.ts +7 -0
- package/dist/widgets/index.js +7 -0
- package/dist/widgets/index.js.map +1 -0
- package/package.json +35 -15
- package/schema/canvas-config.schema.json +488 -254
- package/schema/runtime-context.schema.json +1 -5
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var H=globalThis.__SYNTRO_REACT__||{};var rt=H.useState,Bt=H.useEffect,$n=H.useMemo,tt=H.useCallback,Ct=H.useRef,Pn=H.useContext,Mn=H.useReducer,Hn=H.createElement,Bn=H.createContext,zn=H.Fragment,Dn=H.forwardRef,Fn=H.memo,Nn=H.lazy,Wn=H.Suspense,_n=H.Children,Vn=H.isValidElement,jn=H.cloneElement,Kn=H.Component,qn=H.PureComponent,Xn=H.useLayoutEffect,Yn=H.useId;function At(t){if(!t)return"(no target)";if(t.startsWith("#"))return Kt(t.slice(1),50);let e=t.match(/\[data-testid="([^"]+)"\]/);return e?`${e[1]} element`:Kt(t,50)}function Kt(t,e){return t.length<=e?t:`${t.slice(0,e)}...`}function qt(t,e){return t.length<=e?`"${t}"`:`"${t.slice(0,e)}..."`}function zt(t,e){switch(t){case"tooltips":{let n=e.anchorId||"",o=At(n),r=e.content?.body||"";return`Tooltip on ${o}: ${qt(r,40)}`}case"highlights":{let n=e.anchorId||"";return`Highlight ${At(n)}`}case"badges":{let n=e.anchorId||"",o=At(n);return`Badge "${e.content||""}" on ${o}`}case"pulses":{let n=e.anchorId||"";return`Pulse on ${At(n)}`}case"modals":{let n=e.content,o=n?.title||n?.body||"";return`Modal: ${qt(o,40)}`}case"tours":{let n=e.tourId||"unknown",i=(e.steps||[]).length;return`Tour: ${n} (${i} ${i===1?"step":"steps"})`}default:return"Unknown overlay"}}function Xt(){return globalThis.__SYNTRO_REACT__}function Yt(t,e,n){var o=Xt(),i=e||{},r=i.children;return delete i.children,n!==void 0&&(i.key=n),Array.isArray(r)?o.createElement.apply(null,[t,i].concat(r)):r!==void 0?o.createElement(t,i,r):o.createElement(t,i)}var b=Yt,T=Yt,yt=(Xt()||{}).Fragment;function Dt(t,e){return`${t}:${e}`}var Jt=["tooltips","highlights","badges","pulses","modals"],Ut={tooltips:"\u{1F4AC}",highlights:"\u2728",badges:"\u{1F3F7}\uFE0F",pulses:"\u{1F4AB}",modals:"\u{1F4E6}",tours:"\u{1F3AF}"},y={container:{display:"flex",flexDirection:"column",height:"100%",fontFamily:"system-ui, -apple-system, sans-serif"},header:{padding:"16px",borderBottom:"1px solid #334155",display:"flex",alignItems:"center",gap:"12px"},backButton:{padding:"6px 12px",borderRadius:"6px",border:"none",backgroundColor:"rgba(255,255,255,0.05)",color:"#94a3b8",fontSize:"13px",cursor:"pointer"},title:{margin:0,fontSize:"15px",fontWeight:600,color:"#f8fafc"},subtitle:{margin:"2px 0 0 0",fontSize:"11px",color:"#64748b"},body:{flex:1,overflow:"auto",padding:"16px"},groupHeader:{fontSize:"11px",fontWeight:700,color:"#64748b",textTransform:"uppercase",letterSpacing:"0.06em",padding:"4px 0 8px 0",display:"flex",alignItems:"center",justifyContent:"space-between"},groupCount:{fontSize:"10px",color:"#475569",backgroundColor:"rgba(255,255,255,0.06)",padding:"2px 6px",borderRadius:"8px"},card:{display:"flex",alignItems:"center",gap:"8px",padding:"8px 10px",borderRadius:"6px",border:"1px solid rgba(255,255,255,0.06)",background:"rgba(255,255,255,0.02)",marginBottom:"4px",cursor:"pointer",fontSize:"13px",color:"#e2e8f0"},cardIcon:{fontSize:"13px",flexShrink:0},cardText:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},dismissButton:{padding:"2px 6px",borderRadius:"4px",border:"none",background:"transparent",color:"#64748b",fontSize:"14px",cursor:"pointer",flexShrink:0,lineHeight:1},dismissedSection:{marginTop:"16px",cursor:"pointer",userSelect:"none"},dismissedHeader:{fontSize:"11px",fontWeight:600,color:"#475569",display:"flex",alignItems:"center",gap:"6px"},dismissedCard:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 10px",borderRadius:"6px",border:"1px solid rgba(255,255,255,0.03)",background:"transparent",marginBottom:"3px",cursor:"pointer",fontSize:"12px",color:"#475569",opacity:.6},emptyState:{textAlign:"center",padding:"32px 16px",color:"#64748b",fontSize:"13px"},footer:{padding:"12px 16px",borderTop:"1px solid #334155",display:"flex",gap:"8px"},saveButton:{flex:1,padding:"10px",borderRadius:"8px",border:"none",background:"rgba(59, 130, 246, 0.15)",color:"#3b82f6",fontSize:"13px",fontWeight:600,cursor:"pointer"},publishButton:{flex:1,padding:"10px",borderRadius:"8px",border:"none",background:"#22c55e",color:"white",fontSize:"13px",fontWeight:600,cursor:"pointer"},tourDrillIn:{padding:"12px",borderRadius:"8px",border:"1px solid rgba(255,255,255,0.08)",background:"rgba(255,255,255,0.02)",marginTop:"4px",marginBottom:"8px"},tourDrillInHeader:{fontSize:"13px",fontWeight:600,color:"#e2e8f0",marginBottom:"8px"},stepRow:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"4px",border:"1px solid rgba(255,255,255,0.04)",marginBottom:"4px",fontSize:"12px",color:"#d1d5db"},stepNumber:{fontSize:"11px",fontWeight:700,color:"#64748b",minWidth:"18px"},stepInfo:{flex:1,overflow:"hidden"},stepRoute:{fontSize:"10px",color:"#64748b",fontFamily:"monospace"},checkbox:{display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:"#d1d5db",marginBottom:"8px"},backToListButton:{padding:"4px 10px",borderRadius:"4px",border:"1px solid rgba(255,255,255,0.1)",background:"transparent",color:"#94a3b8",fontSize:"11px",cursor:"pointer",marginTop:"8px"},editForm:{padding:"4px 0"},editHeader:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px",fontSize:"13px",fontWeight:600,color:"#e2e8f0"},editTarget:{fontSize:"11px",fontFamily:"monospace",color:"#94a3b8",padding:"4px 8px",background:"rgba(255,255,255,0.04)",borderRadius:"4px",marginBottom:"12px"},editLabel:{fontSize:"11px",fontWeight:600,color:"#64748b",marginBottom:"4px",display:"block"},editInput:{width:"100%",padding:"6px 8px",borderRadius:"4px",border:"1px solid rgba(255,255,255,0.1)",background:"rgba(255,255,255,0.04)",color:"#e2e8f0",fontSize:"12px",fontFamily:"inherit",marginBottom:"8px",boxSizing:"border-box"},editTextarea:{width:"100%",padding:"6px 8px",borderRadius:"4px",border:"1px solid rgba(255,255,255,0.1)",background:"rgba(255,255,255,0.04)",color:"#e2e8f0",fontSize:"12px",fontFamily:"inherit",marginBottom:"8px",resize:"vertical",minHeight:"60px",boxSizing:"border-box"},editSelect:{width:"100%",padding:"6px 8px",borderRadius:"4px",border:"1px solid rgba(255,255,255,0.1)",background:"rgba(255,255,255,0.04)",color:"#e2e8f0",fontSize:"12px",marginBottom:"8px"},editBackButton:{padding:"6px 12px",borderRadius:"6px",border:"1px solid rgba(255,255,255,0.1)",background:"transparent",color:"#94a3b8",fontSize:"12px",cursor:"pointer",marginTop:"8px"}};function Zt(t){let e=[];for(let o of Jt)(t[o]||[]).forEach((r,s)=>{let a=r;e.push({key:Dt(o,s),section:o,index:s,icon:Ut[o],summary:zt(o,a),anchorId:a.anchorId||"",isTour:!1})});return(t.tours||[]).forEach((o,i)=>{e.push({key:Dt("tours",i),section:"tours",index:i,icon:Ut.tours,summary:zt("tours",o),anchorId:"",isTour:!0})}),e}function Gt(t,e){let n={...t},o=[...Jt,"tours"];for(let i of o){let s=(t[i]||[]).filter((a,l)=>!e.has(Dt(i,l)));(s.length>0||t[i]!==void 0)&&(n[i]=s)}return n}function We(t){let n=t.action.kind||"";return n.includes("tooltip")?"\u{1F4AC}":n.includes("highlight")?"\u2728":n.includes("modal")?"\u{1F4E6}":n.includes("badge")?"\u{1F3F7}\uFE0F":n.includes("pulse")?"\u{1F4AB}":"\u25CF"}function _e(t){let e=t.action,n=e.anchorId;if(n)return n;let o=e.content;return o?.title?o.title:o?.body?o.body.slice(0,30):t.id}function Ve(t,e){let[n,o]=rt(new Map),i=Ct(t),r=Ct(e);return i.current=t,r.current=e,Bt(()=>{let s=()=>{let l=new Map;for(let c of i.current){let p=c.anchorId;if(c.isTour&&!p){let g=(r.current.tours||[])[c.index];g&&g.steps.length>0&&(p=g.steps[0].action.anchorId||"")}if(!p){l.set(c.key,{found:!1,element:null});continue}try{let f=document.querySelector(p);l.set(c.key,{found:f!==null,element:f})}catch{l.set(c.key,{found:!1,element:null})}}o(l)};s();let a=setInterval(s,2e3);return()=>clearInterval(a)},[]),n}function je({found:t}){return b("span",{style:{width:"8px",height:"8px",borderRadius:"50%",backgroundColor:t?"#22c55e":"#475569",flexShrink:0,display:"inline-block"},title:t?"Found on this page":"Not found on this page"})}function Ke(t){let[e,n]=t.split(":");return{section:e,index:Number(n)}}function qe({config:t,onChange:e,editor:n}){let o=t,[i,r]=rt(new Set),[s,a]=rt(!1),[l,c]=rt(null),[p,f]=rt(null),[g,d]=rt("after"),x=Ct(!1);Bt(()=>{if(n.initialEditKey!=null&&!x.current){x.current=!0;let m=Zt(o),R=Number(n.initialEditKey);if(R>=0&&R<m.length){let P=m[R];P.isTour?c(P.key):(f(P.key),P.anchorId&&n.highlightElement(P.anchorId))}n.clearInitialState?.()}else n.initialCreate&&!x.current&&(x.current=!0,n.clearInitialState?.())},[n,o]);let v=Zt(o),w=v.filter(m=>!i.has(m.key)),u=v.filter(m=>i.has(m.key)),h=w.filter(m=>!m.isTour),k=w.filter(m=>m.isTour),S=w.length,[E,O]=rt(null),M=Ve(v,o),W=w.filter(m=>M.get(m.key)?.found).length,L=tt(m=>{r(R=>{let P=new Set(R);return P.add(m),P}),l===m&&c(null),p===m&&f(null)},[l,p]),C=tt(m=>{r(R=>{let P=new Set(R);return P.delete(m),P})},[]),$=tt(m=>{m.isTour?c(R=>R===m.key?null:m.key):(m.anchorId&&n.highlightElement(m.anchorId),f(m.key))},[n]),B=tt(()=>{f(null),d("after"),n.previewConfig(t),n.clearHighlight()},[n,t]),z=tt(m=>{if(d(m),m==="before"){let R=Gt(o,new Set([p]));n.previewConfig(R)}else n.previewConfig(t)},[o,p,n,t]),I=tt((m,R,P)=>{let F=(o[m]||[]).slice(),et={...F[R]};F[R]=P(et);let K={...o,[m]:F};e(K),n.setDirty(!0)},[o,e,n]),_=tt(()=>{if(i.size>0){let m=Gt(o,i);e(m)}n.publish()},[i,o,e,n]),A=tt(m=>{O(m.key),m.anchorId&&n.highlightElement(m.anchorId)},[n]),D=tt(()=>{O(null),n.clearHighlight()},[n]),N=(m,R)=>{let F=(o[m]||[])[R];if(!F)return null;let et=F.anchorId||"";switch(m){case"tooltips":{let K=F.content||{};return T("div",{style:y.editForm,children:[b("div",{style:y.editTarget,children:et}),b("label",{style:y.editLabel,children:"Title"}),b("input",{style:y.editInput,value:K.title||"",onChange:V=>I(m,R,U=>({...U,content:{...U.content,title:V.target.value}}))}),b("label",{style:y.editLabel,children:"Body"}),b("textarea",{style:y.editTextarea,value:K.body||"",onChange:V=>I(m,R,U=>({...U,content:{...U.content,body:V.target.value}}))})]})}case"highlights":return T("div",{style:y.editForm,children:[b("div",{style:y.editTarget,children:et}),b("label",{style:y.editLabel,children:"Color"}),b("input",{style:y.editInput,value:F.style?.color||"",onChange:K=>I(m,R,V=>({...V,style:{...V.style||{},color:K.target.value}}))})]});case"badges":return T("div",{style:y.editForm,children:[b("div",{style:y.editTarget,children:et}),b("label",{style:y.editLabel,children:"Content"}),b("input",{style:y.editInput,value:F.content||"",onChange:K=>I(m,R,V=>({...V,content:K.target.value}))})]});case"pulses":return T("div",{style:y.editForm,children:[b("div",{style:y.editTarget,children:et}),b("label",{style:y.editLabel,children:"Duration (ms)"}),b("input",{style:y.editInput,type:"number",value:F.duration||"",onChange:K=>I(m,R,V=>({...V,duration:Number(K.target.value)||void 0}))})]});case"modals":{let K=F.content||{};return T("div",{style:y.editForm,children:[b("label",{style:y.editLabel,children:"Title"}),b("input",{style:y.editInput,value:K.title||"",onChange:V=>I(m,R,U=>({...U,content:{...U.content,title:V.target.value}}))}),b("label",{style:y.editLabel,children:"Body"}),b("textarea",{style:y.editTextarea,value:K.body||"",onChange:V=>I(m,R,U=>({...U,content:{...U.content,body:V.target.value}}))})]})}default:return null}},Q=m=>{let P=(o.tours||[])[m];return P?T("div",{style:y.tourDrillIn,children:[T("div",{style:y.tourDrillInHeader,children:["\u{1F3AF}"," Tour: ",P.tourId]}),T("label",{style:y.checkbox,children:[b("input",{type:"checkbox",checked:P.autoStart||!1,readOnly:!0}),"Auto-start tour"]}),P.steps.map((F,et)=>T("div",{style:y.stepRow,children:[T("span",{style:y.stepNumber,children:[et+1,"."]}),b("span",{children:We(F)}),T("div",{style:y.stepInfo,children:[b("div",{children:_e(F)}),F.route&&b("div",{style:y.stepRoute,children:F.route})]})]},F.id||et)),P.steps.length===0&&b("div",{style:{fontSize:"12px",color:"#64748b",padding:"8px 0"},children:"No steps in this tour."}),b("button",{style:y.backToListButton,onClick:()=>c(null),children:"\u2190 Back to list"})]}):null},St=m=>{let R=M.get(m.key);return T("div",{"data-item-key":m.key,children:[T("div",{style:y.card,onMouseEnter:()=>A(m),onMouseLeave:D,children:[b(je,{found:R?.found??!1}),b("span",{style:y.cardIcon,onClick:P=>{P.stopPropagation(),$(m)},children:m.icon}),b("span",{style:y.cardText,onClick:()=>$(m),children:m.summary}),b("button",{style:y.dismissButton,onClick:P=>{P.stopPropagation(),L(m.key)},title:"Dismiss",children:"\xD7"})]}),m.isTour&&l===m.key&&Q(m.index)]},m.key)};return T("div",{style:y.container,children:[T("div",{style:y.header,children:[b("button",{onClick:()=>n.navigateHome(),style:y.backButton,children:"\u2190 Back"}),T("div",{children:[b("h2",{style:y.title,children:"Review Changes"}),T("p",{style:y.subtitle,children:[S," item",S!==1?"s":"",S>0&&` (${W} found on this page)`]})]})]}),b("div",{style:y.body,children:p!==null?(()=>{let m=Ke(p),R=v.find(P=>P.key===p);return T(yt,{children:[T("div",{style:y.editHeader,children:[b("span",{children:R?.icon}),b("span",{children:R?.summary})]}),T("div",{style:{display:"flex",gap:"0",marginBottom:"12px",borderRadius:"6px",overflow:"hidden",border:"1px solid rgba(255,255,255,0.1)"},children:[b("button",{onClick:()=>z("before"),style:{flex:1,padding:"6px 12px",border:"none",fontSize:"12px",fontWeight:600,cursor:"pointer",background:g==="before"?"rgba(59,130,246,0.2)":"transparent",color:g==="before"?"#3b82f6":"#64748b"},children:"Before"}),b("button",{onClick:()=>z("after"),style:{flex:1,padding:"6px 12px",border:"none",borderLeft:"1px solid rgba(255,255,255,0.1)",fontSize:"12px",fontWeight:600,cursor:"pointer",background:g==="after"?"rgba(59,130,246,0.2)":"transparent",color:g==="after"?"#3b82f6":"#64748b"},children:"After"})]}),N(m.section,m.index),b("button",{style:y.editBackButton,onClick:B,children:"\u2190 List"})]})})():T(yt,{children:[v.length===0&&b("div",{style:y.emptyState,children:"No overlays configured."}),h.length>0&&T(yt,{children:[T("div",{style:y.groupHeader,children:[b("span",{children:"OVERLAYS"}),b("span",{style:y.groupCount,children:h.length})]}),h.map(St)]}),k.length>0&&T(yt,{children:[T("div",{style:{...y.groupHeader,marginTop:h.length>0?"16px":"0"},children:[b("span",{children:"TOURS"}),b("span",{style:y.groupCount,children:k.length})]}),k.map(St)]}),u.length>0&&T("div",{style:y.dismissedSection,children:[T("div",{style:{...y.dismissedHeader,cursor:"pointer"},onClick:()=>a(!s),children:[b("span",{children:s?"\u25BE":"\u25B8"}),T("span",{children:["Dismissed (",u.length,")"]})]}),s&&b("div",{style:{marginTop:"6px"},children:u.map(m=>T("div",{style:y.dismissedCard,children:[b("span",{style:y.cardIcon,children:m.icon}),b("span",{style:{...y.cardText,textDecoration:"line-through"},children:m.summary}),b("button",{style:{...y.dismissButton,color:"#3b82f6",fontSize:"11px"},onClick:R=>{R.stopPropagation(),C(m.key)},children:"Restore"})]},m.key))})]})]})}),T("div",{style:y.footer,children:[b("button",{onClick:()=>n.save(),style:y.saveButton,children:"Save Draft"}),b("button",{onClick:_,style:y.publishButton,children:"Publish"})]})]})}var Ft={panel:{title:"Overlays",icon:"\u{1F4AC}",description:"Tooltips, highlights, and visual overlays"},component:qe},eo=Ft.panel;var Qt=typeof CSS<"u"&&CSS.supports?.("clip-path","path('M0 0 H1 V1 Z')");function te(t,e,n){let o=n?.paddingPx??12,i=n?.radiusPx??12,r=Math.min(Math.max(n?.scrimOpacity??.55,0),1),s=n?.ringColor??"var(--syntro-ring, #5b8cff)",a=n?.blocking??!1,l=n?.onClickOutside??!0,c=n?.onEsc??!0,p=getComputedStyle(document.documentElement),f=p.getPropertyValue("--syntro-spotlight-backdrop").trim(),g=p.getPropertyValue("--syntro-ring").trim(),d=document.createElement("div");d.className="syntro-spotlight-scrim";let x=a||l;Object.assign(d.style,{position:"fixed",inset:"0",zIndex:"2147483646",pointerEvents:x?"auto":"none",background:f||`rgba(2, 6, 23, ${r})`,transition:"opacity 220ms ease",opacity:"0"}),e.appendChild(d),requestAnimationFrame(()=>d.style.opacity="1");let v=document.createElement("div");v.className="syntro-spotlight-ring",Object.assign(v.style,{position:"fixed",pointerEvents:"none",borderRadius:`${i}px`,border:`2px solid ${s||g||"#5b8cff"}`,boxShadow:"0 0 0 4px rgba(255,255,255,0.35)",zIndex:"2147483647",transition:"all 220ms cubic-bezier(0.16,1,0.3,1)"}),e.appendChild(v);let w=[];if(!Qt)for(let L=0;L<4;L++){let C=document.createElement("div");C.style.position="fixed",C.style.background="inherit",w.push(C),d.appendChild(C)}let u=L=>{d.style.clipPath=L,d.style.webkitClipPath=L},h=()=>{let L=t.getBoundingClientRect(),C=Math.max(0,L.left-o),$=Math.max(0,L.top-o),B=Math.min(window.innerWidth,L.width+o*2),z=Math.min(window.innerHeight,L.height+o*2);if(Object.assign(v.style,{left:`${C}px`,top:`${$}px`,width:`${B}px`,height:`${z}px`}),Qt){let I=window.innerWidth,_=window.innerHeight,A=Math.min(i,B/2,z/2),D=`M 0 0 L ${I} 0 L ${I} ${_} L 0 ${_} Z`,N=`M ${C+A} ${$} A ${A} ${A} 0 0 0 ${C} ${$+A} L ${C} ${$+z-A} A ${A} ${A} 0 0 0 ${C+A} ${$+z} L ${C+B-A} ${$+z} A ${A} ${A} 0 0 0 ${C+B} ${$+z-A} L ${C+B} ${$+A} A ${A} ${A} 0 0 0 ${C+B-A} ${$} L ${C+A} ${$} Z`;u(`path('${D} ${N}')`)}else{let[I,_,A,D]=w;Object.assign(I.style,{left:"0px",top:"0px",width:"100vw",height:`${$}px`}),Object.assign(A.style,{left:"0px",top:`${$+z}px`,width:"100vw",height:`${Math.max(0,window.innerHeight-($+z))}px`}),Object.assign(D.style,{left:"0px",top:`${$}px`,width:`${C}px`,height:`${z}px`}),Object.assign(_.style,{left:`${C+B}px`,top:`${$}px`,width:`${Math.max(0,window.innerWidth-(C+B))}px`,height:`${z}px`})}},k=new ResizeObserver(()=>requestAnimationFrame(h));k.observe(t);let S=()=>requestAnimationFrame(h),E=()=>requestAnimationFrame(h);window.addEventListener("scroll",S,!0),window.addEventListener("resize",E);let O=L=>{L.key==="Escape"&&c&&W.destroy()};c&&window.addEventListener("keydown",O);let M=L=>{a?(L.preventDefault(),L.stopPropagation()):l&&W.destroy()};d.addEventListener("click",M);let W={destroy(){k.disconnect(),window.removeEventListener("scroll",S,!0),window.removeEventListener("resize",E),c&&window.removeEventListener("keydown",O),d.removeEventListener("click",M),d.style.opacity="0",setTimeout(()=>{d.remove(),v.remove()},220)}};return h(),W}var Xe=new Set(["b","strong","i","em","u","span","div","p","br","ul","ol","li","code","pre","small","sup","sub","a","button"]);function q(t){if(typeof window.Sanitizer=="function")try{let a=new window.Sanitizer({}).sanitizeToFragment(t),l=document.createElement("div");return l.append(a),l.innerHTML}catch{}let n=document.createElement("template");n.innerHTML=t;let o=n.content,i=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT,null),r=[];for(;i.nextNode();){let s=i.currentNode,a=s.tagName.toLowerCase();if(!Xe.has(a)){r.push(s);continue}for(let l of Array.from(s.attributes)){let c=l.name.toLowerCase(),p=l.value.trim().toLowerCase(),f=c.startsWith("on"),g=(c==="href"||c==="src")&&p.startsWith("javascript:");(f||g)&&s.removeAttribute(l.name)}}for(let s of r){for(;s.firstChild;)s.parentNode?.insertBefore(s.firstChild,s);s.remove()}return n.innerHTML}var ee=async(t,e)=>{let{content:n,size:o="md",blocking:i=!1,scrim:r,dismiss:s,ctaButtons:a}=t,l=document.createElement("div");l.className="syntro-modal-scrim",l.style.cssText=`
|
|
2
|
+
position: fixed;
|
|
3
|
+
inset: 0;
|
|
4
|
+
background: rgba(0, 0, 0, ${r?.opacity??.6});
|
|
5
|
+
z-index: 2147483645;
|
|
6
|
+
opacity: 0;
|
|
7
|
+
transition: opacity 200ms ease-out;
|
|
8
|
+
`,e.overlayRoot.appendChild(l);let c=document.createElement("div");c.className=`syntro-modal syntro-modal-${o}`,c.setAttribute("role","dialog"),c.setAttribute("aria-modal","true");let p={sm:"360px",md:"480px",lg:"640px"};c.style.cssText=`
|
|
9
|
+
position: fixed;
|
|
10
|
+
top: 50%;
|
|
11
|
+
left: 50%;
|
|
12
|
+
transform: translate(-50%, -50%) scale(0.95);
|
|
13
|
+
max-width: ${p[o]};
|
|
14
|
+
width: 90%;
|
|
15
|
+
background: white;
|
|
16
|
+
border-radius: 12px;
|
|
17
|
+
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
|
18
|
+
z-index: 2147483646;
|
|
19
|
+
opacity: 0;
|
|
20
|
+
transition: opacity 200ms ease-out, transform 200ms ease-out;
|
|
21
|
+
padding: 24px;
|
|
22
|
+
`;let f="";if(n.title&&(f+=`<h2 class="syntro-modal-title" style="margin: 0 0 12px 0; font-size: 18px; font-weight: 600; color: #111827;">${q(n.title)}</h2>`),f+=`<div class="syntro-modal-body" style="color: #4b5563; line-height: 1.5;">${q(n.body)}</div>`,s?.closeButton!==!1&&(f+=`
|
|
23
|
+
<button class="syntro-modal-close" data-syntro-action="dismiss" style="
|
|
24
|
+
position: absolute;
|
|
25
|
+
top: 16px;
|
|
26
|
+
right: 16px;
|
|
27
|
+
background: none;
|
|
28
|
+
border: none;
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
padding: 4px;
|
|
31
|
+
color: #6b7280;
|
|
32
|
+
" aria-label="Close">
|
|
33
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
|
|
34
|
+
<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/>
|
|
35
|
+
</svg>
|
|
36
|
+
</button>
|
|
37
|
+
`),a&&a.length>0){f+='<div class="syntro-modal-actions" style="display: flex; gap: 12px; margin-top: 24px; justify-content: flex-end;">';for(let E of a){let O=E.primary??!1;f+=`
|
|
38
|
+
<button
|
|
39
|
+
class="syntro-modal-btn ${O?"syntro-modal-btn-primary":""}"
|
|
40
|
+
data-syntro-action="${q(E.actionId)}"
|
|
41
|
+
style="
|
|
42
|
+
padding: 10px 20px;
|
|
43
|
+
border-radius: 8px;
|
|
44
|
+
font-size: 14px;
|
|
45
|
+
font-weight: 500;
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
transition: background 150ms ease;
|
|
48
|
+
${O?"background: #4f46e5; color: white; border: none;":"background: white; color: #374151; border: 1px solid #d1d5db;"}
|
|
49
|
+
"
|
|
50
|
+
>
|
|
51
|
+
${q(E.label)}
|
|
52
|
+
</button>
|
|
53
|
+
`}f+="</div>"}c.innerHTML=f,e.overlayRoot.appendChild(c);let g=null,d=c.querySelectorAll("[data-syntro-action]"),x=E=>{let M=E.currentTarget.getAttribute("data-syntro-action");M&&(g=M,e.publishEvent("action.modal_cta_clicked",{actionId:M}),M==="dismiss"&&S.destroy())};d.forEach(E=>E.addEventListener("click",x));let v=E=>{E.key==="Escape"&&s?.onEsc!==!1&&S.destroy()};window.addEventListener("keydown",v);let w=()=>{i||S.destroy()};l.addEventListener("click",w);let u=[];i&&Array.from(document.body.children).forEach(E=>{E!==e.overlayRoot&&E.getAttribute("inert")===null&&!E.querySelector("[data-syntro-editor-panel]")&&!E.hasAttribute("data-syntro-editor-panel")&&(E.setAttribute("inert",""),u.push(E))});let h;s?.timeoutMs&&(h=setTimeout(()=>{S.destroy()},s.timeoutMs));let k=c.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');k.length>0&&requestAnimationFrame(()=>k[0].focus()),requestAnimationFrame(()=>{l.style.opacity="1",c.style.opacity="1",c.style.transform="translate(-50%, -50%) scale(1)"}),e.publishEvent("action.applied",{id:e.generateId(),kind:"overlays:modal",size:o,blocking:i});let S={destroy(){h&&clearTimeout(h),window.removeEventListener("keydown",v),l.removeEventListener("click",w),d.forEach(E=>E.removeEventListener("click",x)),u.forEach(E=>E.removeAttribute("inert")),c.style.opacity="0",c.style.transform="translate(-50%, -50%) scale(0.95)",l.style.opacity="0",setTimeout(()=>{c.remove(),l.remove()},200),e.publishEvent("action.modal_dismissed",{actionClicked:g})}};return{cleanup:()=>{S.destroy()}}};var ie=["top","right","bottom","left"];var st=Math.min,nt=Math.max,bt=Math.round,vt=Math.floor,Z=t=>({x:t,y:t}),Ye={left:"right",right:"left",bottom:"top",top:"bottom"},Ue={start:"end",end:"start"};function Tt(t,e,n){return nt(t,st(e,n))}function lt(t,e){return typeof t=="function"?t(e):t}function at(t){return t.split("-")[0]}function pt(t){return t.split("-")[1]}function Nt(t){return t==="x"?"y":"x"}function Ot(t){return t==="y"?"height":"width"}var Ze=new Set(["top","bottom"]);function ot(t){return Ze.has(at(t))?"y":"x"}function Lt(t){return Nt(ot(t))}function re(t,e,n){n===void 0&&(n=!1);let o=pt(t),i=Lt(t),r=Ot(i),s=i==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return e.reference[r]>e.floating[r]&&(s=xt(s)),[s,xt(s)]}function se(t){let e=xt(t);return[Rt(t),e,Rt(e)]}function Rt(t){return t.replace(/start|end/g,e=>Ue[e])}var ne=["left","right"],oe=["right","left"],Ge=["top","bottom"],Je=["bottom","top"];function Qe(t,e,n){switch(t){case"top":case"bottom":return n?e?oe:ne:e?ne:oe;case"left":case"right":return e?Ge:Je;default:return[]}}function ae(t,e,n,o){let i=pt(t),r=Qe(at(t),n==="start",o);return i&&(r=r.map(s=>s+"-"+i),e&&(r=r.concat(r.map(Rt)))),r}function xt(t){return t.replace(/left|right|bottom|top/g,e=>Ye[e])}function tn(t){return{top:0,right:0,bottom:0,left:0,...t}}function Wt(t){return typeof t!="number"?tn(t):{top:t,right:t,bottom:t,left:t}}function ct(t){let{x:e,y:n,width:o,height:i}=t;return{width:o,height:i,top:n,left:e,right:e+o,bottom:n+i,x:e,y:n}}function le(t,e,n){let{reference:o,floating:i}=t,r=ot(e),s=Lt(e),a=Ot(s),l=at(e),c=r==="y",p=o.x+o.width/2-i.width/2,f=o.y+o.height/2-i.height/2,g=o[a]/2-i[a]/2,d;switch(l){case"top":d={x:p,y:o.y-i.height};break;case"bottom":d={x:p,y:o.y+o.height};break;case"right":d={x:o.x+o.width,y:f};break;case"left":d={x:o.x-i.width,y:f};break;default:d={x:o.x,y:o.y}}switch(pt(e)){case"start":d[s]-=g*(n&&c?-1:1);break;case"end":d[s]+=g*(n&&c?-1:1);break}return d}async function ue(t,e){var n;e===void 0&&(e={});let{x:o,y:i,platform:r,rects:s,elements:a,strategy:l}=t,{boundary:c="clippingAncestors",rootBoundary:p="viewport",elementContext:f="floating",altBoundary:g=!1,padding:d=0}=lt(e,t),x=Wt(d),w=a[g?f==="floating"?"reference":"floating":f],u=ct(await r.getClippingRect({element:(n=await(r.isElement==null?void 0:r.isElement(w)))==null||n?w:w.contextElement||await(r.getDocumentElement==null?void 0:r.getDocumentElement(a.floating)),boundary:c,rootBoundary:p,strategy:l})),h=f==="floating"?{x:o,y:i,width:s.floating.width,height:s.floating.height}:s.reference,k=await(r.getOffsetParent==null?void 0:r.getOffsetParent(a.floating)),S=await(r.isElement==null?void 0:r.isElement(k))?await(r.getScale==null?void 0:r.getScale(k))||{x:1,y:1}:{x:1,y:1},E=ct(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:h,offsetParent:k,strategy:l}):h);return{top:(u.top-E.top+x.top)/S.y,bottom:(E.bottom-u.bottom+x.bottom)/S.y,left:(u.left-E.left+x.left)/S.x,right:(E.right-u.right+x.right)/S.x}}var fe=async(t,e,n)=>{let{placement:o="bottom",strategy:i="absolute",middleware:r=[],platform:s}=n,a=r.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(e)),c=await s.getElementRects({reference:t,floating:e,strategy:i}),{x:p,y:f}=le(c,o,l),g=o,d={},x=0;for(let w=0;w<a.length;w++){var v;let{name:u,fn:h}=a[w],{x:k,y:S,data:E,reset:O}=await h({x:p,y:f,initialPlacement:o,placement:g,strategy:i,middlewareData:d,rects:c,platform:{...s,detectOverflow:(v=s.detectOverflow)!=null?v:ue},elements:{reference:t,floating:e}});p=k??p,f=S??f,d={...d,[u]:{...d[u],...E}},O&&x<=50&&(x++,typeof O=="object"&&(O.placement&&(g=O.placement),O.rects&&(c=O.rects===!0?await s.getElementRects({reference:t,floating:e,strategy:i}):O.rects),{x:p,y:f}=le(c,g,l)),w=-1)}return{x:p,y:f,placement:g,strategy:i,middlewareData:d}},pe=t=>({name:"arrow",options:t,async fn(e){let{x:n,y:o,placement:i,rects:r,platform:s,elements:a,middlewareData:l}=e,{element:c,padding:p=0}=lt(t,e)||{};if(c==null)return{};let f=Wt(p),g={x:n,y:o},d=Lt(i),x=Ot(d),v=await s.getDimensions(c),w=d==="y",u=w?"top":"left",h=w?"bottom":"right",k=w?"clientHeight":"clientWidth",S=r.reference[x]+r.reference[d]-g[d]-r.floating[x],E=g[d]-r.reference[d],O=await(s.getOffsetParent==null?void 0:s.getOffsetParent(c)),M=O?O[k]:0;(!M||!await(s.isElement==null?void 0:s.isElement(O)))&&(M=a.floating[k]||r.floating[x]);let W=S/2-E/2,L=M/2-v[x]/2-1,C=st(f[u],L),$=st(f[h],L),B=C,z=M-v[x]-$,I=M/2-v[x]/2+W,_=Tt(B,I,z),A=!l.arrow&&pt(i)!=null&&I!==_&&r.reference[x]/2-(I<B?C:$)-v[x]/2<0,D=A?I<B?I-B:I-z:0;return{[d]:g[d]+D,data:{[d]:_,centerOffset:I-_-D,...A&&{alignmentOffset:D}},reset:A}}});var me=function(t){return t===void 0&&(t={}),{name:"flip",options:t,async fn(e){var n,o;let{placement:i,middlewareData:r,rects:s,initialPlacement:a,platform:l,elements:c}=e,{mainAxis:p=!0,crossAxis:f=!0,fallbackPlacements:g,fallbackStrategy:d="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:v=!0,...w}=lt(t,e);if((n=r.arrow)!=null&&n.alignmentOffset)return{};let u=at(i),h=ot(a),k=at(a)===a,S=await(l.isRTL==null?void 0:l.isRTL(c.floating)),E=g||(k||!v?[xt(a)]:se(a)),O=x!=="none";!g&&O&&E.push(...ae(a,v,x,S));let M=[a,...E],W=await l.detectOverflow(e,w),L=[],C=((o=r.flip)==null?void 0:o.overflows)||[];if(p&&L.push(W[u]),f){let I=re(i,s,S);L.push(W[I[0]],W[I[1]])}if(C=[...C,{placement:i,overflows:L}],!L.every(I=>I<=0)){var $,B;let I=((($=r.flip)==null?void 0:$.index)||0)+1,_=M[I];if(_&&(!(f==="alignment"?h!==ot(_):!1)||C.every(N=>ot(N.placement)===h?N.overflows[0]>0:!0)))return{data:{index:I,overflows:C},reset:{placement:_}};let A=(B=C.filter(D=>D.overflows[0]<=0).sort((D,N)=>D.overflows[1]-N.overflows[1])[0])==null?void 0:B.placement;if(!A)switch(d){case"bestFit":{var z;let D=(z=C.filter(N=>{if(O){let Q=ot(N.placement);return Q===h||Q==="y"}return!0}).map(N=>[N.placement,N.overflows.filter(Q=>Q>0).reduce((Q,St)=>Q+St,0)]).sort((N,Q)=>N[1]-Q[1])[0])==null?void 0:z[0];D&&(A=D);break}case"initialPlacement":A=a;break}if(i!==A)return{reset:{placement:A}}}return{}}}};function ce(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function de(t){return ie.some(e=>t[e]>=0)}var ge=function(t){return t===void 0&&(t={}),{name:"hide",options:t,async fn(e){let{rects:n,platform:o}=e,{strategy:i="referenceHidden",...r}=lt(t,e);switch(i){case"referenceHidden":{let s=await o.detectOverflow(e,{...r,elementContext:"reference"}),a=ce(s,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:de(a)}}}case"escaped":{let s=await o.detectOverflow(e,{...r,altBoundary:!0}),a=ce(s,n.floating);return{data:{escapedOffsets:a,escaped:de(a)}}}default:return{}}}}};var en=new Set(["left","top"]);async function nn(t,e){let{placement:n,platform:o,elements:i}=t,r=await(o.isRTL==null?void 0:o.isRTL(i.floating)),s=at(n),a=pt(n),l=ot(n)==="y",c=en.has(s)?-1:1,p=r&&l?-1:1,f=lt(e,t),{mainAxis:g,crossAxis:d,alignmentAxis:x}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof x=="number"&&(d=a==="end"?x*-1:x),l?{x:d*p,y:g*c}:{x:g*c,y:d*p}}var he=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,o;let{x:i,y:r,placement:s,middlewareData:a}=e,l=await nn(e,t);return s===((n=a.offset)==null?void 0:n.placement)&&(o=a.arrow)!=null&&o.alignmentOffset?{}:{x:i+l.x,y:r+l.y,data:{...l,placement:s}}}}},ye=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){let{x:n,y:o,placement:i,platform:r}=e,{mainAxis:s=!0,crossAxis:a=!1,limiter:l={fn:u=>{let{x:h,y:k}=u;return{x:h,y:k}}},...c}=lt(t,e),p={x:n,y:o},f=await r.detectOverflow(e,c),g=ot(at(i)),d=Nt(g),x=p[d],v=p[g];if(s){let u=d==="y"?"top":"left",h=d==="y"?"bottom":"right",k=x+f[u],S=x-f[h];x=Tt(k,x,S)}if(a){let u=g==="y"?"top":"left",h=g==="y"?"bottom":"right",k=v+f[u],S=v-f[h];v=Tt(k,v,S)}let w=l.fn({...e,[d]:x,[g]:v});return{...w,data:{x:w.x-n,y:w.y-o,enabled:{[d]:s,[g]:a}}}}}};function It(){return typeof window<"u"}function dt(t){return be(t)?(t.nodeName||"").toLowerCase():"#document"}function j(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function G(t){var e;return(e=(be(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function be(t){return It()?t instanceof Node||t instanceof j(t).Node:!1}function X(t){return It()?t instanceof Element||t instanceof j(t).Element:!1}function J(t){return It()?t instanceof HTMLElement||t instanceof j(t).HTMLElement:!1}function xe(t){return!It()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof j(t).ShadowRoot}var on=new Set(["inline","contents"]);function gt(t){let{overflow:e,overflowX:n,overflowY:o,display:i}=Y(t);return/auto|scroll|overlay|hidden|clip/.test(e+o+n)&&!on.has(i)}var rn=new Set(["table","td","th"]);function ve(t){return rn.has(dt(t))}var sn=[":popover-open",":modal"];function wt(t){return sn.some(e=>{try{return t.matches(e)}catch{return!1}})}var an=["transform","translate","scale","rotate","perspective"],ln=["transform","translate","scale","rotate","perspective","filter"],cn=["paint","layout","strict","content"];function $t(t){let e=Pt(),n=X(t)?Y(t):t;return an.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!e&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!e&&(n.filter?n.filter!=="none":!1)||ln.some(o=>(n.willChange||"").includes(o))||cn.some(o=>(n.contain||"").includes(o))}function we(t){let e=it(t);for(;J(e)&&!ut(e);){if($t(e))return e;if(wt(e))return null;e=it(e)}return null}function Pt(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var dn=new Set(["html","body","#document"]);function ut(t){return dn.has(dt(t))}function Y(t){return j(t).getComputedStyle(t)}function Et(t){return X(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function it(t){if(dt(t)==="html")return t;let e=t.assignedSlot||t.parentNode||xe(t)&&t.host||G(t);return xe(e)?e.host:e}function Ee(t){let e=it(t);return ut(e)?t.ownerDocument?t.ownerDocument.body:t.body:J(e)&>(e)?e:Ee(e)}function mt(t,e,n){var o;e===void 0&&(e=[]),n===void 0&&(n=!0);let i=Ee(t),r=i===((o=t.ownerDocument)==null?void 0:o.body),s=j(i);if(r){let a=Mt(s);return e.concat(s,s.visualViewport||[],gt(i)?i:[],a&&n?mt(a):[])}return e.concat(i,mt(i,[],n))}function Mt(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function Ae(t){let e=Y(t),n=parseFloat(e.width)||0,o=parseFloat(e.height)||0,i=J(t),r=i?t.offsetWidth:n,s=i?t.offsetHeight:o,a=bt(n)!==r||bt(o)!==s;return a&&(n=r,o=s),{width:n,height:o,$:a}}function Vt(t){return X(t)?t:t.contextElement}function ht(t){let e=Vt(t);if(!J(e))return Z(1);let n=e.getBoundingClientRect(),{width:o,height:i,$:r}=Ae(e),s=(r?bt(n.width):n.width)/o,a=(r?bt(n.height):n.height)/i;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var un=Z(0);function Re(t){let e=j(t);return!Pt()||!e.visualViewport?un:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function fn(t,e,n){return e===void 0&&(e=!1),!n||e&&n!==j(t)?!1:e}function ft(t,e,n,o){e===void 0&&(e=!1),n===void 0&&(n=!1);let i=t.getBoundingClientRect(),r=Vt(t),s=Z(1);e&&(o?X(o)&&(s=ht(o)):s=ht(t));let a=fn(r,n,o)?Re(r):Z(0),l=(i.left+a.x)/s.x,c=(i.top+a.y)/s.y,p=i.width/s.x,f=i.height/s.y;if(r){let g=j(r),d=o&&X(o)?j(o):o,x=g,v=Mt(x);for(;v&&o&&d!==x;){let w=ht(v),u=v.getBoundingClientRect(),h=Y(v),k=u.left+(v.clientLeft+parseFloat(h.paddingLeft))*w.x,S=u.top+(v.clientTop+parseFloat(h.paddingTop))*w.y;l*=w.x,c*=w.y,p*=w.x,f*=w.y,l+=k,c+=S,x=j(v),v=Mt(x)}}return ct({width:p,height:f,x:l,y:c})}function Ht(t,e){let n=Et(t).scrollLeft;return e?e.left+n:ft(G(t)).left+n}function Te(t,e){let n=t.getBoundingClientRect(),o=n.left+e.scrollLeft-Ht(t,n),i=n.top+e.scrollTop;return{x:o,y:i}}function pn(t){let{elements:e,rect:n,offsetParent:o,strategy:i}=t,r=i==="fixed",s=G(o),a=e?wt(e.floating):!1;if(o===s||a&&r)return n;let l={scrollLeft:0,scrollTop:0},c=Z(1),p=Z(0),f=J(o);if((f||!f&&!r)&&((dt(o)!=="body"||gt(s))&&(l=Et(o)),J(o))){let d=ft(o);c=ht(o),p.x=d.x+o.clientLeft,p.y=d.y+o.clientTop}let g=s&&!f&&!r?Te(s,l):Z(0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+p.x+g.x,y:n.y*c.y-l.scrollTop*c.y+p.y+g.y}}function mn(t){return Array.from(t.getClientRects())}function gn(t){let e=G(t),n=Et(t),o=t.ownerDocument.body,i=nt(e.scrollWidth,e.clientWidth,o.scrollWidth,o.clientWidth),r=nt(e.scrollHeight,e.clientHeight,o.scrollHeight,o.clientHeight),s=-n.scrollLeft+Ht(t),a=-n.scrollTop;return Y(o).direction==="rtl"&&(s+=nt(e.clientWidth,o.clientWidth)-i),{width:i,height:r,x:s,y:a}}var ke=25;function hn(t,e){let n=j(t),o=G(t),i=n.visualViewport,r=o.clientWidth,s=o.clientHeight,a=0,l=0;if(i){r=i.width,s=i.height;let p=Pt();(!p||p&&e==="fixed")&&(a=i.offsetLeft,l=i.offsetTop)}let c=Ht(o);if(c<=0){let p=o.ownerDocument,f=p.body,g=getComputedStyle(f),d=p.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,x=Math.abs(o.clientWidth-f.clientWidth-d);x<=ke&&(r-=x)}else c<=ke&&(r+=c);return{width:r,height:s,x:a,y:l}}var yn=new Set(["absolute","fixed"]);function xn(t,e){let n=ft(t,!0,e==="fixed"),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=J(t)?ht(t):Z(1),s=t.clientWidth*r.x,a=t.clientHeight*r.y,l=i*r.x,c=o*r.y;return{width:s,height:a,x:l,y:c}}function Se(t,e,n){let o;if(e==="viewport")o=hn(t,n);else if(e==="document")o=gn(G(t));else if(X(e))o=xn(e,n);else{let i=Re(t);o={x:e.x-i.x,y:e.y-i.y,width:e.width,height:e.height}}return ct(o)}function Oe(t,e){let n=it(t);return n===e||!X(n)||ut(n)?!1:Y(n).position==="fixed"||Oe(n,e)}function bn(t,e){let n=e.get(t);if(n)return n;let o=mt(t,[],!1).filter(a=>X(a)&&dt(a)!=="body"),i=null,r=Y(t).position==="fixed",s=r?it(t):t;for(;X(s)&&!ut(s);){let a=Y(s),l=$t(s);!l&&a.position==="fixed"&&(i=null),(r?!l&&!i:!l&&a.position==="static"&&!!i&&yn.has(i.position)||gt(s)&&!l&&Oe(t,s))?o=o.filter(p=>p!==s):i=a,s=it(s)}return e.set(t,o),o}function vn(t){let{element:e,boundary:n,rootBoundary:o,strategy:i}=t,s=[...n==="clippingAncestors"?wt(e)?[]:bn(e,this._c):[].concat(n),o],a=s[0],l=s.reduce((c,p)=>{let f=Se(e,p,i);return c.top=nt(f.top,c.top),c.right=st(f.right,c.right),c.bottom=st(f.bottom,c.bottom),c.left=nt(f.left,c.left),c},Se(e,a,i));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function wn(t){let{width:e,height:n}=Ae(t);return{width:e,height:n}}function En(t,e,n){let o=J(e),i=G(e),r=n==="fixed",s=ft(t,!0,r,e),a={scrollLeft:0,scrollTop:0},l=Z(0);function c(){l.x=Ht(i)}if(o||!o&&!r)if((dt(e)!=="body"||gt(i))&&(a=Et(e)),o){let d=ft(e,!0,r,e);l.x=d.x+e.clientLeft,l.y=d.y+e.clientTop}else i&&c();r&&!o&&i&&c();let p=i&&!o&&!r?Te(i,a):Z(0),f=s.left+a.scrollLeft-l.x-p.x,g=s.top+a.scrollTop-l.y-p.y;return{x:f,y:g,width:s.width,height:s.height}}function _t(t){return Y(t).position==="static"}function Ce(t,e){if(!J(t)||Y(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return G(t)===n&&(n=n.ownerDocument.body),n}function Le(t,e){let n=j(t);if(wt(t))return n;if(!J(t)){let i=it(t);for(;i&&!ut(i);){if(X(i)&&!_t(i))return i;i=it(i)}return n}let o=Ce(t,e);for(;o&&ve(o)&&_t(o);)o=Ce(o,e);return o&&ut(o)&&_t(o)&&!$t(o)?n:o||we(t)||n}var kn=async function(t){let e=this.getOffsetParent||Le,n=this.getDimensions,o=await n(t.floating);return{reference:En(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Sn(t){return Y(t).direction==="rtl"}var Cn={convertOffsetParentRelativeRectToViewportRelativeRect:pn,getDocumentElement:G,getClippingRect:vn,getOffsetParent:Le,getElementRects:kn,getClientRects:mn,getDimensions:wn,getScale:ht,isElement:X,isRTL:Sn};function Ie(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function An(t,e){let n=null,o,i=G(t);function r(){var a;clearTimeout(o),(a=n)==null||a.disconnect(),n=null}function s(a,l){a===void 0&&(a=!1),l===void 0&&(l=1),r();let c=t.getBoundingClientRect(),{left:p,top:f,width:g,height:d}=c;if(a||e(),!g||!d)return;let x=vt(f),v=vt(i.clientWidth-(p+g)),w=vt(i.clientHeight-(f+d)),u=vt(p),k={rootMargin:-x+"px "+-v+"px "+-w+"px "+-u+"px",threshold:nt(0,st(1,l))||1},S=!0;function E(O){let M=O[0].intersectionRatio;if(M!==l){if(!S)return s();M?s(!1,M):o=setTimeout(()=>{s(!1,1e-7)},1e3)}M===1&&!Ie(c,t.getBoundingClientRect())&&s(),S=!1}try{n=new IntersectionObserver(E,{...k,root:i.ownerDocument})}catch{n=new IntersectionObserver(E,k)}n.observe(t)}return s(!0),r}function $e(t,e,n,o){o===void 0&&(o={});let{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,c=Vt(t),p=i||r?[...c?mt(c):[],...mt(e)]:[];p.forEach(u=>{i&&u.addEventListener("scroll",n,{passive:!0}),r&&u.addEventListener("resize",n)});let f=c&&a?An(c,n):null,g=-1,d=null;s&&(d=new ResizeObserver(u=>{let[h]=u;h&&h.target===c&&d&&(d.unobserve(e),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var k;(k=d)==null||k.observe(e)})),n()}),c&&!l&&d.observe(c),d.observe(e));let x,v=l?ft(t):null;l&&w();function w(){let u=ft(t);v&&!Ie(v,u)&&n(),v=u,x=requestAnimationFrame(w)}return n(),()=>{var u;p.forEach(h=>{i&&h.removeEventListener("scroll",n),r&&h.removeEventListener("resize",n)}),f?.(),(u=d)==null||u.disconnect(),d=null,l&&cancelAnimationFrame(x)}}var Pe=he;var Me=ye,He=me;var Be=ge,ze=pe;var De=(t,e,n)=>{let o=new Map,i={platform:Cn,...n},r={...i.platform,_c:o};return fe(t,e,{...i,platform:r})};function Rn(t){let e=t.getBoundingClientRect(),n=window.innerWidth,o=window.innerHeight;if(!(e.width>n*.8||e.height>o*.8))return t;let r=Math.max(e.left,0),s=Math.max(e.top,0),a=Math.min(e.right,n),l=Math.min(e.bottom,o),c=(r+a)/2,p=(s+l)/2;return{getBoundingClientRect(){return{width:0,height:0,x:c,y:p,top:p,left:c,right:c,bottom:p}}}}function Fe(t,e,n){let o=t.getBoundingClientRect();o.width>window.innerWidth*.8||o.height>window.innerHeight*.8||t.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});let r=document.createElement("div");if(r.className="syntro-tooltip",r.setAttribute("role","tooltip"),r.innerHTML=q(n.html),!n.trigger||n.trigger==="immediate"){let u=document.createElement("button");u.className="syntro-tooltip-close",u.setAttribute("aria-label","Close"),u.textContent="\xD7",Object.assign(u.style,{position:"absolute",top:"4px",right:"4px",background:"none",border:"none",color:"inherit",fontSize:"16px",lineHeight:"1",cursor:"pointer",opacity:"0.6",padding:"2px 4px"}),u.addEventListener("mouseenter",()=>{u.style.opacity="1"}),u.addEventListener("mouseleave",()=>{u.style.opacity="0.6"}),u.addEventListener("click",()=>w.destroy()),r.style.position="relative",r.appendChild(u)}let s=r.querySelectorAll("[data-syntro-action]"),a=u=>{let k=u.currentTarget.getAttribute("data-syntro-action");k&&n.onAction&&n.onAction(k)};s.forEach(u=>u.addEventListener("click",a));let l=document.createElement("div");l.className="syntro-tooltip-arrow",r.appendChild(l),e.appendChild(r);let c=[Pe(n.offsetPx??8),He(),Me({padding:8}),Be(),ze({element:l})],p=n.placement&&n.placement!=="auto"?n.placement:"top",f=$e(t,r,async()=>{let u=Rn(t),h=await De(u,r,{placement:p,middleware:c}),{x:k,y:S,strategy:E,middlewareData:O,placement:M}=h;if(Object.assign(r.style,{left:`${k}px`,top:`${S}px`,position:E}),O.arrow){let{x:W,y:L}=O.arrow,C=M.split("-")[0],$={top:"bottom",right:"left",bottom:"top",left:"right"};Object.assign(l.style,{left:W!=null?`${W}px`:"",top:L!=null?`${L}px`:"",right:"",bottom:"",[$[C]]:"-4px"});let B={top:"0deg",right:"90deg",bottom:"180deg",left:"270deg"};l.style.transform=`rotate(${B[C]||"0deg"})`}}),g=u=>{u.key==="Escape"&&w.destroy()};window.addEventListener("keydown",g);let d=[];if(n.blocking){Array.from(document.body.children).forEach(h=>{h!==e&&h.getAttribute("inert")===null&&(h.setAttribute("inert",""),d.push(h.id||h.tagName))});let u=Array.from(r.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'));if(u.length>0){let h=u[0],k=u[u.length-1],S=E=>{E.key==="Tab"&&(E.shiftKey?document.activeElement===h&&(k.focus(),E.preventDefault()):document.activeElement===k&&(h.focus(),E.preventDefault()))};r.addEventListener("keydown",S),requestAnimationFrame(()=>h.focus())}}let v=(()=>{if(n.trigger==="hover"){let u=()=>{r.style.visibility="visible",r.style.opacity="1"},h=()=>{r.style.visibility="hidden",r.style.opacity="0"};return r.style.visibility="hidden",r.style.opacity="0",r.style.transition="opacity 200ms ease, visibility 200ms",t.addEventListener("mouseenter",u),t.addEventListener("mouseleave",h),t.addEventListener("focus",u),t.addEventListener("blur",h),()=>{t.removeEventListener("mouseenter",u),t.removeEventListener("mouseleave",h),t.removeEventListener("focus",u),t.removeEventListener("blur",h)}}if(n.trigger==="click"){let u=()=>{r.style.visibility==="visible"?w.destroy():(r.style.visibility="visible",r.style.opacity="1")};return r.style.visibility="hidden",r.style.opacity="0",r.style.transition="opacity 200ms ease, visibility 200ms",t.addEventListener("click",u),()=>t.removeEventListener("click",u)}return r.style.opacity="0",r.style.transition="opacity 200ms ease",requestAnimationFrame(()=>{r.style.opacity="1"}),()=>{}})(),w={el:r,destroy(){f(),v(),window.removeEventListener("keydown",g),s.forEach(u=>u.removeEventListener("click",a)),n.blocking&&Array.from(document.body.children).forEach(u=>{u!==e&&u.removeAttribute("inert")}),r.style.opacity="0",setTimeout(()=>r.remove(),200)}};return w}var Tn=async(t,e)=>{let n=e.resolveAnchor(t.anchorId);if(!n)throw new Error(`Anchor not found: ${t.anchorId}`);let o=te(n,e.overlayRoot,{paddingPx:t.style?.paddingPx??12,radiusPx:t.style?.radiusPx??12,scrimOpacity:t.style?.scrimOpacity??.55,ringColor:t.style?.color,blocking:t.blocking??!1,onClickOutside:t.onClickOutside??!0,onEsc:t.onEsc??!0});return e.publishEvent("action.applied",{id:e.generateId(),kind:"overlays:highlight",anchorId:t.anchorId}),{cleanup:()=>{o.destroy()}}},On=async(t,e)=>{let n=e.resolveAnchor(t.anchorId);if(!n)throw new Error(`Anchor not found: ${t.anchorId}`);let o=t.duration??2e3,i="syntro-pulse-effect";if(!document.querySelector("[data-syntro-pulse-styles]")){let s=document.createElement("style");s.setAttribute("data-syntro-pulse-styles",""),s.textContent=`
|
|
54
|
+
@keyframes syntro-pulse {
|
|
55
|
+
0%, 100% {
|
|
56
|
+
box-shadow: 0 0 0 0 rgba(79, 70, 229, 0.4);
|
|
57
|
+
}
|
|
58
|
+
50% {
|
|
59
|
+
box-shadow: 0 0 0 8px rgba(79, 70, 229, 0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
.${i} {
|
|
63
|
+
animation: syntro-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
64
|
+
}
|
|
65
|
+
`,document.head.appendChild(s)}n.classList.add(i);let r=setTimeout(()=>{n.classList.remove(i)},o);return e.publishEvent("action.applied",{id:e.generateId(),kind:"overlays:pulse",anchorId:t.anchorId,duration:o}),{cleanup:()=>{clearTimeout(r),n.classList.remove(i)}}},Ln=async(t,e)=>{let n=e.resolveAnchor(t.anchorId);if(!n)throw new Error(`Anchor not found: ${t.anchorId}`);let o=document.createElement("div");if(o.className="syntro-badge",o.textContent=t.content,o.setAttribute("data-syntro-badge",t.anchorId),!document.querySelector("[data-syntro-badge-styles]")){let s=document.createElement("style");s.setAttribute("data-syntro-badge-styles",""),s.textContent=`
|
|
66
|
+
.syntro-badge {
|
|
67
|
+
position: absolute;
|
|
68
|
+
padding: 2px 6px;
|
|
69
|
+
font-size: 12px;
|
|
70
|
+
font-weight: 600;
|
|
71
|
+
line-height: 1;
|
|
72
|
+
color: white;
|
|
73
|
+
background: var(--syntro-accent, #4f46e5);
|
|
74
|
+
border-radius: 9999px;
|
|
75
|
+
pointer-events: none;
|
|
76
|
+
z-index: 2147483646;
|
|
77
|
+
white-space: nowrap;
|
|
78
|
+
}
|
|
79
|
+
`,document.head.appendChild(s)}let i=t.position??"top-right",r=n.style.position;switch(getComputedStyle(n).position==="static"&&(n.style.position="relative"),n.appendChild(o),i){case"top-left":Object.assign(o.style,{top:"-8px",left:"-8px"});break;case"top-right":Object.assign(o.style,{top:"-8px",right:"-8px"});break;case"bottom-left":Object.assign(o.style,{bottom:"-8px",left:"-8px"});break;case"bottom-right":Object.assign(o.style,{bottom:"-8px",right:"-8px"});break}return e.publishEvent("action.applied",{id:e.generateId(),kind:"overlays:badge",anchorId:t.anchorId,content:t.content,position:i}),{cleanup:()=>{o.remove(),r!==void 0&&(n.style.position=r)},updateFn:s=>{"content"in s&&typeof s.content=="string"&&(o.textContent=s.content)}}},In=async(t,e)=>{let n=e.resolveAnchor(t.anchorId);if(!n)throw new Error(`Anchor not found: ${t.anchorId}`);let{content:o}=t,i="";if(o.title&&(i+=`<div class="syntro-tt-title">${q(o.title)}</div>`),i+=`<div class="syntro-tt-body">${q(o.body)}</div>`,o.ctaButtons&&o.ctaButtons.length>0){i+='<div class="syntro-tt-actions">';for(let s of o.ctaButtons){let a=s.primary??!1;i+=`
|
|
80
|
+
<button
|
|
81
|
+
class="syntro-tt-btn ${a?"syntro-tt-btn-primary":""}"
|
|
82
|
+
data-syntro-action="${q(s.actionId)}"
|
|
83
|
+
>
|
|
84
|
+
${q(s.label)}
|
|
85
|
+
</button>
|
|
86
|
+
`}i+="</div>"}else o.cta&&(i+=`<div class="syntro-tt-actions">
|
|
87
|
+
<button class="syntro-tt-btn syntro-tt-btn-primary" data-syntro-action="cta">
|
|
88
|
+
${q(o.cta.label)}
|
|
89
|
+
</button>
|
|
90
|
+
</div>`);let r=Fe(n,e.overlayRoot,{html:i,placement:t.placement??"top",trigger:t.trigger??"immediate",onAction:s=>{if(s==="cta"&&o.cta)e.publishEvent("action.cta_clicked",{anchorId:t.anchorId,ctaLabel:o.cta.label});else if(o.ctaButtons){let a=o.ctaButtons.find(l=>l.actionId===s);a&&e.publishEvent("action.tooltip_cta_clicked",{anchorId:t.anchorId,actionId:s,label:a.label})}}});return e.publishEvent("action.applied",{id:e.generateId(),kind:"overlays:tooltip",anchorId:t.anchorId,trigger:t.trigger??"immediate"}),{cleanup:()=>{r.destroy()}}},jt=[{kind:"overlays:highlight",executor:Tn},{kind:"overlays:pulse",executor:On},{kind:"overlays:badge",executor:Ln},{kind:"overlays:tooltip",executor:In},{kind:"overlays:modal",executor:ee}],kt={id:"adaptive-overlays",version:"1.0.0",name:"Overlays",description:"Tooltips, highlights, badges, modals, and visual overlays",executors:jt};var Ne={id:kt.id,version:kt.version,name:kt.name,description:kt.description,runtime:{actions:jt.map(({kind:t,executor:e})=>({kind:t,executor:e}))},editor:Ft,metadata:{isBuiltIn:!0}};if(typeof window<"u"){let t=window.SynOS?.appRegistry;t&&typeof t.register=="function"&&t.register(Ne)}var Po=Ne;export{Po as default,Ne as manifest};
|
|
91
|
+
//# sourceMappingURL=index.js.map
|