@iota-uz/sdk 0.4.44 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +11 -142
- package/dist/client-host/applet.d.ts +52 -0
- package/dist/client-host/applet.d.ts.map +1 -0
- package/dist/client-host/applet.js +24 -0
- package/dist/client-host/cache.d.ts +15 -0
- package/dist/client-host/cache.d.ts.map +1 -0
- package/dist/client-host/cache.js +27 -0
- package/dist/client-host/errors.d.ts +16 -0
- package/dist/client-host/errors.d.ts.map +1 -0
- package/dist/client-host/errors.js +45 -0
- package/dist/client-host/identity.d.ts +21 -0
- package/dist/client-host/identity.d.ts.map +1 -0
- package/dist/client-host/identity.js +28 -0
- package/dist/client-host/index.d.ts +11 -0
- package/dist/client-host/index.d.ts.map +1 -0
- package/dist/client-host/index.js +10 -0
- package/dist/client-host/portals.d.ts +30 -0
- package/dist/client-host/portals.d.ts.map +1 -0
- package/dist/client-host/portals.js +149 -0
- package/dist/client-host/protocol.d.ts +2 -0
- package/dist/client-host/protocol.d.ts.map +1 -0
- package/dist/client-host/protocol.js +2 -0
- package/dist/client-host/route.d.ts +29 -0
- package/dist/client-host/route.d.ts.map +1 -0
- package/dist/client-host/route.js +32 -0
- package/dist/client-host/rpc.d.ts +46 -0
- package/dist/client-host/rpc.d.ts.map +1 -0
- package/dist/client-host/rpc.js +90 -0
- package/dist/client-host/streaming.d.ts +43 -0
- package/dist/client-host/streaming.d.ts.map +1 -0
- package/dist/client-host/streaming.js +141 -0
- package/dist/client-host/transport.d.ts +26 -0
- package/dist/client-host/transport.d.ts.map +1 -0
- package/dist/client-host/transport.js +53 -0
- package/dist/lens/CascadePanel-DqOZFdR-.js +512 -0
- package/dist/lens/ChartDataEquivalent-BFDdHoQn.js +52 -0
- package/dist/lens/ChartHost-Bl2lxIqU.js +68 -0
- package/dist/lens/ChartPanel-CTIp_4YE.js +720 -0
- package/dist/lens/CoveragePanel-DZZWkjSv.js +131 -0
- package/dist/lens/DashboardPanels.d.ts +36 -0
- package/dist/lens/DashboardPanels.d.ts.map +1 -0
- package/dist/lens/GaugePanel-BcNdd_Wj.js +43 -0
- package/dist/lens/LensDashboard.d.ts +21 -0
- package/dist/lens/LensDashboard.d.ts.map +1 -0
- package/dist/lens/MapPanel-6sI_Ei9L.js +178 -0
- package/dist/lens/MetricFlowPanel-LzqevSPs.js +70 -0
- package/dist/lens/MetricHierarchyPanel-h6tJqRPg.js +72 -0
- package/dist/lens/MetricRelationshipPanel-CgckUvvJ.js +54 -0
- package/dist/lens/PrintReport-DJv4Rm_U.js +1351 -0
- package/dist/lens/TablePanel-Dh6bXlwM.js +619 -0
- package/dist/lens/adapter-zBDC8hbZ.js +29093 -0
- package/dist/lens/breakpoints.d.ts +37 -0
- package/dist/lens/breakpoints.d.ts.map +1 -0
- package/dist/lens/charts/adapter.d.ts +157 -0
- package/dist/lens/charts/adapter.d.ts.map +1 -0
- package/dist/lens/charts/echarts/adapter.d.ts +9 -0
- package/dist/lens/charts/echarts/adapter.d.ts.map +1 -0
- package/dist/lens/charts/echarts/distributions.d.ts +9 -0
- package/dist/lens/charts/echarts/distributions.d.ts.map +1 -0
- package/dist/lens/charts/echarts/events.d.ts +7 -0
- package/dist/lens/charts/echarts/events.d.ts.map +1 -0
- package/dist/lens/charts/echarts/options.d.ts +163 -0
- package/dist/lens/charts/echarts/options.d.ts.map +1 -0
- package/dist/lens/charts/echarts/theme.d.ts +49 -0
- package/dist/lens/charts/echarts/theme.d.ts.map +1 -0
- package/dist/lens/charts/echarts/tooltip.d.ts +79 -0
- package/dist/lens/charts/echarts/tooltip.d.ts.map +1 -0
- package/dist/lens/charts/index.d.ts +9 -0
- package/dist/lens/charts/index.d.ts.map +1 -0
- package/dist/lens/charts/keys.d.ts +8 -0
- package/dist/lens/charts/keys.d.ts.map +1 -0
- package/dist/lens/charts/overlays.d.ts +134 -0
- package/dist/lens/charts/overlays.d.ts.map +1 -0
- package/dist/lens/charts/palette.d.ts +54 -0
- package/dist/lens/charts/palette.d.ts.map +1 -0
- package/dist/lens/charts/scales.d.ts +26 -0
- package/dist/lens/charts/scales.d.ts.map +1 -0
- package/dist/lens/charts/shares.d.ts +44 -0
- package/dist/lens/charts/shares.d.ts.map +1 -0
- package/dist/lens/charts/text.d.ts +23 -0
- package/dist/lens/charts/text.d.ts.map +1 -0
- package/dist/lens/contract/index.d.ts +4 -0
- package/dist/lens/contract/index.d.ts.map +1 -0
- package/dist/lens/contract/palette.d.ts +13 -0
- package/dist/lens/contract/palette.d.ts.map +1 -0
- package/dist/lens/contract/schemas.d.ts +132 -0
- package/dist/lens/contract/schemas.d.ts.map +1 -0
- package/dist/lens/contract/types.d.ts +788 -0
- package/dist/lens/contract/types.d.ts.map +1 -0
- package/dist/lens/controls/Calendar.d.ts +24 -0
- package/dist/lens/controls/Calendar.d.ts.map +1 -0
- package/dist/lens/controls/CompareFilterControl.d.ts +23 -0
- package/dist/lens/controls/CompareFilterControl.d.ts.map +1 -0
- package/dist/lens/controls/FacetFilterMenu.d.ts +29 -0
- package/dist/lens/controls/FacetFilterMenu.d.ts.map +1 -0
- package/dist/lens/controls/FilterBar.d.ts +30 -0
- package/dist/lens/controls/FilterBar.d.ts.map +1 -0
- package/dist/lens/controls/PeriodFilterControl.d.ts +50 -0
- package/dist/lens/controls/PeriodFilterControl.d.ts.map +1 -0
- package/dist/lens/controls/SegmentedFilterControl.d.ts +22 -0
- package/dist/lens/controls/SegmentedFilterControl.d.ts.map +1 -0
- package/dist/lens/controls/facetOptions.d.ts +33 -0
- package/dist/lens/controls/facetOptions.d.ts.map +1 -0
- package/dist/lens/controls/index.d.ts +6 -0
- package/dist/lens/controls/index.d.ts.map +1 -0
- package/dist/lens/controls/model.d.ts +181 -0
- package/dist/lens/controls/model.d.ts.map +1 -0
- package/dist/lens/drillPrefetch-Bs-6Oyxa.js +68 -0
- package/dist/lens/element.d.ts +12 -0
- package/dist/lens/element.d.ts.map +1 -0
- package/dist/lens/explore/ContextMiniChart.d.ts +18 -0
- package/dist/lens/explore/ContextMiniChart.d.ts.map +1 -0
- package/dist/lens/explore/DrillOverlay.d.ts +66 -0
- package/dist/lens/explore/DrillOverlay.d.ts.map +1 -0
- package/dist/lens/explore/ExplorePanel.d.ts +8 -0
- package/dist/lens/explore/ExplorePanel.d.ts.map +1 -0
- package/dist/lens/explore/FocusContextHeader.d.ts +20 -0
- package/dist/lens/explore/FocusContextHeader.d.ts.map +1 -0
- package/dist/lens/explore/LensSelector.d.ts +17 -0
- package/dist/lens/explore/LensSelector.d.ts.map +1 -0
- package/dist/lens/explore/SourceDataDisclosure.d.ts +15 -0
- package/dist/lens/explore/SourceDataDisclosure.d.ts.map +1 -0
- package/dist/lens/explore/actions.d.ts +22 -0
- package/dist/lens/explore/actions.d.ts.map +1 -0
- package/dist/lens/explore/focusModel.d.ts +55 -0
- package/dist/lens/explore/focusModel.d.ts.map +1 -0
- package/dist/lens/explore/index.d.ts +9 -0
- package/dist/lens/explore/index.d.ts.map +1 -0
- package/dist/lens/explore/model.d.ts +59 -0
- package/dist/lens/explore/model.d.ts.map +1 -0
- package/dist/lens/export-B0U20F4u.js +57 -0
- package/dist/lens/icons.d.ts +103 -0
- package/dist/lens/icons.d.ts.map +1 -0
- package/dist/lens/idlePrefetch-Bi4Wk1uR.js +80 -0
- package/dist/lens/index-C45DAO6w.js +10883 -0
- package/dist/lens/index-CspKnSQn.js +11 -0
- package/dist/lens/index.d.ts +7 -0
- package/dist/lens/index.d.ts.map +1 -0
- package/dist/lens/index.js +17 -0
- package/dist/lens/install-3GLgv_LN.js +2028 -0
- package/dist/lens/install-B5oSx3pv.js +233 -0
- package/dist/lens/install-DT0AQkUj.js +1490 -0
- package/dist/lens/install-DyXK20dR.js +307 -0
- package/dist/lens/keys-DenV5HsJ.js +12 -0
- package/dist/lens/listSearch.d.ts +12 -0
- package/dist/lens/listSearch.d.ts.map +1 -0
- package/dist/lens/metricViews-QvoFHVdh.js +170 -0
- package/dist/lens/panels/CascadePanel.d.ts +138 -0
- package/dist/lens/panels/CascadePanel.d.ts.map +1 -0
- package/dist/lens/panels/ChartDataEquivalent.d.ts +23 -0
- package/dist/lens/panels/ChartDataEquivalent.d.ts.map +1 -0
- package/dist/lens/panels/ChartHost.d.ts +14 -0
- package/dist/lens/panels/ChartHost.d.ts.map +1 -0
- package/dist/lens/panels/ChartPanel.d.ts +29 -0
- package/dist/lens/panels/ChartPanel.d.ts.map +1 -0
- package/dist/lens/panels/CopyValueButton.d.ts +15 -0
- package/dist/lens/panels/CopyValueButton.d.ts.map +1 -0
- package/dist/lens/panels/CoveragePanel.d.ts +17 -0
- package/dist/lens/panels/CoveragePanel.d.ts.map +1 -0
- package/dist/lens/panels/ExportMenu.d.ts +12 -0
- package/dist/lens/panels/ExportMenu.d.ts.map +1 -0
- package/dist/lens/panels/GaugePanel.d.ts +6 -0
- package/dist/lens/panels/GaugePanel.d.ts.map +1 -0
- package/dist/lens/panels/InfoTip.d.ts +50 -0
- package/dist/lens/panels/InfoTip.d.ts.map +1 -0
- package/dist/lens/panels/MapPanel.d.ts +17 -0
- package/dist/lens/panels/MapPanel.d.ts.map +1 -0
- package/dist/lens/panels/MetricFlowPanel.d.ts +6 -0
- package/dist/lens/panels/MetricFlowPanel.d.ts.map +1 -0
- package/dist/lens/panels/MetricHierarchyPanel.d.ts +6 -0
- package/dist/lens/panels/MetricHierarchyPanel.d.ts.map +1 -0
- package/dist/lens/panels/MetricRelationshipPanel.d.ts +14 -0
- package/dist/lens/panels/MetricRelationshipPanel.d.ts.map +1 -0
- package/dist/lens/panels/PanelExportMenu.d.ts +5 -0
- package/dist/lens/panels/PanelExportMenu.d.ts.map +1 -0
- package/dist/lens/panels/PanelFrame.d.ts +42 -0
- package/dist/lens/panels/PanelFrame.d.ts.map +1 -0
- package/dist/lens/panels/PanelOverlay.d.ts +19 -0
- package/dist/lens/panels/PanelOverlay.d.ts.map +1 -0
- package/dist/lens/panels/QualityChip.d.ts +51 -0
- package/dist/lens/panels/QualityChip.d.ts.map +1 -0
- package/dist/lens/panels/ShareSliceButton.d.ts +3 -0
- package/dist/lens/panels/ShareSliceButton.d.ts.map +1 -0
- package/dist/lens/panels/Skeleton.d.ts +67 -0
- package/dist/lens/panels/Skeleton.d.ts.map +1 -0
- package/dist/lens/panels/StatPanel.d.ts +52 -0
- package/dist/lens/panels/StatPanel.d.ts.map +1 -0
- package/dist/lens/panels/StatValueTicker.d.ts +27 -0
- package/dist/lens/panels/StatValueTicker.d.ts.map +1 -0
- package/dist/lens/panels/TablePanel.d.ts +19 -0
- package/dist/lens/panels/TablePanel.d.ts.map +1 -0
- package/dist/lens/panels/WaterfallPlot.d.ts +51 -0
- package/dist/lens/panels/WaterfallPlot.d.ts.map +1 -0
- package/dist/lens/panels/actions.d.ts +75 -0
- package/dist/lens/panels/actions.d.ts.map +1 -0
- package/dist/lens/panels/context.d.ts +32 -0
- package/dist/lens/panels/context.d.ts.map +1 -0
- package/dist/lens/panels/data.d.ts +95 -0
- package/dist/lens/panels/data.d.ts.map +1 -0
- package/dist/lens/panels/kinds.d.ts +4 -0
- package/dist/lens/panels/kinds.d.ts.map +1 -0
- package/dist/lens/panels/metricViews.d.ts +79 -0
- package/dist/lens/panels/metricViews.d.ts.map +1 -0
- package/dist/lens/panels/registry.d.ts +45 -0
- package/dist/lens/panels/registry.d.ts.map +1 -0
- package/dist/lens/panels/useIsClamped.d.ts +16 -0
- package/dist/lens/panels/useIsClamped.d.ts.map +1 -0
- package/dist/lens/panels/useMenuButton.d.ts +68 -0
- package/dist/lens/panels/useMenuButton.d.ts.map +1 -0
- package/dist/lens/prefetch-Dov5CBoH.js +74 -0
- package/dist/lens/prefetchPanels-B7bIY0bM.js +31 -0
- package/dist/lens/print/PrintReport.d.ts +12 -0
- package/dist/lens/print/PrintReport.d.ts.map +1 -0
- package/dist/lens/print/footnotes.d.ts +29 -0
- package/dist/lens/print/footnotes.d.ts.map +1 -0
- package/dist/lens/print/formula.d.ts +9 -0
- package/dist/lens/print/formula.d.ts.map +1 -0
- package/dist/lens/print/narrative.d.ts +41 -0
- package/dist/lens/print/narrative.d.ts.map +1 -0
- package/dist/lens/print/outline.d.ts +94 -0
- package/dist/lens/print/outline.d.ts.map +1 -0
- package/dist/lens/print/palette.d.ts +23 -0
- package/dist/lens/print/palette.d.ts.map +1 -0
- package/dist/lens/print/quality.d.ts +32 -0
- package/dist/lens/print/quality.d.ts.map +1 -0
- package/dist/lens/print/units.d.ts +23 -0
- package/dist/lens/print/units.d.ts.map +1 -0
- package/dist/lens/print/values.d.ts +28 -0
- package/dist/lens/print/values.d.ts.map +1 -0
- package/dist/lens/print-CwcB0fug.js +216 -0
- package/dist/lens/runtime/clipboard.d.ts +11 -0
- package/dist/lens/runtime/clipboard.d.ts.map +1 -0
- package/dist/lens/runtime/document.d.ts +9 -0
- package/dist/lens/runtime/document.d.ts.map +1 -0
- package/dist/lens/runtime/drawer.d.ts +21 -0
- package/dist/lens/runtime/drawer.d.ts.map +1 -0
- package/dist/lens/runtime/drill.d.ts +54 -0
- package/dist/lens/runtime/drill.d.ts.map +1 -0
- package/dist/lens/runtime/drillPrefetch.d.ts +22 -0
- package/dist/lens/runtime/drillPrefetch.d.ts.map +1 -0
- package/dist/lens/runtime/export.d.ts +21 -0
- package/dist/lens/runtime/export.d.ts.map +1 -0
- package/dist/lens/runtime/filters.d.ts +51 -0
- package/dist/lens/runtime/filters.d.ts.map +1 -0
- package/dist/lens/runtime/focusTrap.d.ts +4 -0
- package/dist/lens/runtime/focusTrap.d.ts.map +1 -0
- package/dist/lens/runtime/format.d.ts +81 -0
- package/dist/lens/runtime/format.d.ts.map +1 -0
- package/dist/lens/runtime/idlePrefetch.d.ts +35 -0
- package/dist/lens/runtime/idlePrefetch.d.ts.map +1 -0
- package/dist/lens/runtime/index.d.ts +15 -0
- package/dist/lens/runtime/index.d.ts.map +1 -0
- package/dist/lens/runtime/navigate.d.ts +12 -0
- package/dist/lens/runtime/navigate.d.ts.map +1 -0
- package/dist/lens/runtime/navigation.d.ts +77 -0
- package/dist/lens/runtime/navigation.d.ts.map +1 -0
- package/dist/lens/runtime/overlayContainer.d.ts +24 -0
- package/dist/lens/runtime/overlayContainer.d.ts.map +1 -0
- package/dist/lens/runtime/panel.d.ts +47 -0
- package/dist/lens/runtime/panel.d.ts.map +1 -0
- package/dist/lens/runtime/panelImage.d.ts +28 -0
- package/dist/lens/runtime/panelImage.d.ts.map +1 -0
- package/dist/lens/runtime/prefetch.d.ts +48 -0
- package/dist/lens/runtime/prefetch.d.ts.map +1 -0
- package/dist/lens/runtime/prefetchPanels.d.ts +17 -0
- package/dist/lens/runtime/prefetchPanels.d.ts.map +1 -0
- package/dist/lens/runtime/print.d.ts +50 -0
- package/dist/lens/runtime/print.d.ts.map +1 -0
- package/dist/lens/runtime/provider.d.ts +195 -0
- package/dist/lens/runtime/provider.d.ts.map +1 -0
- package/dist/lens/runtime/query.d.ts +32 -0
- package/dist/lens/runtime/query.d.ts.map +1 -0
- package/dist/lens/runtime/recovery.d.ts +26 -0
- package/dist/lens/runtime/recovery.d.ts.map +1 -0
- package/dist/lens/runtime/snapshotLease.d.ts +2 -0
- package/dist/lens/runtime/snapshotLease.d.ts.map +1 -0
- package/dist/lens/runtime/theme.d.ts +4 -0
- package/dist/lens/runtime/theme.d.ts.map +1 -0
- package/dist/lens/runtime/url.d.ts +23 -0
- package/dist/lens/runtime/url.d.ts.map +1 -0
- package/dist/lens/scales-DKkoQGtJ.js +195 -0
- package/dist/lens/snapshotLease-LjBaqKs-.js +14 -0
- package/dist/lens/style.css +1 -0
- package/dist/lens/visualRegression.d.ts +2 -0
- package/dist/lens/visualRegression.d.ts.map +1 -0
- package/dist/sdk-identity.cjs +6 -0
- package/dist/sdk-identity.d.ts +4 -0
- package/dist/sdk-identity.js +4 -0
- package/dist/sdk-identity.json +5 -0
- package/package.json +22 -123
- package/assets/fonts/Actay/Actay-Regular.otf +0 -0
- package/assets/fonts/Actay/Actay-RegularItalic.otf +0 -0
- package/assets/fonts/Actay/ActayCondensed-Thin.otf +0 -0
- package/assets/fonts/Actay/ActayCondensed-ThinItalic.otf +0 -0
- package/assets/fonts/Actay/ActayWide-Bold.otf +0 -0
- package/assets/fonts/Actay/ActayWide-BoldItalic.otf +0 -0
- package/assets/fonts/Gilroy/Gilroy-Black.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-BlackItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Bold.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-BoldItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Extrabold.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-ExtraboldItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Heavy.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-HeavyItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Light.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-LightItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Medium.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-MediumItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Regular.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-RegularItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Semibold.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-SemiboldItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-Thin.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-ThinItalic.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-UltraLight.woff2 +0 -0
- package/assets/fonts/Gilroy/Gilroy-UltraLightItalic.woff2 +0 -0
- package/assets/fonts/Inter.var.woff2 +0 -0
- package/dist/applet/core.cjs +0 -412
- package/dist/applet/core.cjs.map +0 -1
- package/dist/applet/core.d.cts +0 -187
- package/dist/applet/core.d.ts +0 -187
- package/dist/applet/core.mjs +0 -396
- package/dist/applet/core.mjs.map +0 -1
- package/dist/applet/devtools.cjs +0 -147
- package/dist/applet/devtools.cjs.map +0 -1
- package/dist/applet/devtools.d.cts +0 -7
- package/dist/applet/devtools.d.ts +0 -7
- package/dist/applet/devtools.mjs +0 -144
- package/dist/applet/devtools.mjs.map +0 -1
- package/dist/applet/host.cjs +0 -397
- package/dist/applet/host.cjs.map +0 -1
- package/dist/applet/host.d.cts +0 -42
- package/dist/applet/host.d.ts +0 -42
- package/dist/applet/host.mjs +0 -392
- package/dist/applet/host.mjs.map +0 -1
- package/dist/applet/vite.cjs +0 -219
- package/dist/applet/vite.cjs.map +0 -1
- package/dist/applet/vite.d.cts +0 -99
- package/dist/applet/vite.d.ts +0 -99
- package/dist/applet/vite.mjs +0 -203
- package/dist/applet/vite.mjs.map +0 -1
- package/dist/applet-runtime/index.cjs +0 -890
- package/dist/applet-runtime/index.cjs.map +0 -1
- package/dist/applet-runtime/index.d.cts +0 -191
- package/dist/applet-runtime/index.d.ts +0 -191
- package/dist/applet-runtime/index.mjs +0 -876
- package/dist/applet-runtime/index.mjs.map +0 -1
- package/dist/bichat/index.cjs +0 -20896
- package/dist/bichat/index.cjs.map +0 -1
- package/dist/bichat/index.css +0 -618
- package/dist/bichat/index.css.map +0 -1
- package/dist/bichat/index.d.cts +0 -4522
- package/dist/bichat/index.d.ts +0 -4522
- package/dist/bichat/index.mjs +0 -20724
- package/dist/bichat/index.mjs.map +0 -1
- package/dist/bichat/styles.css +0 -774
- package/dist/bichat/tailwind.cjs +0 -103
- package/dist/bichat/tailwind.cjs.map +0 -1
- package/dist/bichat/tailwind.d.cts +0 -21
- package/dist/bichat/tailwind.d.ts +0 -21
- package/dist/bichat/tailwind.mjs +0 -95
- package/dist/bichat/tailwind.mjs.map +0 -1
- package/dist/fonts/Actay/Actay-Regular.otf +0 -0
- package/dist/fonts/Actay/Actay-RegularItalic.otf +0 -0
- package/dist/fonts/Actay/ActayCondensed-Thin.otf +0 -0
- package/dist/fonts/Actay/ActayCondensed-ThinItalic.otf +0 -0
- package/dist/fonts/Actay/ActayWide-Bold.otf +0 -0
- package/dist/fonts/Actay/ActayWide-BoldItalic.otf +0 -0
- package/dist/fonts/Gilroy/Gilroy-Black.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-BlackItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Bold.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-BoldItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Extrabold.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-ExtraboldItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Heavy.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-HeavyItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Light.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-LightItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Medium.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-MediumItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Regular.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-RegularItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Semibold.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-SemiboldItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-Thin.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-ThinItalic.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-UltraLight.woff2 +0 -0
- package/dist/fonts/Gilroy/Gilroy-UltraLightItalic.woff2 +0 -0
- package/dist/fonts/Inter.var.woff2 +0 -0
- package/dist/index-Cs_xWkhC.d.cts +0 -84
- package/dist/index-Cs_xWkhC.d.ts +0 -84
- package/dist/index.cjs +0 -777
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -7
- package/dist/index.d.ts +0 -7
- package/dist/index.mjs +0 -755
- package/dist/index.mjs.map +0 -1
- package/dist/rpc-fh942_dj.d.cts +0 -31
- package/dist/rpc-fh942_dj.d.ts +0 -31
- package/tailwind/compiled.css +0 -2
- package/tailwind/create-config.cjs +0 -90
- package/tailwind/iota.css +0 -1195
- package/tailwind/main.css +0 -2
- package/tailwind/sdk-content.cjs +0 -177
- package/tailwind/sdk-theme.cjs +0 -120
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) IOTA
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,145 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @iota-uz/sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This is the single public JavaScript distribution for iota-sdk. Its bounded
|
|
4
|
+
subpath APIs are built from separate internal workspace modules:
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
- `@iota-uz/sdk/client-host`
|
|
7
|
+
- `@iota-uz/sdk/lens`
|
|
8
|
+
- `@iota-uz/sdk/lens/styles.css`
|
|
9
|
+
- `@iota-uz/sdk/identity`
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Add the module to your project:
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
go get github.com/iota-uz/applets@latest
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Import the public API from the root package:
|
|
18
|
-
|
|
19
|
-
```go
|
|
20
|
-
import "github.com/iota-uz/applets"
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Use `Registry`, `Controller`, RPC types, context helpers, and options as needed. For local development with a clone of this repo, use a [Go workspace](https://go.dev/ref/mod#workspaces) in your project with `use` pointing at the applets directory.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## NPM
|
|
28
|
-
|
|
29
|
-
Install the SDK in your applet frontend (e.g. Vite/React):
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
pnpm add @iota-uz/sdk
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Use applet context, host utilities, BiChat UI components, and Tailwind configuration from the package.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Applet CLI
|
|
40
|
-
|
|
41
|
-
Install the CLI (ensure `$GOBIN` is on your PATH):
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
go install github.com/iota-uz/applets/cmd/applet@latest
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
From a repo that contains an applet (e.g. iota-sdk or EAI):
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
applet doctor # environment and config diagnostics
|
|
51
|
-
applet rpc gen --name <applet-name>
|
|
52
|
-
applet rpc check --name <applet-name>
|
|
53
|
-
applet rpc watch --name <applet-name>
|
|
54
|
-
applet deps check
|
|
55
|
-
applet check # deps + RPC drift for all applets
|
|
56
|
-
applet schema export --name <applet>
|
|
57
|
-
applet dev # start dev environment (all configured applets)
|
|
58
|
-
applet dev --sdk-root ../../applets
|
|
59
|
-
applet dev --rpc-watch # include RPC codegen watch during dev
|
|
60
|
-
applet build [name] # build production bundle
|
|
61
|
-
applet list # list configured applets
|
|
62
|
-
applet secrets set --name <applet> --key OPENAI_API_KEY --value ...
|
|
63
|
-
applet secrets list --name <applet>
|
|
64
|
-
applet secrets delete --name <applet> --key OPENAI_API_KEY
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
- **Specific version:** `go install github.com/iota-uz/applets/cmd/applet@v0.4.4`
|
|
68
|
-
- **Shell completion:** `applet completion bash`, `applet completion zsh`, or `applet completion fish` — see `applet completion --help` for install instructions.
|
|
69
|
-
- **Convention-based local SDK:** when `applet dev` can see a canonical local `@iota-uz/sdk` source checkout (for example `./applets` in a monorepo), it automatically builds/watches that SDK and wires applet consumers to a managed local SDK package for dev.
|
|
70
|
-
- **Explicit escape hatch:** use `applet dev --sdk-root ../../applets` only when your local SDK checkout lives in a non-conventional location.
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## DX Migration Notes (Breaking)
|
|
75
|
-
|
|
76
|
-
- `applets/` is the canonical source of `@iota-uz/sdk`; `iota-sdk/package.json` is no longer the publish source.
|
|
77
|
-
- Local SDK iteration prefers convention over configuration. If your repo has `./applets` (or a conventional sibling `../applets`) you should not need any manual override at all.
|
|
78
|
-
- For non-conventional layouts, pass `--sdk-root` directly to `applet dev` instead of persisting local env overrides.
|
|
79
|
-
- Never commit local `pnpm` overrides/workspace links for `@iota-uz/sdk`.
|
|
80
|
-
- `applet dev` now detects `go.work` dependencies and automatically watches/restarts critical processes when dependency code changes.
|
|
81
|
-
|
|
82
|
-
### Release flow
|
|
83
|
-
|
|
84
|
-
1. Publish SDK changes from `applets/` (bump `applets/package.json` version).
|
|
85
|
-
2. Create and push a tag `iota-sdk-v<version>` where `<version>` exactly matches
|
|
86
|
-
`applets/package.json`. This triggers `publish-npm.yml`.
|
|
87
|
-
3. Upgrade consumers (`eai/back`, applet web packages, etc.) to the published version.
|
|
88
|
-
4. Commit only version upgrades in consumer repos; never commit local-link overrides.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Configuration
|
|
93
|
-
|
|
94
|
-
The CLI expects a project root where `.applets/config.toml` exists.
|
|
95
|
-
|
|
96
|
-
Minimal `.applets/config.toml` (schema v2):
|
|
97
|
-
|
|
98
|
-
```toml
|
|
99
|
-
version = 2
|
|
100
|
-
|
|
101
|
-
# Project-level dev processes
|
|
102
|
-
[[dev.processes]]
|
|
103
|
-
name = "air"
|
|
104
|
-
command = "air"
|
|
105
|
-
critical = true
|
|
106
|
-
|
|
107
|
-
[[dev.processes]]
|
|
108
|
-
name = "templ"
|
|
109
|
-
command = "templ"
|
|
110
|
-
args = ["generate", "--watch"]
|
|
111
|
-
|
|
112
|
-
# Applets: only base_path is required. Everything else is convention.
|
|
113
|
-
[applets.bichat]
|
|
114
|
-
base_path = "/bi-chat"
|
|
115
|
-
hosts = ["chat.example.com"] # optional
|
|
116
|
-
|
|
117
|
-
[applets.bichat.engine]
|
|
118
|
-
runtime = "off"
|
|
119
|
-
|
|
120
|
-
[applets.bichat.engine.backends]
|
|
121
|
-
kv = "memory"
|
|
122
|
-
db = "memory"
|
|
123
|
-
jobs = "memory"
|
|
124
|
-
files = "local"
|
|
125
|
-
secrets = "env"
|
|
126
|
-
|
|
127
|
-
[applets.bichat.frontend]
|
|
128
|
-
type = "static" # static|ssr
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Convention defaults:**
|
|
132
|
-
- `web` = `modules/<name>/presentation/web`
|
|
133
|
-
- `vite_port` = auto-assigned (5173, 5174, …) by sorted name order
|
|
134
|
-
- RPC router function = `Router` (hardcoded convention)
|
|
135
|
-
- Entry point = `/src/main.tsx` (Vite standard)
|
|
136
|
-
|
|
137
|
-
**Optional overrides:**
|
|
138
|
-
- `web` — custom web directory path (rare)
|
|
139
|
-
- `[applets.<name>.rpc] needs_reexport_shim = true` — for SDK applets that re-export RPC contracts
|
|
140
|
-
- `hosts` — additional host-based mounts (subdomain/custom-domain)
|
|
141
|
-
- `[applets.<name>.frontend] type = "static"|"ssr"` — SSR mode requires `engine.runtime = "bun"`
|
|
142
|
-
- `[applets.<name>.engine.s3]` — required when `engine.backends.files = "s3"`
|
|
143
|
-
- `[applets.<name>.engine.secrets] required = ["OPENAI_API_KEY"]` — startup-required secret keys
|
|
144
|
-
|
|
145
|
-
Run `applet doctor` to validate config and environment.
|
|
11
|
+
Version 0.5 is a clean break: legacy root, BiChat, applet, Tailwind, and asset
|
|
12
|
+
exports are intentionally absent. React and ReactDOM are peer dependencies;
|
|
13
|
+
Lens implementation dependencies are contained in lazy Lens chunks and are not
|
|
14
|
+
loaded by client-host imports.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ComponentType, PropsWithChildren } from 'react';
|
|
2
|
+
import type { ClientRouteContext } from './route';
|
|
3
|
+
import type { SessionService } from './transport';
|
|
4
|
+
export interface StandardAppletContext {
|
|
5
|
+
config: {
|
|
6
|
+
basePath: string;
|
|
7
|
+
rpcUIEndpoint: string;
|
|
8
|
+
streamEndpoint?: string;
|
|
9
|
+
uploadEndpoint?: string;
|
|
10
|
+
assetsBasePath?: string;
|
|
11
|
+
shellMode?: string;
|
|
12
|
+
};
|
|
13
|
+
session?: {
|
|
14
|
+
csrfToken?: string;
|
|
15
|
+
};
|
|
16
|
+
user?: unknown;
|
|
17
|
+
tenant?: unknown;
|
|
18
|
+
locale?: unknown;
|
|
19
|
+
extensions?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface StandardAppletInitial<TContext extends StandardAppletContext = StandardAppletContext> {
|
|
22
|
+
appletContext: TContext;
|
|
23
|
+
}
|
|
24
|
+
export interface BiChatHTTPConfig {
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
rpcEndpoint: string;
|
|
27
|
+
streamEndpoint?: string;
|
|
28
|
+
uploadEndpoint?: string;
|
|
29
|
+
csrfToken?: string | (() => string);
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
rpcTimeoutMs?: number;
|
|
32
|
+
streamConnectTimeoutMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/** Replaces useHttpDataSourceConfigFromApplet/window globals for client routes. */
|
|
35
|
+
export declare function biChatHTTPConfigFromRoute<TContext extends StandardAppletContext>(route: ClientRouteContext<StandardAppletInitial<TContext>>, session?: SessionService, options?: {
|
|
36
|
+
rpcTimeoutMs?: number;
|
|
37
|
+
streamConnectTimeoutMs?: number;
|
|
38
|
+
}): BiChatHTTPConfig;
|
|
39
|
+
type ExplicitAppletProvider<TContext> = ComponentType<PropsWithChildren<{
|
|
40
|
+
windowKey: string;
|
|
41
|
+
context?: TContext;
|
|
42
|
+
}>>;
|
|
43
|
+
/**
|
|
44
|
+
* Bridges the standard route bootstrap into @iota-uz/sdk's AppletProvider
|
|
45
|
+
* `context` prop. No window.__APPLET_CONTEXT__ compatibility global is written.
|
|
46
|
+
*/
|
|
47
|
+
export declare function AppletRouteBridge<TContext extends StandardAppletContext>({ provider: Provider, route, children, }: PropsWithChildren<{
|
|
48
|
+
provider: ExplicitAppletProvider<TContext>;
|
|
49
|
+
route: ClientRouteContext<StandardAppletInitial<TContext>>;
|
|
50
|
+
}>): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=applet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applet.d.ts","sourceRoot":"","sources":["../src/applet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB,CAAC,QAAQ,SAAS,qBAAqB,GAAG,qBAAqB;IACnG,aAAa,EAAE,QAAQ,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,QAAQ,SAAS,qBAAqB,EAC9E,KAAK,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,EAC1D,OAAO,CAAC,EAAE,cAAc,EACxB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAAO,GACvE,gBAAgB,CAclB;AAED,KAAK,sBAAsB,CAAC,QAAQ,IAAI,aAAa,CAAC,iBAAiB,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC,CAAA;AAEnH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,qBAAqB,EAAE,EACxE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GACpC,EAAE,iBAAiB,CAAC;IACnB,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAC1C,KAAK,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAA;CAC3D,CAAC,2CAED"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Replaces useHttpDataSourceConfigFromApplet/window globals for client routes. */
|
|
3
|
+
export function biChatHTTPConfigFromRoute(route, session, options = {}) {
|
|
4
|
+
const config = route.initial.appletContext.config;
|
|
5
|
+
return {
|
|
6
|
+
// Applet context endpoints are route-ready paths (and may also be absolute
|
|
7
|
+
// URLs). HttpDataSource concatenates baseUrl with each endpoint, so using
|
|
8
|
+
// the applet's mount basePath here would incorrectly turn `/rpc` into
|
|
9
|
+
// `/admin/ali/chat/rpc` and prefix the stream endpoint a second time.
|
|
10
|
+
baseUrl: '',
|
|
11
|
+
rpcEndpoint: config.rpcUIEndpoint,
|
|
12
|
+
...(config.streamEndpoint ? { streamEndpoint: config.streamEndpoint } : {}),
|
|
13
|
+
...(config.uploadEndpoint ? { uploadEndpoint: config.uploadEndpoint } : {}),
|
|
14
|
+
...(session ? { csrfToken: () => session.snapshot().csrf ?? '' } : route.csrf ? { csrfToken: route.csrf } : {}),
|
|
15
|
+
...options,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Bridges the standard route bootstrap into @iota-uz/sdk's AppletProvider
|
|
20
|
+
* `context` prop. No window.__APPLET_CONTEXT__ compatibility global is written.
|
|
21
|
+
*/
|
|
22
|
+
export function AppletRouteBridge({ provider: Provider, route, children, }) {
|
|
23
|
+
return _jsx(Provider, { windowKey: "__unused_client_route_context__", context: route.initial.appletContext, children: children });
|
|
24
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type QueryKey = readonly [namespace: string, method: string, request: string];
|
|
2
|
+
export interface QueryCache {
|
|
3
|
+
get<T>(key: QueryKey): T | undefined;
|
|
4
|
+
set<T>(key: QueryKey, value: T): void;
|
|
5
|
+
invalidate(namespace: string, methods: readonly string[]): void;
|
|
6
|
+
}
|
|
7
|
+
export declare class MemoryQueryCache implements QueryCache {
|
|
8
|
+
private readonly values;
|
|
9
|
+
get<T>(key: QueryKey): T | undefined;
|
|
10
|
+
set<T>(key: QueryKey, value: T): void;
|
|
11
|
+
invalidate(namespace: string, methods: readonly string[]): void;
|
|
12
|
+
}
|
|
13
|
+
export declare function stableSerialize(value: unknown): string;
|
|
14
|
+
export declare function queryKey(namespace: string, method: string, request: unknown): QueryKey;
|
|
15
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAEpF,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAA;IACpC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACrC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;CAChE;AAID,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,CAAC,GAAG,SAAS;IACpC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IACrC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;CAOhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMtD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAEtF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function cacheKey(key) { return JSON.stringify(key); }
|
|
2
|
+
export class MemoryQueryCache {
|
|
3
|
+
values = new Map();
|
|
4
|
+
get(key) { return this.values.get(cacheKey(key)); }
|
|
5
|
+
set(key, value) { this.values.set(cacheKey(key), value); }
|
|
6
|
+
invalidate(namespace, methods) {
|
|
7
|
+
const families = new Set(methods);
|
|
8
|
+
for (const encoded of this.values.keys()) {
|
|
9
|
+
const [entryNamespace, method] = JSON.parse(encoded);
|
|
10
|
+
if (entryNamespace === namespace && families.has(method))
|
|
11
|
+
this.values.delete(encoded);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function stableSerialize(value) {
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
return 'null';
|
|
18
|
+
if (value === null || typeof value !== 'object')
|
|
19
|
+
return JSON.stringify(value);
|
|
20
|
+
if (Array.isArray(value))
|
|
21
|
+
return `[${value.map(stableSerialize).join(',')}]`;
|
|
22
|
+
const object = value;
|
|
23
|
+
return `{${Object.keys(object).sort().map((key) => `${JSON.stringify(key)}:${stableSerialize(object[key])}`).join(',')}}`;
|
|
24
|
+
}
|
|
25
|
+
export function queryKey(namespace, method, request) {
|
|
26
|
+
return [namespace, method, stableSerialize(request)];
|
|
27
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type HostErrorCode = 'unauthenticated' | 'permission_denied' | 'validation' | 'field_validation' | 'transient' | 'protocol' | 'unknown';
|
|
2
|
+
export declare class HostError extends Error {
|
|
3
|
+
readonly code: HostErrorCode;
|
|
4
|
+
readonly details?: unknown | undefined;
|
|
5
|
+
readonly fieldErrors: Readonly<Record<string, string>>;
|
|
6
|
+
constructor(code: HostErrorCode, message: string, details?: unknown | undefined, fieldErrors?: Readonly<Record<string, string>>);
|
|
7
|
+
get retryable(): boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface HostErrorHandlers {
|
|
10
|
+
unauthenticated?(error: HostError): void;
|
|
11
|
+
permissionDenied?(error: HostError): void;
|
|
12
|
+
validation?(error: HostError): void;
|
|
13
|
+
}
|
|
14
|
+
export declare function asHostError(input: unknown): HostError;
|
|
15
|
+
export declare function dispatchHostError(error: HostError, handlers?: HostErrorHandlers): void;
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,mBAAmB,GACnB,YAAY,GACZ,kBAAkB,GAClB,WAAW,GACX,UAAU,GACV,SAAS,CAAA;AAEb,qBAAa,SAAU,SAAQ,KAAK;IAEhC,QAAQ,CAAC,IAAI,EAAE,aAAa;IAE5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;IAC1B,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAH7C,IAAI,EAAE,aAAa,EAC5B,OAAO,EAAE,MAAM,EACN,OAAO,CAAC,EAAE,OAAO,YAAA,EACjB,WAAW,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAM7D,IAAI,SAAS,IAAI,OAAO,CAAqC;CAC9D;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACxC,gBAAgB,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IACzC,UAAU,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;CACpC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAsBrD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAItF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export class HostError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
details;
|
|
4
|
+
fieldErrors;
|
|
5
|
+
constructor(code, message, details, fieldErrors = {}) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.details = details;
|
|
9
|
+
this.fieldErrors = fieldErrors;
|
|
10
|
+
this.name = 'HostError';
|
|
11
|
+
}
|
|
12
|
+
get retryable() { return this.code === 'transient'; }
|
|
13
|
+
}
|
|
14
|
+
export function asHostError(input) {
|
|
15
|
+
if (input instanceof HostError)
|
|
16
|
+
return input;
|
|
17
|
+
const candidate = input;
|
|
18
|
+
const raw = String(candidate?.code ?? 'unknown');
|
|
19
|
+
const code = raw === 'unauthenticated' || raw === 'unauthorized'
|
|
20
|
+
? 'unauthenticated'
|
|
21
|
+
: raw === 'forbidden' || raw === 'permission_denied'
|
|
22
|
+
? 'permission_denied'
|
|
23
|
+
: raw === 'validation'
|
|
24
|
+
? 'validation'
|
|
25
|
+
: raw === 'field_validation'
|
|
26
|
+
? 'field_validation'
|
|
27
|
+
: raw === 'timeout' || raw === 'unavailable' || raw === 'transient'
|
|
28
|
+
? 'transient'
|
|
29
|
+
: raw === 'protocol'
|
|
30
|
+
? 'protocol'
|
|
31
|
+
: 'unknown';
|
|
32
|
+
const details = candidate?.details;
|
|
33
|
+
const fieldErrors = code === 'field_validation' && details && typeof details === 'object'
|
|
34
|
+
? details
|
|
35
|
+
: {};
|
|
36
|
+
return new HostError(code, String(candidate?.message ?? input ?? 'Unknown host error'), details, fieldErrors);
|
|
37
|
+
}
|
|
38
|
+
export function dispatchHostError(error, handlers) {
|
|
39
|
+
if (error.code === 'unauthenticated')
|
|
40
|
+
handlers?.unauthenticated?.(error);
|
|
41
|
+
if (error.code === 'permission_denied')
|
|
42
|
+
handlers?.permissionDenied?.(error);
|
|
43
|
+
if (error.code === 'validation' || error.code === 'field_validation')
|
|
44
|
+
handlers?.validation?.(error);
|
|
45
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const SDK_RELEASE_VERSION = "0.5.1";
|
|
2
|
+
export declare const SDK_SOURCE_COMMIT = "3b8b83b7c05ea67259038ce8f804bd54243ef71f";
|
|
3
|
+
export declare const SDK_PROTOCOL_VERSION = "1.0.0";
|
|
4
|
+
export declare const SDK_IDENTITY: Readonly<{
|
|
5
|
+
releaseVersion: "0.5.1";
|
|
6
|
+
sourceCommit: "3b8b83b7c05ea67259038ce8f804bd54243ef71f";
|
|
7
|
+
protocolVersion: "1.0.0";
|
|
8
|
+
}>;
|
|
9
|
+
export interface SDKRuntimeIdentity {
|
|
10
|
+
releaseVersion: string;
|
|
11
|
+
sourceCommit: string;
|
|
12
|
+
protocolVersion: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class SDKIdentityMismatchError extends Error {
|
|
15
|
+
readonly expected: SDKRuntimeIdentity;
|
|
16
|
+
readonly actual: SDKRuntimeIdentity;
|
|
17
|
+
readonly code = "SDK_IDENTITY_MISMATCH";
|
|
18
|
+
constructor(expected: SDKRuntimeIdentity, actual: SDKRuntimeIdentity);
|
|
19
|
+
}
|
|
20
|
+
export declare function assertSDKIdentity(actual: SDKRuntimeIdentity): void;
|
|
21
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,UAAU,CAAA;AAC1C,eAAO,MAAM,iBAAiB,+BAA+B,CAAA;AAC7D,eAAO,MAAM,oBAAoB,UAA+B,CAAA;AAChE,eAAO,MAAM,YAAY;;;;EAIvB,CAAA;AAEF,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAGrC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB;IAAE,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IAFtF,QAAQ,CAAC,IAAI,2BAA0B;gBAElB,QAAQ,EAAE,kBAAkB,EAAW,MAAM,EAAE,kBAAkB;CAIvF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CASlE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CLIENT_HOST_PROTOCOL_VERSION } from './protocol';
|
|
2
|
+
export const SDK_RELEASE_VERSION = '0.5.1';
|
|
3
|
+
export const SDK_SOURCE_COMMIT = '3b8b83b7c05ea67259038ce8f804bd54243ef71f';
|
|
4
|
+
export const SDK_PROTOCOL_VERSION = CLIENT_HOST_PROTOCOL_VERSION;
|
|
5
|
+
export const SDK_IDENTITY = Object.freeze({
|
|
6
|
+
releaseVersion: SDK_RELEASE_VERSION,
|
|
7
|
+
sourceCommit: SDK_SOURCE_COMMIT,
|
|
8
|
+
protocolVersion: SDK_PROTOCOL_VERSION,
|
|
9
|
+
});
|
|
10
|
+
export class SDKIdentityMismatchError extends Error {
|
|
11
|
+
expected;
|
|
12
|
+
actual;
|
|
13
|
+
code = 'SDK_IDENTITY_MISMATCH';
|
|
14
|
+
constructor(expected, actual) {
|
|
15
|
+
super(`SDK runtime ${actual.releaseVersion}@${actual.sourceCommit} is incompatible with ${expected.releaseVersion}@${expected.sourceCommit}`);
|
|
16
|
+
this.expected = expected;
|
|
17
|
+
this.actual = actual;
|
|
18
|
+
this.name = 'SDKIdentityMismatchError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function assertSDKIdentity(actual) {
|
|
22
|
+
const expected = SDK_IDENTITY;
|
|
23
|
+
if (actual.releaseVersion !== expected.releaseVersion
|
|
24
|
+
|| actual.sourceCommit !== expected.sourceCommit
|
|
25
|
+
|| actual.protocolVersion.split('.', 1)[0] !== expected.protocolVersion.split('.', 1)[0]) {
|
|
26
|
+
throw new SDKIdentityMismatchError(expected, actual);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './applet';
|
|
2
|
+
export * from './cache';
|
|
3
|
+
export * from './errors';
|
|
4
|
+
export * from './identity';
|
|
5
|
+
export * from './portals';
|
|
6
|
+
export * from './protocol';
|
|
7
|
+
export * from './route';
|
|
8
|
+
export * from './rpc';
|
|
9
|
+
export * from './streaming';
|
|
10
|
+
export * from './transport';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './applet';
|
|
2
|
+
export * from './cache';
|
|
3
|
+
export * from './errors';
|
|
4
|
+
export * from './identity';
|
|
5
|
+
export * from './portals';
|
|
6
|
+
export * from './protocol';
|
|
7
|
+
export * from './route';
|
|
8
|
+
export * from './rpc';
|
|
9
|
+
export * from './streaming';
|
|
10
|
+
export * from './transport';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type PropsWithChildren, type ReactNode } from 'react';
|
|
2
|
+
export type PortalSurface = 'modal' | 'drawer' | 'toast' | 'command';
|
|
3
|
+
export type WidgetSlotName = 'navigation-leading' | 'navigation-trailing' | 'header-actions' | 'document-status';
|
|
4
|
+
export interface ClientHostProviderProps extends PropsWithChildren {
|
|
5
|
+
portalOwner: HTMLElement;
|
|
6
|
+
background?: HTMLElement | undefined;
|
|
7
|
+
widgetSlots?: Partial<Record<WidgetSlotName, HTMLElement>> | undefined;
|
|
8
|
+
theme?: 'light' | 'dark' | undefined;
|
|
9
|
+
}
|
|
10
|
+
/** Owns document-lifetime portal roots; feature roots must never append to body. */
|
|
11
|
+
export declare function ClientHostProvider({ portalOwner, background, widgetSlots, theme, children }: ClientHostProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export interface PortalProps extends PropsWithChildren {
|
|
13
|
+
surface: PortalSurface;
|
|
14
|
+
label: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
onEscape?: () => void;
|
|
17
|
+
theme?: 'light' | 'dark';
|
|
18
|
+
}
|
|
19
|
+
export declare function Portal({ surface, label, className, onEscape, theme, children }: PortalProps): import("react").ReactPortal;
|
|
20
|
+
/** Uses an existing standard host when present, otherwise creates a bounded
|
|
21
|
+
* compatibility host inside the feature root (never a body-level root). */
|
|
22
|
+
export declare function ClientHostBoundary({ children, theme }: PropsWithChildren<{
|
|
23
|
+
theme?: 'light' | 'dark' | undefined;
|
|
24
|
+
}>): string | number | boolean | Iterable<ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
25
|
+
/** Widget slots are persistent shell surfaces and intentionally separate from overlays. */
|
|
26
|
+
export declare function WidgetSlot({ name, children }: {
|
|
27
|
+
name: WidgetSlotName;
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
}): import("react").ReactPortal | null;
|
|
30
|
+
//# sourceMappingURL=portals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portals.d.ts","sourceRoot":"","sources":["../src/portals.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAA2D,MAAM,OAAO,CAAA;AAG1J,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;AACpE,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;AA2EhH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,GAAG,SAAS,CAAA;IACtE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CACrC;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,WAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAQzH;AAED,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IAAG,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAAE;AAErK,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,+BA0B3F;AAED;2EAC2E;AAC3E,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC;IAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,gHAIlH;AAaD,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,sCAG3F"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useEffect, useId, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { createPortal } from 'react-dom';
|
|
4
|
+
const zLayers = { drawer: 600, modal: 700, command: 800, toast: 900 };
|
|
5
|
+
class PortalRegistry {
|
|
6
|
+
owner;
|
|
7
|
+
background;
|
|
8
|
+
roots = new Map();
|
|
9
|
+
overlays = [];
|
|
10
|
+
lockState;
|
|
11
|
+
constructor(owner, background) {
|
|
12
|
+
this.owner = owner;
|
|
13
|
+
this.background = background;
|
|
14
|
+
}
|
|
15
|
+
root(surface) {
|
|
16
|
+
let root = this.roots.get(surface);
|
|
17
|
+
if (!root) {
|
|
18
|
+
root = document.createElement('div');
|
|
19
|
+
root.dataset.iotaPortal = surface;
|
|
20
|
+
root.style.position = 'relative';
|
|
21
|
+
root.style.zIndex = String(zLayers[surface]);
|
|
22
|
+
this.owner.append(root);
|
|
23
|
+
this.roots.set(surface, root);
|
|
24
|
+
}
|
|
25
|
+
return root;
|
|
26
|
+
}
|
|
27
|
+
mount(entry) {
|
|
28
|
+
this.overlays.push(entry);
|
|
29
|
+
this.sync();
|
|
30
|
+
return () => {
|
|
31
|
+
const index = this.overlays.findIndex((candidate) => candidate.id === entry.id);
|
|
32
|
+
const wasTop = index === this.overlays.length - 1;
|
|
33
|
+
if (index >= 0)
|
|
34
|
+
this.overlays.splice(index, 1);
|
|
35
|
+
this.sync();
|
|
36
|
+
if (wasTop)
|
|
37
|
+
entry.restore?.focus();
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
destroy() {
|
|
41
|
+
this.overlays.splice(0);
|
|
42
|
+
this.sync();
|
|
43
|
+
for (const root of this.roots.values())
|
|
44
|
+
root.remove();
|
|
45
|
+
this.roots.clear();
|
|
46
|
+
}
|
|
47
|
+
sync() {
|
|
48
|
+
const blocking = this.overlays.some(({ surface }) => surface === 'modal' || surface === 'drawer' || surface === 'command');
|
|
49
|
+
if (blocking && !this.lockState) {
|
|
50
|
+
this.lockState = {
|
|
51
|
+
overflow: document.documentElement.style.overflow,
|
|
52
|
+
...(this.background ? {
|
|
53
|
+
inert: this.background.inert,
|
|
54
|
+
ariaHidden: this.background.getAttribute('aria-hidden'),
|
|
55
|
+
} : {}),
|
|
56
|
+
};
|
|
57
|
+
document.documentElement.style.overflow = 'hidden';
|
|
58
|
+
if (!this.background)
|
|
59
|
+
return;
|
|
60
|
+
this.background.inert = blocking;
|
|
61
|
+
this.background.setAttribute('aria-hidden', 'true');
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!blocking && this.lockState) {
|
|
65
|
+
document.documentElement.style.overflow = this.lockState.overflow;
|
|
66
|
+
if (this.background) {
|
|
67
|
+
this.background.inert = this.lockState.inert ?? false;
|
|
68
|
+
if (this.lockState.ariaHidden === null || this.lockState.ariaHidden === undefined)
|
|
69
|
+
this.background.removeAttribute('aria-hidden');
|
|
70
|
+
else
|
|
71
|
+
this.background.setAttribute('aria-hidden', this.lockState.ariaHidden);
|
|
72
|
+
}
|
|
73
|
+
this.lockState = undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const PortalContext = createContext(undefined);
|
|
78
|
+
const WidgetContext = createContext(new Map());
|
|
79
|
+
/** Owns document-lifetime portal roots; feature roots must never append to body. */
|
|
80
|
+
export function ClientHostProvider({ portalOwner, background, widgetSlots = {}, theme, children }) {
|
|
81
|
+
const registry = useMemo(() => new PortalRegistry(portalOwner, background), [portalOwner, background]);
|
|
82
|
+
const slots = useMemo(() => new Map(Object.entries(widgetSlots)), [widgetSlots]);
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (theme)
|
|
85
|
+
portalOwner.dataset.theme = theme;
|
|
86
|
+
return () => { registry.destroy(); delete portalOwner.dataset.theme; };
|
|
87
|
+
}, [portalOwner, registry, theme]);
|
|
88
|
+
return _jsx(PortalContext.Provider, { value: registry, children: _jsx(WidgetContext.Provider, { value: slots, children: children }) });
|
|
89
|
+
}
|
|
90
|
+
export function Portal({ surface, label, className, onEscape, theme, children }) {
|
|
91
|
+
const registry = useContext(PortalContext);
|
|
92
|
+
if (!registry)
|
|
93
|
+
throw new Error('Portal must be rendered inside ClientHostProvider');
|
|
94
|
+
const id = useId();
|
|
95
|
+
const content = useRef(null);
|
|
96
|
+
useEffect(() => registry.mount({ id, surface, restore: document.activeElement }), [id, registry, surface]);
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
if (surface === 'toast')
|
|
99
|
+
return;
|
|
100
|
+
const root = content.current;
|
|
101
|
+
const first = root?.querySelector('button,[href],input,select,textarea,[tabindex]:not([tabindex="-1"])');
|
|
102
|
+
first?.focus();
|
|
103
|
+
}, [surface]);
|
|
104
|
+
const trapFocus = (event) => {
|
|
105
|
+
if (event.key === 'Escape' && onEscape) {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
event.stopPropagation();
|
|
108
|
+
onEscape();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (event.key !== 'Tab' || surface === 'toast')
|
|
112
|
+
return;
|
|
113
|
+
const focusable = Array.from(content.current?.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])') ?? []);
|
|
114
|
+
if (focusable.length === 0) {
|
|
115
|
+
event.preventDefault();
|
|
116
|
+
content.current?.focus();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const first = focusable[0];
|
|
120
|
+
const last = focusable.at(-1);
|
|
121
|
+
if (event.shiftKey && document.activeElement === first) {
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
last?.focus();
|
|
124
|
+
}
|
|
125
|
+
else if (!event.shiftKey && document.activeElement === last) {
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
first?.focus();
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
return createPortal(_jsx("div", { ref: content, role: surface === 'toast' ? 'status' : 'dialog', "aria-label": label, "aria-modal": surface === 'toast' ? undefined : true, className: className, "data-iota-surface": surface, "data-theme": theme, onKeyDown: trapFocus, tabIndex: -1, children: children }), registry.root(surface));
|
|
131
|
+
}
|
|
132
|
+
/** Uses an existing standard host when present, otherwise creates a bounded
|
|
133
|
+
* compatibility host inside the feature root (never a body-level root). */
|
|
134
|
+
export function ClientHostBoundary({ children, theme }) {
|
|
135
|
+
const existing = useContext(PortalContext);
|
|
136
|
+
if (existing)
|
|
137
|
+
return children;
|
|
138
|
+
return _jsx(EmbeddedClientHost, { theme: theme, children: children });
|
|
139
|
+
}
|
|
140
|
+
function EmbeddedClientHost({ children, theme }) {
|
|
141
|
+
const [background, setBackground] = useState(null);
|
|
142
|
+
const [portals, setPortals] = useState(null);
|
|
143
|
+
return _jsxs(_Fragment, { children: [_jsx("div", { "data-client-route-background": true, ref: setBackground, children: background && portals ? _jsx(ClientHostProvider, { portalOwner: portals, background: background, theme: theme, children: children }) : null }), _jsx("div", { "data-client-route-portals": true, ref: setPortals })] });
|
|
144
|
+
}
|
|
145
|
+
/** Widget slots are persistent shell surfaces and intentionally separate from overlays. */
|
|
146
|
+
export function WidgetSlot({ name, children }) {
|
|
147
|
+
const slot = useContext(WidgetContext).get(name);
|
|
148
|
+
return slot ? createPortal(children, slot) : null;
|
|
149
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,4BAA4B,UAAU,CAAA"}
|