@12-apps/ui 6.99.0 → 6.101.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NATIVE.md +2 -1
- package/components-catalog.md +2 -1
- package/dist/_internal/components/data-display/Alert/Alert.content.js +2 -2
- package/dist/_internal/components/data-display/Alert/Alert.js +4 -4
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +6 -6
- package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +3 -3
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +45 -45
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +60 -60
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +4 -4
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +4 -4
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +20 -20
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +42 -42
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +24 -24
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +21 -21
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +22 -22
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +11 -11
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +3 -3
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +3 -3
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.footer.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +10 -10
- package/dist/_internal/components/data-display/DayRuler/DayRuler.keyboard.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.labels.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/useRulerDrag.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +10 -10
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +9 -9
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
- package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +8 -8
- package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +4 -4
- package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +2 -2
- package/dist/_internal/components/data-display/RegionMap/RegionMapPin.js +1 -1
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +8 -8
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.js +2 -2
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +75 -75
- package/dist/_internal/components/feedback/Dialog/Dialog.js +3 -3
- package/dist/_internal/components/feedback/Modal/Modal.js +2 -2
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +5 -5
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.frame.js +8 -8
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.header.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +16 -16
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +6 -6
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +5 -5
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
- package/dist/_internal/components/feedback/UsableModal/UsableModal.js +1 -1
- package/dist/_internal/components/feedback/UsableModal/UsableModal.sheet.js +2 -2
- package/dist/_internal/components/feedback/index.js +21 -21
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +2 -2
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +2 -2
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +1 -1
- package/dist/_internal/components/form/Calendar/Calendar.js +5 -5
- package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +4 -4
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +7 -7
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +8 -8
- package/dist/_internal/components/form/InputOTP/InputOTP.base.js +1 -0
- package/dist/_internal/components/form/InputOTP/InputOTP.base.js.map +1 -0
- package/dist/_internal/components/form/InputOTP/InputOTP.core.js +16 -0
- package/dist/_internal/components/form/InputOTP/InputOTP.core.js.map +1 -0
- package/dist/_internal/components/form/InputOTP/InputOTP.hooks.js +2 -1
- package/dist/_internal/components/form/InputOTP/InputOTP.js +5 -3
- package/dist/_internal/components/form/InputOTP/InputOTP.metrics.js +12 -0
- package/dist/_internal/components/form/InputOTP/InputOTP.metrics.js.map +1 -0
- package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +2 -1
- package/dist/_internal/components/form/index.js +25 -23
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +8 -8
- package/dist/_internal/components/form/total-form/Fields/index.js +9 -9
- package/dist/_internal/components/index.js +123 -121
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
- package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
- package/dist/_internal/components/navigation/index.js +15 -15
- package/dist/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +6 -6
- package/dist/{chunk-37MJZLQU.js → chunk-24OFA44S.js} +4 -4
- package/dist/{chunk-R775ISK6.js → chunk-2L6TANRY.js} +5 -5
- package/dist/{chunk-B4OZU7J4.js → chunk-423A7NUP.js} +7 -7
- package/dist/{chunk-LFECE4R7.js → chunk-4EDCF7TC.js} +2 -2
- package/dist/{chunk-HI7JPDD6.js → chunk-5357QUVE.js} +2 -2
- package/dist/{chunk-F7JRQ2EI.js → chunk-5YX2VQFP.js} +7 -7
- package/dist/{chunk-QZOQVJ5L.js → chunk-645GGNTW.js} +3 -3
- package/dist/{chunk-N5PVD4J5.js → chunk-6DO672AG.js} +7 -7
- package/dist/{chunk-PGJIWCQR.js → chunk-6EZQLNPK.js} +4 -4
- package/dist/{chunk-YQMJJ7AL.js → chunk-6G2RAZTS.js} +5 -5
- package/dist/{chunk-KNW63H63.js → chunk-6PQZIZMN.js} +5 -5
- package/dist/{chunk-FZZMNKVF.js → chunk-6TAPAIRR.js} +8 -8
- package/dist/{chunk-ERAMSYPR.js → chunk-7N4O632I.js} +2 -2
- package/dist/{chunk-XFOKLWJZ.js → chunk-7S5PXEO7.js} +2 -2
- package/dist/{chunk-DRYBA76G.js → chunk-7XVT4RME.js} +2 -2
- package/dist/{chunk-DRYBA76G.js.map → chunk-7XVT4RME.js.map} +1 -1
- package/dist/{chunk-UIJLDAV7.js → chunk-AA6YMOEK.js} +2 -2
- package/dist/{chunk-CRD2WCU7.js → chunk-AFWUQJ4P.js} +8 -8
- package/dist/{chunk-SNWCT6JN.js → chunk-AMIUZRDQ.js} +3 -3
- package/dist/{chunk-NQYC7V5N.js → chunk-BAYCMSMI.js} +5 -9
- package/dist/chunk-BAYCMSMI.js.map +1 -0
- package/dist/{chunk-3I7KE2N6.js → chunk-BNV7P52K.js} +2 -2
- package/dist/{chunk-64UNVW6D.js → chunk-BP3ZKIPE.js} +4 -4
- package/dist/{chunk-3V7OTBUZ.js → chunk-BQ2SFA27.js} +2 -2
- package/dist/{chunk-Q5SCBQLY.js → chunk-BXLC3TBQ.js} +8 -8
- package/dist/{chunk-Z5V5E3JW.js → chunk-COKPPU42.js} +11 -11
- package/dist/{chunk-QADTI63U.js → chunk-CZVAVX5L.js} +4 -4
- package/dist/{chunk-WDEVKND3.js → chunk-D2YJPZMU.js} +9 -9
- package/dist/{chunk-OA6T2ME3.js → chunk-DYHOBKPU.js} +5 -5
- package/dist/{chunk-6WAP7BJS.js → chunk-E6SPWZRN.js} +2 -2
- package/dist/{chunk-UTIYB6VE.js → chunk-E73PAU4U.js} +19 -19
- package/dist/{chunk-XR474YYX.js → chunk-EDVAFY76.js} +2 -2
- package/dist/{chunk-MEMVZW64.js → chunk-EPNZQWS4.js} +3 -3
- package/dist/{chunk-GZITNT7O.js → chunk-FGZIEZEP.js} +11 -11
- package/dist/{chunk-4X2TOMK6.js → chunk-FKUVFPQZ.js} +4 -4
- package/dist/{chunk-UN5WU2OX.js → chunk-GDWU7WF4.js} +4 -4
- package/dist/{chunk-643YFWNK.js → chunk-GPWDP5FF.js} +3 -3
- package/dist/{chunk-XA5ES25V.js → chunk-HKQWFICM.js} +2 -2
- package/dist/chunk-IH6DZXTG.js +22 -0
- package/dist/chunk-IH6DZXTG.js.map +1 -0
- package/dist/{chunk-255WTBZ5.js → chunk-IWSTMVCA.js} +4 -4
- package/dist/{chunk-TZC6KIK2.js → chunk-JG733RMP.js} +5 -5
- package/dist/{chunk-7MLT66DE.js → chunk-K33X3PDT.js} +2 -2
- package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
- package/dist/{chunk-HOWAMSUY.js → chunk-KAWVH3AA.js} +3 -3
- package/dist/{chunk-IJVBLU25.js → chunk-KJZ4PINO.js} +3 -3
- package/dist/{chunk-REHGWN5M.js → chunk-KXDLLS62.js} +4 -4
- package/dist/{chunk-YQ5GQ32T.js → chunk-KZP5YTE7.js} +2 -2
- package/dist/{chunk-3V3Z4EML.js → chunk-L4FWEI2P.js} +5 -5
- package/dist/{chunk-UKUGSU3Y.js → chunk-L4V7FZJI.js} +2 -2
- package/dist/{chunk-W56KN53D.js → chunk-L6IDPTNX.js} +6 -6
- package/dist/{chunk-AYDVNXGR.js → chunk-LCKUEYU2.js} +2 -2
- package/dist/{chunk-24HHUCWB.js → chunk-LDCZPZPD.js} +2 -2
- package/dist/{chunk-KV7LTOWC.js → chunk-M225SD4H.js} +13 -13
- package/dist/{chunk-R6L376KR.js → chunk-M6R32IBO.js} +8 -13
- package/dist/chunk-M6R32IBO.js.map +1 -0
- package/dist/{chunk-FQMLTCXT.js → chunk-MAHY7PK3.js} +4 -4
- package/dist/{chunk-Z2J4MRTF.js → chunk-MKNW4FRR.js} +4 -4
- package/dist/{chunk-ILJ3FXIC.js → chunk-MM3QESLI.js} +2 -2
- package/dist/{chunk-FYJL432J.js → chunk-MQPUS773.js} +6 -6
- package/dist/{chunk-VRSW7PIO.js → chunk-NKBSWAP3.js} +4 -4
- package/dist/{chunk-ULC4SCFC.js → chunk-NLJ7LL6H.js} +4 -4
- package/dist/{chunk-RAQD5QCM.js → chunk-NQ6JP5CC.js} +6 -6
- package/dist/{chunk-IFOHCY4O.js → chunk-OF3KG5EV.js} +2 -2
- package/dist/{chunk-W676GY42.js → chunk-P772HCHI.js} +4 -4
- package/dist/{chunk-CWRQGA2T.js → chunk-POIENBXE.js} +7 -7
- package/dist/{chunk-FW5GTAUY.js → chunk-Q4AX4FOK.js} +11 -11
- package/dist/{chunk-XQAFSC66.js → chunk-Q4FNCT4C.js} +2 -2
- package/dist/{chunk-PIELY4BJ.js → chunk-Q5Z66LKI.js} +1 -1
- package/dist/{chunk-4Y3QLISA.js → chunk-Q7AONB4G.js} +4 -4
- package/dist/{chunk-EZBBLLEU.js → chunk-QQBYZ3B3.js} +4 -4
- package/dist/{chunk-FT3LJZWZ.js → chunk-RWUXMBSO.js} +4 -4
- package/dist/{chunk-KWBMM6MJ.js → chunk-RZKKWIGQ.js} +9 -9
- package/dist/{chunk-RVBLOR32.js → chunk-S7CXVIEF.js} +2 -2
- package/dist/{chunk-WLLUARTC.js → chunk-T2G4LDU5.js} +2 -2
- package/dist/{chunk-OFRQMFWD.js → chunk-T5D3DYVN.js} +2 -2
- package/dist/{chunk-O4UXH7BM.js → chunk-TP6KZ2YR.js} +7 -7
- package/dist/{chunk-HAWOS4SF.js → chunk-TPDN3B5T.js} +2 -2
- package/dist/{chunk-54DOLCJ3.js → chunk-TXIIJW6C.js} +5 -5
- package/dist/{chunk-HN36UVOE.js → chunk-U4Z6GZDW.js} +4 -4
- package/dist/{chunk-J2IQ6FJ5.js → chunk-UKLNLWTP.js} +3 -3
- package/dist/chunk-VAHJCRNW.js +17 -0
- package/dist/chunk-VAHJCRNW.js.map +1 -0
- package/dist/{chunk-MKHNLRVX.js → chunk-VPPD2AJN.js} +7 -7
- package/dist/{chunk-TIM4PXWN.js → chunk-VWRXSBT2.js} +2 -2
- package/dist/{chunk-KVP5A3YK.js → chunk-WDWZKTGA.js} +2 -2
- package/dist/{chunk-FYSS2PYA.js → chunk-WH5ZEBKS.js} +7 -7
- package/dist/{chunk-KAGXV3ID.js → chunk-WMMXOSZG.js} +7 -7
- package/dist/{chunk-4RSFYS2V.js → chunk-X6D5JEUV.js} +6 -6
- package/dist/{chunk-GFYDOH7D.js → chunk-XEPNAU3T.js} +2 -2
- package/dist/{chunk-VMACQT3T.js → chunk-XH7UDC5Y.js} +3 -3
- package/dist/{chunk-PDWQJFMK.js → chunk-XHMHHP7B.js} +10 -10
- package/dist/{chunk-SA3KLZDZ.js → chunk-XNAI7QGU.js} +5 -5
- package/dist/{chunk-7TENMQNQ.js → chunk-XZMSRHFD.js} +4 -4
- package/dist/{chunk-HBHBRRSW.js → chunk-YBAK2WN5.js} +7 -7
- package/dist/{chunk-QLKUWDMQ.js → chunk-YDJ5GAGL.js} +13 -13
- package/dist/{chunk-3V5V44UP.js → chunk-YHFLI2FD.js} +2 -2
- package/dist/{chunk-LOLYBFYY.js → chunk-ZCNR4DN5.js} +5 -5
- package/dist/data-display/Alert.js +4 -4
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +14 -14
- package/dist/data-display/Carousel.js +3 -3
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/DataGrid.js +3 -3
- package/dist/data-display/DataViews.js +74 -74
- package/dist/data-display/DayRuler.js +12 -12
- package/dist/data-display/FleetMap.js +12 -12
- package/dist/data-display/HoverCard.js +2 -2
- package/dist/data-display/Lightbox.js +7 -7
- package/dist/data-display/MapPreview.js +8 -8
- package/dist/data-display/Progress.js +2 -2
- package/dist/data-display/RegionMap.js +7 -7
- package/dist/data-display/ScheduleGrid.js +10 -10
- package/dist/data-display/Sheet.js +2 -2
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/Dialog.js +3 -3
- package/dist/feedback/Modal.js +2 -2
- package/dist/feedback/NotificationStatusNotice.js +5 -5
- package/dist/feedback/SequenceResolver.js +16 -16
- package/dist/feedback/TutorialOverlay.js +2 -2
- package/dist/feedback/UsableModal.js +1 -1
- package/dist/form/AddressAutocomplete.js +7 -7
- package/dist/form/Autocomplete.js +1 -1
- package/dist/form/Calendar.js +5 -5
- package/dist/form/CategorySelect.js +7 -7
- package/dist/form/CodeEditor.js +2 -2
- package/dist/form/DateRangePicker.js +10 -10
- package/dist/form/InputOTP.js +5 -3
- package/dist/form/total-form.js +9 -9
- package/dist/native/form/InputOTP.js +192 -0
- package/dist/native/form/InputOTP.js.map +1 -0
- package/dist/navigation/AppHeader.js +6 -6
- package/dist/navigation/SectionNav.js +9 -9
- package/dist/types/components/form/InputOTP/InputOTP.base.d.ts +63 -0
- package/dist/types/components/form/InputOTP/InputOTP.base.d.ts.map +1 -0
- package/dist/types/components/form/InputOTP/InputOTP.core.d.ts +38 -0
- package/dist/types/components/form/InputOTP/InputOTP.core.d.ts.map +1 -0
- package/dist/types/components/form/InputOTP/InputOTP.d.ts +1 -2
- package/dist/types/components/form/InputOTP/InputOTP.d.ts.map +1 -1
- package/dist/types/components/form/InputOTP/InputOTP.hooks.d.ts.map +1 -1
- package/dist/types/components/form/InputOTP/InputOTP.metrics.d.ts +15 -0
- package/dist/types/components/form/InputOTP/InputOTP.metrics.d.ts.map +1 -0
- package/dist/types/components/form/InputOTP/InputOTP.styles.d.ts.map +1 -1
- package/dist/types/components/form/InputOTP/InputOTP.types.d.ts +3 -56
- package/dist/types/components/form/InputOTP/InputOTP.types.d.ts.map +1 -1
- package/dist/types-native/components/form/InputOTP/InputOTP.base.d.ts +63 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.base.d.ts.map +1 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.core.d.ts +38 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.core.d.ts.map +1 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.hooks.native.d.ts +28 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.hooks.native.d.ts.map +1 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.metrics.d.ts +15 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.metrics.d.ts.map +1 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.native.d.ts +14 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.native.d.ts.map +1 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.types.native.d.ts +14 -0
- package/dist/types-native/components/form/InputOTP/InputOTP.types.native.d.ts.map +1 -0
- package/dist/types-native/components/form/InputOTP/index.native.d.ts +3 -0
- package/dist/types-native/components/form/InputOTP/index.native.d.ts.map +1 -0
- package/dist/user-avatar.js +3 -3
- package/package.json +5 -1
- package/src/components/data-display/RegionMap/RegionMapPin.tsx +1 -1
- package/src/components/form/InputOTP/InputOTP.base.ts +76 -0
- package/src/components/form/InputOTP/InputOTP.core.ts +51 -0
- package/src/components/form/InputOTP/InputOTP.hooks.native.ts +84 -0
- package/src/components/form/InputOTP/InputOTP.hooks.ts +1 -46
- package/src/components/form/InputOTP/InputOTP.metrics.ts +19 -0
- package/src/components/form/InputOTP/InputOTP.native.tsx +154 -0
- package/src/components/form/InputOTP/InputOTP.styles.ts +4 -11
- package/src/components/form/InputOTP/InputOTP.types.native.ts +15 -0
- package/src/components/form/InputOTP/InputOTP.types.ts +3 -68
- package/src/components/form/InputOTP/NATIVE-NOTES.md +8 -0
- package/src/components/form/InputOTP/index.native.ts +2 -0
- package/dist/chunk-NQYC7V5N.js.map +0 -1
- package/dist/chunk-R6L376KR.js.map +0 -1
- /package/dist/{chunk-37MJZLQU.js.map → chunk-24OFA44S.js.map} +0 -0
- /package/dist/{chunk-R775ISK6.js.map → chunk-2L6TANRY.js.map} +0 -0
- /package/dist/{chunk-B4OZU7J4.js.map → chunk-423A7NUP.js.map} +0 -0
- /package/dist/{chunk-LFECE4R7.js.map → chunk-4EDCF7TC.js.map} +0 -0
- /package/dist/{chunk-HI7JPDD6.js.map → chunk-5357QUVE.js.map} +0 -0
- /package/dist/{chunk-F7JRQ2EI.js.map → chunk-5YX2VQFP.js.map} +0 -0
- /package/dist/{chunk-QZOQVJ5L.js.map → chunk-645GGNTW.js.map} +0 -0
- /package/dist/{chunk-N5PVD4J5.js.map → chunk-6DO672AG.js.map} +0 -0
- /package/dist/{chunk-PGJIWCQR.js.map → chunk-6EZQLNPK.js.map} +0 -0
- /package/dist/{chunk-YQMJJ7AL.js.map → chunk-6G2RAZTS.js.map} +0 -0
- /package/dist/{chunk-KNW63H63.js.map → chunk-6PQZIZMN.js.map} +0 -0
- /package/dist/{chunk-FZZMNKVF.js.map → chunk-6TAPAIRR.js.map} +0 -0
- /package/dist/{chunk-ERAMSYPR.js.map → chunk-7N4O632I.js.map} +0 -0
- /package/dist/{chunk-XFOKLWJZ.js.map → chunk-7S5PXEO7.js.map} +0 -0
- /package/dist/{chunk-UIJLDAV7.js.map → chunk-AA6YMOEK.js.map} +0 -0
- /package/dist/{chunk-CRD2WCU7.js.map → chunk-AFWUQJ4P.js.map} +0 -0
- /package/dist/{chunk-SNWCT6JN.js.map → chunk-AMIUZRDQ.js.map} +0 -0
- /package/dist/{chunk-3I7KE2N6.js.map → chunk-BNV7P52K.js.map} +0 -0
- /package/dist/{chunk-64UNVW6D.js.map → chunk-BP3ZKIPE.js.map} +0 -0
- /package/dist/{chunk-3V7OTBUZ.js.map → chunk-BQ2SFA27.js.map} +0 -0
- /package/dist/{chunk-Q5SCBQLY.js.map → chunk-BXLC3TBQ.js.map} +0 -0
- /package/dist/{chunk-Z5V5E3JW.js.map → chunk-COKPPU42.js.map} +0 -0
- /package/dist/{chunk-QADTI63U.js.map → chunk-CZVAVX5L.js.map} +0 -0
- /package/dist/{chunk-WDEVKND3.js.map → chunk-D2YJPZMU.js.map} +0 -0
- /package/dist/{chunk-OA6T2ME3.js.map → chunk-DYHOBKPU.js.map} +0 -0
- /package/dist/{chunk-6WAP7BJS.js.map → chunk-E6SPWZRN.js.map} +0 -0
- /package/dist/{chunk-UTIYB6VE.js.map → chunk-E73PAU4U.js.map} +0 -0
- /package/dist/{chunk-XR474YYX.js.map → chunk-EDVAFY76.js.map} +0 -0
- /package/dist/{chunk-MEMVZW64.js.map → chunk-EPNZQWS4.js.map} +0 -0
- /package/dist/{chunk-GZITNT7O.js.map → chunk-FGZIEZEP.js.map} +0 -0
- /package/dist/{chunk-4X2TOMK6.js.map → chunk-FKUVFPQZ.js.map} +0 -0
- /package/dist/{chunk-UN5WU2OX.js.map → chunk-GDWU7WF4.js.map} +0 -0
- /package/dist/{chunk-643YFWNK.js.map → chunk-GPWDP5FF.js.map} +0 -0
- /package/dist/{chunk-XA5ES25V.js.map → chunk-HKQWFICM.js.map} +0 -0
- /package/dist/{chunk-255WTBZ5.js.map → chunk-IWSTMVCA.js.map} +0 -0
- /package/dist/{chunk-TZC6KIK2.js.map → chunk-JG733RMP.js.map} +0 -0
- /package/dist/{chunk-7MLT66DE.js.map → chunk-K33X3PDT.js.map} +0 -0
- /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
- /package/dist/{chunk-HOWAMSUY.js.map → chunk-KAWVH3AA.js.map} +0 -0
- /package/dist/{chunk-IJVBLU25.js.map → chunk-KJZ4PINO.js.map} +0 -0
- /package/dist/{chunk-REHGWN5M.js.map → chunk-KXDLLS62.js.map} +0 -0
- /package/dist/{chunk-YQ5GQ32T.js.map → chunk-KZP5YTE7.js.map} +0 -0
- /package/dist/{chunk-3V3Z4EML.js.map → chunk-L4FWEI2P.js.map} +0 -0
- /package/dist/{chunk-UKUGSU3Y.js.map → chunk-L4V7FZJI.js.map} +0 -0
- /package/dist/{chunk-W56KN53D.js.map → chunk-L6IDPTNX.js.map} +0 -0
- /package/dist/{chunk-AYDVNXGR.js.map → chunk-LCKUEYU2.js.map} +0 -0
- /package/dist/{chunk-24HHUCWB.js.map → chunk-LDCZPZPD.js.map} +0 -0
- /package/dist/{chunk-KV7LTOWC.js.map → chunk-M225SD4H.js.map} +0 -0
- /package/dist/{chunk-FQMLTCXT.js.map → chunk-MAHY7PK3.js.map} +0 -0
- /package/dist/{chunk-Z2J4MRTF.js.map → chunk-MKNW4FRR.js.map} +0 -0
- /package/dist/{chunk-ILJ3FXIC.js.map → chunk-MM3QESLI.js.map} +0 -0
- /package/dist/{chunk-FYJL432J.js.map → chunk-MQPUS773.js.map} +0 -0
- /package/dist/{chunk-VRSW7PIO.js.map → chunk-NKBSWAP3.js.map} +0 -0
- /package/dist/{chunk-ULC4SCFC.js.map → chunk-NLJ7LL6H.js.map} +0 -0
- /package/dist/{chunk-RAQD5QCM.js.map → chunk-NQ6JP5CC.js.map} +0 -0
- /package/dist/{chunk-IFOHCY4O.js.map → chunk-OF3KG5EV.js.map} +0 -0
- /package/dist/{chunk-W676GY42.js.map → chunk-P772HCHI.js.map} +0 -0
- /package/dist/{chunk-CWRQGA2T.js.map → chunk-POIENBXE.js.map} +0 -0
- /package/dist/{chunk-FW5GTAUY.js.map → chunk-Q4AX4FOK.js.map} +0 -0
- /package/dist/{chunk-XQAFSC66.js.map → chunk-Q4FNCT4C.js.map} +0 -0
- /package/dist/{chunk-PIELY4BJ.js.map → chunk-Q5Z66LKI.js.map} +0 -0
- /package/dist/{chunk-4Y3QLISA.js.map → chunk-Q7AONB4G.js.map} +0 -0
- /package/dist/{chunk-EZBBLLEU.js.map → chunk-QQBYZ3B3.js.map} +0 -0
- /package/dist/{chunk-FT3LJZWZ.js.map → chunk-RWUXMBSO.js.map} +0 -0
- /package/dist/{chunk-KWBMM6MJ.js.map → chunk-RZKKWIGQ.js.map} +0 -0
- /package/dist/{chunk-RVBLOR32.js.map → chunk-S7CXVIEF.js.map} +0 -0
- /package/dist/{chunk-WLLUARTC.js.map → chunk-T2G4LDU5.js.map} +0 -0
- /package/dist/{chunk-OFRQMFWD.js.map → chunk-T5D3DYVN.js.map} +0 -0
- /package/dist/{chunk-O4UXH7BM.js.map → chunk-TP6KZ2YR.js.map} +0 -0
- /package/dist/{chunk-HAWOS4SF.js.map → chunk-TPDN3B5T.js.map} +0 -0
- /package/dist/{chunk-54DOLCJ3.js.map → chunk-TXIIJW6C.js.map} +0 -0
- /package/dist/{chunk-HN36UVOE.js.map → chunk-U4Z6GZDW.js.map} +0 -0
- /package/dist/{chunk-J2IQ6FJ5.js.map → chunk-UKLNLWTP.js.map} +0 -0
- /package/dist/{chunk-MKHNLRVX.js.map → chunk-VPPD2AJN.js.map} +0 -0
- /package/dist/{chunk-TIM4PXWN.js.map → chunk-VWRXSBT2.js.map} +0 -0
- /package/dist/{chunk-KVP5A3YK.js.map → chunk-WDWZKTGA.js.map} +0 -0
- /package/dist/{chunk-FYSS2PYA.js.map → chunk-WH5ZEBKS.js.map} +0 -0
- /package/dist/{chunk-KAGXV3ID.js.map → chunk-WMMXOSZG.js.map} +0 -0
- /package/dist/{chunk-4RSFYS2V.js.map → chunk-X6D5JEUV.js.map} +0 -0
- /package/dist/{chunk-GFYDOH7D.js.map → chunk-XEPNAU3T.js.map} +0 -0
- /package/dist/{chunk-VMACQT3T.js.map → chunk-XH7UDC5Y.js.map} +0 -0
- /package/dist/{chunk-PDWQJFMK.js.map → chunk-XHMHHP7B.js.map} +0 -0
- /package/dist/{chunk-SA3KLZDZ.js.map → chunk-XNAI7QGU.js.map} +0 -0
- /package/dist/{chunk-7TENMQNQ.js.map → chunk-XZMSRHFD.js.map} +0 -0
- /package/dist/{chunk-HBHBRRSW.js.map → chunk-YBAK2WN5.js.map} +0 -0
- /package/dist/{chunk-QLKUWDMQ.js.map → chunk-YDJ5GAGL.js.map} +0 -0
- /package/dist/{chunk-3V5V44UP.js.map → chunk-YHFLI2FD.js.map} +0 -0
- /package/dist/{chunk-LOLYBFYY.js.map → chunk-ZCNR4DN5.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/RegionMap/RegionMapPin.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { alpha, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport { METRES_PER_DEGREE, type PlaneBox, type PlanePoint, type Projection } from './RegionMap.helpers';\nimport type { RegionMapModel } from './RegionMap.hooks';\nimport type { RegionMapCenter, RegionMapCopy, RegionMapDot, RegionMapGhost, RegionMapPin } from './RegionMap.types';\n\n/**\n * The movable centre of a `RegionMap` (`pin`, `ghost`, `dots`): a pin the\n * viewer drags with a mouse or one finger, or focuses and nudges with the\n * arrow keys, while the VIEW stays where `center` put it — so the areas never\n * slide under a dragging finger. The circles follow the pin; a dashed ring\n * and dot stay at `ghost`; `dots` are small points (filled or hollow).\n *\n * The pin is HTML over the drawing, at its point by percent like the labels,\n * carrying `data-region-pin` so a host that zooms the drawing's layers can\n * move it with them. Its moves are reported, never applied: the host passes\n * the new point back.\n */\n\n/** The movable centre and what is drawn with it, as the drawing receives it. */\nexport interface Moving {\n center: RegionMapCenter;\n pin?: RegionMapPin;\n ghost?: RegionMapGhost;\n dots?: readonly RegionMapDot[];\n copy: RegionMapCopy;\n}\n\ntype DrawnModel = Pick<RegionMapModel, 'projection' | 'radii'> & { view: PlaneBox };\n\n/**\n * What the movable centre draws inside the SVG: the circles around the pin\n * (else `fallback`, the centre's own circles), the ghost, and the dots.\n */\nexport function PinShapes({ model, moving, testId, theme, fallback }: { model: DrawnModel; moving: Moving | undefined; testId: string; theme: Theme; fallback: React.ReactNode }): React.JSX.Element {\n const { projection, view } = model;\n if (!moving || !projection) return <>{fallback}</>;\n const pinAt = moving.pin ? projection.project([moving.pin.at.latitude, moving.pin.at.longitude]) : null;\n return (\n <>\n {pinAt ? <PinCircles at={pinAt} radii={model.radii} theme={theme} /> : fallback}\n {pinAt && moving.ghost ? <GhostShapes ghost={moving.ghost} pinAt={pinAt} projection={projection} view={view} testId={testId} theme={theme} /> : null}\n {moving.dots ? <Dots dots={moving.dots} projection={projection} view={view} testId={testId} theme={theme} /> : null}\n </>\n );\n}\n\n/** What the movable centre draws over the SVG, in HTML: the pin and the scale bar. */\nexport function PinOverlay({\n model,\n moving,\n svgRef,\n testId,\n theme,\n}: {\n model: DrawnModel;\n moving: Moving | undefined;\n svgRef: React.RefObject<SVGSVGElement | null>;\n testId: string;\n theme: Theme;\n}): React.JSX.Element | null {\n if (!moving || !model.projection) return null;\n return (\n <>\n {moving.pin ? <PinMarker pin={moving.pin} center={moving.center} projection={model.projection} view={model.view} svgRef={svgRef} testId={testId} theme={theme} /> : null}\n <ScaleBar view={model.view} copy={moving.copy} svgRef={svgRef} testId={testId} theme={theme} />\n </>\n );\n}\n\n/** The flat projection's inverse around `center` — it is linear. */\nexport function latLngAt(center: RegionMapCenter, point: PlanePoint): RegionMapCenter {\n const kx = METRES_PER_DEGREE * Math.cos((center.latitude * Math.PI) / 180);\n return { latitude: center.latitude - point.y / METRES_PER_DEGREE, longitude: center.longitude + point.x / kx };\n}\n\n/** A point of the plane as fractions of the view (0..1 across, 0..1 down). */\nfunction fractionOf(view: PlaneBox, point: PlanePoint): { x: number; y: number } {\n return { x: (point.x - view.minX) / view.spanX, y: (point.y - view.minY) / view.spanY };\n}\n\n/** Keep a fraction inside the view, a hair in from its edge (the mock's clamp). */\nconst clampFraction = (value: number): number => Math.min(0.995, Math.max(0.005, value));\n\n/** A plane point kept inside the view by the same clamp a drag gets. */\nfunction clampToView(view: PlaneBox, point: PlanePoint): PlanePoint {\n const at = fractionOf(view, point);\n return { x: view.minX + clampFraction(at.x) * view.spanX, y: view.minY + clampFraction(at.y) * view.spanY };\n}\n\n/** Arrow keys, as metres east and north per press. */\nconst ARROWS: Record<string, [number, number]> = { ArrowLeft: [-1, 0], ArrowRight: [1, 0], ArrowUp: [0, 1], ArrowDown: [0, -1] };\n\n/** One arrow key: 50 m unless the host says otherwise. */\nconst DEFAULT_STEP_METRES = 50;\n\ninterface PinLayerProps {\n pin: RegionMapPin;\n center: RegionMapCenter;\n projection: Projection;\n view: PlaneBox;\n /** The drawing's SVG, whose on-screen box maps a pointer to the plane (zoomed or not). */\n svgRef: React.RefObject<SVGSVGElement | null>;\n testId: string;\n theme: Theme;\n}\n\n/** The draggable pin, as HTML over the drawing. */\nexport function PinMarker({ pin, center, projection, view, svgRef, testId, theme }: PinLayerProps): React.JSX.Element {\n const ref = React.useRef<HTMLDivElement>(null);\n const live = React.useRef({ pin, center, view });\n live.current = { pin, center, view };\n usePinDrag(ref, svgRef, live);\n const at = fractionOf(view, projection.project([pin.at.latitude, pin.at.longitude]));\n const onKeyDown = (event: React.KeyboardEvent): void => {\n const arrow = ARROWS[event.key];\n if (!arrow || pin.disabled) return;\n event.preventDefault();\n const step = pin.stepMetres ?? DEFAULT_STEP_METRES;\n const plane = projection.project([pin.at.latitude, pin.at.longitude]);\n const next = latLngAt(center, clampToView(view, { x: plane.x + arrow[0] * step, y: plane.y - arrow[1] * step }));\n pin.onMove?.(next);\n pin.onDrop(next);\n };\n return (\n <Box\n ref={ref}\n role=\"button\"\n tabIndex={pin.disabled ? -1 : 0}\n aria-label={pin.ariaLabel}\n aria-disabled={pin.disabled || undefined}\n onKeyDown={onKeyDown}\n data-testid={`${testId}-pin`}\n data-region-pin=\"\"\n style={{ left: `${(at.x * 100).toFixed(3)}%`, top: `${(at.y * 100).toFixed(3)}%` }}\n sx={{\n position: 'absolute',\n transform: 'translate(-50%, -100%)',\n width: rem(theme, 44),\n height: rem(theme, 48),\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'center',\n cursor: pin.disabled ? 'default' : 'grab',\n touchAction: 'none',\n zIndex: 2,\n borderRadius: 1,\n '&:focus-visible': { outline: `${rem(theme, 2)} solid`, outlineColor: 'primary.main', outlineOffset: rem(theme, 2) },\n }}\n >\n <Box component=\"svg\" viewBox=\"0 0 32 42\" aria-hidden=\"true\" sx={{ width: rem(theme, 32), height: rem(theme, 42) }}>\n <path\n d=\"M16 41C16 41 3 25 3 15.5A13 13 0 1 1 29 15.5C29 25 16 41 16 41Z\"\n fill={theme.palette.primary.main}\n stroke={theme.palette.background.paper}\n strokeWidth={2}\n />\n <circle cx=\"16\" cy=\"15.5\" r=\"5\" fill={theme.palette.background.paper} />\n </Box>\n <Box\n component=\"span\"\n aria-hidden\n sx={{\n position: 'absolute',\n left: '88%',\n top: 0,\n px: 0.75,\n borderRadius: 0.5,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'background.paper',\n color: 'text.primary',\n fontSize: rem(theme, 12),\n fontWeight: 600,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n }}\n >\n {pin.label}\n </Box>\n </Box>\n );\n}\n\n/**\n * The pointer drag: native listeners on the pin, so a host's own listeners on\n * the drawing (a pan, a tap) never see the press; captured, so a finger that\n * leaves the pin keeps dragging it; clamped inside the view.\n */\nfunction usePinDrag(\n ref: React.RefObject<HTMLDivElement | null>,\n svgRef: React.RefObject<SVGSVGElement | null>,\n live: React.RefObject<{ pin: RegionMapPin; center: RegionMapCenter; view: PlaneBox }>,\n): void {\n React.useEffect(() => {\n const element = ref.current;\n if (!element) return undefined;\n let dragging: number | null = null;\n // Where the last move put the pin: a cancelled gesture (a browser may\n // report 0,0 for it) rests there rather than jumping to the corner.\n let last: RegionMapCenter | null = null;\n const pointAt = (event: PointerEvent): RegionMapCenter | null => {\n const box = svgRef.current?.getBoundingClientRect();\n if (!box || box.width === 0 || box.height === 0) return null;\n const { view, center } = live.current;\n if (!Number.isFinite(event.clientX) || !Number.isFinite(event.clientY)) return null;\n const fx = clampFraction((event.clientX - box.left) / box.width);\n const fy = clampFraction((event.clientY - box.top) / box.height);\n return latLngAt(center, { x: view.minX + fx * view.spanX, y: view.minY + fy * view.spanY });\n };\n const down = (event: PointerEvent): void => {\n event.stopPropagation();\n if (live.current.pin.disabled) return;\n event.preventDefault();\n dragging = event.pointerId;\n last = null;\n element.setPointerCapture?.(event.pointerId);\n };\n const move = (event: PointerEvent): void => {\n if (dragging !== event.pointerId) return;\n event.stopPropagation();\n const at = pointAt(event);\n if (!at) return;\n last = at;\n live.current.pin.onMove?.(at);\n };\n const up = (event: PointerEvent): void => {\n if (dragging !== event.pointerId) return;\n event.stopPropagation();\n dragging = null;\n const at = event.type === 'pointercancel' ? last : (pointAt(event) ?? last);\n if (at) live.current.pin.onDrop(at);\n };\n // A click that ends a drag is the drag's, not a tap on the area under it.\n const click = (event: MouseEvent): void => event.stopPropagation();\n element.addEventListener('pointerdown', down);\n element.addEventListener('pointermove', move);\n element.addEventListener('pointerup', up);\n element.addEventListener('pointercancel', up);\n element.addEventListener('click', click);\n return () => {\n element.removeEventListener('pointerdown', down);\n element.removeEventListener('pointermove', move);\n element.removeEventListener('pointerup', up);\n element.removeEventListener('pointercancel', up);\n element.removeEventListener('click', click);\n };\n }, [ref, svgRef, live]);\n}\n\n/** The circles around the pin: solid in the primary colour, faintly filled. */\nexport function PinCircles({ at, radii, theme }: { at: PlanePoint; radii: readonly number[]; theme: Theme }): React.JSX.Element {\n return (\n <>\n {radii.map((radius) => (\n <circle\n key={radius}\n cx={at.x}\n cy={at.y}\n r={radius}\n fill={alpha(theme.palette.primary.main, 0.06)}\n stroke={theme.palette.primary.main}\n strokeWidth={2.25}\n vectorEffect=\"non-scaling-stroke\"\n pointerEvents=\"none\"\n />\n ))}\n </>\n );\n}\n\n/** Where the circles stood: a dashed ring and dot at `ghost`, and a dashed line from it to the pin. */\nexport function GhostShapes({\n ghost,\n pinAt,\n projection,\n view,\n testId,\n theme,\n}: {\n ghost: RegionMapGhost;\n pinAt: PlanePoint;\n projection: Projection;\n view: PlaneBox;\n testId: string;\n theme: Theme;\n}): React.JSX.Element {\n const at = projection.project([ghost.at.latitude, ghost.at.longitude]);\n const stroke = theme.palette.text.secondary;\n const common = { fill: 'none', stroke, vectorEffect: 'non-scaling-stroke', pointerEvents: 'none' } as const;\n return (\n <g data-testid={`${testId}-ghost`}>\n <circle cx={at.x} cy={at.y} r={ghost.radiusMetres} strokeWidth={1.5} strokeDasharray=\"6 5\" {...common} />\n <line x1={at.x} y1={at.y} x2={pinAt.x} y2={pinAt.y} strokeWidth={1.5} strokeDasharray=\"4 4\" {...common} />\n <circle cx={at.x} cy={at.y} r={view.spanX / 110} strokeWidth={2} strokeDasharray=\"3 2\" {...common} fill={alpha(theme.palette.background.paper, 0.7)} />\n </g>\n );\n}\n\n/** The dots: filled with the ink, or hollow (paper with an ink ring). */\nexport function Dots({ dots, projection, view, testId, theme }: { dots: readonly RegionMapDot[]; projection: Projection; view: PlaneBox; testId: string; theme: Theme }): React.JSX.Element {\n return (\n <g data-testid={`${testId}-dots`}>\n {dots.map((dot) => {\n const at = projection.project([dot.at.latitude, dot.at.longitude]);\n return (\n <circle\n key={dot.id}\n cx={at.x}\n cy={at.y}\n r={view.spanX / 150}\n fill={dot.filled ? theme.palette.text.primary : theme.palette.background.paper}\n stroke={theme.palette.text.primary}\n strokeWidth={2}\n vectorEffect=\"non-scaling-stroke\"\n pointerEvents=\"none\"\n data-filled={dot.filled ? 'true' : 'false'}\n />\n );\n })}\n </g>\n );\n}\n\n/** Nice lengths a scale bar may take, in metres. */\nconst SCALE_STEPS = [50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000];\n\n/** The longest nice length that fits in a quarter of the drawing's width. */\nexport function scaleMetres(view: PlaneBox): number {\n const quarter = view.spanX / 4;\n return SCALE_STEPS.filter((step) => step <= quarter).at(-1) ?? SCALE_STEPS[0]!;\n}\n\n/**\n * A scale bar, bottom-left, when the host gives `copy.scale`. It reads what is\n * on screen: a host that zooms the drawing's layers (a CSS scale on the SVG)\n * shows fewer metres per pixel, so after every render the bar compares the\n * SVG's drawn width with its laid-out width — both off the SVG itself — and\n * spans the drawing's own width, so its share of it is a share of the view.\n */\nexport function ScaleBar({\n view,\n copy,\n svgRef,\n testId,\n theme,\n}: {\n view: PlaneBox;\n copy: RegionMapCopy;\n svgRef: React.RefObject<SVGSVGElement | null>;\n testId: string;\n theme: Theme;\n}): React.JSX.Element | null {\n // What the drawing shows on screen: its laid-out width, and its width as\n // drawn (a host's CSS scale on the SVG), both read off the SVG itself.\n const [screen, setScreen] = React.useState({ laidOut: 0, drawn: 0 });\n const wanted = copy.scale !== undefined;\n React.useLayoutEffect(() => {\n if (!wanted) return;\n const svg = svgRef.current;\n const next = { laidOut: svg?.clientWidth ?? 0, drawn: svg?.getBoundingClientRect().width ?? 0 };\n if (next.laidOut !== screen.laidOut || Math.abs(next.drawn - screen.drawn) > 0.5) setScreen(next);\n });\n if (!copy.scale) return null;\n const zoom = screen.laidOut > 0 && screen.drawn > 0 ? screen.drawn / screen.laidOut : 1;\n const metres = scaleMetres({ ...view, spanX: view.spanX / zoom });\n // The bar's share of the drawing's width: metres on screen over the metres the width shows.\n const share = (metres * zoom) / view.spanX;\n return (\n <Box\n data-testid={`${testId}-scale`}\n aria-hidden\n sx={{ position: 'absolute', left: 0, right: 0, bottom: rem(theme, 10), pointerEvents: 'none', zIndex: 1 }}\n >\n <Box component=\"span\" sx={{ display: 'block', ml: rem(theme, 10), fontSize: rem(theme, 11), color: 'text.secondary' }}>\n {copy.scale(metres)}\n </Box>\n <Box\n component=\"span\"\n sx={{ display: 'block', height: rem(theme, 4), ml: rem(theme, 10), width: `${(share * 100).toFixed(2)}%`, borderStyle: 'solid', borderWidth: `0 ${rem(theme, 1.5)} ${rem(theme, 1.5)}`, borderColor: 'text.secondary' }}\n />\n </Box>\n );\n}\n"],"mappings":";;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,aAAyB;AAClC,OAAO,WAAW;AAsCmB,wBAGjC,YAHiC;AAF9B,SAAS,UAAU,EAAE,OAAO,QAAQ,QAAQ,OAAO,SAAS,GAAkI;AACnM,QAAM,EAAE,YAAY,KAAK,IAAI;AAC7B,MAAI,CAAC,UAAU,CAAC,WAAY,QAAO,gCAAG,oBAAS;AAC/C,QAAM,QAAQ,OAAO,MAAM,WAAW,QAAQ,CAAC,OAAO,IAAI,GAAG,UAAU,OAAO,IAAI,GAAG,SAAS,CAAC,IAAI;AACnG,SACE,iCACG;AAAA,YAAQ,oBAAC,cAAW,IAAI,OAAO,OAAO,MAAM,OAAO,OAAc,IAAK;AAAA,IACtE,SAAS,OAAO,QAAQ,oBAAC,eAAY,OAAO,OAAO,OAAO,OAAc,YAAwB,MAAY,QAAgB,OAAc,IAAK;AAAA,IAC/I,OAAO,OAAO,oBAAC,QAAK,MAAM,OAAO,MAAM,YAAwB,MAAY,QAAgB,OAAc,IAAK;AAAA,KACjH;AAEJ;AAGO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAM6B;AAC3B,MAAI,CAAC,UAAU,CAAC,MAAM,WAAY,QAAO;AACzC,SACE,iCACG;AAAA,WAAO,MAAM,oBAAC,aAAU,KAAK,OAAO,KAAK,QAAQ,OAAO,QAAQ,YAAY,MAAM,YAAY,MAAM,MAAM,MAAM,QAAgB,QAAgB,OAAc,IAAK;AAAA,IACpK,oBAAC,YAAS,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,QAAgB,QAAgB,OAAc;AAAA,KAC/F;AAEJ;AAGO,SAAS,SAAS,QAAyB,OAAoC;AACpF,QAAM,KAAK,oBAAoB,KAAK,IAAK,OAAO,WAAW,KAAK,KAAM,GAAG;AACzE,SAAO,EAAE,UAAU,OAAO,WAAW,MAAM,IAAI,mBAAmB,WAAW,OAAO,YAAY,MAAM,IAAI,GAAG;AAC/G;AAGA,SAAS,WAAW,MAAgB,OAA6C;AAC/E,SAAO,EAAE,IAAI,MAAM,IAAI,KAAK,QAAQ,KAAK,OAAO,IAAI,MAAM,IAAI,KAAK,QAAQ,KAAK,MAAM;AACxF;AAGA,IAAM,gBAAgB,CAAC,UAA0B,KAAK,IAAI,OAAO,KAAK,IAAI,MAAO,KAAK,CAAC;AAGvF,SAAS,YAAY,MAAgB,OAA+B;AAClE,QAAM,KAAK,WAAW,MAAM,KAAK;AACjC,SAAO,EAAE,GAAG,KAAK,OAAO,cAAc,GAAG,CAAC,IAAI,KAAK,OAAO,GAAG,KAAK,OAAO,cAAc,GAAG,CAAC,IAAI,KAAK,MAAM;AAC5G;AAGA,IAAM,SAA2C,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE;AAG/H,IAAM,sBAAsB;AAcrB,SAAS,UAAU,EAAE,KAAK,QAAQ,YAAY,MAAM,QAAQ,QAAQ,MAAM,GAAqC;AACpH,QAAM,MAAM,MAAM,OAAuB,IAAI;AAC7C,QAAM,OAAO,MAAM,OAAO,EAAE,KAAK,QAAQ,KAAK,CAAC;AAC/C,OAAK,UAAU,EAAE,KAAK,QAAQ,KAAK;AACnC,aAAW,KAAK,QAAQ,IAAI;AAC5B,QAAM,KAAK,WAAW,MAAM,WAAW,QAAQ,CAAC,IAAI,GAAG,UAAU,IAAI,GAAG,SAAS,CAAC,CAAC;AACnF,QAAM,YAAY,CAAC,UAAqC;AACtD,UAAM,QAAQ,OAAO,MAAM,GAAG;AAC9B,QAAI,CAAC,SAAS,IAAI,SAAU;AAC5B,UAAM,eAAe;AACrB,UAAM,OAAO,IAAI,cAAc;AAC/B,UAAM,QAAQ,WAAW,QAAQ,CAAC,IAAI,GAAG,UAAU,IAAI,GAAG,SAAS,CAAC;AACpE,UAAM,OAAO,SAAS,QAAQ,YAAY,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;AAC/G,QAAI,SAAS,IAAI;AACjB,QAAI,OAAO,IAAI;AAAA,EACjB;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,UAAU,IAAI,WAAW,KAAK;AAAA,MAC9B,cAAY,IAAI;AAAA,MAChB,iBAAe,IAAI,YAAY;AAAA,MAC/B;AAAA,MACA,eAAa,GAAG,MAAM;AAAA,MACtB,mBAAgB;AAAA,MAChB,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,IAAI;AAAA,MACjF,IAAI;AAAA,QACF,UAAU;AAAA,QACV,WAAW;AAAA,QACX,OAAO,IAAI,OAAO,EAAE;AAAA,QACpB,QAAQ,IAAI,OAAO,EAAE;AAAA,QACrB,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,QAAQ,IAAI,WAAW,YAAY;AAAA,QACnC,aAAa;AAAA,QACb,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,mBAAmB,EAAE,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,UAAU,cAAc,gBAAgB,eAAe,IAAI,OAAO,CAAC,EAAE;AAAA,MACrH;AAAA,MAEA;AAAA,6BAAC,OAAI,WAAU,OAAM,SAAQ,aAAY,eAAY,QAAO,IAAI,EAAE,OAAO,IAAI,OAAO,EAAE,GAAG,QAAQ,IAAI,OAAO,EAAE,EAAE,GAC9G;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,GAAE;AAAA,cACF,MAAM,MAAM,QAAQ,QAAQ;AAAA,cAC5B,QAAQ,MAAM,QAAQ,WAAW;AAAA,cACjC,aAAa;AAAA;AAAA,UACf;AAAA,UACA,oBAAC,YAAO,IAAG,MAAK,IAAG,QAAO,GAAE,KAAI,MAAM,MAAM,QAAQ,WAAW,OAAO;AAAA,WACxE;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAW;AAAA,YACX,IAAI;AAAA,cACF,UAAU;AAAA,cACV,MAAM;AAAA,cACN,KAAK;AAAA,cACL,IAAI;AAAA,cACJ,cAAc;AAAA,cACd,QAAQ;AAAA,cACR,aAAa;AAAA,cACb,SAAS;AAAA,cACT,OAAO;AAAA,cACP,UAAU,IAAI,OAAO,EAAE;AAAA,cACvB,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,eAAe;AAAA,YACjB;AAAA,YAEC,cAAI;AAAA;AAAA,QACP;AAAA;AAAA;AAAA,EACF;AAEJ;AAOA,SAAS,WACP,KACA,QACA,MACM;AACN,QAAM,UAAU,MAAM;AACpB,UAAM,UAAU,IAAI;AACpB,QAAI,CAAC,QAAS,QAAO;AACrB,QAAI,WAA0B;AAG9B,QAAI,OAA+B;AACnC,UAAM,UAAU,CAAC,UAAgD;AAC/D,YAAM,MAAM,OAAO,SAAS,sBAAsB;AAClD,UAAI,CAAC,OAAO,IAAI,UAAU,KAAK,IAAI,WAAW,EAAG,QAAO;AACxD,YAAM,EAAE,MAAM,OAAO,IAAI,KAAK;AAC9B,UAAI,CAAC,OAAO,SAAS,MAAM,OAAO,KAAK,CAAC,OAAO,SAAS,MAAM,OAAO,EAAG,QAAO;AAC/E,YAAM,KAAK,eAAe,MAAM,UAAU,IAAI,QAAQ,IAAI,KAAK;AAC/D,YAAM,KAAK,eAAe,MAAM,UAAU,IAAI,OAAO,IAAI,MAAM;AAC/D,aAAO,SAAS,QAAQ,EAAE,GAAG,KAAK,OAAO,KAAK,KAAK,OAAO,GAAG,KAAK,OAAO,KAAK,KAAK,MAAM,CAAC;AAAA,IAC5F;AACA,UAAM,OAAO,CAAC,UAA8B;AAC1C,YAAM,gBAAgB;AACtB,UAAI,KAAK,QAAQ,IAAI,SAAU;AAC/B,YAAM,eAAe;AACrB,iBAAW,MAAM;AACjB,aAAO;AACP,cAAQ,oBAAoB,MAAM,SAAS;AAAA,IAC7C;AACA,UAAM,OAAO,CAAC,UAA8B;AAC1C,UAAI,aAAa,MAAM,UAAW;AAClC,YAAM,gBAAgB;AACtB,YAAM,KAAK,QAAQ,KAAK;AACxB,UAAI,CAAC,GAAI;AACT,aAAO;AACP,WAAK,QAAQ,IAAI,SAAS,EAAE;AAAA,IAC9B;AACA,UAAM,KAAK,CAAC,UAA8B;AACxC,UAAI,aAAa,MAAM,UAAW;AAClC,YAAM,gBAAgB;AACtB,iBAAW;AACX,YAAM,KAAK,MAAM,SAAS,kBAAkB,OAAQ,QAAQ,KAAK,KAAK;AACtE,UAAI,GAAI,MAAK,QAAQ,IAAI,OAAO,EAAE;AAAA,IACpC;AAEA,UAAM,QAAQ,CAAC,UAA4B,MAAM,gBAAgB;AACjE,YAAQ,iBAAiB,eAAe,IAAI;AAC5C,YAAQ,iBAAiB,eAAe,IAAI;AAC5C,YAAQ,iBAAiB,aAAa,EAAE;AACxC,YAAQ,iBAAiB,iBAAiB,EAAE;AAC5C,YAAQ,iBAAiB,SAAS,KAAK;AACvC,WAAO,MAAM;AACX,cAAQ,oBAAoB,eAAe,IAAI;AAC/C,cAAQ,oBAAoB,eAAe,IAAI;AAC/C,cAAQ,oBAAoB,aAAa,EAAE;AAC3C,cAAQ,oBAAoB,iBAAiB,EAAE;AAC/C,cAAQ,oBAAoB,SAAS,KAAK;AAAA,IAC5C;AAAA,EACF,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC;AACxB;AAGO,SAAS,WAAW,EAAE,IAAI,OAAO,MAAM,GAAkF;AAC9H,SACE,gCACG,gBAAM,IAAI,CAAC,WACV;AAAA,IAAC;AAAA;AAAA,MAEC,IAAI,GAAG;AAAA,MACP,IAAI,GAAG;AAAA,MACP,GAAG;AAAA,MACH,MAAM,MAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,MAC5C,QAAQ,MAAM,QAAQ,QAAQ;AAAA,MAC9B,aAAa;AAAA,MACb,cAAa;AAAA,MACb,eAAc;AAAA;AAAA,IART;AAAA,EASP,CACD,GACH;AAEJ;AAGO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOsB;AACpB,QAAM,KAAK,WAAW,QAAQ,CAAC,MAAM,GAAG,UAAU,MAAM,GAAG,SAAS,CAAC;AACrE,QAAM,SAAS,MAAM,QAAQ,KAAK;AAClC,QAAM,SAAS,EAAE,MAAM,QAAQ,QAAQ,cAAc,sBAAsB,eAAe,OAAO;AACjG,SACE,qBAAC,OAAE,eAAa,GAAG,MAAM,UACvB;AAAA,wBAAC,YAAO,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,cAAc,aAAa,KAAK,iBAAgB,OAAO,GAAG,QAAQ;AAAA,IACvG,oBAAC,UAAK,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,GAAG,aAAa,KAAK,iBAAgB,OAAO,GAAG,QAAQ;AAAA,IACxG,oBAAC,YAAO,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,QAAQ,KAAK,aAAa,GAAG,iBAAgB,OAAO,GAAG,QAAQ,MAAM,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG,GAAG;AAAA,KACvJ;AAEJ;AAGO,SAAS,KAAK,EAAE,MAAM,YAAY,MAAM,QAAQ,MAAM,GAA+H;AAC1L,SACE,oBAAC,OAAE,eAAa,GAAG,MAAM,SACtB,eAAK,IAAI,CAAC,QAAQ;AACjB,UAAM,KAAK,WAAW,QAAQ,CAAC,IAAI,GAAG,UAAU,IAAI,GAAG,SAAS,CAAC;AACjE,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,IAAI,GAAG;AAAA,QACP,IAAI,GAAG;AAAA,QACP,GAAG,KAAK,QAAQ;AAAA,QAChB,MAAM,IAAI,SAAS,MAAM,QAAQ,KAAK,UAAU,MAAM,QAAQ,WAAW;AAAA,QACzE,QAAQ,MAAM,QAAQ,KAAK;AAAA,QAC3B,aAAa;AAAA,QACb,cAAa;AAAA,QACb,eAAc;AAAA,QACd,eAAa,IAAI,SAAS,SAAS;AAAA;AAAA,MAT9B,IAAI;AAAA,IAUX;AAAA,EAEJ,CAAC,GACH;AAEJ;AAGA,IAAM,cAAc,CAAC,IAAI,KAAK,KAAK,KAAK,KAAM,KAAM,KAAM,KAAO,KAAO,GAAK;AAGtE,SAAS,YAAY,MAAwB;AAClD,QAAM,UAAU,KAAK,QAAQ;AAC7B,SAAO,YAAY,OAAO,CAAC,SAAS,QAAQ,OAAO,EAAE,GAAG,EAAE,KAAK,YAAY,CAAC;AAC9E;AASO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAM6B;AAG3B,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC;AACnE,QAAM,SAAS,KAAK,UAAU;AAC9B,QAAM,gBAAgB,MAAM;AAC1B,QAAI,CAAC,OAAQ;AACb,UAAM,MAAM,OAAO;AACnB,UAAM,OAAO,EAAE,SAAS,KAAK,eAAe,GAAG,OAAO,KAAK,sBAAsB,EAAE,SAAS,EAAE;AAC9F,QAAI,KAAK,YAAY,OAAO,WAAW,KAAK,IAAI,KAAK,QAAQ,OAAO,KAAK,IAAI,IAAK,WAAU,IAAI;AAAA,EAClG,CAAC;AACD,MAAI,CAAC,KAAK,MAAO,QAAO;AACxB,QAAM,OAAO,OAAO,UAAU,KAAK,OAAO,QAAQ,IAAI,OAAO,QAAQ,OAAO,UAAU;AACtF,QAAM,SAAS,YAAY,EAAE,GAAG,MAAM,OAAO,KAAK,QAAQ,KAAK,CAAC;AAEhE,QAAM,QAAS,SAAS,OAAQ,KAAK;AACrC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,GAAG,MAAM;AAAA,MACtB,eAAW;AAAA,MACX,IAAI,EAAE,UAAU,YAAY,MAAM,GAAG,OAAO,GAAG,QAAQ,IAAI,OAAO,EAAE,GAAG,eAAe,QAAQ,QAAQ,EAAE;AAAA,MAExG;AAAA,4BAAC,OAAI,WAAU,QAAO,IAAI,EAAE,SAAS,SAAS,IAAI,IAAI,OAAO,EAAE,GAAG,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,iBAAiB,GACjH,eAAK,MAAM,MAAM,GACpB;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,IAAI,EAAE,SAAS,SAAS,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,GAAG,OAAO,IAAI,QAAQ,KAAK,QAAQ,CAAC,CAAC,KAAK,aAAa,SAAS,aAAa,KAAK,IAAI,OAAO,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,aAAa,iBAAiB;AAAA;AAAA,QACxN;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/RegionMap/RegionMapPin.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { alpha, type Theme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport { METRES_PER_DEGREE, type PlaneBox, type PlanePoint, type Projection } from './RegionMap.helpers';\nimport type { RegionMapModel } from './RegionMap.hooks';\nimport type { RegionMapCenter, RegionMapCopy, RegionMapDot, RegionMapGhost, RegionMapPin } from './RegionMap.types';\n\n/**\n * The movable centre of a `RegionMap` (`pin`, `ghost`, `dots`): a pin the\n * viewer drags with a mouse or one finger, or focuses and nudges with the\n * arrow keys, while the VIEW stays where `center` put it — so the areas never\n * slide under a dragging finger. The circles follow the pin; a dashed ring\n * and dot stay at `ghost`; `dots` are small points (filled or hollow).\n *\n * The pin is HTML over the drawing, at its point by percent like the labels,\n * carrying `data-region-pin` so a host that zooms the drawing's layers can\n * move it with them. Its moves are reported, never applied: the host passes\n * the new point back.\n */\n\n/** The movable centre and what is drawn with it, as the drawing receives it. */\nexport interface Moving {\n center: RegionMapCenter;\n pin?: RegionMapPin;\n ghost?: RegionMapGhost;\n dots?: readonly RegionMapDot[];\n copy: RegionMapCopy;\n}\n\ntype DrawnModel = Pick<RegionMapModel, 'projection' | 'radii'> & { view: PlaneBox };\n\n/**\n * What the movable centre draws inside the SVG: the circles around the pin\n * (else `fallback`, the centre's own circles), the ghost, and the dots.\n */\nexport function PinShapes({ model, moving, testId, theme, fallback }: { model: DrawnModel; moving: Moving | undefined; testId: string; theme: Theme; fallback: React.ReactNode }): React.JSX.Element {\n const { projection, view } = model;\n if (!moving || !projection) return <>{fallback}</>;\n const pinAt = moving.pin ? projection.project([moving.pin.at.latitude, moving.pin.at.longitude]) : null;\n return (\n <>\n {pinAt ? <PinCircles at={pinAt} radii={model.radii} theme={theme} /> : fallback}\n {pinAt && moving.ghost ? <GhostShapes ghost={moving.ghost} pinAt={pinAt} projection={projection} view={view} testId={testId} theme={theme} /> : null}\n {moving.dots ? <Dots dots={moving.dots} projection={projection} view={view} testId={testId} theme={theme} /> : null}\n </>\n );\n}\n\n/** What the movable centre draws over the SVG, in HTML: the pin and the scale bar. */\nexport function PinOverlay({\n model,\n moving,\n svgRef,\n testId,\n theme,\n}: {\n model: DrawnModel;\n moving: Moving | undefined;\n svgRef: React.RefObject<SVGSVGElement | null>;\n testId: string;\n theme: Theme;\n}): React.JSX.Element | null {\n if (!moving || !model.projection) return null;\n return (\n <>\n {moving.pin ? <PinMarker pin={moving.pin} center={moving.center} projection={model.projection} view={model.view} svgRef={svgRef} testId={testId} theme={theme} /> : null}\n <ScaleBar view={model.view} copy={moving.copy} svgRef={svgRef} testId={testId} theme={theme} />\n </>\n );\n}\n\n/** The flat projection's inverse around `center` — it is linear. */\nexport function latLngAt(center: RegionMapCenter, point: PlanePoint): RegionMapCenter {\n const kx = METRES_PER_DEGREE * Math.cos((center.latitude * Math.PI) / 180);\n return { latitude: center.latitude - point.y / METRES_PER_DEGREE, longitude: center.longitude + point.x / kx };\n}\n\n/** A point of the plane as fractions of the view (0..1 across, 0..1 down). */\nfunction fractionOf(view: PlaneBox, point: PlanePoint): { x: number; y: number } {\n return { x: (point.x - view.minX) / view.spanX, y: (point.y - view.minY) / view.spanY };\n}\n\n/** Keep a fraction inside the view, a hair in from its edge (the mock's clamp). */\nconst clampFraction = (value: number): number => Math.min(0.995, Math.max(0.005, value));\n\n/** A plane point kept inside the view by the same clamp a drag gets. */\nfunction clampToView(view: PlaneBox, point: PlanePoint): PlanePoint {\n const at = fractionOf(view, point);\n return { x: view.minX + clampFraction(at.x) * view.spanX, y: view.minY + clampFraction(at.y) * view.spanY };\n}\n\n/** Arrow keys, as metres east and north per press. */\nconst ARROWS: Record<string, [number, number]> = { ArrowLeft: [-1, 0], ArrowRight: [1, 0], ArrowUp: [0, 1], ArrowDown: [0, -1] };\n\n/** One arrow key: 50 m unless the host says otherwise. */\nconst DEFAULT_STEP_METRES = 50;\n\ninterface PinLayerProps {\n pin: RegionMapPin;\n center: RegionMapCenter;\n projection: Projection;\n view: PlaneBox;\n /** The drawing's SVG, whose on-screen box maps a pointer to the plane (zoomed or not). */\n svgRef: React.RefObject<SVGSVGElement | null>;\n testId: string;\n theme: Theme;\n}\n\n/** The draggable pin, as HTML over the drawing. */\nexport function PinMarker({ pin, center, projection, view, svgRef, testId, theme }: PinLayerProps): React.JSX.Element {\n const ref = React.useRef<HTMLDivElement>(null);\n const live = React.useRef({ pin, center, view });\n live.current = { pin, center, view };\n usePinDrag(ref, svgRef, live);\n const at = fractionOf(view, projection.project([pin.at.latitude, pin.at.longitude]));\n const onKeyDown = (event: React.KeyboardEvent): void => {\n const arrow = ARROWS[event.key];\n if (!arrow || pin.disabled) return;\n event.preventDefault();\n const step = pin.stepMetres ?? DEFAULT_STEP_METRES;\n const plane = projection.project([pin.at.latitude, pin.at.longitude]);\n const next = latLngAt(center, clampToView(view, { x: plane.x + arrow[0] * step, y: plane.y - arrow[1] * step }));\n pin.onMove?.(next);\n pin.onDrop(next);\n };\n return (\n <Box\n ref={ref}\n role=\"button\"\n tabIndex={pin.disabled ? -1 : 0}\n aria-label={pin.ariaLabel}\n aria-disabled={pin.disabled || undefined}\n onKeyDown={onKeyDown}\n data-testid={`${testId}-pin`}\n data-region-pin=\"\"\n style={{ left: `${(at.x * 100).toFixed(3)}%`, top: `${(at.y * 100).toFixed(3)}%` }}\n sx={{\n position: 'absolute',\n transform: 'translate(-50%, -100%)',\n width: rem(theme, 44),\n height: rem(theme, 48),\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'center',\n cursor: pin.disabled ? 'default' : 'grab',\n touchAction: 'none',\n zIndex: 2,\n borderRadius: 1,\n '&:focus-visible': { outline: `${rem(theme, 2)} solid`, outlineColor: 'primary.main', outlineOffset: rem(theme, 2) },\n }}\n >\n <Box component=\"svg\" viewBox=\"0 0 32 42\" aria-hidden=\"true\" sx={{ width: rem(theme, 32), height: rem(theme, 42) }}>\n <path\n d=\"M16 41C16 41 3 25 3 15.5A13 13 0 1 1 29 15.5C29 25 16 41 16 41Z\"\n fill={theme.palette.primary.main}\n stroke={theme.palette.background.paper}\n strokeWidth={2}\n />\n <circle cx=\"16\" cy=\"15.5\" r=\"5\" fill={theme.palette.background.paper} />\n </Box>\n <Box\n component=\"span\"\n aria-hidden\n sx={{\n position: 'absolute',\n left: '88%',\n top: 0,\n px: 0.75,\n borderRadius: 0.5,\n border: 1,\n borderColor: 'divider',\n bgcolor: 'background.paper',\n color: 'text.primary',\n fontSize: rem(theme, 12),\n fontWeight: 600,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n }}\n >\n {pin.label}\n </Box>\n </Box>\n );\n}\n\n/**\n * The pointer drag: native listeners on the pin, so a host's own listeners on\n * the drawing (a pan, a tap) never see the press; captured, so a finger that\n * leaves the pin keeps dragging it; clamped inside the view.\n */\nfunction usePinDrag(\n ref: React.RefObject<HTMLDivElement | null>,\n svgRef: React.RefObject<SVGSVGElement | null>,\n live: React.RefObject<{ pin: RegionMapPin; center: RegionMapCenter; view: PlaneBox }>,\n): void {\n React.useEffect(() => {\n const element = ref.current;\n if (!element) return undefined;\n let dragging: number | null = null;\n // Where the last move put the pin: a cancelled gesture (a browser may\n // report 0,0 for it) rests there rather than jumping to the corner.\n let last: RegionMapCenter | null = null;\n const pointAt = (event: PointerEvent): RegionMapCenter | null => {\n const box = svgRef.current?.getBoundingClientRect();\n if (!box || box.width === 0 || box.height === 0) return null;\n const { view, center } = live.current;\n if (!Number.isFinite(event.clientX) || !Number.isFinite(event.clientY)) return null;\n const fx = clampFraction((event.clientX - box.left) / box.width);\n const fy = clampFraction((event.clientY - box.top) / box.height);\n return latLngAt(center, { x: view.minX + fx * view.spanX, y: view.minY + fy * view.spanY });\n };\n const down = (event: PointerEvent): void => {\n event.stopPropagation();\n if (live.current.pin.disabled) return;\n event.preventDefault();\n dragging = event.pointerId;\n last = null;\n element.setPointerCapture?.(event.pointerId);\n };\n const move = (event: PointerEvent): void => {\n if (dragging !== event.pointerId) return;\n event.stopPropagation();\n const at = pointAt(event);\n if (!at) return;\n last = at;\n live.current.pin.onMove?.(at);\n };\n const up = (event: PointerEvent): void => {\n if (dragging !== event.pointerId) return;\n event.stopPropagation();\n dragging = null;\n const at = event.type === 'pointercancel' ? last : (pointAt(event) ?? last);\n if (at) live.current.pin.onDrop(at);\n };\n // A click that ends a drag is the drag's, not a tap on the area under it.\n const click = (event: MouseEvent): void => event.stopPropagation();\n element.addEventListener('pointerdown', down);\n element.addEventListener('pointermove', move);\n element.addEventListener('pointerup', up);\n element.addEventListener('pointercancel', up);\n element.addEventListener('click', click);\n return () => {\n element.removeEventListener('pointerdown', down);\n element.removeEventListener('pointermove', move);\n element.removeEventListener('pointerup', up);\n element.removeEventListener('pointercancel', up);\n element.removeEventListener('click', click);\n };\n }, [ref, svgRef, live]);\n}\n\n/** The circles around the pin: solid in the primary colour, faintly filled. */\nexport function PinCircles({ at, radii, theme }: { at: PlanePoint; radii: readonly number[]; theme: Theme }): React.JSX.Element {\n return (\n <>\n {radii.map((radius) => (\n <circle\n key={radius}\n cx={at.x}\n cy={at.y}\n r={radius}\n fill={alpha(theme.palette.primary.main, 0.06)}\n stroke={theme.palette.primary.main}\n strokeWidth={2.25}\n vectorEffect=\"non-scaling-stroke\"\n pointerEvents=\"none\"\n />\n ))}\n </>\n );\n}\n\n/** Where the circles stood: a dashed ring and dot at `ghost`, and a dashed line from it to the pin. */\nexport function GhostShapes({\n ghost,\n pinAt,\n projection,\n view,\n testId,\n theme,\n}: {\n ghost: RegionMapGhost;\n pinAt: PlanePoint;\n projection: Projection;\n view: PlaneBox;\n testId: string;\n theme: Theme;\n}): React.JSX.Element {\n const at = projection.project([ghost.at.latitude, ghost.at.longitude]);\n const stroke = theme.palette.text.secondary;\n const common = { fill: 'none', stroke, vectorEffect: 'non-scaling-stroke', pointerEvents: 'none' } as const;\n return (\n <g data-testid={`${testId}-ghost`}>\n <circle cx={at.x} cy={at.y} r={ghost.radiusMetres} strokeWidth={1.5} strokeDasharray=\"6 5\" {...common} />\n <line x1={at.x} y1={at.y} x2={pinAt.x} y2={pinAt.y} strokeWidth={1.5} strokeDasharray=\"4 4\" {...common} />\n <circle cx={at.x} cy={at.y} r={view.spanX / 110} strokeWidth={2} strokeDasharray=\"3 2\" {...common} fill={alpha(theme.palette.background.paper, 0.7)} />\n </g>\n );\n}\n\n/** The dots: filled with the ink, or hollow (paper with an ink ring). */\nexport function Dots({ dots, projection, view, testId, theme }: { dots: readonly RegionMapDot[]; projection: Projection; view: PlaneBox; testId: string; theme: Theme }): React.JSX.Element {\n return (\n <g data-testid={`${testId}-dots`}>\n {dots.map((dot) => {\n const at = projection.project([dot.at.latitude, dot.at.longitude]);\n return (\n <circle\n key={dot.id}\n cx={at.x}\n cy={at.y}\n r={view.spanX / 150}\n fill={dot.filled ? theme.palette.text.primary : theme.palette.background.paper}\n stroke={theme.palette.text.primary}\n strokeWidth={2}\n vectorEffect=\"non-scaling-stroke\"\n pointerEvents=\"none\"\n data-filled={dot.filled ? 'true' : 'false'}\n />\n );\n })}\n </g>\n );\n}\n\n/** Nice lengths a scale bar may take, in metres. */\nconst SCALE_STEPS = [50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000];\n\n/** The longest nice length that fits in a quarter of the drawing's width. */\nexport function scaleMetres(view: PlaneBox): number {\n const quarter = view.spanX / 4;\n return SCALE_STEPS.filter((step) => step <= quarter).at(-1) ?? SCALE_STEPS[0]!;\n}\n\n/**\n * A scale bar, bottom-left, when the host gives `copy.scale`. It reads what is\n * on screen: a host that zooms the drawing's layers (a CSS scale on the SVG)\n * shows fewer metres per pixel, so after every render the bar compares the\n * SVG's drawn width with its laid-out width — both off the SVG itself — and\n * spans the drawing's own width, so its share of it is a share of the view.\n */\nexport function ScaleBar({\n view,\n copy,\n svgRef,\n testId,\n theme,\n}: {\n view: PlaneBox;\n copy: RegionMapCopy;\n svgRef: React.RefObject<SVGSVGElement | null>;\n testId: string;\n theme: Theme;\n}): React.JSX.Element | null {\n // What the drawing shows on screen: its laid-out width, and its width as\n // drawn (a host's CSS scale on the SVG), both read off the SVG itself.\n const [screen, setScreen] = React.useState({ laidOut: 0, drawn: 0 });\n const wanted = copy.scale !== undefined;\n React.useLayoutEffect(() => {\n if (!wanted) return;\n const svg = svgRef.current;\n const next = { laidOut: svg?.clientWidth ?? 0, drawn: svg?.getBoundingClientRect().width ?? 0 };\n if (next.laidOut !== screen.laidOut || Math.abs(next.drawn - screen.drawn) > 0.5) setScreen(next);\n });\n if (!copy.scale) return null;\n const zoom = screen.laidOut > 0 && screen.drawn > 0 ? screen.drawn / screen.laidOut : 1;\n const metres = scaleMetres({ ...view, spanX: view.spanX / zoom });\n // The bar's share of the drawing's width: metres on screen over the metres the width shows.\n const share = (metres * zoom) / view.spanX;\n return (\n <Box\n data-testid={`${testId}-scale`}\n aria-hidden\n sx={{ position: 'absolute', left: 0, right: 0, bottom: rem(theme, 10), pointerEvents: 'none', zIndex: 1 }}\n >\n <Box component=\"span\" sx={{ display: 'block', ml: rem(theme, 10), fontSize: rem(theme, 12), color: 'text.secondary' }}>\n {copy.scale(metres)}\n </Box>\n <Box\n component=\"span\"\n sx={{ display: 'block', height: rem(theme, 4), ml: rem(theme, 10), width: `${(share * 100).toFixed(2)}%`, borderStyle: 'solid', borderWidth: `0 ${rem(theme, 1.5)} ${rem(theme, 1.5)}`, borderColor: 'text.secondary' }}\n />\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MoreGroup,
|
|
4
4
|
MoreQuick,
|
|
5
5
|
fieldClearing
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UKLNLWTP.js";
|
|
7
7
|
import {
|
|
8
8
|
useStillAnchor
|
|
9
9
|
} from "./chunk-7CUZTWKW.js";
|
|
@@ -223,4 +223,4 @@ function MoreFilters({
|
|
|
223
223
|
export {
|
|
224
224
|
MoreFilters
|
|
225
225
|
};
|
|
226
|
-
//# sourceMappingURL=chunk-
|
|
226
|
+
//# sourceMappingURL=chunk-AA6YMOEK.js.map
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
tableStyles
|
|
3
|
+
} from "./chunk-BVHIKXCN.js";
|
|
4
|
+
import {
|
|
5
|
+
useTableSelection,
|
|
6
|
+
useVirtualScrolling
|
|
7
|
+
} from "./chunk-RZSMRBOX.js";
|
|
1
8
|
import {
|
|
2
9
|
EmptyRow,
|
|
3
10
|
NoDataPlaceholder
|
|
@@ -6,13 +13,6 @@ import {
|
|
|
6
13
|
EnhancedTableBody,
|
|
7
14
|
EnhancedTableHeader
|
|
8
15
|
} from "./chunk-CXL3TT3K.js";
|
|
9
|
-
import {
|
|
10
|
-
tableStyles
|
|
11
|
-
} from "./chunk-BVHIKXCN.js";
|
|
12
|
-
import {
|
|
13
|
-
useTableSelection,
|
|
14
|
-
useVirtualScrolling
|
|
15
|
-
} from "./chunk-RZSMRBOX.js";
|
|
16
16
|
import {
|
|
17
17
|
TABLE_DEFAULTS,
|
|
18
18
|
containerStyle,
|
|
@@ -310,4 +310,4 @@ Table.displayName = "Table";
|
|
|
310
310
|
export {
|
|
311
311
|
Table
|
|
312
312
|
};
|
|
313
|
-
//# sourceMappingURL=chunk-
|
|
313
|
+
//# sourceMappingURL=chunk-AFWUQJ4P.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RailCreateMenu
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MM3QESLI.js";
|
|
4
4
|
import {
|
|
5
5
|
Box,
|
|
6
6
|
CONTROL_RESET,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
controlProps,
|
|
12
12
|
destinationControl,
|
|
13
13
|
focusRing
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-LDCZPZPD.js";
|
|
15
15
|
import {
|
|
16
16
|
destinationState,
|
|
17
17
|
isMenu
|
|
@@ -295,4 +295,4 @@ function SectionNavRail({
|
|
|
295
295
|
export {
|
|
296
296
|
SectionNavRail
|
|
297
297
|
};
|
|
298
|
-
//# sourceMappingURL=chunk-
|
|
298
|
+
//# sourceMappingURL=chunk-AMIUZRDQ.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OTP_FONT_PX
|
|
3
|
+
} from "./chunk-VAHJCRNW.js";
|
|
1
4
|
import {
|
|
2
5
|
asFieldSize,
|
|
3
6
|
fieldHeight
|
|
@@ -43,17 +46,10 @@ var getColorFromTheme = (theme, color) => {
|
|
|
43
46
|
contrastText: palette.contrastText || absoluteInk(theme).white
|
|
44
47
|
};
|
|
45
48
|
};
|
|
46
|
-
var SIZES = {
|
|
47
|
-
xs: { fontPx: 12 },
|
|
48
|
-
sm: { fontPx: 14 },
|
|
49
|
-
md: { fontPx: 16 },
|
|
50
|
-
lg: { fontPx: 18 },
|
|
51
|
-
xl: { fontPx: 20 }
|
|
52
|
-
};
|
|
53
49
|
var otpSlotSx = (theme, flags) => {
|
|
54
50
|
const { customColor = "primary", customSize = "md", glass, gradient } = flags;
|
|
55
51
|
const palette = getColorFromTheme(theme, customColor);
|
|
56
|
-
const
|
|
52
|
+
const fontPx = OTP_FONT_PX[customSize] ?? OTP_FONT_PX.md;
|
|
57
53
|
const side = fieldHeight(theme, asFieldSize(customSize));
|
|
58
54
|
return {
|
|
59
55
|
width: side,
|
|
@@ -87,4 +83,4 @@ var otpSlotSx = (theme, flags) => {
|
|
|
87
83
|
export {
|
|
88
84
|
otpSlotSx
|
|
89
85
|
};
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# sourceMappingURL=chunk-BAYCMSMI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/form/InputOTP/InputOTP.styles.ts"],"sourcesContent":["import { alpha } from '@mui/material/styles/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\n\nimport { fieldEdge } from '../../../tokens/field-edge';\nimport { fieldRadius } from '../../../tokens/field-radius';\nimport { asFieldSize, fieldHeight } from '../../../tokens/field-height';\nimport { absoluteInk, controlNeutral } from '../../../tokens/ink';\nimport { rem } from '../../../tokens/relative';\n\nimport { OTP_FONT_PX } from './InputOTP.metrics';\n\ninterface ColorPalette {\n main: string;\n dark?: string;\n light?: string;\n contrastText?: string;\n}\n\n/** `neutral` is not a MUI palette entry, so it is built from the grey ramp. */\nconst neutralPalette = (theme: Theme): ColorPalette => controlNeutral(theme);\n\n/** `danger` is this component's name for the error palette. */\nconst namedPalette = (theme: Theme, color: string): ColorPalette => {\n const colorMap: Record<string, ColorPalette> = {\n primary: theme.palette.primary,\n secondary: theme.palette.secondary,\n success: theme.palette.success,\n warning: theme.palette.warning,\n info: theme.palette.info,\n danger: theme.palette.error,\n };\n\n return colorMap[color] || theme.palette.primary;\n};\n\nconst getColorFromTheme = (theme: Theme, color: string): ColorPalette => {\n if (color === 'neutral') {\n return neutralPalette(theme);\n }\n\n const palette = namedPalette(theme, color);\n const { primary } = theme.palette;\n\n return {\n main: palette.main || primary.main,\n dark: palette.dark || palette.main || primary.dark,\n light: palette.light || palette.main || primary.light,\n contrastText: palette.contrastText || absoluteInk(theme).white,\n };\n};\n\ntype SizeKey = keyof typeof OTP_FONT_PX;\n\nexport interface OtpSlotFlags {\n customColor?: string;\n customSize?: string;\n glass?: boolean;\n gradient?: boolean;\n}\n\nexport const otpSlotSx = (theme: Theme, flags: OtpSlotFlags): CSSObject => {\n const { customColor = 'primary', customSize = 'md', glass, gradient } = flags;\n const palette = getColorFromTheme(theme, customColor);\n const fontPx = OTP_FONT_PX[customSize as SizeKey] ?? OTP_FONT_PX.md;\n // A slot is a field: a square of the theme's field height for its size.\n const side = fieldHeight(theme, asFieldSize(customSize));\n\n return {\n width: side,\n height: side,\n '& .MuiOutlinedInput-root': {\n width: side,\n height: side,\n fontSize: rem(theme, fontPx),\n fontWeight: 600,\n textAlign: 'center',\n borderRadius: fieldRadius(theme),\n ...(glass && {\n backgroundColor: alpha(theme.palette.background.paper, 0.1),\n backdropFilter: `blur(${rem(theme, 20)})`,\n '& fieldset': { border: `1px solid ${fieldEdge(theme)}` },\n }),\n ...(gradient && {\n '&.Mui-focused fieldset': {\n background: `linear-gradient(135deg, ${palette.main}, ${palette.light})`,\n borderWidth: rem(theme, 2),\n },\n }),\n '& input': { textAlign: 'center', padding: 0, fontWeight: 'inherit' },\n ...(!glass && { '& fieldset': { borderColor: fieldEdge(theme) } }),\n '&:hover fieldset': { borderColor: palette.main },\n '&.Mui-focused fieldset': { borderColor: palette.main, borderWidth: rem(theme, 2) },\n },\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,aAAa;AAmBtB,IAAM,iBAAiB,CAAC,UAA+B,eAAe,KAAK;AAG3E,IAAM,eAAe,CAAC,OAAc,UAAgC;AAClE,QAAM,WAAyC;AAAA,IAC7C,SAAS,MAAM,QAAQ;AAAA,IACvB,WAAW,MAAM,QAAQ;AAAA,IACzB,SAAS,MAAM,QAAQ;AAAA,IACvB,SAAS,MAAM,QAAQ;AAAA,IACvB,MAAM,MAAM,QAAQ;AAAA,IACpB,QAAQ,MAAM,QAAQ;AAAA,EACxB;AAEA,SAAO,SAAS,KAAK,KAAK,MAAM,QAAQ;AAC1C;AAEA,IAAM,oBAAoB,CAAC,OAAc,UAAgC;AACvE,MAAI,UAAU,WAAW;AACvB,WAAO,eAAe,KAAK;AAAA,EAC7B;AAEA,QAAM,UAAU,aAAa,OAAO,KAAK;AACzC,QAAM,EAAE,QAAQ,IAAI,MAAM;AAE1B,SAAO;AAAA,IACL,MAAM,QAAQ,QAAQ,QAAQ;AAAA,IAC9B,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,IAC9C,OAAO,QAAQ,SAAS,QAAQ,QAAQ,QAAQ;AAAA,IAChD,cAAc,QAAQ,gBAAgB,YAAY,KAAK,EAAE;AAAA,EAC3D;AACF;AAWO,IAAM,YAAY,CAAC,OAAc,UAAmC;AACzE,QAAM,EAAE,cAAc,WAAW,aAAa,MAAM,OAAO,SAAS,IAAI;AACxE,QAAM,UAAU,kBAAkB,OAAO,WAAW;AACpD,QAAM,SAAS,YAAY,UAAqB,KAAK,YAAY;AAEjE,QAAM,OAAO,YAAY,OAAO,YAAY,UAAU,CAAC;AAEvD,SAAO;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,4BAA4B;AAAA,MAC1B,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,IAAI,OAAO,MAAM;AAAA,MAC3B,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,cAAc,YAAY,KAAK;AAAA,MAC/B,GAAI,SAAS;AAAA,QACX,iBAAiB,MAAM,MAAM,QAAQ,WAAW,OAAO,GAAG;AAAA,QAC1D,gBAAgB,QAAQ,IAAI,OAAO,EAAE,CAAC;AAAA,QACtC,cAAc,EAAE,QAAQ,aAAa,UAAU,KAAK,CAAC,GAAG;AAAA,MAC1D;AAAA,MACA,GAAI,YAAY;AAAA,QACd,0BAA0B;AAAA,UACxB,YAAY,2BAA2B,QAAQ,IAAI,KAAK,QAAQ,KAAK;AAAA,UACrE,aAAa,IAAI,OAAO,CAAC;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,WAAW,EAAE,WAAW,UAAU,SAAS,GAAG,YAAY,UAAU;AAAA,MACpE,GAAI,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,UAAU,KAAK,EAAE,EAAE;AAAA,MAChE,oBAAoB,EAAE,aAAa,QAAQ,KAAK;AAAA,MAChD,0BAA0B,EAAE,aAAa,QAAQ,MAAM,aAAa,IAAI,OAAO,CAAC,EAAE;AAAA,IACpF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-2ORD2FMN.js";
|
|
18
18
|
import {
|
|
19
19
|
Alert
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-BXLC3TBQ.js";
|
|
21
21
|
import {
|
|
22
22
|
Button
|
|
23
23
|
} from "./chunk-YOXYSAUI.js";
|
|
@@ -160,4 +160,4 @@ export {
|
|
|
160
160
|
SequenceStepBody,
|
|
161
161
|
SequenceDoneBody
|
|
162
162
|
};
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
163
|
+
//# sourceMappingURL=chunk-BNV7P52K.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
thumbnailStripSx
|
|
3
|
-
} from "./chunk-VQU3CBAL.js";
|
|
4
1
|
import {
|
|
5
2
|
useLightboxCopy
|
|
6
3
|
} from "./chunk-TEQYTEM2.js";
|
|
4
|
+
import {
|
|
5
|
+
thumbnailStripSx
|
|
6
|
+
} from "./chunk-VQU3CBAL.js";
|
|
7
7
|
import {
|
|
8
8
|
onMedia,
|
|
9
9
|
sheen
|
|
@@ -89,4 +89,4 @@ var LightboxThumbnails = ({
|
|
|
89
89
|
export {
|
|
90
90
|
LightboxThumbnails
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-BP3ZKIPE.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
Dialog,
|
|
6
6
|
DialogContent
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RZKKWIGQ.js";
|
|
8
8
|
import {
|
|
9
9
|
default as default2
|
|
10
10
|
} from "./chunk-WEBEOBN5.js";
|
|
@@ -69,4 +69,4 @@ function DeleteViewDialog({
|
|
|
69
69
|
export {
|
|
70
70
|
DeleteViewDialog
|
|
71
71
|
};
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
72
|
+
//# sourceMappingURL=chunk-BQ2SFA27.js.map
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveIconPlacement
|
|
3
|
+
} from "./chunk-QXUXO22M.js";
|
|
1
4
|
import {
|
|
2
5
|
AlertContent
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GDWU7WF4.js";
|
|
7
|
+
import {
|
|
8
|
+
pointerInkStyles
|
|
9
|
+
} from "./chunk-LNZJJFZQ.js";
|
|
4
10
|
import {
|
|
5
11
|
alertEmphasisStyles,
|
|
6
12
|
alertLayoutStyles,
|
|
@@ -14,12 +20,6 @@ import {
|
|
|
14
20
|
resolveAnnouncement,
|
|
15
21
|
testIdFor
|
|
16
22
|
} from "./chunk-L7VH6IMR.js";
|
|
17
|
-
import {
|
|
18
|
-
resolveIconPlacement
|
|
19
|
-
} from "./chunk-QXUXO22M.js";
|
|
20
|
-
import {
|
|
21
|
-
pointerInkStyles
|
|
22
|
-
} from "./chunk-LNZJJFZQ.js";
|
|
23
23
|
import {
|
|
24
24
|
ACTIVE,
|
|
25
25
|
ALERT_EASING,
|
|
@@ -284,4 +284,4 @@ export {
|
|
|
284
284
|
Alert,
|
|
285
285
|
ALERT_ONLY_PROPS
|
|
286
286
|
};
|
|
287
|
-
//# sourceMappingURL=chunk-
|
|
287
|
+
//# sourceMappingURL=chunk-BXLC3TBQ.js.map
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
LightboxOverlay
|
|
3
|
+
} from "./chunk-T2G4LDU5.js";
|
|
4
|
+
import {
|
|
5
|
+
LightboxCurrentMedia
|
|
6
|
+
} from "./chunk-RBGUS7WO.js";
|
|
1
7
|
import {
|
|
2
8
|
resolveLightboxProps
|
|
3
9
|
} from "./chunk-UOS7DEQZ.js";
|
|
@@ -6,22 +12,16 @@ import {
|
|
|
6
12
|
} from "./chunk-HZBDTPPV.js";
|
|
7
13
|
import {
|
|
8
14
|
LightboxThumbnails
|
|
9
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BP3ZKIPE.js";
|
|
16
|
+
import {
|
|
17
|
+
LightboxCopyProvider
|
|
18
|
+
} from "./chunk-TEQYTEM2.js";
|
|
10
19
|
import {
|
|
11
20
|
LightboxStage
|
|
12
21
|
} from "./chunk-SYGM4SHY.js";
|
|
13
|
-
import {
|
|
14
|
-
LightboxOverlay
|
|
15
|
-
} from "./chunk-WLLUARTC.js";
|
|
16
22
|
import {
|
|
17
23
|
makeTestId
|
|
18
24
|
} from "./chunk-VQU3CBAL.js";
|
|
19
|
-
import {
|
|
20
|
-
LightboxCurrentMedia
|
|
21
|
-
} from "./chunk-RBGUS7WO.js";
|
|
22
|
-
import {
|
|
23
|
-
LightboxCopyProvider
|
|
24
|
-
} from "./chunk-TEQYTEM2.js";
|
|
25
25
|
import {
|
|
26
26
|
scrim
|
|
27
27
|
} from "./chunk-XJAD6E3V.js";
|
|
@@ -148,4 +148,4 @@ export {
|
|
|
148
148
|
Lightbox,
|
|
149
149
|
Lightbox_default
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-COKPPU42.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildChartContext
|
|
3
|
+
} from "./chunk-JG733RMP.js";
|
|
1
4
|
import {
|
|
2
5
|
ChartLegendContent,
|
|
3
6
|
ChartTooltipContent
|
|
4
7
|
} from "./chunk-RIRTW5EU.js";
|
|
5
|
-
import {
|
|
6
|
-
buildChartContext
|
|
7
|
-
} from "./chunk-TZC6KIK2.js";
|
|
8
8
|
import {
|
|
9
9
|
uiInk
|
|
10
10
|
} from "./chunk-XJAD6E3V.js";
|
|
@@ -318,4 +318,4 @@ function renderChartByType(props, theme) {
|
|
|
318
318
|
export {
|
|
319
319
|
renderChartByType
|
|
320
320
|
};
|
|
321
|
-
//# sourceMappingURL=chunk-
|
|
321
|
+
//# sourceMappingURL=chunk-CZVAVX5L.js.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DataViewsGrid
|
|
3
|
-
} from "./chunk-MEMVZW64.js";
|
|
4
1
|
import {
|
|
5
2
|
DeleteViewDialog
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BQ2SFA27.js";
|
|
4
|
+
import {
|
|
5
|
+
DataViewsGrid
|
|
6
|
+
} from "./chunk-EPNZQWS4.js";
|
|
7
7
|
import {
|
|
8
8
|
viewStateKey
|
|
9
9
|
} from "./chunk-ZOLAYP2D.js";
|
|
10
|
+
import {
|
|
11
|
+
ViewDialogs,
|
|
12
|
+
ViewMutationErrorAlert
|
|
13
|
+
} from "./chunk-24OFA44S.js";
|
|
10
14
|
import {
|
|
11
15
|
useUrlEchoGuard,
|
|
12
16
|
useUrlSyncState
|
|
13
17
|
} from "./chunk-G6EJLEVV.js";
|
|
14
|
-
import {
|
|
15
|
-
ViewDialogs,
|
|
16
|
-
ViewMutationErrorAlert
|
|
17
|
-
} from "./chunk-37MJZLQU.js";
|
|
18
18
|
import {
|
|
19
19
|
useSavedViewsController
|
|
20
20
|
} from "./chunk-B2JSUFDX.js";
|
|
@@ -166,4 +166,4 @@ function renderViewDialogs(ctl, fields, columns, views, testIdPrefix, onSaved) {
|
|
|
166
166
|
export {
|
|
167
167
|
DataViewsTableBase
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-D2YJPZMU.js.map
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
GridBody,
|
|
3
|
-
GridHeader
|
|
4
|
-
} from "./chunk-5RYPVYWP.js";
|
|
5
1
|
import {
|
|
6
2
|
DataGridEmpty,
|
|
7
3
|
DataGridError,
|
|
@@ -10,6 +6,10 @@ import {
|
|
|
10
6
|
import {
|
|
11
7
|
useDataGridModel
|
|
12
8
|
} from "./chunk-LDROG4QI.js";
|
|
9
|
+
import {
|
|
10
|
+
GridBody,
|
|
11
|
+
GridHeader
|
|
12
|
+
} from "./chunk-5RYPVYWP.js";
|
|
13
13
|
|
|
14
14
|
// src/components/data-display/DataGrid/DataGrid.tsx
|
|
15
15
|
import Paper from "@mui/material/Paper/index.js";
|
|
@@ -120,4 +120,4 @@ export {
|
|
|
120
120
|
DataGrid,
|
|
121
121
|
GRID_ONLY_PROPS
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-DYHOBKPU.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FleetCanvas
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WDWZKTGA.js";
|
|
4
4
|
import {
|
|
5
5
|
FleetRoster
|
|
6
6
|
} from "./chunk-A4B27HYU.js";
|
|
@@ -79,4 +79,4 @@ function FleetBody({
|
|
|
79
79
|
export {
|
|
80
80
|
FleetBody
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-E6SPWZRN.js.map
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FilterDialog,
|
|
3
|
+
GridFilterPanel
|
|
4
|
+
} from "./chunk-KAWVH3AA.js";
|
|
1
5
|
import {
|
|
2
6
|
ShellEmpty
|
|
3
7
|
} from "./chunk-MKVDHR3B.js";
|
|
8
|
+
import {
|
|
9
|
+
InlineFilterControls
|
|
10
|
+
} from "./chunk-NKBSWAP3.js";
|
|
4
11
|
import {
|
|
5
12
|
GridHeaderRow
|
|
6
13
|
} from "./chunk-X3AFXHY5.js";
|
|
7
14
|
import {
|
|
8
15
|
GridMain
|
|
9
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-XNAI7QGU.js";
|
|
10
17
|
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from "./chunk-HOWAMSUY.js";
|
|
14
|
-
import {
|
|
15
|
-
InlineFilterControls
|
|
16
|
-
} from "./chunk-VRSW7PIO.js";
|
|
18
|
+
DataViewsPagination
|
|
19
|
+
} from "./chunk-XZFTRGRW.js";
|
|
17
20
|
import {
|
|
18
21
|
useFilterOverflow
|
|
19
22
|
} from "./chunk-WWH674WU.js";
|
|
@@ -22,29 +25,26 @@ import {
|
|
|
22
25
|
toggleQuick
|
|
23
26
|
} from "./chunk-KYUEO2IO.js";
|
|
24
27
|
import {
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
allOnPageSelected,
|
|
29
|
+
resolveSelectionExtra
|
|
30
|
+
} from "./chunk-5YDS6HO3.js";
|
|
27
31
|
import {
|
|
28
32
|
ScopeTabsSlot
|
|
29
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-K6VEN5VN.js";
|
|
30
34
|
import {
|
|
31
35
|
ShellToolbar
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import {
|
|
34
|
-
allOnPageSelected,
|
|
35
|
-
resolveSelectionExtra
|
|
36
|
-
} from "./chunk-5YDS6HO3.js";
|
|
36
|
+
} from "./chunk-OF3KG5EV.js";
|
|
37
37
|
import {
|
|
38
38
|
SHELL_PROPS,
|
|
39
39
|
useStickyBarTop
|
|
40
40
|
} from "./chunk-4IE66GY2.js";
|
|
41
|
-
import {
|
|
42
|
-
togglePillValues
|
|
43
|
-
} from "./chunk-UKNMPGEM.js";
|
|
44
41
|
import {
|
|
45
42
|
DataViewsLayoutProvider,
|
|
46
43
|
useDataViewsLayout
|
|
47
44
|
} from "./chunk-5CAWRMDX.js";
|
|
45
|
+
import {
|
|
46
|
+
togglePillValues
|
|
47
|
+
} from "./chunk-UKNMPGEM.js";
|
|
48
48
|
import {
|
|
49
49
|
useDataViewsCopy
|
|
50
50
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -252,4 +252,4 @@ function GridShell(props) {
|
|
|
252
252
|
export {
|
|
253
253
|
GridShell
|
|
254
254
|
};
|
|
255
|
-
//# sourceMappingURL=chunk-
|
|
255
|
+
//# sourceMappingURL=chunk-E73PAU4U.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-L7BRU4UF.js";
|
|
9
9
|
import {
|
|
10
10
|
Alert
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-BXLC3TBQ.js";
|
|
12
12
|
import {
|
|
13
13
|
Button
|
|
14
14
|
} from "./chunk-YOXYSAUI.js";
|
|
@@ -106,4 +106,4 @@ NotificationStatusNotice.displayName = "NotificationStatusNotice";
|
|
|
106
106
|
export {
|
|
107
107
|
NotificationStatusNotice
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-EDVAFY76.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridShell
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-E73PAU4U.js";
|
|
4
4
|
import {
|
|
5
5
|
useDataViewsState
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZCNR4DN5.js";
|
|
7
7
|
|
|
8
8
|
// src/components/data-display/DataViews/DataViewsGrid.tsx
|
|
9
9
|
import { useEffect, useRef } from "react";
|
|
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
|
|
|
27
27
|
export {
|
|
28
28
|
DataViewsGrid
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-EPNZQWS4.js.map
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useTextFit
|
|
3
|
-
} from "./chunk-WG7CAT5D.js";
|
|
4
|
-
import {
|
|
5
|
-
formatHour,
|
|
6
|
-
formatRange,
|
|
7
|
-
hitBoundsOf,
|
|
8
|
-
percentOf,
|
|
9
|
-
ticksOf
|
|
10
|
-
} from "./chunk-L5CAHQIN.js";
|
|
11
1
|
import {
|
|
12
2
|
actionsSx,
|
|
13
3
|
actualLabelSx,
|
|
@@ -25,9 +15,19 @@ import {
|
|
|
25
15
|
trackSx,
|
|
26
16
|
whoSx
|
|
27
17
|
} from "./chunk-5AZEDQXX.js";
|
|
18
|
+
import {
|
|
19
|
+
useTextFit
|
|
20
|
+
} from "./chunk-WG7CAT5D.js";
|
|
28
21
|
import {
|
|
29
22
|
DAY_RULER_METRICS
|
|
30
23
|
} from "./chunk-273OLFJD.js";
|
|
24
|
+
import {
|
|
25
|
+
formatHour,
|
|
26
|
+
formatRange,
|
|
27
|
+
hitBoundsOf,
|
|
28
|
+
percentOf,
|
|
29
|
+
ticksOf
|
|
30
|
+
} from "./chunk-L5CAHQIN.js";
|
|
31
31
|
import {
|
|
32
32
|
ScheduleNameCell
|
|
33
33
|
} from "./chunk-CGS2LQE5.js";
|
|
@@ -228,4 +228,4 @@ export {
|
|
|
228
228
|
Coverage,
|
|
229
229
|
Axis
|
|
230
230
|
};
|
|
231
|
-
//# sourceMappingURL=chunk-
|
|
231
|
+
//# sourceMappingURL=chunk-FGZIEZEP.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useGoogleMapsAPI
|
|
3
|
+
} from "./chunk-L7N4AFZD.js";
|
|
1
4
|
import {
|
|
2
5
|
useCurrentLocation
|
|
3
6
|
} from "./chunk-44FY2YZL.js";
|
|
@@ -7,9 +10,6 @@ import {
|
|
|
7
10
|
import {
|
|
8
11
|
useAddressPredictions
|
|
9
12
|
} from "./chunk-QVYBRD6U.js";
|
|
10
|
-
import {
|
|
11
|
-
useGoogleMapsAPI
|
|
12
|
-
} from "./chunk-L7N4AFZD.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveLabels
|
|
15
15
|
} from "./chunk-LL2BWQPM.js";
|
|
@@ -84,4 +84,4 @@ var useAddressAutocomplete = ({
|
|
|
84
84
|
export {
|
|
85
85
|
useAddressAutocomplete
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=chunk-
|
|
87
|
+
//# sourceMappingURL=chunk-FKUVFPQZ.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
testIdFor
|
|
3
|
-
} from "./chunk-L7VH6IMR.js";
|
|
4
1
|
import {
|
|
5
2
|
ALERT_CHILDREN_CLASS,
|
|
6
3
|
ALERT_DESCRIPTION_CLASS
|
|
7
4
|
} from "./chunk-LNZJJFZQ.js";
|
|
5
|
+
import {
|
|
6
|
+
testIdFor
|
|
7
|
+
} from "./chunk-L7VH6IMR.js";
|
|
8
8
|
import {
|
|
9
9
|
DESCRIPTION,
|
|
10
10
|
ICON_SLOT,
|
|
@@ -85,4 +85,4 @@ var AlertContent = ({ title, description, titleIcon, dataTestId, children }) =>
|
|
|
85
85
|
export {
|
|
86
86
|
AlertContent
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-GDWU7WF4.js.map
|