@omnitron-dev/prism 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +216 -2
- package/THIRD-PARTY-NOTICES.txt +26 -0
- package/dist/accessibility/index.js +2 -0
- package/dist/accessibility/index.js.map +1 -1
- package/dist/auth/index.d.ts +4 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +4 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/blocks/auth-block/guards.d.ts +3 -2
- package/dist/blocks/auth-block/guards.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/dashboard-block.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/types.d.ts +4 -2
- package/dist/blocks/dashboard-block/types.d.ts.map +1 -1
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts +2 -2
- package/dist/blocks/dashboard-block/use-dashboard-block.d.ts.map +1 -1
- package/dist/blocks/data-grid-block/data-grid-block.d.ts.map +1 -1
- package/dist/blocks/data-grid-block/types.d.ts +3 -0
- package/dist/blocks/data-grid-block/types.d.ts.map +1 -1
- package/dist/blocks/index.js +80 -253
- package/dist/blocks/index.js.map +1 -1
- package/dist/chunk-2AB7VGPW.js +447 -0
- package/dist/chunk-2AB7VGPW.js.map +1 -0
- package/dist/{chunk-WFD54GQQ.js → chunk-2E67PQ4T.js} +14 -573
- package/dist/chunk-2E67PQ4T.js.map +1 -0
- package/dist/chunk-2KG2NI73.js +84 -0
- package/dist/chunk-2KG2NI73.js.map +1 -0
- package/dist/chunk-2UYRW6X3.js +44 -0
- package/dist/chunk-2UYRW6X3.js.map +1 -0
- package/dist/chunk-36C5H56C.js +208 -0
- package/dist/chunk-36C5H56C.js.map +1 -0
- package/dist/chunk-36FOXX25.js +73 -0
- package/dist/chunk-36FOXX25.js.map +1 -0
- package/dist/chunk-3VSM7NZG.js +562 -0
- package/dist/chunk-3VSM7NZG.js.map +1 -0
- package/dist/chunk-4B2LTPK2.js +826 -0
- package/dist/chunk-4B2LTPK2.js.map +1 -0
- package/dist/chunk-4HUGZJKU.js +108 -0
- package/dist/chunk-4HUGZJKU.js.map +1 -0
- package/dist/chunk-4Q5L7LDG.js +74 -0
- package/dist/chunk-4Q5L7LDG.js.map +1 -0
- package/dist/{chunk-BRDWQVRT.js → chunk-4R7EZ7GQ.js} +3 -2
- package/dist/chunk-4R7EZ7GQ.js.map +1 -0
- package/dist/chunk-6IANOSMD.js +185 -0
- package/dist/chunk-6IANOSMD.js.map +1 -0
- package/dist/chunk-7ATBURW2.js +206 -0
- package/dist/chunk-7ATBURW2.js.map +1 -0
- package/dist/{chunk-6AHI4GSV.js → chunk-AATAOOSF.js} +4 -3
- package/dist/chunk-AATAOOSF.js.map +1 -0
- package/dist/chunk-AKLRKCYH.js +128 -0
- package/dist/chunk-AKLRKCYH.js.map +1 -0
- package/dist/chunk-CT46KJOR.js +133 -0
- package/dist/chunk-CT46KJOR.js.map +1 -0
- package/dist/{chunk-YQW43BDH.js → chunk-D4GFAJAZ.js} +1168 -6354
- package/dist/chunk-D4GFAJAZ.js.map +1 -0
- package/dist/chunk-D5J3KW6Q.js +106 -0
- package/dist/chunk-D5J3KW6Q.js.map +1 -0
- package/dist/chunk-DEPJRTVT.js +3 -0
- package/dist/{chunk-FU52GL2E.js.map → chunk-DEPJRTVT.js.map} +1 -1
- package/dist/{chunk-S6SEGBX6.js → chunk-DHTYHUYI.js} +85 -107
- package/dist/chunk-DHTYHUYI.js.map +1 -0
- package/dist/chunk-E7WM2RXA.js +249 -0
- package/dist/chunk-E7WM2RXA.js.map +1 -0
- package/dist/chunk-F6RZ7LW6.js +1271 -0
- package/dist/chunk-F6RZ7LW6.js.map +1 -0
- package/dist/chunk-FOGY3HA4.js +217 -0
- package/dist/chunk-FOGY3HA4.js.map +1 -0
- package/dist/chunk-G2GANYMW.js +139 -0
- package/dist/chunk-G2GANYMW.js.map +1 -0
- package/dist/chunk-I6DILPFE.js +293 -0
- package/dist/chunk-I6DILPFE.js.map +1 -0
- package/dist/chunk-IRYU3NTG.js +573 -0
- package/dist/chunk-IRYU3NTG.js.map +1 -0
- package/dist/chunk-JTIUGPW5.js +284 -0
- package/dist/chunk-JTIUGPW5.js.map +1 -0
- package/dist/{chunk-GUFHFEPZ.js → chunk-JZBSPDED.js} +2 -2
- package/dist/{chunk-GUFHFEPZ.js.map → chunk-JZBSPDED.js.map} +1 -1
- package/dist/chunk-KPY7TA4D.js +191 -0
- package/dist/chunk-KPY7TA4D.js.map +1 -0
- package/dist/{chunk-OBJ244BO.js → chunk-LFWKGNCX.js} +50 -656
- package/dist/chunk-LFWKGNCX.js.map +1 -0
- package/dist/chunk-LH4ZZZYB.js +37 -0
- package/dist/chunk-LH4ZZZYB.js.map +1 -0
- package/dist/chunk-NFJ7CPG3.js +13 -0
- package/dist/chunk-NFJ7CPG3.js.map +1 -0
- package/dist/chunk-NFPOIHD4.js +3 -0
- package/dist/{chunk-AYYFMTMI.js.map → chunk-NFPOIHD4.js.map} +1 -1
- package/dist/{chunk-XIXSSI3B.js → chunk-NJM5AVBM.js} +3 -2
- package/dist/chunk-NJM5AVBM.js.map +1 -0
- package/dist/{chunk-Z5OSPAOC.js → chunk-NSNM53WI.js} +196 -175
- package/dist/chunk-NSNM53WI.js.map +1 -0
- package/dist/chunk-NTREGTG7.js +31 -0
- package/dist/chunk-NTREGTG7.js.map +1 -0
- package/dist/{chunk-ADG4HZEP.js → chunk-OKJA6SJM.js} +4 -4
- package/dist/chunk-OKJA6SJM.js.map +1 -0
- package/dist/chunk-Q6JDNFSG.js +303 -0
- package/dist/chunk-Q6JDNFSG.js.map +1 -0
- package/dist/chunk-RPOGINR5.js +115 -0
- package/dist/chunk-RPOGINR5.js.map +1 -0
- package/dist/{chunk-ZTATTUH7.js → chunk-RSWVYIXK.js} +282 -683
- package/dist/chunk-RSWVYIXK.js.map +1 -0
- package/dist/chunk-SSEHL5VP.js +110 -0
- package/dist/chunk-SSEHL5VP.js.map +1 -0
- package/dist/chunk-TEIGUOWN.js +523 -0
- package/dist/chunk-TEIGUOWN.js.map +1 -0
- package/dist/{chunk-AYYFMTMI.js → chunk-TJ7DHXUX.js} +2 -2
- package/dist/chunk-TJ7DHXUX.js.map +1 -0
- package/dist/chunk-TZHWYT34.js +590 -0
- package/dist/chunk-TZHWYT34.js.map +1 -0
- package/dist/chunk-TZWHELY4.js +45 -0
- package/dist/chunk-TZWHELY4.js.map +1 -0
- package/dist/{chunk-BZOL7GMU.js → chunk-UEINJFLS.js} +7 -7
- package/dist/chunk-UEINJFLS.js.map +1 -0
- package/dist/chunk-URFQX3I6.js +129 -0
- package/dist/chunk-URFQX3I6.js.map +1 -0
- package/dist/chunk-VG6FOMOH.js +187 -0
- package/dist/chunk-VG6FOMOH.js.map +1 -0
- package/dist/chunk-VQVVHMPG.js +106 -0
- package/dist/chunk-VQVVHMPG.js.map +1 -0
- package/dist/{chunk-DRFNMZLG.js → chunk-VUKOT432.js} +3 -2
- package/dist/chunk-VUKOT432.js.map +1 -0
- package/dist/chunk-WD4N72DL.js +315 -0
- package/dist/chunk-WD4N72DL.js.map +1 -0
- package/dist/chunk-XBYMG4QK.js +119 -0
- package/dist/chunk-XBYMG4QK.js.map +1 -0
- package/dist/chunk-YHM6GIHV.js +3 -0
- package/dist/chunk-YHM6GIHV.js.map +1 -0
- package/dist/{chunk-SNZK5X6F.js → chunk-Z2AN43YU.js} +4 -2
- package/dist/chunk-Z2AN43YU.js.map +1 -0
- package/dist/chunk-ZNWHMQRM.js +171 -0
- package/dist/chunk-ZNWHMQRM.js.map +1 -0
- package/dist/{chunk-YSIG2XYH.js → chunk-ZRJYQN6Y.js} +2 -2
- package/dist/{chunk-YSIG2XYH.js.map → chunk-ZRJYQN6Y.js.map} +1 -1
- package/dist/{chunk-AD4W7HYC.js → chunk-ZYI3MHLE.js} +3 -2
- package/dist/chunk-ZYI3MHLE.js.map +1 -0
- package/dist/cli/index.js +66 -423
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/admin-filters/admin-data-table.d.ts +7 -1
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
- package/dist/components/admin-filters/index.js +8 -0
- package/dist/components/admin-filters/index.js.map +1 -0
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/index.js +5 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/animate/index.js +5 -0
- package/dist/components/animate/index.js.map +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
- package/dist/components/breadcrumbs/index.js +4 -0
- package/dist/components/breadcrumbs/index.js.map +1 -0
- package/dist/components/card/index.js +4 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.css +52 -0
- package/dist/components/chart/index.css.map +1 -0
- package/dist/components/chart/index.js +5 -0
- package/dist/components/chart/index.js.map +1 -0
- package/dist/components/chart/types.d.ts +3 -1
- package/dist/components/chart/types.d.ts.map +1 -1
- package/dist/components/chart/use-chart.d.ts.map +1 -1
- package/dist/components/command-palette/command-palette.d.ts +3 -1
- package/dist/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/components/command-palette/index.js +4 -0
- package/dist/components/command-palette/index.js.map +1 -0
- package/dist/components/confirm-dialog/index.js +4 -0
- package/dist/components/confirm-dialog/index.js.map +1 -0
- package/dist/components/date-input/date-input.d.ts +28 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +3 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +4 -1
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -1
- package/dist/components/doc-layout/index.js +7 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/editor/editor.d.ts.map +1 -1
- package/dist/components/editor/icons/index.d.ts +32 -40
- package/dist/components/editor/icons/index.d.ts.map +1 -1
- package/dist/components/editor/index.js +4 -1
- package/dist/components/editor/index.js.map +1 -1
- package/dist/components/emoji-picker/index.js +2 -1
- package/dist/components/emoji-picker/index.js.map +1 -1
- package/dist/components/empty-content/empty-content.d.ts.map +1 -1
- package/dist/components/empty-content/index.js +4 -0
- package/dist/components/empty-content/index.js.map +1 -0
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -1
- package/dist/components/error-boundary/index.js +6 -0
- package/dist/components/error-boundary/index.js.map +1 -0
- package/dist/components/index.css +17 -10
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +5 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +47 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +797 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/label/index.js +5 -0
- package/dist/components/label/index.js.map +1 -0
- package/dist/components/label/label.d.ts.map +1 -1
- package/dist/components/lightbox/lightbox.d.ts.map +1 -1
- package/dist/components/loading-screen/index.js +4 -0
- package/dist/components/loading-screen/index.js.map +1 -0
- package/dist/components/map/Map.d.ts +19 -43
- package/dist/components/map/Map.d.ts.map +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -1
- package/dist/components/map/MapMarker.d.ts +1 -1
- package/dist/components/map/MapMarker.d.ts.map +1 -1
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +21 -12
- package/dist/components/map/MapPointPicker.d.ts.map +1 -1
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +7 -2
- package/dist/components/map/index.d.ts.map +1 -1
- package/dist/components/map/index.js +4 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -1
- package/dist/components/navigation-progress/index.js +4 -0
- package/dist/components/navigation-progress/index.js.map +1 -0
- package/dist/components/page-content/index.js +4 -0
- package/dist/components/page-content/index.js.map +1 -0
- package/dist/components/popover/index.js +4 -0
- package/dist/components/popover/index.js.map +1 -0
- package/dist/components/rail/rail.d.ts.map +1 -1
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +8 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1593 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scroll-to-top/index.js +4 -0
- package/dist/components/scroll-to-top/index.js.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +4 -2
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/components/search-input/index.js +7 -0
- package/dist/components/search-input/index.js.map +1 -0
- package/dist/components/search-input/search-input.d.ts +3 -11
- package/dist/components/search-input/search-input.d.ts.map +1 -1
- package/dist/components/skeleton/index.js +4 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/snackbar/index.js +6 -0
- package/dist/components/snackbar/index.js.map +1 -0
- package/dist/components/stepper/index.js +4 -0
- package/dist/components/stepper/index.js.map +1 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/table/index.js +5 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/table-viewport.d.ts +13 -0
- package/dist/components/table/table-viewport.d.ts.map +1 -0
- package/dist/components/table/table.d.ts +3 -1
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/tabs/index.js +6 -0
- package/dist/components/tabs/index.js.map +1 -0
- package/dist/components/tabs/tabs.d.ts +12 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +4 -3
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +12 -6
- package/dist/core/index.js.map +1 -1
- package/dist/core/provider.d.ts +7 -2
- package/dist/core/provider.d.ts.map +1 -1
- package/dist/forms/index.js +2 -0
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/schema-provider.d.ts +3 -3
- package/dist/forms/schema-utils.d.ts +3 -3
- package/dist/hooks/index.js +14 -8
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-config-from-query.d.ts +2 -0
- package/dist/hooks/use-config-from-query.d.ts.map +1 -1
- package/dist/hooks/use-image-dimensions.d.ts.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.d.ts.map +1 -1
- package/dist/hooks/use-scroll-position.d.ts.map +1 -1
- package/dist/hooks/use-window-size.d.ts.map +1 -1
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +5 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +17 -10
- package/dist/index.css.map +1 -1
- package/dist/index.js +57 -20
- package/dist/index.js.map +1 -1
- package/dist/internal/research-parser.js +3 -0
- package/dist/internal/research-parser.js.map +1 -0
- package/dist/layouts/core/header-section.d.ts +1 -0
- package/dist/layouts/core/header-section.d.ts.map +1 -1
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +9 -1
- package/dist/layouts/dashboard/layout.d.ts.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts +7 -3
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.d.ts +5 -0
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +9 -3
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/netron/index.js +2 -1
- package/dist/netron/index.js.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/state/create-store.d.ts.map +1 -1
- package/dist/state/index.js +3 -2
- package/dist/state/index.js.map +1 -1
- package/dist/state/settings-version.d.ts.map +1 -1
- package/dist/state/stores/auth.d.ts +4 -16
- package/dist/state/stores/auth.d.ts.map +1 -1
- package/dist/state/stores/ui.d.ts +7 -105
- package/dist/state/stores/ui.d.ts.map +1 -1
- package/dist/theme/components/Button.d.ts.map +1 -1
- package/dist/theme/components/Chip.d.ts.map +1 -1
- package/dist/theme/components/Dialog.d.ts.map +1 -1
- package/dist/theme/components/FormControls.d.ts +3 -12
- package/dist/theme/components/FormControls.d.ts.map +1 -1
- package/dist/theme/components/TextField.d.ts.map +1 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/components/theme-utils.d.ts +2 -2
- package/dist/theme/components/theme-utils.d.ts.map +1 -1
- package/dist/theme/create-theme.d.ts +5 -17
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/index.js +8 -2
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/mixins.d.ts +3 -1
- package/dist/theme/mixins.d.ts.map +1 -1
- package/dist/theme/palette/overrides.d.ts +24 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/theme/semantic-surface.d.ts +8 -0
- package/dist/theme/semantic-surface.d.ts.map +1 -0
- package/dist/types/index.js +2 -2
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +149 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/utils/async-lock.d.ts.map +1 -1
- package/package.json +200 -47
- package/dist/chunk-6AHI4GSV.js.map +0 -1
- package/dist/chunk-AD4W7HYC.js.map +0 -1
- package/dist/chunk-ADG4HZEP.js.map +0 -1
- package/dist/chunk-BRDWQVRT.js.map +0 -1
- package/dist/chunk-BZOL7GMU.js.map +0 -1
- package/dist/chunk-DRFNMZLG.js.map +0 -1
- package/dist/chunk-FU52GL2E.js +0 -3
- package/dist/chunk-OBJ244BO.js.map +0 -1
- package/dist/chunk-S6SEGBX6.js.map +0 -1
- package/dist/chunk-SNZK5X6F.js.map +0 -1
- package/dist/chunk-WFD54GQQ.js.map +0 -1
- package/dist/chunk-XIXSSI3B.js.map +0 -1
- package/dist/chunk-YQW43BDH.js.map +0 -1
- package/dist/chunk-Z5OSPAOC.js.map +0 -1
- package/dist/chunk-ZTATTUH7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/knowledge-graph/model.ts","../../../src/components/knowledge-graph/label-layout.ts","../../../src/components/knowledge-graph/edge-labels.tsx","../../../src/components/knowledge-graph/label-store.ts","../../../src/components/knowledge-graph/graph.tsx"],"names":["Box","jsx","jsxs","useState","useMemo","useRef","useCallback","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["/** Host-supplied observations; badges do not change graph semantics or entailment. */\nexport interface KnowledgeBadge {\n label: string;\n tone?: 'default' | 'info' | 'success' | 'warning' | 'error';\n}\n/** Typed incidence projection. Layout never changes the graph or creates an entailment. */\nexport interface KnowledgeEntity {\n id: string;\n kind: string;\n label: string;\n description?: string;\n badges?: readonly KnowledgeBadge[];\n}\nexport interface KnowledgePort {\n entity: string;\n role: string;\n}\nexport interface KnowledgeRelation {\n id: string;\n kind: string;\n label: string;\n inputs: readonly KnowledgePort[];\n outputs: readonly KnowledgePort[];\n description?: string;\n badges?: readonly KnowledgeBadge[];\n}\nexport interface KnowledgeGraphData {\n entities: readonly KnowledgeEntity[];\n relations: readonly KnowledgeRelation[];\n}\nexport type KnowledgeSelection = { type: 'entity' | 'relation'; id: string };\nexport interface KnowledgeProjection {\n entities: KnowledgeEntity[];\n relations: KnowledgeRelation[];\n total: number;\n omittedRelations: number;\n limited: boolean;\n}\nexport function validateKnowledgeGraph(data: KnowledgeGraphData): void {\n const ids = new Set<string>();\n for (const entity of data.entities) {\n if (!entity.id || !entity.kind || !entity.label || ids.has(entity.id)) throw Error('invalid_entity');\n ids.add(entity.id);\n }\n const relations = new Set<string>();\n for (const relation of data.relations) {\n if (\n !relation.id ||\n !relation.kind ||\n !relation.label ||\n relations.has(relation.id) ||\n !relation.inputs.length ||\n !relation.outputs.length\n )\n throw Error('invalid_relation');\n relations.add(relation.id);\n for (const port of [...relation.inputs, ...relation.outputs])\n if (!ids.has(port.entity) || !port.role) throw Error('dangling_port');\n }\n}\n/** A relation is included atomically, with all of its ordered input/output occurrences.\n * A tight budget reports omitted relations; it never renders half a justification. */\nexport function projectKnowledgeGraph(\n data: KnowledgeGraphData,\n selection: KnowledgeSelection | undefined,\n budget = 300\n): KnowledgeProjection {\n if (!Number.isSafeInteger(budget) || budget < 1) throw Error('invalid_graph_budget');\n const total = data.entities.length + data.relations.length;\n if (!selection && total <= budget)\n return { entities: [...data.entities], relations: [...data.relations], total, omittedRelations: 0, limited: false };\n if (!selection) return { entities: [], relations: [], total, omittedRelations: data.relations.length, limited: true };\n const selectedEntities = new Set<string>(),\n selectedRelations: KnowledgeRelation[] = [];\n if (selection.type === 'entity' && data.entities.some((e) => e.id === selection.id))\n selectedEntities.add(selection.id);\n const candidates =\n selection.type === 'relation'\n ? data.relations.filter((r) => r.id === selection.id)\n : data.relations.filter((r) => [...r.inputs, ...r.outputs].some((p) => p.entity === selection.id));\n let omittedRelations = 0;\n for (const relation of candidates) {\n const endpoints = new Set([...relation.inputs, ...relation.outputs].map((p) => p.entity));\n const additional = [...endpoints].filter((id) => !selectedEntities.has(id)).length + 1;\n if (selectedEntities.size + selectedRelations.length + additional > budget) {\n omittedRelations++;\n continue;\n }\n for (const id of endpoints) selectedEntities.add(id);\n selectedRelations.push(relation);\n }\n return {\n entities: data.entities.filter((e) => selectedEntities.has(e.id)),\n relations: selectedRelations,\n total,\n omittedRelations,\n limited: total !== selectedEntities.size + selectedRelations.length,\n };\n}\nexport const entityNodeId = (id: string) => JSON.stringify(['entity', id]);\nexport const relationNodeId = (id: string) => JSON.stringify(['relation', id]);\nexport function incidenceGraph(projection: KnowledgeProjection) {\n const nodes = [\n ...projection.entities.map((e) => ({\n id: entityNodeId(e.id),\n selection: { type: 'entity' as const, id: e.id },\n label: e.label,\n kind: e.kind,\n description: e.description,\n badges: e.badges,\n })),\n ...projection.relations.map((r) => ({\n id: relationNodeId(r.id),\n selection: { type: 'relation' as const, id: r.id },\n label: r.label,\n kind: r.kind,\n description: r.description,\n badges: r.badges,\n inputs: r.inputs.length,\n outputs: r.outputs.length,\n })),\n ];\n const edges = projection.relations.flatMap((r) =>\n (['inputs', 'outputs'] as const).flatMap((side) =>\n r[side].map((port, index) => ({\n id: JSON.stringify([r.id, side, index]),\n source: side === 'inputs' ? entityNodeId(port.entity) : relationNodeId(r.id),\n target: side === 'inputs' ? relationNodeId(r.id) : entityNodeId(port.entity),\n label: port.role,\n ...(side === 'inputs' ? { targetHandle: `inputs:${index}` } : { sourceHandle: `outputs:${index}` }),\n relationId: r.id,\n side,\n index,\n }))\n )\n );\n return { nodes, edges };\n}\n","/** World-coordinate rectangles. Viewport pan/zoom never changes label placement. */\nexport interface LabelRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\nexport interface LabelAnchor {\n id: string;\n text: string;\n x: number;\n y: number;\n}\nexport interface MeasuredLabel extends LabelAnchor {\n width: number;\n height: number;\n}\nexport interface PlacedLabel extends MeasuredLabel {\n box: LabelRect;\n}\n\n/** Nearest free coordinate outside the union of open forbidden intervals.\n * Endpoints are admissible: touching the expanded boundary preserves the gap. */\nfunction nearestFree(origin: number, intervals: [number, number][]): number {\n intervals.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n const union: [number, number][] = [];\n for (const interval of intervals) {\n const last = union[union.length - 1];\n if (last && interval[0] < last[1]) last[1] = Math.max(last[1], interval[1]);\n else union.push([...interval]);\n }\n const hit = union.find(([lo, hi]) => lo < origin && origin < hi);\n return hit ? (origin - hit[0] <= hit[1] - origin ? hit[0] : hit[1]) : origin;\n}\n\n/** Deterministic greedy placement, not a global minimum of displacement.\n * For each label, solve the horizontal and vertical interval complements and\n * choose the nearer free position. Each step avoids all nodes and prior labels,\n * so induction gives pairwise disjoint boxes with the requested gap. A finite\n * obstacle set always leaves space on the unbounded canvas. O(L(N+L) log(N+L)). */\nexport function placeEdgeLabels(labels: readonly MeasuredLabel[], nodes: readonly LabelRect[], gap = 8): PlacedLabel[] {\n if (!Number.isFinite(gap) || gap < 0) throw Error('invalid_label_gap');\n const occupied = [...nodes];\n for (const rect of [...nodes, ...labels]) {\n if (![rect.x, rect.y, rect.width, rect.height].every(Number.isFinite) || rect.width <= 0 || rect.height <= 0)\n throw Error('invalid_label_geometry');\n }\n if (new Set(labels.map((l) => l.id)).size !== labels.length) throw Error('duplicate_label');\n // No locale-dependent sorting: the same graph has the same geometry in every host.\n const ordered = [...labels].sort((a, b) => a.y - b.y || a.x - b.x || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n return ordered.map((label) => {\n const x = label.x - label.width / 2,\n y = label.y - label.height / 2;\n const vertical: [number, number][] = [],\n horizontal: [number, number][] = [];\n for (const r of occupied) {\n if (x < r.x + r.width + gap && x + label.width > r.x - gap)\n vertical.push([r.y - gap - label.height, r.y + r.height + gap]);\n if (y < r.y + r.height + gap && y + label.height > r.y - gap)\n horizontal.push([r.x - gap - label.width, r.x + r.width + gap]);\n }\n const vx = nearestFree(x, horizontal),\n vy = nearestFree(y, vertical);\n const box =\n Math.abs(vy - y) <= Math.abs(vx - x)\n ? { x, y: vy, width: label.width, height: label.height }\n : { x: vx, y, width: label.width, height: label.height };\n occupied.push(box);\n return { ...label, box };\n });\n}\n\nexport function enclosingRect(rects: readonly LabelRect[]): LabelRect | undefined {\n if (!rects.length) return undefined;\n let x = Infinity,\n y = Infinity,\n right = -Infinity,\n bottom = -Infinity;\n for (const r of rects) {\n x = Math.min(x, r.x);\n y = Math.min(y, r.y);\n right = Math.max(right, r.x + r.width);\n bottom = Math.max(bottom, r.y + r.height);\n }\n return { x, y, width: right - x, height: bottom - y };\n}\n","import { ZoomInIcon, ZoomOutIcon } from '../../icons/controls.js';\nimport {\n createContext,\n useCallback,\n useContext,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\nimport {\n Controls,\n ControlButton,\n EdgeLabelRenderer,\n useNodes,\n useNodesInitialized,\n useReactFlow,\n useStore,\n} from '@xyflow/react';\nimport Box from '@mui/material/Box';\nimport { FitViewIcon as FitScreenIcon } from '../../icons/controls.js';\nimport { EdgeLabelStore } from './label-store.js';\nimport { enclosingRect, placeEdgeLabels, type LabelAnchor, type LabelRect } from './label-layout.js';\n\nexport const EdgeLabelsContext = createContext<EdgeLabelStore | null>(null);\nexport function useEdgeLabel(anchor: LabelAnchor | undefined) {\n const store = useContext(EdgeLabelsContext);\n const { id, text, x, y } = anchor ?? {};\n useLayoutEffect(() => {\n if (!store || id === undefined || text === undefined || x === undefined || y === undefined) return undefined;\n store.set({ id, text, x, y });\n return () => store.remove(id);\n }, [store, id, text, x, y]);\n}\ntype Size = { width: number; height: number };\nfunction MeasuredLabel({\n anchor,\n box,\n maxWidth,\n onSize,\n}: {\n anchor: LabelAnchor;\n box?: LabelRect;\n maxWidth: number;\n onSize: (id: string, size: Size | undefined) => void;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n useLayoutEffect(() => {\n const element = ref.current;\n if (!element) return undefined;\n const measure = (width: number, height: number) => {\n if (width > 0 && height > 0) onSize(anchor.id, { width: Math.ceil(width), height: Math.ceil(height) });\n };\n measure(element.offsetWidth, element.offsetHeight);\n const observer = new ResizeObserver((entries) => {\n const border = entries[0]?.borderBoxSize?.[0];\n measure(border?.inlineSize ?? element.offsetWidth, border?.blockSize ?? element.offsetHeight);\n });\n observer.observe(element);\n return () => {\n observer.disconnect();\n onSize(anchor.id, undefined);\n };\n }, [anchor.id, onSize]);\n return (\n <Box\n component=\"span\"\n ref={ref}\n aria-hidden=\"true\"\n data-edge-label={anchor.id}\n className=\"nodrag nopan prism-knowledge__edge-label\"\n sx={{\n position: 'absolute',\n left: box?.x ?? anchor.x,\n top: box?.y ?? anchor.y,\n visibility: box ? 'visible' : 'hidden',\n width: 'max-content',\n maxWidth,\n bgcolor: 'var(--prism-graph-bg)',\n color: 'var(--prism-graph-text)',\n borderRadius: 0.5,\n px: 0.75,\n py: 0.25,\n fontSize: 12,\n lineHeight: 1.4,\n boxSizing: 'border-box',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'anywhere',\n pointerEvents: 'none',\n zIndex: 1,\n }}\n >\n {anchor.text}\n </Box>\n );\n}\n\n/** One measured, collision-aware label plane for the entire incidence graph. */\nexport function EdgeLabels({\n store,\n gap,\n maxWidth,\n fitLabel,\n zoomInLabel,\n zoomOutLabel,\n}: {\n store: EdgeLabelStore;\n gap: number;\n maxWidth: number;\n fitLabel: string;\n zoomInLabel: string;\n zoomOutLabel: string;\n}) {\n const anchors = useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);\n const [sizes, setSizes] = useState<ReadonlyMap<string, Size>>(new Map());\n const nodes = useNodes();\n const initialized = useNodesInitialized();\n const { fitBounds, zoomIn, zoomOut } = useReactFlow();\n const atMinZoom = useStore((state) => state.transform[2] <= state.minZoom);\n const atMaxZoom = useStore((state) => state.transform[2] >= state.maxZoom);\n const initialFit = useRef(false);\n const onSize = useCallback(\n (id: string, size: Size | undefined) =>\n setSizes((prior) => {\n const old = prior.get(id);\n if (old?.width === size?.width && old?.height === size?.height) return prior;\n const next = new Map(prior);\n if (size) next.set(id, size);\n else next.delete(id);\n return next;\n }),\n []\n );\n const obstacles = useMemo(\n () =>\n nodes.flatMap((node) => {\n const width = node.measured?.width,\n height = node.measured?.height;\n return width && height && !node.hidden ? [{ ...node.position, width, height }] : [];\n }),\n [nodes]\n );\n const placements = useMemo(\n () =>\n placeEdgeLabels(\n anchors.flatMap((anchor) => {\n const size = sizes.get(anchor.id);\n return size ? [{ ...anchor, ...size }] : [];\n }),\n obstacles,\n gap\n ),\n [anchors, sizes, obstacles, gap]\n );\n const boxes = useMemo(() => new Map(placements.map((l) => [l.id, l.box])), [placements]);\n const bounds = useMemo(() => enclosingRect([...obstacles, ...placements.map((l) => l.box)]), [obstacles, placements]);\n const fit = useCallback(() => {\n if (bounds) void fitBounds(bounds, { padding: 0.12, duration: 0 });\n }, [bounds, fitBounds]);\n useLayoutEffect(() => {\n // Wait for measured labels as well as nodes. Subsequent edits/drags preserve\n // the user's viewport; the explicit fit command always includes every label.\n if (!initialFit.current && initialized && anchors.length && placements.length === anchors.length) {\n initialFit.current = true;\n fit();\n }\n }, [initialized, anchors.length, placements.length, fit]);\n return (\n <>\n <EdgeLabelRenderer>\n <svg\n aria-hidden=\"true\"\n width=\"1\"\n height=\"1\"\n style={{ position: 'absolute', overflow: 'visible', pointerEvents: 'none' }}\n >\n {placements.map(({ id, x, y, box }) => {\n const endX = Math.max(box.x, Math.min(x, box.x + box.width));\n const endY = Math.max(box.y, Math.min(y, box.y + box.height));\n if (endX === x && endY === y) return null;\n return (\n <g key={id} data-edge-label-leader={id} stroke=\"var(--prism-graph-muted)\" strokeWidth=\"1\">\n <path d={`M ${x} ${y} L ${endX} ${endY}`} fill=\"none\" strokeDasharray=\"3 3\" />\n <circle cx={x} cy={y} r=\"2\" fill=\"var(--prism-graph-bg)\" />\n </g>\n );\n })}\n </svg>\n {anchors.map((anchor) => (\n <MeasuredLabel\n key={anchor.id}\n anchor={anchor}\n box={boxes.get(anchor.id)}\n maxWidth={maxWidth}\n onSize={onSize}\n />\n ))}\n </EdgeLabelRenderer>\n <Controls showInteractive={false} showFitView={false} showZoom={false}>\n <ControlButton\n disabled={atMaxZoom}\n onClick={() => void zoomIn({ duration: 200 })}\n title={zoomInLabel}\n aria-label={zoomInLabel}\n >\n <ZoomInIcon />\n </ControlButton>\n <ControlButton\n disabled={atMinZoom}\n onClick={() => void zoomOut({ duration: 200 })}\n title={zoomOutLabel}\n aria-label={zoomOutLabel}\n >\n <ZoomOutIcon />\n </ControlButton>\n <ControlButton onClick={fit} title={fitLabel} aria-label={fitLabel}>\n <FitScreenIcon />\n </ControlButton>\n </Controls>\n </>\n );\n}\n","import type { LabelAnchor } from './label-layout.js';\n\n/** Edge components report path anchors; one microtask publishes the whole frame.\n * Registration is per mounted graph, never global, and removes culled edges. */\nexport class EdgeLabelStore {\n private anchors = new Map<string, LabelAnchor>();\n private snapshot: readonly LabelAnchor[] = [];\n private listeners = new Set<() => void>();\n private pending = false;\n getSnapshot = () => this.snapshot;\n subscribe = (listener: () => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n set(anchor: LabelAnchor) {\n const prior = this.anchors.get(anchor.id);\n if (prior?.x === anchor.x && prior.y === anchor.y && prior.text === anchor.text) return;\n this.anchors.set(anchor.id, anchor);\n this.publish();\n }\n remove(id: string) {\n if (this.anchors.delete(id)) this.publish();\n }\n private publish() {\n if (this.pending) return;\n this.pending = true;\n queueMicrotask(() => {\n this.pending = false;\n this.snapshot = [...this.anchors.values()];\n this.listeners.forEach((listener) => listener());\n });\n }\n}\n","'use client';\n\nimport { DocSidebar } from '../doc-layout/doc-sidebar.js';\nimport { memo, useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport {\n ReactFlow,\n BaseEdge,\n getSmoothStepPath,\n type EdgeProps,\n Background,\n Handle,\n Position,\n MarkerType,\n applyNodeChanges,\n type Node,\n type NodeProps,\n type NodeChange,\n type XYPosition,\n} from '@xyflow/react';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport { PanelLayout } from '../../layouts/panel-layout.js';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport { useTheme, type SxProps, type Theme } from '@mui/material/styles';\nimport {\n entityNodeId,\n relationNodeId,\n incidenceGraph,\n projectKnowledgeGraph,\n validateKnowledgeGraph,\n type KnowledgeGraphData,\n type KnowledgeSelection,\n type KnowledgeProjection,\n type KnowledgeRelation,\n type KnowledgeBadge,\n} from './model.js';\nimport '@xyflow/react/dist/style.css';\nimport './graph.css';\nimport { EdgeLabels, EdgeLabelsContext, useEdgeLabel } from './edge-labels.js';\nimport { EdgeLabelStore } from './label-store.js';\n\nexport const defaultKnowledgeGraphLabels = {\n title: 'Knowledge map',\n search: 'Find an entity or relation',\n all: 'Whole map',\n list: 'Index',\n indexTitle: 'Objects and relations',\n openIndex: 'Expand graph index',\n closeIndex: 'Close graph index',\n collapseIndex: 'Collapse graph index',\n map: 'Map',\n empty: 'No objects to display.',\n invalid: 'The graph contains invalid identities or references.',\n budget: 'Choose an object to inspect its neighbourhood.',\n partial: 'Showing a neighbourhood',\n omitted: 'Relations outside the display budget',\n details: 'Selected object',\n inputs: 'Inputs',\n outputs: 'Outputs',\n fit: 'Fit to view',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n lock: 'Toggle interaction',\n hint: 'Select an object in the index or map. Dragging changes its position only.',\n clear: 'Clear selection',\n expand: 'Expand workspace',\n collapse: 'Close expanded workspace',\n};\nexport type KnowledgeGraphLabels = typeof defaultKnowledgeGraphLabels;\ntype GraphNode = Node<\n {\n label: string;\n kind: string;\n selection: KnowledgeSelection;\n description?: string;\n badges?: readonly KnowledgeBadge[];\n inputs?: number;\n outputs?: number;\n },\n 'knowledge'\n>;\nexport interface KnowledgeGraphProps {\n data: KnowledgeGraphData;\n labels?: Partial<KnowledgeGraphLabels>;\n /** Bound visible DOM nodes, including relation nodes. Omitted relations are counted explicitly. */\n visibleBudget?: number;\n /** Optional independent persistence key for the graph index. */\n panelPersistKey?: string;\n onSelect?: (selection: KnowledgeSelection | undefined) => void;\n /** Only visual coordinates. No semantic operation is implied by a drag. */\n onLayoutChange?: (positions: Readonly<Record<string, XYPosition>>) => void;\n layout?: (projection: KnowledgeProjection) => Readonly<Record<string, XYPosition>>;\n renderDetails?: (selection: KnowledgeSelection) => ReactNode;\n height?: number;\n /** Space between measured label boxes and graph nodes, in canvas units. */\n edgeLabelGap?: number;\n /** Wrap long roles without truncation; measured before collision placement. */\n edgeLabelMaxWidth?: number;\n className?: string;\n sx?: SxProps<Theme>;\n}\nfunction Badges({ badges }: { badges?: readonly KnowledgeBadge[] }) {\n if (!badges?.length) return null;\n return (\n <Box component=\"span\" sx={{ display: 'flex', gap: 0.5, flexWrap: 'wrap', mt: 1 }}>\n {badges.map((badge, index) => (\n <Chip\n component=\"span\"\n key={index}\n label={badge.label}\n size=\"small\"\n variant=\"outlined\"\n color={badge.tone ?? 'default'}\n sx={{ height: 'auto', minHeight: 24, '& .MuiChip-label': { whiteSpace: 'normal', py: 0.25 } }}\n />\n ))}\n </Box>\n );\n}\nconst EntityNode = memo(function EntityNodeView({ data, selected }: NodeProps<GraphNode>) {\n return (\n <div\n style={{ minHeight: Math.max(76, Math.max(data.inputs ?? 0, data.outputs ?? 0) * 24 + 24) }}\n className={`prism-knowledge__node ${data.selection.type === 'relation' ? 'prism-knowledge__relation' : ''} ${selected ? 'is-selected' : ''}`}\n >\n {data.selection.type === 'relation' ? (\n Array.from({ length: data.inputs ?? 0 }, (_, i) => (\n <Handle\n key={i}\n id={`inputs:${i}`}\n type=\"target\"\n position={Position.Left}\n style={{ top: `${((i + 1) / ((data.inputs ?? 0) + 1)) * 100}%` }}\n isConnectable={false}\n />\n ))\n ) : (\n <Handle type=\"target\" position={Position.Left} isConnectable={false} />\n )}\n <span className=\"prism-knowledge__kind\">{data.kind}</span>\n <strong>{data.label}</strong>\n <Badges badges={data.badges} />\n {data.selection.type === 'relation' ? (\n Array.from({ length: data.outputs ?? 0 }, (_, i) => (\n <Handle\n key={i}\n id={`outputs:${i}`}\n type=\"source\"\n position={Position.Right}\n style={{ top: `${((i + 1) / ((data.outputs ?? 0) + 1)) * 100}%` }}\n isConnectable={false}\n />\n ))\n ) : (\n <Handle type=\"source\" position={Position.Right} isConnectable={false} />\n )}\n </div>\n );\n});\nfunction KnowledgeEdge(props: EdgeProps) {\n const [path, x, y] = getSmoothStepPath(props);\n useEdgeLabel(typeof props.label === 'string' ? { id: props.id, text: props.label, x, y } : undefined);\n return (\n <BaseEdge\n id={props.id}\n path={path}\n markerEnd={props.markerEnd}\n markerStart={props.markerStart}\n style={props.style}\n interactionWidth={props.interactionWidth}\n />\n );\n}\nconst edgeTypes = { knowledge: KnowledgeEdge };\nconst nodeTypes = { knowledge: EntityNode };\n/** Deterministic initial grid, deliberately not a causal/topological ordering. Hosts may supply a layout algorithm. */\nfunction defaultLayout(p: KnowledgeProjection): Record<string, XYPosition> {\n const positions: Record<string, XYPosition> = {};\n p.entities.forEach((e, i) => {\n positions[entityNodeId(e.id)] = { x: (i % 3) * 340, y: Math.floor(i / 3) * 170 };\n });\n p.relations.forEach((r, i) => {\n positions[relationNodeId(r.id)] = {\n x: (i % 3) * 340 + 170,\n y: Math.floor(p.entities.length / 3) * 170 + 180 + Math.floor(i / 3) * 150,\n };\n });\n return positions;\n}\nexport function KnowledgeGraph({\n data,\n labels: overrides,\n visibleBudget = 300,\n panelPersistKey,\n onSelect,\n onLayoutChange,\n layout = defaultLayout,\n renderDetails,\n height = 560,\n edgeLabelGap = 8,\n edgeLabelMaxWidth = 240,\n className,\n sx,\n}: KnowledgeGraphProps) {\n if (\n !Number.isFinite(edgeLabelGap) ||\n edgeLabelGap < 0 ||\n !Number.isFinite(edgeLabelMaxWidth) ||\n edgeLabelMaxWidth <= 0\n )\n throw Error('invalid_edge_label_options');\n const [labelStore] = useState(() => new EdgeLabelStore());\n const theme = useTheme(),\n labels = useMemo(() => ({ ...defaultKnowledgeGraphLabels, ...overrides }), [overrides]);\n const [expanded, setExpanded] = useState(false);\n const [query, setQuery] = useState(''),\n [selected, setSelected] = useState<KnowledgeSelection>(),\n [focus, setFocus] = useState<KnowledgeSelection>(),\n [view, setView] = useState<'map' | 'list'>('map');\n const selectionRef = useRef<KnowledgeSelection | undefined>(undefined);\n const valid = useMemo(() => {\n try {\n validateKnowledgeGraph(data);\n return true;\n } catch {\n return false;\n }\n }, [data]);\n const projection = useMemo(\n () =>\n valid\n ? projectKnowledgeGraph(data, focus, visibleBudget)\n : { entities: [], relations: [], total: 0, omittedRelations: 0, limited: false },\n [data, valid, focus, visibleBudget]\n );\n const graph = useMemo(() => incidenceGraph(projection), [projection]);\n const positions = useMemo(() => layout(projection), [layout, projection]);\n const [nodes, setNodes] = useState<GraphNode[]>([]);\n useEffect(() => {\n setNodes((old) => {\n const prior = new Map(old.map((n) => [n.id, n]));\n return graph.nodes.map((n) => ({\n ...prior.get(n.id),\n id: n.id,\n type: 'knowledge',\n position: prior.get(n.id)?.position ?? positions[n.id] ?? { x: 0, y: 0 },\n data: n,\n ariaLabel: `${n.kind}: ${n.label}`,\n deletable: false,\n }));\n });\n }, [graph, positions]);\n const displayedNodes = useMemo(\n () =>\n nodes.map((node) => ({\n ...node,\n selected: selected?.id === node.data.selection.id && selected.type === node.data.selection.type,\n })),\n [nodes, selected]\n );\n const edges = useMemo(\n () =>\n graph.edges.map((e) => ({\n ...e,\n type: 'knowledge',\n markerEnd: { type: MarkerType.ArrowClosed },\n focusable: true,\n ariaLabel: e.label,\n deletable: false,\n })),\n [graph]\n );\n const choose = useCallback(\n (s: KnowledgeSelection | undefined) => {\n const previous = selectionRef.current;\n if (previous?.id === s?.id && previous?.type === s?.type) return;\n selectionRef.current = s;\n setSelected(s);\n onSelect?.(s);\n if (projection.total > visibleBudget) setFocus(s);\n },\n [onSelect, projection.total, visibleBudget]\n );\n const onNodesChange = useCallback(\n (changes: NodeChange<GraphNode>[]) => {\n // Selection has one owner. React Flow emits user intents; controlled node\n // props are a projection of that selection, never a second feedback source.\n const selectedChange = [...changes].reverse().find((change) => change.type === 'select' && change.selected);\n if (selectedChange?.type === 'select') {\n const node = graph.nodes.find((candidate) => candidate.id === selectedChange.id);\n if (node) choose(node.selection);\n } else {\n const current = selectionRef.current;\n const id = current && (current.type === 'entity' ? entityNodeId(current.id) : relationNodeId(current.id));\n if (changes.some((change) => change.type === 'select' && !change.selected && change.id === id))\n choose(undefined);\n }\n const geometry = changes.filter((change) => change.type !== 'remove' && change.type !== 'select');\n if (geometry.length) setNodes((previous) => applyNodeChanges(geometry, previous));\n },\n [graph, choose]\n );\n const index = useMemo(\n () =>\n [\n ...data.entities.map((e) => ({ ...e, selection: { type: 'entity' as const, id: e.id } })),\n ...data.relations.map((r) => ({ ...r, selection: { type: 'relation' as const, id: r.id } })),\n ].filter((e) =>\n `${e.label}\\n${e.kind}\\n${e.id}\\n${e.badges?.map((b) => b.label).join(' ') ?? ''}`\n .toLocaleLowerCase()\n .includes(query.toLocaleLowerCase())\n ),\n [data, query]\n );\n const object =\n selected?.type === 'entity'\n ? data.entities.find((e) => e.id === selected.id)\n : data.relations.find((r) => r.id === selected?.id);\n useEffect(() => {\n if (selected && !object) {\n choose(undefined);\n setFocus(undefined);\n }\n }, [selected, object, choose]);\n const graphIndex = (\n <Box className=\"prism-knowledge__index\">\n <TextField\n fullWidth\n size=\"small\"\n type=\"search\"\n label={labels.search}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n sx={{ mb: 2 }}\n />\n <ul className=\"prism-knowledge__results\">\n {index.slice(0, visibleBudget).map((item) => (\n <li key={JSON.stringify(item.selection)}>\n <Button\n type=\"button\"\n variant=\"text\"\n aria-current={selected?.id === item.id && selected.type === item.selection.type}\n onClick={() => choose(item.selection)}\n >\n <span>{item.kind}</span>\n {item.label}\n <Badges badges={item.badges} />\n </Button>\n </li>\n ))}\n </ul>\n <small>\n {Math.min(index.length, visibleBudget)} / {index.length}\n </small>\n <Button\n type=\"button\"\n onClick={() => {\n setFocus(undefined);\n choose(undefined);\n }}\n >\n {labels.clear}\n </Button>\n </Box>\n );\n const content = (\n <Box\n className={['prism-knowledge', view === 'list' && 'is-list', className].filter(Boolean).join(' ')}\n sx={[\n {\n '--prism-graph-border': theme.palette.divider,\n '--prism-graph-bg': theme.palette.background.paper,\n '--prism-graph-text': theme.palette.text.primary,\n '--prism-graph-muted': theme.palette.text.secondary,\n '--prism-graph-accent': theme.palette.primary.main,\n '--prism-graph-radius': `${theme.shape.borderRadius}px`,\n '--prism-graph-hover': theme.palette.action.hover,\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n <header className=\"prism-knowledge__header\">\n <strong>{labels.title}</strong>\n <span>\n {projection.entities.length + projection.relations.length} / {projection.total}\n </span>\n <Button\n variant={view === 'map' ? 'contained' : 'outlined'}\n type=\"button\"\n aria-pressed={view === 'map'}\n onClick={() => setView('map')}\n >\n {labels.map}\n </Button>\n <Button\n variant={view === 'list' ? 'contained' : 'outlined'}\n type=\"button\"\n aria-pressed={view === 'list'}\n onClick={() => setView('list')}\n >\n {labels.list}\n </Button>\n <Button type=\"button\" onClick={() => setExpanded((v) => !v)}>\n {expanded ? labels.collapse : labels.expand}\n </Button>\n </header>\n {!valid ? (\n <p role=\"alert\">{labels.invalid}</p>\n ) : (\n <>\n <p className=\"prism-knowledge__hint\">{labels.hint}</p>\n {view === 'list' ? (\n graphIndex\n ) : (\n <PanelLayout\n title={labels.indexTitle}\n labels={{ expand: labels.openIndex, collapse: labels.collapseIndex, close: labels.closeIndex }}\n panel={({ collapsed }) => (\n <>\n <Box hidden={collapsed}>{graphIndex}</Box>\n {collapsed && (\n <DocSidebar\n compact\n items={index.slice(0, visibleBudget).map((item) => ({\n id: JSON.stringify(item.selection),\n label: item.label,\n }))}\n activeId={selected && JSON.stringify(selected)}\n onItemClick={(item) => {\n const target = index.find((entry) => JSON.stringify(entry.selection) === item.id);\n if (target) choose(target.selection);\n }}\n />\n )}\n </>\n )}\n height={expanded ? '75dvh' : height}\n width={240}\n offset={88}\n persistKey={panelPersistKey}\n navigationKey={selected ? selected.type + ':' + selected.id : ''}\n sx={{ px: 1, pb: 1 }}\n >\n <div\n className=\"prism-knowledge__canvas\"\n style={{ height: view === 'map' ? (expanded ? '75dvh' : height) : undefined }}\n >\n {view === 'map' && nodes.length > 0 ? (\n <EdgeLabelsContext.Provider value={labelStore}>\n <ReactFlow<GraphNode>\n nodes={displayedNodes}\n edges={edges}\n nodeTypes={nodeTypes}\n edgeTypes={edgeTypes}\n onNodesChange={onNodesChange}\n onNodeClick={(_e, n) => choose(n.data.selection)}\n onEdgeClick={(_event, edge) => {\n const occurrence = graph.edges.find((item) => item.id === edge.id);\n if (occurrence) choose({ type: 'relation', id: occurrence.relationId });\n }}\n onNodeDragStop={(_e, node) =>\n onLayoutChange?.(\n Object.fromEntries(nodes.map((n) => [n.id, n.id === node.id ? node.position : n.position]))\n )\n }\n nodesConnectable={false}\n deleteKeyCode={null}\n edgesReconnectable={false}\n fitView\n minZoom={0.1}\n maxZoom={2}\n colorMode={theme.palette.mode}\n ariaLabelConfig={{\n 'controls.zoomIn.ariaLabel': labels.zoomIn,\n 'controls.zoomOut.ariaLabel': labels.zoomOut,\n 'controls.fitView.ariaLabel': labels.fit,\n 'controls.interactive.ariaLabel': labels.lock,\n }}\n >\n <Background gap={24} />\n <EdgeLabels\n store={labelStore}\n gap={edgeLabelGap}\n maxWidth={edgeLabelMaxWidth}\n fitLabel={labels.fit}\n zoomInLabel={labels.zoomIn}\n zoomOutLabel={labels.zoomOut}\n />\n </ReactFlow>\n </EdgeLabelsContext.Provider>\n ) : (\n <div className=\"prism-knowledge__empty\">\n {projection.total === 0 ? labels.empty : projection.limited ? labels.budget : labels.list}\n </div>\n )}\n </div>\n </PanelLayout>\n )}\n {projection.limited && (\n <p className=\"prism-knowledge__hint\" role=\"status\">\n {labels.partial}: {projection.entities.length + projection.relations.length} / {projection.total}.{' '}\n {labels.omitted}: {projection.omittedRelations}.\n </p>\n )}\n {selected && object && (\n <section className=\"prism-knowledge__details\" aria-label={labels.details}>\n <h3>{object.label}</h3>\n <p>{object.description}</p>\n {selected.type === 'relation' && (\n <div className=\"prism-knowledge__ports\">\n {(['inputs', 'outputs'] as const).map((side) => (\n <div key={side}>\n <strong>{labels[side]}</strong>\n <ol>\n {(object as KnowledgeRelation)[side].map((port, i) => (\n <li key={i}>\n {port.role}: {data.entities.find((e) => e.id === port.entity)?.label}\n </li>\n ))}\n </ol>\n </div>\n ))}\n </div>\n )}\n {renderDetails?.(selected)}\n </section>\n )}\n </>\n )}\n </Box>\n );\n return expanded ? (\n <Dialog open fullScreen onClose={() => setExpanded(false)} aria-label={labels.title}>\n {content}\n </Dialog>\n ) : (\n content\n );\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** World-coordinate rectangles. Viewport pan/zoom never changes label placement. */
|
|
2
|
+
export interface LabelRect {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
export interface LabelAnchor {
|
|
9
|
+
id: string;
|
|
10
|
+
text: string;
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
}
|
|
14
|
+
export interface MeasuredLabel extends LabelAnchor {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
}
|
|
18
|
+
export interface PlacedLabel extends MeasuredLabel {
|
|
19
|
+
box: LabelRect;
|
|
20
|
+
}
|
|
21
|
+
/** Deterministic greedy placement, not a global minimum of displacement.
|
|
22
|
+
* For each label, solve the horizontal and vertical interval complements and
|
|
23
|
+
* choose the nearer free position. Each step avoids all nodes and prior labels,
|
|
24
|
+
* so induction gives pairwise disjoint boxes with the requested gap. A finite
|
|
25
|
+
* obstacle set always leaves space on the unbounded canvas. O(L(N+L) log(N+L)). */
|
|
26
|
+
export declare function placeEdgeLabels(labels: readonly MeasuredLabel[], nodes: readonly LabelRect[], gap?: number): PlacedLabel[];
|
|
27
|
+
export declare function enclosingRect(rects: readonly LabelRect[]): LabelRect | undefined;
|
|
28
|
+
//# sourceMappingURL=label-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-layout.d.ts","sourceRoot":"","sources":["../../../src/components/knowledge-graph/label-layout.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AACD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,GAAG,EAAE,SAAS,CAAC;CAChB;AAgBD;;;;mFAImF;AACnF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,SAAS,EAAE,EAAE,GAAG,SAAI,GAAG,WAAW,EAAE,CA8BrH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,CAahF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LabelAnchor } from './label-layout.js';
|
|
2
|
+
/** Edge components report path anchors; one microtask publishes the whole frame.
|
|
3
|
+
* Registration is per mounted graph, never global, and removes culled edges. */
|
|
4
|
+
export declare class EdgeLabelStore {
|
|
5
|
+
private anchors;
|
|
6
|
+
private snapshot;
|
|
7
|
+
private listeners;
|
|
8
|
+
private pending;
|
|
9
|
+
getSnapshot: () => readonly LabelAnchor[];
|
|
10
|
+
subscribe: (listener: () => void) => () => void;
|
|
11
|
+
set(anchor: LabelAnchor): void;
|
|
12
|
+
remove(id: string): void;
|
|
13
|
+
private publish;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=label-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-store.d.ts","sourceRoot":"","sources":["../../../src/components/knowledge-graph/label-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;gFACgF;AAChF,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,WAAW,+BAAuB;IAClC,SAAS,aAAc,MAAM,IAAI,gBAK/B;IACF,GAAG,CAAC,MAAM,EAAE,WAAW,QAKtB;IACD,MAAM,CAAC,EAAE,EAAE,MAAM,QAEhB;IACD,OAAO,CAAC,OAAO;CAShB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/** Host-supplied observations; badges do not change graph semantics or entailment. */
|
|
2
|
+
export interface KnowledgeBadge {
|
|
3
|
+
label: string;
|
|
4
|
+
tone?: 'default' | 'info' | 'success' | 'warning' | 'error';
|
|
5
|
+
}
|
|
6
|
+
/** Typed incidence projection. Layout never changes the graph or creates an entailment. */
|
|
7
|
+
export interface KnowledgeEntity {
|
|
8
|
+
id: string;
|
|
9
|
+
kind: string;
|
|
10
|
+
label: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
badges?: readonly KnowledgeBadge[];
|
|
13
|
+
}
|
|
14
|
+
export interface KnowledgePort {
|
|
15
|
+
entity: string;
|
|
16
|
+
role: string;
|
|
17
|
+
}
|
|
18
|
+
export interface KnowledgeRelation {
|
|
19
|
+
id: string;
|
|
20
|
+
kind: string;
|
|
21
|
+
label: string;
|
|
22
|
+
inputs: readonly KnowledgePort[];
|
|
23
|
+
outputs: readonly KnowledgePort[];
|
|
24
|
+
description?: string;
|
|
25
|
+
badges?: readonly KnowledgeBadge[];
|
|
26
|
+
}
|
|
27
|
+
export interface KnowledgeGraphData {
|
|
28
|
+
entities: readonly KnowledgeEntity[];
|
|
29
|
+
relations: readonly KnowledgeRelation[];
|
|
30
|
+
}
|
|
31
|
+
export type KnowledgeSelection = {
|
|
32
|
+
type: 'entity' | 'relation';
|
|
33
|
+
id: string;
|
|
34
|
+
};
|
|
35
|
+
export interface KnowledgeProjection {
|
|
36
|
+
entities: KnowledgeEntity[];
|
|
37
|
+
relations: KnowledgeRelation[];
|
|
38
|
+
total: number;
|
|
39
|
+
omittedRelations: number;
|
|
40
|
+
limited: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function validateKnowledgeGraph(data: KnowledgeGraphData): void;
|
|
43
|
+
/** A relation is included atomically, with all of its ordered input/output occurrences.
|
|
44
|
+
* A tight budget reports omitted relations; it never renders half a justification. */
|
|
45
|
+
export declare function projectKnowledgeGraph(data: KnowledgeGraphData, selection: KnowledgeSelection | undefined, budget?: number): KnowledgeProjection;
|
|
46
|
+
export declare const entityNodeId: (id: string) => string;
|
|
47
|
+
export declare const relationNodeId: (id: string) => string;
|
|
48
|
+
export declare function incidenceGraph(projection: KnowledgeProjection): {
|
|
49
|
+
nodes: ({
|
|
50
|
+
id: string;
|
|
51
|
+
selection: {
|
|
52
|
+
type: 'entity';
|
|
53
|
+
id: string;
|
|
54
|
+
};
|
|
55
|
+
label: string;
|
|
56
|
+
kind: string;
|
|
57
|
+
description: string | undefined;
|
|
58
|
+
badges: readonly KnowledgeBadge[] | undefined;
|
|
59
|
+
} | {
|
|
60
|
+
id: string;
|
|
61
|
+
selection: {
|
|
62
|
+
type: 'relation';
|
|
63
|
+
id: string;
|
|
64
|
+
};
|
|
65
|
+
label: string;
|
|
66
|
+
kind: string;
|
|
67
|
+
description: string | undefined;
|
|
68
|
+
badges: readonly KnowledgeBadge[] | undefined;
|
|
69
|
+
inputs: number;
|
|
70
|
+
outputs: number;
|
|
71
|
+
})[];
|
|
72
|
+
edges: ({
|
|
73
|
+
id: string;
|
|
74
|
+
source: string;
|
|
75
|
+
target: string;
|
|
76
|
+
label: string;
|
|
77
|
+
targetHandle: string;
|
|
78
|
+
relationId: string;
|
|
79
|
+
side: "inputs" | "outputs";
|
|
80
|
+
index: number;
|
|
81
|
+
} | {
|
|
82
|
+
id: string;
|
|
83
|
+
source: string;
|
|
84
|
+
target: string;
|
|
85
|
+
label: string;
|
|
86
|
+
sourceHandle: string;
|
|
87
|
+
relationId: string;
|
|
88
|
+
side: "inputs" | "outputs";
|
|
89
|
+
index: number;
|
|
90
|
+
})[];
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/components/knowledge-graph/model.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CAC7D;AACD,2FAA2F;AAC3F,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IACjC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACzC;AACD,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAqBrE;AACD;sFACsF;AACtF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,kBAAkB,GAAG,SAAS,EACzC,MAAM,SAAM,GACX,mBAAmB,CAgCrB;AACD,eAAO,MAAM,YAAY,OAAQ,MAAM,WAAmC,CAAC;AAC3E,eAAO,MAAM,cAAc,OAAQ,MAAM,WAAqC,CAAC;AAC/E,wBAAgB,cAAc,CAAC,UAAU,EAAE,mBAAmB;;;;YAI3C,IAAI,EAAE,QAAQ;YAAW,EAAE;;;;;;;;;YAQ3B,IAAI,EAAE,UAAU;YAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/label/label.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/label/label.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAO3D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAExG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,mBAAmB;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,iBAAiB;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,eAAe;IACf,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,wBAAwB;IACxB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;CAC5B;AA6GD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAiB,EACjB,OAAgB,EAChB,SAAS,EACT,OAAO,EACP,EAAE,EACF,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,UAAU,+BAuBZ;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IAC1C,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;CACnE,GAAG,SAAS,CAgBZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAgB,EAChB,SAAgB,EAChB,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,GAAG;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,SAAS,CAMZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightbox.d.ts","sourceRoot":"","sources":["../../../src/components/lightbox/lightbox.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAyC/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,EAAE,eAAmB,EAC1B,aAAa,EACb,UAAkB,EAClB,IAAW,EACX,UAAiB,EACjB,OAAc,EACd,QAAgB,EAChB,KAAa,EACb,IAAY,EACZ,QAAe,EACf,KAAY,EACZ,SAA+B,EAC/B,oBAA2B,EAC3B,UAAiB,EACjB,OAAyC,EACzC,MAAM,EAAE,cAAc,EACtB,EAAE,EACF,SAAS,EACT,SAAS,EACT,GAAG,WAAW,EACf,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"lightbox.d.ts","sourceRoot":"","sources":["../../../src/components/lightbox/lightbox.tsx"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAyC/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,EAAE,eAAmB,EAC1B,aAAa,EACb,UAAkB,EAClB,IAAW,EACX,UAAiB,EACjB,OAAc,EACd,QAAgB,EAChB,KAAa,EACb,IAAY,EACZ,QAAe,EACf,KAAY,EACZ,SAA+B,EAC/B,oBAA2B,EAC3B,UAAiB,EACjB,OAAyC,EACzC,MAAM,EAAE,cAAc,EACtB,EAAE,EACF,SAAS,EACT,SAAS,EACT,GAAG,WAAW,EACf,EAAE,aAAa,sCA6qBf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":";","file":"index.js"}
|
|
@@ -1,27 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
* Map Component
|
|
3
|
-
*
|
|
4
|
-
* Thin wrapper around `react-map-gl/maplibre` that picks up the
|
|
5
|
-
* prism theme (light/dark) and ships sensible defaults
|
|
6
|
-
* (NavigationControl, ScaleControl, attribution). All app-level
|
|
7
|
-
* map UIs build on top of this — see `<MapMarker>`,
|
|
8
|
-
* `<MapPointPicker>`, `<MapCoverageLayer>`.
|
|
9
|
-
*
|
|
10
|
-
* Tile source:
|
|
11
|
-
* - `styleUrl` prop OR
|
|
12
|
-
* - `MAP_STYLE_URL` browser-side env var injected by host app
|
|
13
|
-
*
|
|
14
|
-
* The downstream platform is closed and Tor-friendly, so the tile
|
|
15
|
-
* source MUST be self-hosted (no maptiler/mapbox CDN that would
|
|
16
|
-
* leak user IPs). A fallback in-component style renders a flat
|
|
17
|
-
* neutral background so the map UI is visible during local dev
|
|
18
|
-
* before tile infra is set up.
|
|
19
|
-
*
|
|
20
|
-
* @module components/map
|
|
21
|
-
*/
|
|
22
|
-
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
1
|
+
import './map.css';
|
|
23
2
|
import type { CSSProperties, ReactNode } from 'react';
|
|
24
|
-
import type { MapRef } from 'react-map-gl/maplibre';
|
|
3
|
+
import type { MapProps as EngineProps, MapRef } from 'react-map-gl/maplibre';
|
|
25
4
|
import type { StyleSpecification } from 'maplibre-gl';
|
|
26
5
|
export interface MapViewport {
|
|
27
6
|
longitude: number;
|
|
@@ -30,34 +9,31 @@ export interface MapViewport {
|
|
|
30
9
|
bearing?: number;
|
|
31
10
|
pitch?: number;
|
|
32
11
|
}
|
|
33
|
-
export
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
12
|
+
export type MapStyle = string | StyleSpecification;
|
|
13
|
+
export interface MapMessages {
|
|
14
|
+
label: string;
|
|
15
|
+
missingStyle: string;
|
|
16
|
+
loading: string;
|
|
17
|
+
error: string;
|
|
18
|
+
}
|
|
19
|
+
export interface MapProps extends Omit<EngineProps, 'mapStyle' | 'style' | 'children'> {
|
|
20
|
+
/** Explicit style, or legacy host-injected window.__MAP_STYLE_URL__. No public fallback. */
|
|
21
|
+
styleUrl?: MapStyle;
|
|
22
|
+
/** Separate complete styles; selecting a theme does not rewrite provider layers. */
|
|
23
|
+
styles?: {
|
|
24
|
+
light: MapStyle;
|
|
25
|
+
dark: MapStyle;
|
|
26
|
+
};
|
|
37
27
|
viewport?: Partial<MapViewport>;
|
|
38
|
-
/** Defaults when `viewport` is uncontrolled or partially specified. */
|
|
39
28
|
initialViewport?: Partial<MapViewport>;
|
|
40
|
-
/** Callback for every camera change (drag/zoom/rotate). */
|
|
41
29
|
onViewportChange?: (next: MapViewport) => void;
|
|
42
|
-
/** Show NavigationControl (zoom + compass). Default: true. */
|
|
43
30
|
showNavigation?: boolean;
|
|
44
|
-
/** Show ScaleControl. Default: true. */
|
|
45
31
|
showScale?: boolean;
|
|
46
|
-
/** Show attribution. Default: true. */
|
|
47
32
|
showAttribution?: boolean;
|
|
48
|
-
/** Container style — pass `height` here. Default 400px height. */
|
|
49
33
|
style?: CSSProperties;
|
|
50
|
-
|
|
51
|
-
cursor?: 'grab' | 'pointer' | 'crosshair' | string;
|
|
52
|
-
/** Click handler on the map canvas. */
|
|
53
|
-
onClick?: (event: {
|
|
54
|
-
lngLat: {
|
|
55
|
-
lng: number;
|
|
56
|
-
lat: number;
|
|
57
|
-
};
|
|
58
|
-
}) => void;
|
|
59
|
-
/** Layer/marker children rendered inside the MapLibre canvas. */
|
|
34
|
+
messages?: Partial<MapMessages>;
|
|
60
35
|
children?: ReactNode;
|
|
61
36
|
}
|
|
37
|
+
/** Provider-neutral MapLibre surface. Sources/layers/events remain fully typed. */
|
|
62
38
|
export declare const Map: import("react").ForwardRefExoticComponent<MapProps & import("react").RefAttributes<MapRef>>;
|
|
63
39
|
//# sourceMappingURL=Map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../src/components/map/Map.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../src/components/map/Map.tsx"],"names":[],"mappings":"AAEA,OAAO,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,KAAK,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAStD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,kBAAkB,CAAC;AACnD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IACpF,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oFAAoF;IACpF,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAGD,mFAAmF;AACnF,eAAO,MAAM,GAAG,6FA0Id,CAAC"}
|
|
@@ -21,5 +21,5 @@ export interface MapCoverageLayerProps {
|
|
|
21
21
|
/** Show label text alongside each marker (zoom 12+). */
|
|
22
22
|
showLabels?: boolean;
|
|
23
23
|
}
|
|
24
|
-
export declare function MapCoverageLayer({ id, points, colorByStatus, radius, showLabels
|
|
24
|
+
export declare function MapCoverageLayer({ id, points, colorByStatus, radius, showLabels }: MapCoverageLayerProps): import("react").JSX.Element;
|
|
25
25
|
//# sourceMappingURL=MapCoverageLayer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapCoverageLayer.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapCoverageLayer.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;mEAE+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;iDAC6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"MapCoverageLayer.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapCoverageLayer.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;mEAE+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;iDAC6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAU,EAAE,UAAkB,EAAE,EAAE,qBAAqB,+BAoEpH"}
|
|
@@ -13,5 +13,5 @@ export interface MapMarkerProps {
|
|
|
13
13
|
/** Click-through handler. */
|
|
14
14
|
onClick?: () => void;
|
|
15
15
|
}
|
|
16
|
-
export declare function MapMarker({ longitude, latitude, color, children, popup, anchor, onClick
|
|
16
|
+
export declare function MapMarker({ longitude, latitude, color, children, popup, anchor, onClick }: MapMarkerProps): import("react").JSX.Element;
|
|
17
17
|
//# sourceMappingURL=MapMarker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapMarker.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapMarker.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACxD,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"MapMarker.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapMarker.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACxD,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAiB,EAAE,OAAO,EAAE,EAAE,cAAc,+BAmCpH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MapPointPickerValue } from './coordinates.js';
|
|
2
|
+
export interface MapPlace {
|
|
3
|
+
/** Provider-stable identifier, qualified with the provider name. */
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
point: MapPointPickerValue;
|
|
7
|
+
}
|
|
8
|
+
export interface MapPlaceSearchLabels {
|
|
9
|
+
label: string;
|
|
10
|
+
search: string;
|
|
11
|
+
clear: string;
|
|
12
|
+
loading: string;
|
|
13
|
+
empty: string;
|
|
14
|
+
hint: string;
|
|
15
|
+
error: string;
|
|
16
|
+
}
|
|
17
|
+
export interface MapPlaceSearchProps<T extends MapPlace = MapPlace> {
|
|
18
|
+
/** Supply a Netron/API adapter. Prism makes no requests to a provider itself. */
|
|
19
|
+
search: (query: string, options: {
|
|
20
|
+
signal: AbortSignal;
|
|
21
|
+
limit: number;
|
|
22
|
+
}) => Promise<readonly T[]>;
|
|
23
|
+
onSelect: (place: T) => void;
|
|
24
|
+
/** Explicit submission works with every geocoder; autocomplete must be provider-supported. */
|
|
25
|
+
mode?: 'submit' | 'autocomplete';
|
|
26
|
+
debounceMs?: number;
|
|
27
|
+
minLength?: number;
|
|
28
|
+
limit?: number;
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
labels?: Partial<MapPlaceSearchLabels>;
|
|
31
|
+
}
|
|
32
|
+
export declare function MapPlaceSearch<T extends MapPlace>({ search, onSelect, mode, debounceMs, minLength, limit, disabled, labels, }: MapPlaceSearchProps<T>): import("react").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=MapPlaceSearch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MapPlaceSearch.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapPlaceSearch.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AACD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAChE,iFAAiF;IACjF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClG,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,8FAA8F;IAC9F,IAAI,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACxC;AACD,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAAE,EACjD,MAAM,EACN,QAAQ,EACR,IAAe,EACf,UAAgB,EAChB,SAAa,EACb,KAAS,EACT,QAAgB,EAChB,MAAM,GACP,EAAE,mBAAmB,CAAC,CAAC,CAAC,+BA8JxB"}
|
|
@@ -1,26 +1,35 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { MapProps, MapViewport } from './Map.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import type { MapPointPickerValue } from './coordinates.js';
|
|
4
|
+
export type { MapPointPickerValue } from './coordinates.js';
|
|
5
|
+
export interface MapPointPickerLabels {
|
|
6
|
+
placeholder: string;
|
|
7
|
+
coordinates: string;
|
|
8
|
+
place: string;
|
|
9
|
+
loading: string;
|
|
10
|
+
unknown: string;
|
|
11
|
+
chooseCenter: string;
|
|
12
|
+
clear: string;
|
|
13
|
+
marker: string;
|
|
6
14
|
}
|
|
7
15
|
export interface MapPointPickerProps {
|
|
8
|
-
/** Currently picked point, or null if nothing yet. */
|
|
9
16
|
value: MapPointPickerValue | null;
|
|
10
|
-
/** Called on click and on marker drag-end. */
|
|
11
17
|
onChange: (next: MapPointPickerValue) => void;
|
|
12
|
-
|
|
18
|
+
onClear?: () => void;
|
|
13
19
|
initialViewport?: Partial<MapViewport>;
|
|
14
|
-
/**
|
|
20
|
+
/** Minimum zoom when receiving a newly selected point. */
|
|
21
|
+
selectionZoom?: number;
|
|
15
22
|
styleUrl?: MapProps['styleUrl'];
|
|
16
|
-
/** Container height (passed to inner Map). */
|
|
17
23
|
height?: number;
|
|
18
|
-
/** Reverse-geocode response to display in the side panel. */
|
|
19
24
|
geocodeResult?: ReactNode;
|
|
20
|
-
/** Show a spinner in the side panel while host RPC is in flight. */
|
|
21
25
|
geocodeLoading?: boolean;
|
|
22
|
-
|
|
26
|
+
geocodeError?: ReactNode;
|
|
23
27
|
placeholder?: string;
|
|
28
|
+
labels?: Partial<MapPointPickerLabels>;
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
showDetails?: boolean;
|
|
31
|
+
/** MapLibre sources, overlays and interaction configuration are reusable. */
|
|
32
|
+
mapProps?: Omit<MapProps, 'viewport' | 'onViewportChange' | 'onClick' | 'styleUrl' | 'initialViewport'>;
|
|
24
33
|
}
|
|
25
|
-
export declare function MapPointPicker({ value, onChange, initialViewport, styleUrl, height, geocodeResult, geocodeLoading, placeholder, }: MapPointPickerProps): import("react").JSX.Element;
|
|
34
|
+
export declare function MapPointPicker({ value, onChange, onClear, initialViewport, selectionZoom, styleUrl, height, geocodeResult, geocodeLoading, geocodeError, placeholder, labels, readOnly, showDetails, mapProps, }: MapPointPickerProps): import("react").JSX.Element;
|
|
26
35
|
//# sourceMappingURL=MapPointPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapPointPicker.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapPointPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MapPointPicker.d.ts","sourceRoot":"","sources":["../../../src/components/map/MapPointPicker.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAAC,CAAC;CACzG;AACD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,eAAe,EACf,aAAkB,EAClB,QAAQ,EACR,MAAY,EACZ,aAAa,EACb,cAAsB,EACtB,YAAY,EACZ,WAAW,EACX,MAAM,EACN,QAAgB,EAChB,WAAkB,EAClB,QAAQ,GACT,EAAE,mBAAmB,+BA4HrB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** WGS84 geographic coordinates. Camera constraints never alter the stored point. */
|
|
2
|
+
export interface MapPointPickerValue {
|
|
3
|
+
lng: number;
|
|
4
|
+
lat: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function isMapPoint(value: MapPointPickerValue): boolean;
|
|
7
|
+
/** MapLibre may emit a longitude in another world copy after panning. */
|
|
8
|
+
export declare function normalizeMapPoint(lng: number, lat: number): MapPointPickerValue | null;
|
|
9
|
+
export declare function mapCameraLatitude(latitude: number): number;
|
|
10
|
+
//# sourceMappingURL=coordinates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinates.d.ts","sourceRoot":"","sources":["../../../src/components/map/coordinates.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAS9D;AACD,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAGtF;AACD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|