@feugene/granularity 0.16.0 → 0.19.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/dist/chunks/chevron-left-D8AUBAM7.js +23 -0
- package/dist/chunks/chevron-left-D8AUBAM7.js.map +1 -0
- package/dist/chunks/{chevron-right-BfqMVpbB.js → chevron-right-C6Z01h0X.js} +1 -22
- package/dist/chunks/chevron-right-C6Z01h0X.js.map +1 -0
- package/dist/chunks/config-8Pcutu1j2.js.map +1 -0
- package/dist/chunks/{config-K0C2tcLB.js → config-9PYRZlKE.js} +1 -1
- package/dist/chunks/{config-K0C2tcLB.js.map → config-9PYRZlKE.js.map} +1 -1
- package/dist/chunks/{config-Zc_bUvZY2.js → config-BDfTXHo12.js} +1 -1
- package/dist/chunks/{config-Zc_bUvZY2.js.map → config-BDfTXHo12.js.map} +1 -1
- package/dist/chunks/config-BE6n20np2.js.map +1 -0
- package/dist/chunks/config-BJ7Bv_G2.js +148 -0
- package/dist/chunks/config-BJ7Bv_G2.js.map +1 -0
- package/dist/chunks/config-BKvX0q102.js.map +1 -0
- package/dist/chunks/{config-CpwwkFBO.js → config-Baj7Wvx-.js} +1 -1
- package/dist/chunks/{config-CpwwkFBO.js.map → config-Baj7Wvx-.js.map} +1 -1
- package/dist/chunks/{config-D8tSR2uS.js → config-Be9k9bOf.js} +2 -8
- package/dist/chunks/config-Be9k9bOf.js.map +1 -0
- package/dist/chunks/config-BoNR7_PD2.js.map +1 -0
- package/dist/chunks/{config-DxCTVBfx.js → config-BsPDQ0dS.js} +2 -2
- package/dist/chunks/config-BsPDQ0dS.js.map +1 -0
- package/dist/chunks/{config-DpqOnJiz2.js → config-CDat1wXf2.js} +1 -1
- package/dist/chunks/config-CDat1wXf2.js.map +1 -0
- package/dist/chunks/config-CN2ULSQL.js.map +1 -0
- package/dist/chunks/{config-Cw6TDzWv2.js → config-COpuWGr_.js} +1 -1
- package/dist/chunks/config-COpuWGr_.js.map +1 -0
- package/dist/chunks/config-CY0_6cMi2.js.map +1 -0
- package/dist/chunks/{config-B-g6lT19.js → config-DA6SnEoy.js} +5 -2
- package/dist/chunks/config-DA6SnEoy.js.map +1 -0
- package/dist/chunks/config-DAX8Deh1.js +68 -0
- package/dist/chunks/config-DAX8Deh1.js.map +1 -0
- package/dist/chunks/config-DKdlqXiY.js.map +1 -1
- package/dist/chunks/{config-CvC0sX8p.js → config-MRvhUl-O.js} +1 -1
- package/dist/chunks/{config-CvC0sX8p.js.map → config-MRvhUl-O.js.map} +1 -1
- package/dist/chunks/config-Rw9OyW702.js.map +1 -0
- package/dist/chunks/config-ScuvHw6k2.js +42 -0
- package/dist/chunks/config-ScuvHw6k2.js.map +1 -0
- package/dist/chunks/config-T3qdQBgU2.js.map +1 -0
- package/dist/chunks/config-eXB87DOi.js.map +1 -0
- package/dist/chunks/context-BSYR7RZs.js.map +1 -1
- package/dist/chunks/{en-B3xMeswz.js → en-COdzxgAX.js} +30 -5
- package/dist/chunks/en-COdzxgAX.js.map +1 -0
- package/dist/chunks/{es-CA-mkU--.js → es-ClqJ-4hr.js} +30 -5
- package/dist/chunks/es-ClqJ-4hr.js.map +1 -0
- package/dist/chunks/{es-Bv8vvqdT.js → es-DGMHwknJ.js} +3 -3
- package/dist/chunks/{es-Bv8vvqdT.js.map → es-DGMHwknJ.js.map} +1 -1
- package/dist/chunks/generated-BRkbhyxk.js +3270 -0
- package/dist/chunks/generated-BRkbhyxk.js.map +1 -0
- package/dist/chunks/grKbdStyles-CeZhGQHr.js +43 -0
- package/dist/chunks/grKbdStyles-CeZhGQHr.js.map +1 -0
- package/dist/chunks/{grTextareaStyles-CWI2SqC8.js → grTextareaStyles-iOcHuVMM.js} +2 -2
- package/dist/chunks/{grTextareaStyles-CWI2SqC8.js.map → grTextareaStyles-iOcHuVMM.js.map} +1 -1
- package/dist/chunks/{granular-provider-CtrXGa7c.js → granular-provider-C6uAujdJ.js} +23 -21
- package/dist/chunks/granular-provider-C6uAujdJ.js.map +1 -0
- package/dist/chunks/grip-vertical-lRha2S7q.js +16 -0
- package/dist/chunks/grip-vertical-lRha2S7q.js.map +1 -0
- package/dist/chunks/icon-Dag2tIMs.js +21 -0
- package/dist/chunks/icon-Dag2tIMs.js.map +1 -0
- package/dist/chunks/{keyboard-zYvvyHd4.js → keyboard-DE2yhz_b.js} +10 -1
- package/dist/chunks/keyboard-DE2yhz_b.js.map +1 -0
- package/dist/chunks/{optionFilter-BVY988pC.js → optionFilter-DYw9XPPx.js} +1 -71
- package/dist/chunks/optionFilter-DYw9XPPx.js.map +1 -0
- package/dist/chunks/{useOverlayLayer-BupuP_hs.js → overlayStack-C8cfsqXa.js} +11 -61
- package/dist/chunks/overlayStack-C8cfsqXa.js.map +1 -0
- package/dist/chunks/{portalRoot-CWD4zHBm.js → portalRoot-CVhCgdG6.js} +10 -1
- package/dist/chunks/{portalRoot-CWD4zHBm.js.map → portalRoot-CVhCgdG6.js.map} +1 -1
- package/dist/chunks/{ru-COWxgh2A.js → ru-9z8ix45c.js} +30 -5
- package/dist/chunks/ru-9z8ix45c.js.map +1 -0
- package/dist/chunks/useDragSort-0l47h4yb.js +265 -0
- package/dist/chunks/useDragSort-0l47h4yb.js.map +1 -0
- package/dist/chunks/{useModalOverlay-DCM4d3yA.js → useModalOverlay-DrQVYwwA.js} +2 -2
- package/dist/chunks/{useModalOverlay-DCM4d3yA.js.map → useModalOverlay-DrQVYwwA.js.map} +1 -1
- package/dist/chunks/{usePortalTarget-RyzEgNTb.js → usePortalTarget-Cn-Wiz5d.js} +1 -1
- package/dist/chunks/{usePortalTarget-RyzEgNTb.js.map → usePortalTarget-Cn-Wiz5d.js.map} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-CQ9T7Lly.js → GrAutocomplete-gY4Xopza.js} +35 -26
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-gY4Xopza.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +1 -1
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrBreadcrumbs/chunks/{GrBreadcrumbs-BCNGDS6k.js → GrBreadcrumbs-DS_-PBVt.js} +8 -7
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-DS_-PBVt.js.map +1 -0
- package/dist/components/GrBreadcrumbs/index.js +1 -1
- package/dist/components/GrCollapse/chunks/{GrCollapse-B2Fc6A9r.js.map → GrCollapse-Kk0DE8tb.js.map} +1 -1
- package/dist/components/GrCollapse/index.js +1 -1
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js → GrColorPicker-CkBTzkqn.js} +4 -4
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-bnYBRGk8.js.map → GrColorPicker-CkBTzkqn.js.map} +1 -1
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-MWDYDPNC.js → GrCommandPalette-BugTlGdj.js} +41 -16
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BugTlGdj.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +2 -2
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfigProvider/index.js +2 -2
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js → GrConfirmDialog-Ds5T0GiR.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-DaQmlp1_.js.map → GrConfirmDialog-Ds5T0GiR.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-DVFho9Cj.js → GrDataTable-CYe2A2WA.js} +498 -48
- package/dist/components/GrDataTable/chunks/GrDataTable-CYe2A2WA.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js → GrDialog-C3tYaA8v.js} +1 -1
- package/dist/components/GrDialog/chunks/{GrDialog-AE1gIZuz.js.map → GrDialog-C3tYaA8v.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js → GrDialogService-CTBiiJDI.js} +3 -3
- package/dist/components/GrDialogService/chunks/{GrDialogService-B4DYWDkA.js.map → GrDialogService-CTBiiJDI.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-B2Xwc_QO.js → GrDivider-xxq1_fIl.js} +1 -1
- package/dist/components/GrDivider/chunks/{GrDivider-B2Xwc_QO.js.map → GrDivider-xxq1_fIl.js.map} +1 -1
- package/dist/components/GrDivider/index.js +2 -2
- package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js → GrDrawer-BSSuiNHU.js} +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-DQwi6aRw.js.map → GrDrawer-BSSuiNHU.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js → GrDropdown-Bh6UK2M5.js} +3 -3
- package/dist/components/GrDropdown/chunks/{GrDropdown-BLng6V1m.js.map → GrDropdown-Bh6UK2M5.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +1 -1
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js → GrDropdownMenu-LyfEFUbg.js} +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-BImk2Vs7.js.map → GrDropdownMenu-LyfEFUbg.js.map} +1 -1
- package/dist/components/GrDropdownMenu/index.js +2 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-D0B-BEsd.js → GrFileUpload-DuDzC43S.js} +2 -2
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-D0B-BEsd.js.map → GrFileUpload-DuDzC43S.js.map} +1 -1
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-BeCnE8XQ.js → GrImageViewer-DfD4euH5.js} +48 -23
- package/dist/components/GrImageViewer/chunks/GrImageViewer-DfD4euH5.js.map +1 -0
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/{GrInput-DD2gYdqS.js → GrInput-2wd7Crs0.js} +1 -1
- package/dist/components/GrInput/chunks/GrInput-2wd7Crs0.js.map +1 -0
- package/dist/components/GrInput/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-DmNunixz.js → GrInputTag-CyV2eY7Z.js} +20 -33
- package/dist/components/GrInputTag/chunks/GrInputTag-CyV2eY7Z.js.map +1 -0
- package/dist/components/GrInputTag/index.js +1 -1
- package/dist/components/GrKbd/chunks/{GrKbd-DRFPvW3G.js → GrKbd-DU2lBkRV.js} +218 -52
- package/dist/components/GrKbd/chunks/GrKbd-DU2lBkRV.js.map +1 -0
- package/dist/components/GrKbd/index.js +3 -3
- package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js → GrModal-CbMMr6W1.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-B8I78T0N.js.map → GrModal-CbMMr6W1.js.map} +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-CZOyPz4J.js → GrNumberInput-B5CHZDBj.js} +2 -1
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-CZOyPz4J.js.map → GrNumberInput-B5CHZDBj.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-B6N0QZBf.js → GrPagination-BM4FrD6Q.js} +4 -4
- package/dist/components/GrPagination/chunks/GrPagination-BM4FrD6Q.js.map +1 -0
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js → GrPopover-DMH4Jjst.js} +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-B1eRCOoO.js.map → GrPopover-DMH4Jjst.js.map} +1 -1
- package/dist/components/GrPopover/index.js +1 -1
- package/dist/components/GrProgressBar/chunks/{GrProgressBar-BiHnaitu.js → GrProgressBar-xwbNM9QB.js} +1 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-xwbNM9QB.js.map +1 -0
- package/dist/components/GrProgressBar/index.js +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-CTogjcHz.js → GrProgressCircle-B8olXRo5.js} +1 -1
- package/dist/components/GrProgressCircle/chunks/{GrProgressCircle-CTogjcHz.js.map → GrProgressCircle-B8olXRo5.js.map} +1 -1
- package/dist/components/GrProgressCircle/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js → GrPromptDialog-Pwr9NPxK.js} +3 -3
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-Ct174NVD.js.map → GrPromptDialog-Pwr9NPxK.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrRadio/chunks/{GrRadio-DksDro_U.js → GrRadio-DWiRaMzt.js} +8 -32
- package/dist/components/GrRadio/chunks/GrRadio-DWiRaMzt.js.map +1 -0
- package/dist/components/GrRadio/index.js +1 -1
- package/dist/components/GrRadioGroup/chunks/{GrRadioGroup-BOIhejE6.js → GrRadioGroup-DIuBw0wk.js} +34 -27
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-DIuBw0wk.js.map +1 -0
- package/dist/components/GrRadioGroup/index.js +1 -1
- package/dist/components/GrRating/chunks/{GrRating-JrHXz0Rv.js → GrRating-DVFH3lYu.js} +10 -9
- package/dist/components/GrRating/chunks/GrRating-DVFH3lYu.js.map +1 -0
- package/dist/components/GrRating/index.js +2 -2
- package/dist/components/GrSegmented/chunks/{GrSegmented-BQIlH5KI.js → GrSegmented-CQw3ijqa.js} +47 -65
- package/dist/components/GrSegmented/chunks/GrSegmented-CQw3ijqa.js.map +1 -0
- package/dist/components/GrSegmented/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-aqkPCqjd.js → GrSelect-B-Voni7D.js} +69 -55
- package/dist/components/GrSelect/chunks/GrSelect-B-Voni7D.js.map +1 -0
- package/dist/components/GrSelect/index.js +1 -1
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/{GrSidebar-DRGnnViw.js → GrSidebar-i7AxjhY_.js} +3 -2
- package/dist/components/GrSidebar/chunks/{GrSidebar-DRGnnViw.js.map → GrSidebar-i7AxjhY_.js.map} +1 -1
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSkeleton/index.js +1 -1
- package/dist/components/GrSlider/chunks/{GrSlider-DkU9IQSX.js → GrSlider-CyhVsNKn.js} +21 -34
- package/dist/components/GrSlider/chunks/GrSlider-CyhVsNKn.js.map +1 -0
- package/dist/components/GrSlider/index.js +2 -2
- package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.js +277 -0
- package/dist/components/GrSortableList/chunks/GrSortableList-XB7mXM1W.js.map +1 -0
- package/dist/components/GrSortableList/index.js +3 -0
- package/dist/components/GrSplitter/chunks/{GrSplitter-7To8jbJ8.js → GrSplitter-BzxVQwbY.js} +17 -37
- package/dist/components/GrSplitter/chunks/GrSplitter-BzxVQwbY.js.map +1 -0
- package/dist/components/GrSplitter/index.js +2 -2
- package/dist/components/GrStatistic/chunks/{GrStatistic-CttyoYPT.js → GrStatistic-DOsM6s5V.js} +54 -7
- package/dist/components/GrStatistic/chunks/GrStatistic-DOsM6s5V.js.map +1 -0
- package/dist/components/GrStatistic/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-B9TYbiih.js → GrSwitch-DpyvVrZG.js} +1 -1
- package/dist/components/GrSwitch/chunks/{GrSwitch-B9TYbiih.js.map → GrSwitch-DpyvVrZG.js.map} +1 -1
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/index.js +1 -1
- package/dist/components/GrTable/chunks/{GrTable-BB-mI_NM.js → GrTable-BfqgwETQ.js} +7 -1
- package/dist/components/GrTable/chunks/GrTable-BfqgwETQ.js.map +1 -0
- package/dist/components/GrTable/index.js +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-B8CDq2D9.js → GrTabs-f3-oQenu.js} +55 -65
- package/dist/components/GrTabs/chunks/GrTabs-f3-oQenu.js.map +1 -0
- package/dist/components/GrTabs/index.js +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DUh5Tlo4.js → GrTextarea-DSvd1nSy.js} +1 -1
- package/dist/components/GrTextarea/chunks/{GrTextarea-DUh5Tlo4.js.map → GrTextarea-DSvd1nSy.js.map} +1 -1
- package/dist/components/GrTextarea/index.js +2 -2
- package/dist/components/GrTimeline/chunks/{GrTimeline-CE9b3s18.js → GrTimeline-B-h2Yanw.js} +1 -1
- package/dist/components/GrTimeline/chunks/{GrTimeline-CE9b3s18.js.map → GrTimeline-B-h2Yanw.js.map} +1 -1
- package/dist/components/GrTimeline/index.js +2 -2
- package/dist/components/GrToaster/chunks/{GrToaster-BKQy3Srm.js → GrToaster-Dqja0Lf9.js} +114 -13
- package/dist/components/GrToaster/chunks/GrToaster-Dqja0Lf9.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrToaster/styles.css +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js → GrTooltip-Cn08heWz.js} +2 -2
- package/dist/components/GrTooltip/chunks/{GrTooltip-DEbejfhA.js.map → GrTooltip-Cn08heWz.js.map} +1 -1
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTree/chunks/{GrTree-wfdbvygw.js → GrTree-BR9a2pay.js} +148 -111
- package/dist/components/GrTree/chunks/GrTree-BR9a2pay.js.map +1 -0
- package/dist/components/GrTree/index.js +2 -2
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-lLWmAMtI.js → GrTreeSelect--muUeB0v.js} +28 -14
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect--muUeB0v.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +1 -1
- package/dist/composables/useAnnouncer.js +1 -1
- package/dist/composables/useComboboxNavigation.js +71 -0
- package/dist/composables/useComboboxNavigation.js.map +1 -0
- package/dist/composables/useDismissible.js +1 -1
- package/dist/composables/useDragGesture.js +55 -0
- package/dist/composables/useDragGesture.js.map +1 -0
- package/dist/composables/useDragSort.js +2 -0
- package/dist/composables/useFloating.js +22 -1
- package/dist/composables/useFloating.js.map +1 -1
- package/dist/composables/useGrComponentConfig.js +2 -0
- package/dist/composables/useGranularityTranslations.js +2 -0
- package/dist/composables/useOverlayLayer.js +64 -1
- package/dist/composables/useOverlayLayer.js.map +1 -0
- package/dist/composables/usePortalTarget.js +1 -1
- package/dist/composables/useRovingFocus.js +150 -0
- package/dist/composables/useRovingFocus.js.map +1 -0
- package/dist/directives/hotkey.js +13 -7
- package/dist/directives/hotkey.js.map +1 -1
- package/dist/directives/loading.js +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +77 -68
- package/dist/styles/themes/dark.css +6 -1
- package/dist/testing.js +199 -0
- package/dist/testing.js.map +1 -0
- package/dist/theme-apply.js +33 -0
- package/dist/theme-apply.js.map +1 -0
- package/dist/theme.js +501 -0
- package/dist/theme.js.map +1 -0
- package/dist/tokens.js +1 -3131
- package/dist/types/src/components/GrAlert/defaults.d.ts +1 -1
- package/dist/types/src/components/GrAutocomplete/defaults.d.ts +1 -1
- package/dist/types/src/components/GrAvatar/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBadge/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBottomNav/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBreadcrumbs/defaults.d.ts +1 -1
- package/dist/types/src/components/GrBreadcrumbs/grBreadcrumbsStyles.d.ts +5 -2
- package/dist/types/src/components/GrButton/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCard/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCheckbox/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCheckboxGroup/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCollapse/defaults.d.ts +1 -1
- package/dist/types/src/components/GrColorPicker/defaults.d.ts +1 -1
- package/dist/types/src/components/GrColorPicker/grColorPickerStyles.d.ts +2 -2
- package/dist/types/src/components/GrCommandPalette/GrCommandPalette.vue.d.ts +6 -6
- package/dist/types/src/components/GrCommandPalette/defaults.d.ts +1 -1
- package/dist/types/src/components/GrCommandPalette/filtering.d.ts +6 -2
- package/dist/types/src/components/GrConfigProvider/context.d.ts +6 -22
- package/dist/types/src/components/GrConfigProvider/index.d.ts +1 -1
- package/dist/types/src/components/GrConfirmDialog/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDataTable/GrDataTable.vue.d.ts +53 -0
- package/dist/types/src/components/GrDataTable/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDataTable/grDataTableStyles.d.ts +38 -0
- package/dist/types/src/components/GrDialog/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDivider/defaults.d.ts +1 -1
- package/dist/types/src/components/GrDrawer/defaults.d.ts +1 -1
- package/dist/types/src/components/GrEmptyState/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFileUpload/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFormField/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFormFile/defaults.d.ts +1 -1
- package/dist/types/src/components/GrFormSection/defaults.d.ts +1 -1
- package/dist/types/src/components/GrIcon/defaults.d.ts +1 -1
- package/dist/types/src/components/GrImageViewer/composables/usePointerGestures.d.ts +1 -0
- package/dist/types/src/components/GrImageViewer/composables/useZoomPan.d.ts +1 -2
- package/dist/types/src/components/GrInput/defaults.d.ts +1 -1
- package/dist/types/src/components/GrInputTag/defaults.d.ts +1 -1
- package/dist/types/src/components/GrKbd/GrKbd.vue.d.ts +18 -3
- package/dist/types/src/components/GrKbd/defaults.d.ts +1 -1
- package/dist/types/src/components/GrKbd/grKbdStyles.d.ts +20 -3
- package/dist/types/src/components/GrKbd/index.d.ts +6 -0
- package/dist/types/src/components/GrLink/defaults.d.ts +1 -1
- package/dist/types/src/components/GrModal/defaults.d.ts +1 -1
- package/dist/types/src/components/GrNumberInput/defaults.d.ts +1 -1
- package/dist/types/src/components/GrPagination/defaults.d.ts +1 -1
- package/dist/types/src/components/GrPopover/GrPopover.vue.d.ts +1 -1
- package/dist/types/src/components/GrPopover/defaults.d.ts +1 -1
- package/dist/types/src/components/GrProgressBar/defaults.d.ts +1 -1
- package/dist/types/src/components/GrProgressCircle/defaults.d.ts +1 -1
- package/dist/types/src/components/GrProgressCircle/grProgressCircleStyles.d.ts +1 -1
- package/dist/types/src/components/GrPromptDialog/defaults.d.ts +1 -1
- package/dist/types/src/components/GrRadio/defaults.d.ts +1 -1
- package/dist/types/src/components/GrRadio/grRadioGroupContext.d.ts +12 -4
- package/dist/types/src/components/GrRadioGroup/defaults.d.ts +1 -1
- package/dist/types/src/components/GrRating/GrRating.vue.d.ts +9 -4
- package/dist/types/src/components/GrRating/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSegmented/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSelect/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSlider/defaults.d.ts +1 -1
- package/dist/types/src/components/GrSortableList/GrSortableList.vue.d.ts +68 -0
- package/dist/types/src/components/GrSortableList/config.d.ts +1 -0
- package/dist/types/src/components/GrSortableList/grSortableListStyles.d.ts +37 -0
- package/dist/types/src/components/GrSortableList/index.d.ts +9 -0
- package/dist/types/src/components/GrSortableList/safelist.d.ts +1 -0
- package/dist/types/src/components/GrSplitter/defaults.d.ts +1 -1
- package/dist/types/src/components/GrStatistic/GrStatistic.vue.d.ts +12 -9
- package/dist/types/src/components/GrStatistic/defaults.d.ts +1 -1
- package/dist/types/src/components/GrStatistic/grStatisticStyles.d.ts +1 -2
- package/dist/types/src/components/GrSwitch/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTable/GrTable.vue.d.ts +13 -0
- package/dist/types/src/components/GrTable/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTabs/GrTabs.vue.d.ts +6 -2
- package/dist/types/src/components/GrTabs/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTextarea/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTextarea/grTextareaStyles.d.ts +2 -2
- package/dist/types/src/components/GrTimeline/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTimeline/grTimelineStyles.d.ts +1 -1
- package/dist/types/src/components/GrToaster/GrToaster.vue.d.ts +8 -0
- package/dist/types/src/components/GrToaster/grToasterStyles.d.ts +27 -0
- package/dist/types/src/components/GrTooltip/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTree/defaults.d.ts +1 -1
- package/dist/types/src/components/GrTree/grTreeInteractionContext.d.ts +0 -1
- package/dist/types/src/components/GrTree/grTreeProps.d.ts +11 -4
- package/dist/types/src/components/GrTree/safelist.d.ts +1 -1
- package/dist/types/src/components/GrTreeSelect/defaults.d.ts +1 -1
- package/dist/types/src/components/shared/hotkey.d.ts +7 -15
- package/dist/types/src/components/shared/hotkeyTokens.d.ts +37 -0
- package/dist/types/src/components/shared/icon.d.ts +13 -0
- package/dist/types/src/composables/internal/dragSortGeometry.d.ts +59 -0
- package/dist/types/src/composables/internal/overlayStack.d.ts +11 -0
- package/dist/types/src/composables/useDragGesture.d.ts +63 -0
- package/dist/types/src/composables/useDragSort.d.ts +80 -0
- package/dist/types/src/composables/useFloating.d.ts +5 -1
- package/dist/types/src/composables/useGrComponentConfig.d.ts +41 -0
- package/dist/types/src/composables/useGranularityTranslations.d.ts +13 -0
- package/dist/types/src/composables/useRovingFocus.d.ts +108 -0
- package/dist/types/src/granular-provider/shared.d.ts +1 -0
- package/dist/types/src/i18n/messages/en.d.ts +48 -0
- package/dist/types/src/i18n/messages/es.d.ts +48 -0
- package/dist/types/src/i18n/messages/ru.d.ts +48 -0
- package/dist/types/src/index.d.ts +12 -0
- package/dist/types/src/internal/keyboard.d.ts +6 -0
- package/dist/types/src/testing/announcer.d.ts +10 -0
- package/dist/types/src/testing/context.d.ts +36 -0
- package/dist/types/src/testing/env.d.ts +25 -0
- package/dist/types/src/testing/geometry.d.ts +23 -0
- package/dist/types/src/testing/index.d.ts +12 -0
- package/dist/types/src/testing/pointer.d.ts +31 -0
- package/dist/types/src/theme/apply.d.ts +27 -0
- package/dist/types/src/theme/color.d.ts +35 -0
- package/dist/types/src/theme/extendTheme.d.ts +63 -0
- package/dist/types/src/theme/index.d.ts +22 -0
- package/dist/types/src/theme/roles.d.ts +16 -0
- package/dist/types/src/theme/tone.d.ts +32 -0
- package/dist/types/src/theme/validate.d.ts +16 -0
- package/dist/types/src/tokens/types.d.ts +8 -0
- package/dist/web-types.json +214 -13
- package/package.json +47 -4
- package/tokens/themes/dark.json +2 -1
- package/dist/chunks/chevron-right-BfqMVpbB.js.map +0 -1
- package/dist/chunks/config-8Pcutu1j.js.map +0 -1
- package/dist/chunks/config-B-g6lT19.js.map +0 -1
- package/dist/chunks/config-BE6n20np.js.map +0 -1
- package/dist/chunks/config-BKvX0q10.js.map +0 -1
- package/dist/chunks/config-BNfQwyL4.js +0 -97
- package/dist/chunks/config-BNfQwyL4.js.map +0 -1
- package/dist/chunks/config-BoNR7_PD.js.map +0 -1
- package/dist/chunks/config-CN2ULSQL2.js.map +0 -1
- package/dist/chunks/config-CY0_6cMi.js.map +0 -1
- package/dist/chunks/config-Cw6TDzWv2.js.map +0 -1
- package/dist/chunks/config-D8tSR2uS.js.map +0 -1
- package/dist/chunks/config-DpqOnJiz2.js.map +0 -1
- package/dist/chunks/config-DxCTVBfx.js.map +0 -1
- package/dist/chunks/config-LGrZIdaZ.js +0 -21
- package/dist/chunks/config-LGrZIdaZ.js.map +0 -1
- package/dist/chunks/config-Rw9OyW70.js.map +0 -1
- package/dist/chunks/config-T3qdQBgU.js.map +0 -1
- package/dist/chunks/config-eXB87DOi2.js.map +0 -1
- package/dist/chunks/en-B3xMeswz.js.map +0 -1
- package/dist/chunks/es-CA-mkU--.js.map +0 -1
- package/dist/chunks/grKbdStyles-DAoxiytu.js +0 -31
- package/dist/chunks/grKbdStyles-DAoxiytu.js.map +0 -1
- package/dist/chunks/granular-provider-CtrXGa7c.js.map +0 -1
- package/dist/chunks/keyboard-zYvvyHd4.js.map +0 -1
- package/dist/chunks/optionFilter-BVY988pC.js.map +0 -1
- package/dist/chunks/ru-COWxgh2A.js.map +0 -1
- package/dist/chunks/useOverlayLayer-BupuP_hs.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-CQ9T7Lly.js.map +0 -1
- package/dist/components/GrBreadcrumbs/chunks/GrBreadcrumbs-BCNGDS6k.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-MWDYDPNC.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-DVFho9Cj.js.map +0 -1
- package/dist/components/GrImageViewer/chunks/GrImageViewer-BeCnE8XQ.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-DD2gYdqS.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-DmNunixz.js.map +0 -1
- package/dist/components/GrKbd/chunks/GrKbd-DRFPvW3G.js.map +0 -1
- package/dist/components/GrPagination/chunks/GrPagination-B6N0QZBf.js.map +0 -1
- package/dist/components/GrProgressBar/chunks/GrProgressBar-BiHnaitu.js.map +0 -1
- package/dist/components/GrRadio/chunks/GrRadio-DksDro_U.js.map +0 -1
- package/dist/components/GrRadioGroup/chunks/GrRadioGroup-BOIhejE6.js.map +0 -1
- package/dist/components/GrRating/chunks/GrRating-JrHXz0Rv.js.map +0 -1
- package/dist/components/GrSegmented/chunks/GrSegmented-BQIlH5KI.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-aqkPCqjd.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-DkU9IQSX.js.map +0 -1
- package/dist/components/GrSplitter/chunks/GrSplitter-7To8jbJ8.js.map +0 -1
- package/dist/components/GrStatistic/chunks/GrStatistic-CttyoYPT.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-BB-mI_NM.js.map +0 -1
- package/dist/components/GrTabs/chunks/GrTabs-B8CDq2D9.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-BKQy3Srm.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-wfdbvygw.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-lLWmAMtI.js.map +0 -1
- package/dist/tokens.js.map +0 -1
- package/dist/chunks/{config-8Pcutu1j.js → config-8Pcutu1j2.js} +0 -0
- package/dist/chunks/{config-BE6n20np.js → config-BE6n20np2.js} +0 -0
- package/dist/chunks/{config-BKvX0q10.js → config-BKvX0q102.js} +0 -0
- package/dist/chunks/{config-BoNR7_PD.js → config-BoNR7_PD2.js} +0 -0
- package/dist/chunks/{config-CN2ULSQL2.js → config-CN2ULSQL.js} +0 -0
- package/dist/chunks/{config-CY0_6cMi.js → config-CY0_6cMi2.js} +0 -0
- package/dist/chunks/{config-Rw9OyW70.js → config-Rw9OyW702.js} +0 -0
- package/dist/chunks/{config-T3qdQBgU.js → config-T3qdQBgU2.js} +0 -0
- package/dist/chunks/{config-eXB87DOi2.js → config-eXB87DOi.js} +0 -0
- package/dist/components/GrCollapse/chunks/{GrCollapse-B2Fc6A9r.js → GrCollapse-Kk0DE8tb.js} +1 -1
- /package/dist/types/src/composables/{internal/useComboboxNavigation.d.ts → useComboboxNavigation.d.ts} +0 -0
|
@@ -12,17 +12,17 @@ import { t as grCheckboxConfig } from "./config-esdviAPL.js";
|
|
|
12
12
|
import { t as grCheckboxGroupConfig } from "./config-BuGlNPE9.js";
|
|
13
13
|
import { t as grCollapseConfig } from "./config-DU2DNSRx2.js";
|
|
14
14
|
import { t as grIconConfig } from "./config-Cp0DE0GH.js";
|
|
15
|
-
import { t as grColorPickerConfig } from "./config-
|
|
16
|
-
import { t as grCommandPaletteConfig } from "./config-
|
|
15
|
+
import { t as grColorPickerConfig } from "./config-BsPDQ0dS.js";
|
|
16
|
+
import { t as grCommandPaletteConfig } from "./config-9PYRZlKE.js";
|
|
17
17
|
import { t as grConfigProviderConfig } from "./config-B7W9VlZ7.js";
|
|
18
18
|
import { t as grConfirmDialogConfig } from "./config-A-bBiotF.js";
|
|
19
|
-
import { t as grDataTableConfig } from "./config-
|
|
19
|
+
import { t as grDataTableConfig } from "./config-BJ7Bv_G2.js";
|
|
20
20
|
import { t as grDialogSafelist } from "./safelist-CkF4v7DC.js";
|
|
21
21
|
import { t as grDialogServiceConfig } from "./config-CjXjhphs.js";
|
|
22
|
-
import { t as grDividerConfig } from "./config-
|
|
22
|
+
import { t as grDividerConfig } from "./config-CY0_6cMi2.js";
|
|
23
23
|
import { t as grDrawerConfig } from "./config-D94Z9po52.js";
|
|
24
24
|
import { t as grDropdownConfig } from "./config-BViooYNv.js";
|
|
25
|
-
import { t as grDropdownMenuConfig } from "./config-
|
|
25
|
+
import { t as grDropdownMenuConfig } from "./config-BKvX0q102.js";
|
|
26
26
|
import { t as grEmptyStateConfig } from "./config-DvQIb4kb.js";
|
|
27
27
|
import { t as grFileUploadConfig } from "./config-CN970ZcJ.js";
|
|
28
28
|
import { t as grFormConfig } from "./config-Droqn55j.js";
|
|
@@ -32,7 +32,7 @@ import { t as grFormSectionConfig } from "./config-DhHbU3zO.js";
|
|
|
32
32
|
import { t as grImageViewerConfig } from "./config-BeZRuonp.js";
|
|
33
33
|
import { t as grInputConfig } from "./config-DpeQchsV.js";
|
|
34
34
|
import { t as grInputTagConfig } from "./config-BN4sXYXn.js";
|
|
35
|
-
import { t as grKbdConfig } from "./config-
|
|
35
|
+
import { t as grKbdConfig } from "./config-DA6SnEoy.js";
|
|
36
36
|
import { t as grLinkConfig } from "./config-Cl4ST6Qd.js";
|
|
37
37
|
import { t as grListConfig } from "./config-BsuDM3Hb.js";
|
|
38
38
|
import { t as grLoadingConfig } from "./config-CjnbevbD.js";
|
|
@@ -42,27 +42,28 @@ import { t as grNumberInputConfig } from "./config-zjeAJ4ho.js";
|
|
|
42
42
|
import { t as grPaginationConfig } from "./config-DSJY6aEl.js";
|
|
43
43
|
import { t as grPopoverConfig } from "./config-BSyiFlbi.js";
|
|
44
44
|
import { t as grProgressBarConfig } from "./config-CQzGyi1C.js";
|
|
45
|
-
import { t as grProgressCircleConfig } from "./config-
|
|
45
|
+
import { t as grProgressCircleConfig } from "./config-MRvhUl-O.js";
|
|
46
46
|
import { t as grPromptDialogConfig } from "./config-C0Ea9ePP.js";
|
|
47
47
|
import { t as grRadioConfig } from "./config-BqFjr3tN.js";
|
|
48
48
|
import { t as grRadioGroupConfig } from "./config-QaIc_gRa.js";
|
|
49
|
-
import { t as grRatingConfig } from "./config-
|
|
49
|
+
import { t as grRatingConfig } from "./config-Baj7Wvx-.js";
|
|
50
50
|
import { t as grSegmentedConfig } from "./config-B-iNaGdw.js";
|
|
51
51
|
import { t as grSelectConfig } from "./config-Cwd3yjRw.js";
|
|
52
|
-
import { t as grSidebarConfig } from "./config-
|
|
53
|
-
import { t as grSkeletonConfig } from "./config-
|
|
54
|
-
import { t as grSliderConfig } from "./config-
|
|
55
|
-
import { t as
|
|
56
|
-
import { t as
|
|
57
|
-
import { t as
|
|
52
|
+
import { t as grSidebarConfig } from "./config-Rw9OyW702.js";
|
|
53
|
+
import { t as grSkeletonConfig } from "./config-8Pcutu1j2.js";
|
|
54
|
+
import { t as grSliderConfig } from "./config-T3qdQBgU2.js";
|
|
55
|
+
import { t as grSortableListConfig } from "./config-DAX8Deh1.js";
|
|
56
|
+
import { t as grSplitterConfig } from "./config-BE6n20np2.js";
|
|
57
|
+
import { t as grStatisticConfig } from "./config-Be9k9bOf.js";
|
|
58
|
+
import { t as grSwitchConfig } from "./config-BoNR7_PD2.js";
|
|
58
59
|
import { t as grTableConfig } from "./config-WTNhdh6T2.js";
|
|
59
|
-
import { t as grTabPanelsConfig } from "./config-
|
|
60
|
+
import { t as grTabPanelsConfig } from "./config-eXB87DOi.js";
|
|
60
61
|
import { t as grTabsConfig } from "./config-_qPUfb6-2.js";
|
|
61
|
-
import { t as grTextareaConfig } from "./config-
|
|
62
|
-
import { t as grTimelineConfig } from "./config-
|
|
63
|
-
import { t as grToasterConfig } from "./config-
|
|
64
|
-
import { t as grTooltipConfig } from "./config-
|
|
65
|
-
import { t as grTreeConfig } from "./config-
|
|
62
|
+
import { t as grTextareaConfig } from "./config-BDfTXHo12.js";
|
|
63
|
+
import { t as grTimelineConfig } from "./config-COpuWGr_.js";
|
|
64
|
+
import { t as grToasterConfig } from "./config-ScuvHw6k2.js";
|
|
65
|
+
import { t as grTooltipConfig } from "./config-CN2ULSQL.js";
|
|
66
|
+
import { t as grTreeConfig } from "./config-CDat1wXf2.js";
|
|
66
67
|
import { t as grTreeSelectConfig } from "./config-DCFvmHEv.js";
|
|
67
68
|
import { defineGranularComponent, defineGranularProvider, resolvePackageBaseUrl } from "@feugene/unocss-preset-granular/contract";
|
|
68
69
|
//#region src/components/GrDialog/config.ts
|
|
@@ -91,7 +92,7 @@ var theme = {
|
|
|
91
92
|
tokensCssUrl: new URL("data:text/css;base64,LyoKICog0KHQk9CV0J3QldCg0JjQoNCe0JLQkNCd0J4gYHlhcm4gZ2VuZXJhdGU6dG9rZW5zYCDQuNC3IGB0b2tlbnMvKi5qc29uYCDigJQg0L/RgNCw0LLQutC4INC30LTQtdGB0Ywg0L/QvtGC0LXRgNGP0Y7RgtGB0Y8uCiAqINCc0LXQvdGP0YLRjCDQt9C90LDRh9C10L3QuNGPINC4INC60L7QvNC80LXQvdGC0LDRgNC40Lgg0L3Rg9C20L3QviDQsiBKU09OLCDQt9Cw0YLQtdC8INC/0LXRgNC10LPQtdC90LXRgNC40YDQvtCy0LDRgtGMLgogKi8KOnJvb3QgewogIC8qIEZvdW5kYXRpb25zOiBuZXV0cmFsIHBhbGV0dGUgKi8KICAtLWdyLXNsYXRlLTA6ICNmZmZmZmY7CiAgLS1nci1zbGF0ZS01MDogI2Y4ZmFmYzsKICAtLWdyLXNsYXRlLTEwMDogI2YxZjVmOTsKICAtLWdyLXNsYXRlLTIwMDogI2UyZThmMDsKICAtLWdyLXNsYXRlLTMwMDogI2NiZDVlMTsKICAtLWdyLXNsYXRlLTQwMDogIzk0YTNiODsKICAtLWdyLXNsYXRlLTUwMDogIzY0NzQ4YjsKICAtLWdyLXNsYXRlLTYwMDogIzQ3NTU2OTsKICAtLWdyLXNsYXRlLTcwMDogIzMzNDE1NTsKICAtLWdyLXNsYXRlLTgwMDogIzFlMjkzYjsKICAtLWdyLXNsYXRlLTkwMDogIzBmMTcyYTsKCiAgLyogVHlwb2dyYXBoeTogZm9udCBmYW1pbGllcyAqLwogIC0tZ3ItZm9udC11aTogSW50ZXIsIFJvYm90bywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgLS1nci1mb250LW1vbm86ICdKZXRCcmFpbnMgTW9ubycsIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlOwoKICAvKiBUeXBvZ3JhcGh5OiBmb250IHNpemVzICovCiAgLS1nci10ZXh0LTJ4czogMTBweDsKICAtLWdyLXRleHQteHM6IDEycHg7CiAgLS1nci10ZXh0LXNtOiAxNHB4OwogIC0tZ3ItdGV4dC1iYXNlOiAxNnB4OwogIC0tZ3ItdGV4dC1sZzogMThweDsKICAtLWdyLXRleHQteGw6IDIwcHg7CiAgLS1nci10ZXh0LTJ4bDogMjRweDsKICAtLWdyLXRleHQtM3hsOiAzMHB4OwogIC0tZ3ItdGV4dC00eGw6IDM2cHg7CgogIC8qCiAgICogVHlwb2dyYXBoeTogY29udHJvbCBzY2FsZQogICAqCiAgICog0KjQutCw0LvQsCDQutC10LPQu9C10Lkg0LrQvtC80L/QvtC90LXQvdGC0L7Qsiwg0LbQuNCy0YPRidC40YUg0L3QsCBgR3JDb21wb25lbnRTaXplYCDigJQg0LrQvtC90YLRgNC+0LvQvtCyINC4INCy0YHQtdCz0L4sCiAgICog0YfRgtC+INGB0YLQvtC40YIg0YEg0L3QuNC80Lgg0LIg0L7QtNC40L0g0YDRj9C0LiDQntGC0LTQtdC70YzQvdCw0Y8g0L7RgiDQutC+0L3RgtC10L3RgtC90L7QuSDRgtC40L/QvtCz0YDQsNGE0LjQutC4INC/0L4g0LTQstGD0LwKICAgKiDQv9GA0LjRh9C40L3QsNC8LiDQn9C10YDQstCw0Y86INGB0YLRg9C/0LXQvdC10LkgMTNweCDQuCAxMXB4INGC0LDQvCDQvdC10YIg0Lgg0LHRi9GC0Ywg0L3QtSDQtNC+0LvQttC90L4g4oCUINGN0YLQvgogICAqINC60L7QvNC/0YDQvtC80LjRgdGB0Ysg0L/Qu9C+0YLQvdC+0YHRgtC4INC60L7QvdGC0YDQvtC70LAsINCwINC90LUg0YHRgtGD0L/QtdC90Lgg0YLQtdC60YHRgtCwLiDQktGC0L7RgNCw0Y86INGI0LrQsNC70LAg0L3QsNC80LXRgNC10L3QvdC+CiAgICog0L/Qu9C+0YLQvdC10LUg0YfQtdGC0YvRgNGR0YUg0YHRgtGD0L/QtdC90LXQuSDRgNCw0LfQvNC10YDQsCDigJQg0LrQsNC20LTRi9C5INC60L7QvNC/0L7QvdC10L3RgiDQstGL0LHQuNGA0LDQtdGCINC40Lcg0L3QtdGRINGB0LLQvtC4CiAgICog0YfQtdGC0YvRgNC1LiDQntGB0L3QvtCy0L3QsNGPINC70LXRgdGC0L3QuNGG0LAgYHhz4oCmbGdgICgxMi8xMy8xNC8xNikg4oCUINGDIGBHcklucHV0YCwgYEdyU2VsZWN0YCwKICAgKiBgR3JUZXh0YXJlYWAsIGBHclRyZWVTZWxlY3RgLCBgR3JBdXRvY29tcGxldGVgLCBgR3JOdW1iZXJJbnB1dGAsIGBHcklucHV0VGFnYCwKICAgKiBgR3JUYWJsZWAsIGBHckxpbmtgLCBgR3JQb3BvdmVyYDsg0L3QsCDRgdGC0YPQv9C10L3RjCDQvNC10LvRjNGH0LUgKGAzeHPigKZtZGAsIDEwLzExLzEyLzE0KQogICAqINGA0LDQsdC+0YLQsNGO0YIgYEdyVG9vbHRpcGAsIGBHckRhdGFUYWJsZWAsIGBHckJhZGdlYCwgYEdyUmF0aW5nYCwgYEdyRm9ybUZpbGVgLgogICAqINCh0L7QstC/0LDQtNC10L3QuNC1INC30L3QsNGH0LXQvdC40Lkg0YEgYC0tZ3ItdGV4dC0qYCDQvdC1INC00LXQu9Cw0LXRgiDRiNC60LDQu9GLINC+0LTQvdC+0Lk6INC/0LvQvtGC0L3QvtGB0YLRjCDQutC+0L3RgtGA0L7Qu9C+0LIKICAgKiDQvNC10L3Rj9C10YLRgdGPINC+0YLQtNC10LvRjNC90L4g0L7RgiDQutC10LPQu9GPINC60L7QvdGC0LXQvdGC0L3QvtCz0L4g0YLQtdC60YHRgtCwLgogICAqLwogIC0tZ3ItY29udHJvbC10ZXh0LTN4czogMTBweDsKICAtLWdyLWNvbnRyb2wtdGV4dC0yeHM6IDExcHg7CiAgLS1nci1jb250cm9sLXRleHQteHM6IDEycHg7CiAgLS1nci1jb250cm9sLXRleHQtc206IDEzcHg7CiAgLS1nci1jb250cm9sLXRleHQtbWQ6IDE0cHg7CiAgLS1nci1jb250cm9sLXRleHQtbGc6IDE2cHg7CgogIC8qCiAgICogVHlwb2dyYXBoeTogbGluZSBoZWlnaHRzCiAgICoKICAgKiDQlNCy0LUg0YDQsNC30L3Ri9C1INCy0LXRidC4INC/0L7QtCDQvtC00L3QuNC8INC/0YDQtdGE0LjQutGB0L7QvCwg0Lgg0YDQsNC30LvQuNGH0LDQtdGCINC40YUg0YHRg9GE0YTQuNC60YEuCiAgICog0KHRgtGD0L/QtdC90LggKGB4c2AvYHNtYC9gYmFzZWApIOKAlCDQsNCx0YHQvtC70Y7RgtC90YvQtSDQt9C90LDRh9C10L3QuNGPLCDQv9Cw0YDQvdGL0LUg0L7QtNC90L7QuNC80ZHQvdC90YvQvCDRgdGC0YPQv9C10L3Rj9C8CiAgICogYC0tZ3ItdGV4dC0qYDog0YPRgtC40LvQuNGC0LAgYHRleHQtc21gINCyIHVubyDQt9Cw0LTQsNCy0LDQu9CwINC60LXQs9C70Ywg0Lgg0LzQtdC20YHRgtGA0L7Rh9C90YvQuSDRgNCw0LfQvtC8LCDQuAogICAqINC60LXQs9C70YwsINC/0LXRgNC10LLQtdC00ZHQvdC90YvQuSDQvdCwINGC0L7QutC10L0g0LIg0L7QtNC40L3QvtGH0LrRgywg0L7RgtC00LDQuyDQsdGLINC40L3RgtC10YDQstCw0Lsg0L3QsCDQvtGC0LrRg9C/IGBib2R5YAogICAqINC/0YDQuNC70L7QttC10L3QuNGPLiDQmtC+0Y3RhNGE0LjRhtC40LXQvdGC0YsgKGB0aWdodGAvYG5vcm1hbGAvYHJlbGF4ZWRgKSDigJQg0LHQtdC30YDQsNC30LzQtdGA0L3Ri9C1LCDQtNC70Y8KICAgKiDRgtC10LrRgdGC0L7QstGL0YUg0LHQu9C+0LrQvtCyLCDQs9C00LUg0LjQvdGC0LXRgNCy0LDQuyDQt9Cw0LTQsNGR0YLRgdGPINC+0YLQvdC+0YjQtdC90LjQtdC8INC6INC60LXQs9C70Y4sINCwINC90LUg0YfQuNGB0LvQvtC8LgogICAqINCh0YLRg9C/0LXQvdC4INC30LDQstC+0LTRj9GC0YHRjyDQv9C+INC80LXRgNC1INGD0L/QvtGC0YDQtdCx0LvQtdC90LjRjzog0YjQutCw0LvQsCDQsdC10Lcg0YPQv9C+0YLRgNC10LHQu9C10L3QuNGPIOKAlCDQvNGR0YDRgtCy0YvQuSDQs9GA0YPQty4KICAgKi8KICAtLWdyLWxlYWRpbmcteHM6IDFyZW07CiAgLS1nci1sZWFkaW5nLXNtOiAxLjI1cmVtOwogIC0tZ3ItbGVhZGluZy1iYXNlOiAxLjVyZW07CiAgLS1nci1sZWFkaW5nLXhsOiAxLjc1cmVtOwogIC0tZ3ItbGVhZGluZy0zeGw6IDIuMjVyZW07CiAgLS1nci1sZWFkaW5nLXRpZ2h0OiAxLjI1OwogIC0tZ3ItbGVhZGluZy1ub3JtYWw6IDEuNTsKICAtLWdyLWxlYWRpbmctcmVsYXhlZDogMS42MjU7CgogIC8qIFR5cG9ncmFwaHk6IGZvbnQgd2VpZ2h0cyAqLwogIC0tZ3ItZm9udC1yZWd1bGFyOiA0MDA7CiAgLS1nci1mb250LW1lZGl1bTogNTAwOwogIC0tZ3ItZm9udC1zZW1pYm9sZDogNjAwOwogIC0tZ3ItZm9udC1ib2xkOiA3MDA7CgogIC8qIExheW91dDogc3BhY2luZyBzY2FsZSAqLwogIC0tZ3Itc3BhY2UtMDogMHB4OwogIC0tZ3Itc3BhY2UtMTogNHB4OwogIC0tZ3Itc3BhY2UtMjogOHB4OwogIC0tZ3Itc3BhY2UtMzogMTJweDsKICAtLWdyLXNwYWNlLTQ6IDE2cHg7CiAgLS1nci1zcGFjZS01OiAyMHB4OwogIC0tZ3Itc3BhY2UtNjogMjRweDsKICAtLWdyLXNwYWNlLTg6IDMycHg7CiAgLS1nci1zcGFjZS0xMDogNDBweDsKICAtLWdyLXNwYWNlLTEyOiA0OHB4OwogIC0tZ3Itc3BhY2UtMTY6IDY0cHg7CiAgLS1nci1zcGFjZS0yMDogODBweDsKICAtLWdyLXNwYWNlLTI0OiA5NnB4OwogIC0tZ3Itc3BhY2UtMzI6IDEyOHB4OwogIC0tZ3Itc3BhY2UtNDA6IDE2MHB4OwogIC0tZ3Itc3BhY2UtNDg6IDE5MnB4OwogIC0tZ3Itc3BhY2UtNjQ6IDI1NnB4OwoKICAvKiBMYXlvdXQ6IGNvbnRhaW5lcnMgKi8KICAtLWdyLWNvbnRhaW5lci1tYXg6IDEyODBweDsKICAtLWdyLWNvbnRhaW5lci1tYXgtMnhsOiAxNDQwcHg7CiAgLS1nci1jb250YWluZXItcGFkZGluZy1tb2JpbGU6IDE2cHg7CiAgLS1nci1jb250YWluZXItcGFkZGluZy10YWJsZXQ6IDI0cHg7CiAgLS1nci1jb250YWluZXItcGFkZGluZy1kZXNrdG9wOiAzMnB4OwoKICAvKiBMYXlvdXQ6IGJyZWFrcG9pbnRzICovCiAgLS1nci1icC1zbTogNjQwcHg7CiAgLS1nci1icC1tZDogNzY4cHg7CiAgLS1nci1icC1sZzogMTAyNHB4OwogIC0tZ3ItYnAteGw6IDEyODBweDsKICAtLWdyLWJwLTJ4bDogMTUzNnB4OwoKICAvKgogICAqIEljb25vZ3JhcGh5OiBpY29uIHNpemVzCiAgICoKICAgKiDQqNC60LDQu9CwINGA0LDQt9C80LXRgNC+0LIg0LjQutC+0L3QutC4IChgR3JJY29uYCkuINCX0L3QsNGH0LXQvdC40Y8g0YHQvtCy0L/QsNC00LDRjtGCINGB0L4g0YjQutCw0LvQvtC5INC60L7QvdGC0YDQvtC70L7QsgogICAqIChgeHPigKZsZ2ApINC4INC20LjQstGD0YIg0YLQvtC60LXQvdCw0LzQuCwg0LAg0L3QtSDQu9C40YLQtdGA0LDQu9Cw0LzQuCDQsiDQutC+0LzQv9C+0L3QtdC90YLQtTog0LjQutC+0L3QutCwINC+0LHRj9C30LDQvdCwCiAgICog0LzQsNGB0YjRgtCw0LHQuNGA0L7QstCw0YLRjNGB0Y8g0LLQvNC10YHRgtC1INGBINGC0LXQvNC+0LksINCwINC90LUg0LLQvNC10YHRgtC1INGBINC/0LXRgNC10YHQsdC+0YDQutC+0Lkg0L/QsNC60LXRgtCwLgogICAqINCf0YDQvtC40LfQstC+0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNC00LDRkdGC0YHRjyDRh9C40YHQu9C+0Lwg0L/RgNGP0LzQviDQvdCwINC60L7QvNC/0L7QvdC10L3RgtC1IOKAlCDRjdGC0L4gZXNjYXBlLWhhdGNoLAogICAqINCwINC90LUg0YfQsNGB0YLRjCDRiNC60LDQu9GLLgogICAqLwogIC0tZ3ItaWNvbi1zaXplLXhzOiAxNHB4OwogIC0tZ3ItaWNvbi1zaXplLXNtOiAxNnB4OwogIC0tZ3ItaWNvbi1zaXplLW1kOiAxOHB4OwogIC0tZ3ItaWNvbi1zaXplLWxnOiAyMHB4OwoKICAvKiBTaGFwZXM6IHJhZGlpIGFuZCBjb21wYXRpYmlsaXR5IGFsaWFzZXMgKi8KICAtLXJhZGl1czogMC41cmVtOwogIC0tZ3ItcmFkaXVzLW5vbmU6IDBweDsKICAtLWdyLXJhZGl1cy14czogM3B4OwogIC0tZ3ItcmFkaXVzLXNtOiA0cHg7CiAgLS1nci1yYWRpdXMtY29udHJvbDogNnB4OwogIC0tZ3ItcmFkaXVzLW1kOiA4cHg7CiAgLS1nci1yYWRpdXMtbGc6IDEycHg7CiAgLS1nci1yYWRpdXMteGw6IDE2cHg7CiAgLS1nci1yYWRpdXMtZnVsbDogOTk5OXB4OwoKICAvKiBFbGV2YXRpb24gKi8KICAtLWdyLXNoYWRvdy0wOiBub25lOwogIC0tZ3Itc2hhZG93LTE6IDAgMXB4IDJweCByZ2JhKDE1LCAyMywgNDIsIDAuMDgpOwogIC0tZ3Itc2hhZG93LTI6IDAgOHB4IDI0cHggcmdiYSgxNSwgMjMsIDQyLCAwLjE0KTsKICAtLWdyLXNoYWRvdy0zOiAwIDE2cHggNDhweCByZ2JhKDE1LCAyMywgNDIsIDAuMjApOwoKICAvKiBNb3Rpb24gKi8KICAtLWdyLWR1cmF0aW9uLWZhc3Q6IDE1MG1zOwogIC0tZ3ItZHVyYXRpb24tYmFzZTogMjAwbXM7CiAgLS1nci1kdXJhdGlvbi1zbG93OiAzMDBtczsKICAtLWdyLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTsKICAtLWdyLWVhc2UtaW46IGN1YmljLWJlemllcigwLjcsIDAsIDAuODQsIDApOwoKICAvKgogICAqIExheWVyaW5nOiB6LWluZGV4IHNjYWxlCiAgICoKICAgKiDQldC00LjQvdGL0Lkg0LjRgdGC0L7Rh9C90LjQuiDQuNGB0YLQuNC90Ysg0LTQu9GPINGB0LvQvtGR0LIg0LLRgdC10YUg0LrQvtC80L/QvtC90LXQvdGC0L7Qsiwg0LjRgdC/0L7Qu9GM0LfRg9GO0YnQuNGFIGBwb3NpdGlvbjogZml4ZWRgCiAgICog0L/QvtCy0LXRgNGFINC+0YHRgtCw0LvRjNC90L7Qs9C+INC60L7QvdGC0LXQvdGC0LAuINCf0YDQsNCy0LjQu9C+OiDRh9C10Lwg0LLRi9GI0LUg0LIgVUkt0YHRgtC10LrQtSDRgdC70L7QuSDQvtCx0Y/Qt9Cw0L0g0L7QutCw0LfQsNGC0YzRgdGPLAogICAqINGC0LXQvCDQsdC+0LvRjNGI0LUg0LfQvdCw0YfQtdC90LjQtS4gRmxvYXRpbmct0L/QsNC90LXQu9C4IChkcm9wZG93bi9zZWxlY3QvdHJlZS1zZWxlY3QvdG9vbHRpcCkg0YHRgtC+0Y/RggogICAqINC90LjQttC1INC80L7QtNCw0LvQvtC6LCDRh9GC0L7QsdGLINC/0L7Qv9C+0LLQtdGALCDQvtGC0LrRgNGL0YLRi9C5INCS0J3Qo9Ci0KDQmCDQvNC+0LTQsNC70LrQuCwg0L3QtSDQv9C+0YLQtdGA0Y/Qu9GB0Y8g0L/QvtC0INC90LXQuSwg0L3QvgogICAqINGB0LDQvCDRjdGC0L7RgiDQv9C+0L/QvtCy0LXRgCDQvdC1INC+0LHRj9C30LDQvSDQv9C10YDQtdC60YDRi9Cy0LDRgtGMINC80L7QtNCw0LvQutGDINGB0L3QsNGA0YPQttC4IOKAlCDQt9CwINC/0YDQtdC00LXQu9GLINGB0LLQvtC10LPQviDQtNC10YDQtdCy0LAKICAgKiBmbG9hdGluZy3QutC+0LzQv9C+0L3QtdC90YLRiyDQvdC1INCy0YvRhdC+0LTRj9GCINC/0L4g0L/QvtGB0YLRgNC+0LXQvdC40Y4gKHYtY2xpY2stb3V0c2lkZS9wb3J0YWwg0YDRj9C00L7QvCDRgSDRgtGA0LjQs9Cz0LXRgNC+0LwpLgogICAqINCi0L7RgdGC0Ysg4oCUINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDRgdC70L7QuSwg0LrQvtGC0L7RgNGL0Lkg0L7QsdGP0LfQsNC9INCx0YvRgtGMINCy0LjQtNC10L0g0L/QvtCy0LXRgNGFINCw0LHRgdC+0LvRjtGC0L3QviDQstGB0LXQs9C+LAogICAqINCy0LrQu9GO0YfQsNGPINC+0YLQutGA0YvRgtGL0LUg0LzQvtC00LDQu9C60LggKNGN0YLQviDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INGD0YDQvtCy0L3RjyDQv9GA0LjQu9C+0LbQtdC90LjRjykuCiAgICovCiAgLS1nci16LWJvdHRvbS1uYXY6IDg1MDsKICAtLWdyLXotbmF2YmFyOiA5MDA7CiAgLS1nci16LWRyb3Bkb3duOiAxMDAwOwogIC0tZ3Itei10b29sdGlwOiAxMDUwOwogIC0tZ3Itei1tb2RhbDogMTEwMDsKICAtLWdyLXotbG9hZGluZzogMTE1MDsKICAtLWdyLXotdG9hc3Q6IDEyMDA7CgogIC8qIERlcml2ZWQgaW50ZXJhY3Rpb24gZm9ybXVsYXM6IGFjdGlvbiByb2xlcyAqLwogIC0tZ3ItcHJpbWFyeS1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLXByaW1hcnkpIDkyJSwgdmFyKC0tZ3ItZmcpKTsKICAtLWdyLXByaW1hcnktYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3ItcHJpbWFyeSkgODQlLCB2YXIoLS1nci1mZykpOwogIC0tZ3Itc2Vjb25kYXJ5LWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc2Vjb25kYXJ5KSA5MiUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci1zZWNvbmRhcnktYWN0aXZlOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc2Vjb25kYXJ5KSA4NCUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci1icmQtaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1icmQpIDcwJSwgdmFyKC0tZ3ItZmcpKTsKICAtLWdyLWJyZC1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1icmQpIDU1JSwgdmFyKC0tZ3ItZmcpKTsKCiAgLyogRGVyaXZlZCBpbnRlcmFjdGlvbiBmb3JtdWxhczogc3RhdHVzIHJvbGVzICovCiAgLS1nci1zdWNjZXNzLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc3VjY2VzcykgOTIlLCB2YXIoLS1nci1mZykpOwogIC0tZ3Itc3VjY2Vzcy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1zdWNjZXNzKSA4NCUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci13YXJuaW5nLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itd2FybmluZykgOTIlLCB2YXIoLS1nci1mZykpOwogIC0tZ3Itd2FybmluZy1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci13YXJuaW5nKSA4NCUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci1kYW5nZXItaG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1kYW5nZXIpIDkyJSwgdmFyKC0tZ3ItZmcpKTsKICAtLWdyLWRhbmdlci1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1kYW5nZXIpIDg0JSwgdmFyKC0tZ3ItZmcpKTsKICAtLWdyLWluZm8taG92ZXI6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1pbmZvKSA5MiUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci1pbmZvLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLWluZm8pIDg0JSwgdmFyKC0tZ3ItZmcpKTsKICAtLWdyLXNsYXRlLWhvdmVyOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZ3Itc2xhdGUpIDkyJSwgdmFyKC0tZ3ItZmcpKTsKICAtLWdyLXNsYXRlLWFjdGl2ZTogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLXNsYXRlKSA4NCUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci1henVyZS1ob3ZlcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWdyLWF6dXJlKSA5MiUsIHZhcigtLWdyLWZnKSk7CiAgLS1nci1henVyZS1hY3RpdmU6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1nci1henVyZSkgODQlLCB2YXIoLS1nci1mZykpOwp9Cg==", "" + import.meta.url).href,
|
|
92
93
|
themes: {
|
|
93
94
|
light: new URL("data:text/css;base64,LyoKICog0KHQk9CV0J3QldCg0JjQoNCe0JLQkNCd0J4gYHlhcm4gZ2VuZXJhdGU6dG9rZW5zYCDQuNC3IGB0b2tlbnMvKi5qc29uYCDigJQg0L/RgNCw0LLQutC4INC30LTQtdGB0Ywg0L/QvtGC0LXRgNGP0Y7RgtGB0Y8uCiAqINCc0LXQvdGP0YLRjCDQt9C90LDRh9C10L3QuNGPINC4INC60L7QvNC80LXQvdGC0LDRgNC40Lgg0L3Rg9C20L3QviDQsiBKU09OLCDQt9Cw0YLQtdC8INC/0LXRgNC10LPQtdC90LXRgNC40YDQvtCy0LDRgtGMLgogKi8KOnJvb3QgewogIC8qIFN1cmZhY2Ugcm9sZXMgKi8KICAtLWdyLWJnOiAjZjhmYWZjOwogIC0tZ3ItZmc6ICMwZjE3MmE7CiAgLS1nci1jYXJkOiAjZmZmZmZmOwogIC0tZ3ItY2FyZC1mZzogIzBmMTcyYTsKICAtLWdyLXBvcG92ZXI6ICNmZmZmZmY7CiAgLS1nci1wb3BvdmVyLWZnOiAjMGYxNzJhOwogIC0tZ3ItbXV0ZWQ6ICNmMWY1Zjk7CiAgLyoKICAgKiDQktGC0L7RgNC40YfQvdGL0Lkg0YLQtdC60YHRgiDQvtCx0Y/Qt9Cw0L0g0L/RgNC+0YXQvtC00LjRgtGMIEFBINC90LAg0KHQkNCc0J7QnCDQotCB0JzQndCe0Jwg0LjQtyDRhNC+0L3QvtCyLCDQvdCwINC60L7RgtC+0YDRi9GFCiAgICog0L7QvSDQv9C+0Y/QstC70Y/QtdGC0YHRjywg0LAg0Y3RgtC+INC90LUg0YHRgtGA0LDQvdC40YbQsCwg0LAgYC0tZ3Itc2Vjb25kYXJ5YCAoI2UyZThmMCkuINCf0YDQtdC20L3QuNC5CiAgICogIzY0NzQ4YiDQtNC10YDQttCw0LvRgdGPINGC0L7Qu9GM0LrQviDQvdCwIGAtLWdyLWJnYCAoNC41NSkg0LggYC0tZ3ItY2FyZGAgKDQuNzYpLCDQvdC+CiAgICog0L/RgNC+0LLQsNC70LjQstCw0LvRgdGPINC90LAgYC0tZ3ItbXV0ZWRgICg0LjM0KSDQuCBgLS1nci1zZWNvbmRhcnlgICgzLjg2KSDigJQg0YLQviDQtdGB0YLRjAogICAqINGA0L7QstC90L4g0YLQsNC8LCDQs9C00LUg0LLRgtC+0YDQuNGH0L3Ri9C5INGC0LXQutGB0YIg0Lgg0LbQuNCy0ZHRgjog0YfQuNC/0YssINGC0LDQsdC70LjRhtGLLCDQv9C+0LTQv9C40YHQuCDQsiDQv9Cw0L3QtdC70Y/RhS4KICAgKiAjNTU2Mjc1INC00LDRkdGCINC80LjQvdC40LzRg9C8IDUuMDIg0L/QviDQstGB0LXQvCDRh9C10YLRi9GA0ZHQvCDRhNC+0L3QsNC8LgogICAqLwogIC0tZ3ItbXV0ZWQtZmc6ICM1NTYyNzU7CiAgLS1nci1zZWNvbmRhcnk6ICNlMmU4ZjA7CiAgLS1nci1zZWNvbmRhcnktZmc6ICMxZTI5M2I7CiAgLS1nci1vdmVybGF5LWJnOiByZ2IoMTUgMjMgNDIgLyAwLjQ1KTsKICAtLWdyLWJyZDogI2UyZThmMDsKICAtLWdyLWlucHV0OiAjZTJlOGYwOwogIC0tZ3ItcmluZzogIzYzNjZmMTsKCiAgLyogU3RhdGUgcm9sZXMgKi8KICAtLWdyLWRpc2FibGVkLWJnOiAjZjFmNWY5OwogIC0tZ3ItZGlzYWJsZWQtZmc6ICM5NGEzYjg7CiAgLS1nci1kaXNhYmxlZC1icmQ6ICNlMmU4ZjA7CiAgLyoKICAgKiDQntGI0LjQsdC60LAg0LLQsNC70LjQtNCw0YbQuNC4INC4INC00LXQutC+0YDQsNGC0LjQstC90YvQuSDRgtC+0L0gYHN0YXRlPSJkYW5nZXIiYCDigJQg0YDQsNC30L3Ri9C1INCy0LXRidC4LCDRhdC+0YLRjwogICAqINCy0YvQs9C70Y/QtNGP0YIg0L7QtNC40L3QsNC60L7QstC+INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLiDQodGB0YvQu9C60LAsINCwINC90LUg0LrQvtC/0LjRjyBoZXg6INGC0LXQvNCwLCDQv9C+0LzQtdC90Y/QstGI0LDRjwogICAqINGC0L7Qu9GM0LrQviBgLS1nci1kYW5nZXJgLCDQvdC1INC+0LHRj9C30LDQvdCwINC/0L7QvNC90LjRgtGMINC/0YDQviDQstGC0L7RgNC+0Lkg0L3QsNCx0L7RgCwg0LAg0YLQtdC80LAsINC60L7RgtC+0YDQvtC5CiAgICog0L3Rg9C20LXQvSDQvtGC0LTQtdC70YzQvdGL0Lkg0YbQstC10YIg0L7RiNC40LHQutC4LCDQv9C10YDQtdC60YDQsNGI0LjQstCw0LXRgiDRgtGA0Lgg0YDQvtC70Lgg0Lgg0L3QtSDRgtGA0L7Qs9Cw0LXRgiBkYW5nZXIt0YLQvtC9LgogICAqLwogIC0tZ3ItaW52YWxpZC1icmQ6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1nci1pbnZhbGlkLXJpbmc6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1nci1pbnZhbGlkLXRleHQ6IHZhcigtLWdyLWRhbmdlci10ZXh0KTsKCiAgLyogQWN0aW9uIHJvbGVzICovCiAgLS1nci1wcmltYXJ5OiAjNGY0NmU1OwogIC0tZ3ItcHJpbWFyeS1mZzogI2ZmZmZmZjsKICAtLWdyLWFjY2VudDogI2VlZjJmZjsKICAtLWdyLWFjY2VudC1mZzogIzM3MzBhMzsKCiAgLyogU3RhdHVzIHJvbGVzICovCiAgLyoKICAgKiBgLWZnYCDigJQg0YbQstC10YIg0YLQtdC60YHRgtCwINCd0JAg0YHQv9C70L7RiNC90L7QuSDQt9Cw0LvQuNCy0LrQtSDRgtC+0L3QvtC8LiDQoyDRgdCy0LXRgtC70YvRhSDQt9Cw0LvQuNCy0L7QuiDQvtC9INC+0LHRj9C30LDQvQogICAqINCx0YvRgtGMINGC0ZHQvNC90YvQvDog0LHQtdC70YvQuSDQvdCwIGAtLWdyLXN1Y2Nlc3NgINC00LDRkdGCIDIuNTQ6MSwg0L3QsCBgLS1nci13YXJuaW5nYCAyLjgwOjEKICAgKiDQv9GA0Lgg0L/QvtGA0L7Qs9C1IEFBIDQuNSDigJQg0LAg0Y3RgtC+IHNvbGlkLdC60L3QvtC/0LrQuCDQuCDQsdC10LnQtNC20LggKGBnckJ1dHRvblN0eWxlcy50c2AsCiAgICogYGdyQmFkZ2VTdHlsZXMudHNgKS4g0KEgYC0tZ3ItZmdgINC/0L7Qu9GD0YfQsNC10LwgNy4wNCDQuCA2LjM3LCDQuCBob3Zlci9hY3RpdmUsCiAgICog0LrQvtGC0L7RgNGL0LUg0YPQstC+0LTRj9GCINC30LDQu9C40LLQutGDINCyINGC0ZHQvNC90YPRjiDRgdGC0L7RgNC+0L3Rgywg0L7RgdGC0LDRjtGC0YHRjyDQstGL0YjQtSDQv9C+0YDQvtCz0LAgKDUuMzAgLyA0Ljc5KS4KICAgKiDQkiDRgtGR0LzQvdC+0Lkg0YLQtdC80LUg0Y3RgtC4INGC0L7QutC10L3RiyDRg9C20LUg0YLRkdC80L3Ri9C1IOKAlCDRgtCw0Lwg0LfQsNC70LjQstC60Lgg0YHQstC10YLQu9C10LUg0YTQvtC90LAuCiAgICovCiAgLS1nci1zdWNjZXNzOiAjMTBiOTgxOwogIC0tZ3Itc3VjY2Vzcy1saWdodDogI2QxZmFlNTsKICAtLWdyLXN1Y2Nlc3MtZmc6ICMwZjE3MmE7CiAgLS1nci1wcmltYXJ5LXRleHQ6ICMzNzMwYTM7CiAgLS1nci1zdWNjZXNzLXRleHQ6ICMwNjVmNDY7CiAgLS1nci13YXJuaW5nOiAjZjk3MzE2OwogIC0tZ3Itd2FybmluZy1saWdodDogI2ZmZWRkNTsKICAtLWdyLXdhcm5pbmctZmc6ICMwZjE3MmE7CiAgLS1nci13YXJuaW5nLXRleHQ6ICM3YzJkMTI7CiAgLS1nci1kYW5nZXI6ICNkYzI2MjY7CiAgLS1nci1kYW5nZXItbGlnaHQ6ICNmZWUyZTI7CiAgLS1nci1kYW5nZXItZmc6ICNmZmZmZmY7CiAgLS1nci1kYW5nZXItdGV4dDogIzk5MWIxYjsKICAvKgogICAqINCh0LjQvdC40LksINCwINC90LUg0LjQvdC00LjQs9C+LiDQn9GA0LXQttC90LjQuSBgIzU4NTBlY2Ag0L7RgtC70LjRh9Cw0LvRgdGPINC+0YIgYC0tZ3ItcHJpbWFyeWAg0L3QsCDOlEUgNC4zCiAgICog0L/RgNC4INC/0L7RgNC+0LPQtSDQt9Cw0LzQtdGC0L3QvtGB0YLQuCDQvtC60L7Qu9C+IDIuMywg0LAg0YLQtdC60YHRgtC+0LLRi9C1INGA0L7Qu9C4INC+0LHQvtC40YUg0YLQvtC90L7QsiDRgdC+0LLQv9Cw0LTQsNC70LgKICAgKiDQt9C90LDRh9C10L3QuNC10Lwg0L/QvtC70L3QvtGB0YLRjNGOIOKAlCDRgdGB0YvQu9C60LAgYHRvbmU9ImluZm8iYCDQuCDRgdGB0YvQu9C60LAgYHRvbmU9InByaW1hcnkiYAogICAqINC60YDQsNGB0LjQu9C40YHRjCDQvtC00LjQvdCw0LrQvtCy0L4uINCi0L7QvSDQt9Cw0L3Rj9C7INGB0L7QsdGB0YLQstC10L3QvdGL0Lkg0YPRh9Cw0YHRgtC+0Log0L/QsNC70LjRgtGA0Ys6INC+0L0g0L7RgtC70LjRh9C40Lwg0Lgg0L7RggogICAqIGBwcmltYXJ5YCAozpRFIDIxINCyINGB0LLQtdGC0LvQvtC5INGC0LXQvNC1LCAyOSDQsiDRgtGR0LzQvdC+0LkpLCDQuCDQvtGCIGBhenVyZWAgKDQ4INC4IDIyKS4KICAgKiDQl9Cw0LzRi9GB0LXQuyDQsdGL0Lsg0YLQsNC60L7QuSDQuCDRgNCw0L3RjNGI0LUg4oCUINGC0ZHQvNC90LDRjyDRgtC10LzQsCDRg9C20LUg0L7RgtC60LDQt9GL0LLQsNC70LDRgdGMINCx0YDQsNGC0YwgaW5kaWdvLTQwMAogICAqINC40LzQtdC90L3QviDQv9C+0YLQvtC80YMsINGH0YLQviBzb2xpZC3QsdC10LnQtNC20LggcHJpbWFyeSDQuCBpbmZvINGB0YLQsNC70Lgg0LHRiyDQvdC10L7RgtC70LjRh9C40LzRiy4KICAgKi8KICAtLWdyLWluZm86ICMyNTYzZWI7CiAgLS1nci1pbmZvLWxpZ2h0OiAjZGJlYWZlOwogIC0tZ3ItaW5mby1mZzogI2ZmZmZmZjsKICAtLWdyLWluZm8tdGV4dDogIzFlNDBhZjsKICAtLWdyLXNsYXRlOiAjNDc1NTY5OwogIC0tZ3Itc2xhdGUtbGlnaHQ6ICNlMmU4ZjA7CiAgLS1nci1zbGF0ZS1mZzogI2ZmZmZmZjsKICAtLWdyLXNsYXRlLXRleHQ6ICMzMzQxNTU7CiAgLyoKICAgKiBBenVyZSDigJQg0LXQtNC40L3RgdGC0LLQtdC90L3Ri9C5INGC0L7QvSwg0LrQvtGC0L7RgNGL0Lkg0L3QtSDRh9C40L3QuNGC0YHRjyDRgdC80LXQvdC+0LkgYC1mZ2AuINCi0ZHQvNC90YvQuSDRgtC10LrRgdGCCiAgICog0L/RgNC+0YXQvtC00LjRgiDQvdCwINCx0LDQt9C1ICg2LjQ0KSwg0L3QviBob3Zlci9hY3RpdmUg0YPQstC+0LTRj9GCINC30LDQu9C40LLQutGDINCy0L3QuNC3INC4INC70L7QvNCw0Y7RgiDQtdCz0L4KICAgKiAoNC4zNiAvIDMuMDEpOyDQsdC10LvRi9C5INC20LUg0L3QtSDQv9GA0L7RhdC+0LTQuNGCINC90LAg0LHQsNC30LUgKDIuNzcpLiDQktGL0YXQvtC0INC+0LTQuNC9IOKAlCDRgdCw0LzQsAogICAqINC30LDQu9C40LLQutCwOiBza3ktNTAwIGAjMGVhNWU5YCDRgdC70LjRiNC60L7QvCDRgdCy0LXRgtC70LDRjyDQtNC70Y8g0LHQtdC70L7Qs9C+INGC0LXQutGB0YLQsC4gYCMwMDc3YjZgIOKAlAogICAqINGB0LDQvNC+0LUg0YHQstC10YLQu9C+0LUg0LfQvdCw0YfQtdC90LjQtSwg0LTQsNGO0YnQtdC1INC30LDQv9Cw0YEg0L/QviDQstGB0LXQvCDRgtGA0ZHQvCDRgdC+0YHRgtC+0Y/QvdC40Y/QvAogICAqICg0Ljg3IC8gNS40NCAvIDYuMDIpINC4INC30LDQvtC00L3QviDQv9C+0LTQvdC40LzQsNGO0YnQtdC1IGF6dXJlLdC40LrQvtC90LrRgyDQvdCwIGAtbGlnaHRgCiAgICog0L/QvtC00LvQvtC20LrQtSDRgSAyLjQyINC00L4gNC4yNC4g0J7RgtGC0LXQvdC+0Log0L7RgdGC0LDRkdGC0YHRjyDQvtGC0LvQuNGH0LjQvNGL0Lwg0L7RgiBgLS1nci1pbmZvYC4KICAgKi8KICAtLWdyLWF6dXJlOiAjMDA3N2I2OwogIC0tZ3ItYXp1cmUtbGlnaHQ6ICNlMGYyZmU7CiAgLS1nci1henVyZS1mZzogI2ZmZmZmZjsKICAtLWdyLWF6dXJlLXRleHQ6ICMwNzU5ODU7CgogIC8qCiAgICogU29saWQgZmlsbCByb2xlcwogICAqCiAgICog0KHQv9C70L7RiNC90LDRjyDQt9Cw0LvQuNCy0LrQsCDQutC90L7Qv9C+0YfQvdC+0LPQviDQstC10YHQsCDQuCDQtdGRINGC0LXQutGB0YIuCiAgICoKICAgKiDQntGCINGA0L7Qu9C4INCx0LXQtyDRgdGD0YTRhNC40LrRgdCwINC+0YLQu9C40YfQsNC10YLRgdGPINC/0L7RgNC+0LPQvtC8LiBgLS1nci17dG9uZX1gINGA0LDRgdGB0YfQuNGC0LDQvSDQvdCwIDM6MSDQugogICAqINGE0L7QvdGDINGB0YLRgNCw0L3QuNGG0Ysg4oCUINGN0YLQviDQuNC90LTQuNC60LDRgtC+0YAsINCz0YDQsNC90LjRhtCwLCDQsdC10LnQtNC2LCDigJQg0Lgg0YLQtdC60YHRgiDQvdCwINC90ZHQvCDQsdC10YDRkdGC0YHRjyDQuNC3CiAgICogYC1mZ2AsINGDINGB0LLQtdGC0LvRi9GFINC30LDQu9C40LLQvtC6INGC0ZHQvNC90YvQuS4gYC1zb2xpZGAg0YDQsNGB0YHRh9C40YLQsNC9INC90LAgNC41OjEg0L/QvtC0INCh0JLQldCi0JvQq9CZCiAgICog0YLQtdC60YHRgjogc29saWQt0LrQvdC+0L/QutC4INCy0YHQtdGFINGC0L7QvdC+0LIg0L7QsdGP0LfQsNC90Ysg0LLRi9Cz0LvRj9C00LXRgtGMINC+0LTQvdC+0Lkg0YHQtdC80YzRkdC5LCDQsCDQsdC70LXQtNC90L4tCiAgICog0LfQtdC70ZHQvdCw0Y8g0LrQvdC+0L/QutCwINGA0Y/QtNC+0Lwg0YEg0YLRkdC80L3Qvi3QutGA0LDRgdC90L7QuSDRh9C40YLQsNC10YLRgdGPINC60LDQuiDQvtGI0LjQsdC60LAg0LLRkdGA0YHRgtC60LguCiAgICoKICAgKiDQotCw0LwsINCz0LTQtSDQs9C70L7QsdCw0LvRjNC90YvQuSDRgtC+0L0g0YPQttC1INC00L7RgdGC0LDRgtC+0YfQvdC+INGC0ZHQvNC10L0sIGAtc29saWRgIOKAlCDRgdGB0YvQu9C60LAg0L3QsCDQvdC10LPQvi4KICAgKiDQodC+0LHRgdGC0LLQtdC90L3Ri9C1INC30L3QsNGH0LXQvdC40Y8g0L3Rg9C20L3RiyDRgtGA0ZHQvCDRgtC+0L3QsNC8OiDQsdC10LvRi9C5INGC0LXQutGB0YIg0LTQsNGR0YIgNS40OCAvIDYuNDUgLyA3LjcxCiAgICog0L3QsCDQt9Cw0YLQtdC80L3RkdC90L3QvtC8IHN1Y2Nlc3Mg0LggNS4xOCDQvdCwINC30LDRgtC10LzQvdGR0L3QvdC+0Lwgd2FybmluZywg0YLQvtCz0LTQsCDQutCw0Log0LPQu9C+0LHQsNC70YzQvdGL0LkKICAgKiBgLWZnYCDRgtCw0Lwg0YLRkdC80L3Ri9C5INC4INC90LAg0YLQvtC5INC20LUg0LfQsNC70LjQstC60LUg0LTQsNC7INCx0YsgMy4yNiDQuCAzLjQ1LiBBenVyZSDQvdC1INGH0LjQvdC40YLRgdGPCiAgICog0YHQvNC10L3QvtC5IGAtZmdgINCy0L7QstGB0LUgKNGB0LwuINC/0YDQuNC80LXRh9Cw0L3QuNC1INC6IGAtLWdyLWF6dXJlYCkuCiAgICoKICAgKiBob3ZlciDQuCBhY3RpdmUg0LfQsNC00LDQvdGLINC30L3QsNGH0LXQvdC40Y/QvNC4LCDQsCDQvdC1INC+0LHRidC10Lkg0YTQvtGA0LzRg9C70L7QuSDQv9C+0LTQvNC10YHQsDog0L7QvdC4INCy0YvQsdGA0LDQvdGLCiAgICog0YHRgtGD0L/QtdC90Y/QvNC4INC/0LDQu9C40YLRgNGLLCDQuCDRhNC+0YDQvNGD0LvQsCDRgdC00LLQuNC90YPQu9CwINCx0YsgYXp1cmUtYWN0aXZlINC90LAgMzIg0LXQtNC40L3QuNGG0Ysg0LrQsNC90LDQu9CwLgogICAqLwogIC0tZ3ItcHJpbWFyeS1zb2xpZDogdmFyKC0tZ3ItcHJpbWFyeSk7CiAgLS1nci1wcmltYXJ5LXNvbGlkLWhvdmVyOiB2YXIoLS1nci1wcmltYXJ5LWhvdmVyKTsKICAtLWdyLXByaW1hcnktc29saWQtYWN0aXZlOiB2YXIoLS1nci1wcmltYXJ5LWFjdGl2ZSk7CiAgLS1nci1wcmltYXJ5LXNvbGlkLWZnOiB2YXIoLS1nci1wcmltYXJ5LWZnKTsKICAtLWdyLXN1Y2Nlc3Mtc29saWQ6ICMwNDc4NTc7CiAgLS1nci1zdWNjZXNzLXNvbGlkLWhvdmVyOiAjMDM2YzRkOwogIC0tZ3Itc3VjY2Vzcy1zb2xpZC1hY3RpdmU6ICMwMjVmNDQ7CiAgLS1nci1zdWNjZXNzLXNvbGlkLWZnOiB2YXIoLS1nci1zbGF0ZS0wKTsKICAtLWdyLXdhcm5pbmctc29saWQ6ICNjMjQxMGM7CiAgLS1nci13YXJuaW5nLXNvbGlkLWhvdmVyOiAjYjUzYjBhOwogIC0tZ3Itd2FybmluZy1zb2xpZC1hY3RpdmU6ICM5ZjMzMDc7CiAgLS1nci13YXJuaW5nLXNvbGlkLWZnOiB2YXIoLS1nci1zbGF0ZS0wKTsKICAtLWdyLWRhbmdlci1zb2xpZDogdmFyKC0tZ3ItZGFuZ2VyKTsKICAtLWdyLWRhbmdlci1zb2xpZC1ob3ZlcjogdmFyKC0tZ3ItZGFuZ2VyLWhvdmVyKTsKICAtLWdyLWRhbmdlci1zb2xpZC1hY3RpdmU6IHZhcigtLWdyLWRhbmdlci1hY3RpdmUpOwogIC0tZ3ItZGFuZ2VyLXNvbGlkLWZnOiB2YXIoLS1nci1kYW5nZXItZmcpOwogIC0tZ3ItaW5mby1zb2xpZDogdmFyKC0tZ3ItaW5mbyk7CiAgLS1nci1pbmZvLXNvbGlkLWhvdmVyOiB2YXIoLS1nci1pbmZvLWhvdmVyKTsKICAtLWdyLWluZm8tc29saWQtYWN0aXZlOiB2YXIoLS1nci1pbmZvLWFjdGl2ZSk7CiAgLS1nci1pbmZvLXNvbGlkLWZnOiB2YXIoLS1nci1pbmZvLWZnKTsKICAtLWdyLXNsYXRlLXNvbGlkOiB2YXIoLS1nci1zbGF0ZSk7CiAgLS1nci1zbGF0ZS1zb2xpZC1ob3ZlcjogdmFyKC0tZ3Itc2xhdGUtaG92ZXIpOwogIC0tZ3Itc2xhdGUtc29saWQtYWN0aXZlOiB2YXIoLS1nci1zbGF0ZS1hY3RpdmUpOwogIC0tZ3Itc2xhdGUtc29saWQtZmc6IHZhcigtLWdyLXNsYXRlLWZnKTsKICAtLWdyLWF6dXJlLXNvbGlkOiAjMDM2OWExOwogIC0tZ3ItYXp1cmUtc29saWQtaG92ZXI6ICMwNzU5ODU7CiAgLS1nci1henVyZS1zb2xpZC1hY3RpdmU6ICMwYzRhNmU7CiAgLS1nci1henVyZS1zb2xpZC1mZzogdmFyKC0tZ3Itc2xhdGUtMCk7CgogIC8qIERhdGEgdmlzdWFsaXphdGlvbiByb2xlcyAqLwogIC0tZ3ItY2hhcnQtMTogIzRmNDZlNTsKICAtLWdyLWNoYXJ0LTI6ICMxMGI5ODE7CiAgLS1nci1jaGFydC0zOiAjZjk3MzE2OwogIC0tZ3ItY2hhcnQtNDogIzYzNjZmMTsKICAtLWdyLWNoYXJ0LTU6ICM4YjVjZjY7CgogIC8qIE5hdmlnYXRpb24gcm9sZXMgKi8KICAtLWdyLXNpZGViYXI6ICNmZmZmZmY7CiAgLS1nci1zaWRlYmFyLWZnOiAjMGYxNzJhOwogIC0tZ3Itc2lkZWJhci1wcmltYXJ5OiAjNGY0NmU1OwogIC0tZ3Itc2lkZWJhci1wcmltYXJ5LWZnOiAjZmZmZmZmOwogIC0tZ3Itc2lkZWJhci1hY2NlbnQ6ICNmMWY1Zjk7CiAgLS1nci1zaWRlYmFyLWFjY2VudC1mZzogIzFlMjkzYjsKICAtLWdyLXNpZGViYXItYnJkOiAjZTJlOGYwOwogIC0tZ3Itc2lkZWJhci1yaW5nOiAjNjM2NmYxOwp9CgpAc3VwcG9ydHMgbm90IChjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsICMwMDAgNTAlLCAjZmZmKSkgewogIDpyb290IHsKICAgIC8qIEFjdGlvbiByb2xlIGZhbGxiYWNrcyAqLwogICAgLS1nci1wcmltYXJ5LWhvdmVyOiAjNGE0MmQ2OwogICAgLS1nci1wcmltYXJ5LWFjdGl2ZTogIzQ1M2VjNzsKICAgIC0tZ3Itc2Vjb25kYXJ5LWhvdmVyOiAjZDFkN2UwOwogICAgLS1nci1zZWNvbmRhcnktYWN0aXZlOiAjYzBjN2QwOwogICAgLS1nci1icmQtaG92ZXI6ICNhM2E5YjU7CiAgICAtLWdyLWJyZC1hY3RpdmU6ICM4MzhhOTc7CgogICAgLyogU3RhdHVzIHJvbGUgZmFsbGJhY2tzICovCiAgICAtLWdyLXN1Y2Nlc3MtaG92ZXI6ICMxMGFjN2E7CiAgICAtLWdyLXN1Y2Nlc3MtYWN0aXZlOiAjMTA5ZjczOwogICAgLS1nci13YXJuaW5nLWhvdmVyOiAjZTY2YzE4OwogICAgLS1nci13YXJuaW5nLWFjdGl2ZTogI2Q0NjQxOTsKICAgIC0tZ3ItZGFuZ2VyLWhvdmVyOiAjY2MyNTI2OwogICAgLS1nci1kYW5nZXItYWN0aXZlOiAjYmIyNDI3OwogICAgLS1nci1pbmZvLWhvdmVyOiAjMjM1ZGRjOwogICAgLS1nci1pbmZvLWFjdGl2ZTogIzIxNTdjYzsKICAgIC0tZ3Itc2xhdGUtaG92ZXI6ICM0MzUwNjQ7CiAgICAtLWdyLXNsYXRlLWFjdGl2ZTogIzNlNGI1ZjsKICAgIC0tZ3ItYXp1cmUtaG92ZXI6ICMwMTZmYWI7CiAgICAtLWdyLWF6dXJlLWFjdGl2ZTogIzAyNjhhMDsKICB9Cn0K", "" + import.meta.url).href,
|
|
94
|
-
dark: new URL("data:text/css;base64,LyoKICog0KHQk9CV0J3QldCg0JjQoNCe0JLQkNCd0J4gYHlhcm4gZ2VuZXJhdGU6dG9rZW5zYCDQuNC3IGB0b2tlbnMvKi5qc29uYCDigJQg0L/RgNCw0LLQutC4INC30LTQtdGB0Ywg0L/QvtGC0LXRgNGP0Y7RgtGB0Y8uCiAqINCc0LXQvdGP0YLRjCDQt9C90LDRh9C10L3QuNGPINC4INC60L7QvNC80LXQvdGC0LDRgNC40Lgg0L3Rg9C20L3QviDQsiBKU09OLCDQt9Cw0YLQtdC8INC/0LXRgNC10LPQtdC90LXRgNC40YDQvtCy0LDRgtGMLgogKi8KLyoKICog0KLRkdC80L3QsNGPINGC0LXQvNCwLiDQmtCw0L3QvtC9IOKAlCDQsNGC0YDQuNCx0YPRgiBgW2RhdGEtdGhlbWU9J2RhcmsnXWAg0L3QsCBgPGh0bWw+YCAo0LXQs9C+INGB0YLQsNCy0LjRggogKiBgdXNlVGhlbWVgL2Bpbml0VGhlbWVFYXJseWApLiDQodC10LvQtdC60YLQvtGAIGAuZGFya2Ag0L7RgdGC0LDQstC70LXQvSDQtNC70Y8g0LjQvdGC0LXRgNC+0L/QsCDRgQogKiBjbGFzcy3RgdGC0YDQsNGC0LXQs9C40LXQuSBUYWlsd2luZC9Vbm9DU1M6INC/0YDQuNC70L7QttC10L3QuNC1INC80L7QttC10YIg0YPQttC1INC/0LXRgNC10LrQu9GO0YfQsNGC0Ywg0YLQtdC80YMg0LjQvC4KICovCltkYXRhLXRoZW1lPSdkYXJrJ10sCi5kYXJrIHsKICAvKiBTdXJmYWNlIHJvbGVzICovCiAgLS1nci1iZzogIzBmMTcyYTsKICAtLWdyLWZnOiAjZjhmYWZjOwogIC0tZ3ItY2FyZDogIzFlMjkzYjsKICAtLWdyLWNhcmQtZmc6ICNmOGZhZmM7CiAgLS1nci1wb3BvdmVyOiAjMWUyOTNiOwogIC0tZ3ItcG9wb3Zlci1mZzogI2Y4ZmFmYzsKICAtLWdyLW11dGVkOiAjMzM0MTU1OwogIC8qCiAgICog0KHQuNC80LzQtdGC0YDQuNGH0L3QviBsaWdodDog0LzQuNC90LjQvNGD0Lwg0L/QviDRhNC+0L3RgyBgLS1nci1tdXRlZGAvYC0tZ3Itc2Vjb25kYXJ5YCAoIzMzNDE1NSkuCiAgICog0J/RgNC10LbQvdC40LkgIzk0YTNiOCDQtNCw0LLQsNC7INGC0LDQvCA0LjA0LCAjYWFiNmM3INC00LDRkdGCIDUuMDQuCiAgICovCiAgLS1nci1tdXRlZC1mZzogI2FhYjZjNzsKICAtLWdyLXNlY29uZGFyeTogIzMzNDE1NTsKICAtLWdyLXNlY29uZGFyeS1mZzogI2YxZjVmOTsKICAtLWdyLW92ZXJsYXktYmc6IHJnYigyIDYgMjMgLyAwLjY1KTsKICAtLWdyLWJyZDogIzMzNDE1NTsKICAtLWdyLWlucHV0OiAjMzM0MTU1OwogIC0tZ3ItcmluZzogIzgxOGNmODsKCiAgLyogU3RhdGUgcm9sZXMgKi8KICAtLWdyLWRpc2FibGVkLWJnOiAjMjczNTQ4OwogIC0tZ3ItZGlzYWJsZWQtZmc6ICM2NDc0OGI7CiAgLS1nci1kaXNhYmxlZC1icmQ6ICMzMzQxNTU7CiAgLyoKICAgKiDQntGI0LjQsdC60LAg0LLQsNC70LjQtNCw0YbQuNC4INC4INC00LXQutC+0YDQsNGC0LjQstC90YvQuSDRgtC+0L0gYHN0YXRlPSJkYW5nZXIiYCDigJQg0YDQsNC30L3Ri9C1INCy0LXRidC4LCDRhdC+0YLRjwogICAqINCy0YvQs9C70Y/QtNGP0YIg0L7QtNC40L3QsNC60L7QstC+INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLiDQodGB0YvQu9C60LAsINCwINC90LUg0LrQvtC/0LjRjyBoZXg6INGC0LXQvNCwLCDQv9C+0LzQtdC90Y/QstGI0LDRjwogICAqINGC0L7Qu9GM0LrQviBgLS1nci1kYW5nZXJgLCDQvdC1INC+0LHRj9C30LDQvdCwINC/0L7QvNC90LjRgtGMINC/0YDQviDQstGC0L7RgNC+0Lkg0L3QsNCx0L7RgCwg0LAg0YLQtdC80LAsINC60L7RgtC+0YDQvtC5CiAgICog0L3Rg9C20LXQvSDQvtGC0LTQtdC70YzQvdGL0Lkg0YbQstC10YIg0L7RiNC40LHQutC4LCDQv9C10YDQtdC60YDQsNGI0LjQstCw0LXRgiDRgtGA0Lgg0YDQvtC70Lgg0Lgg0L3QtSDRgtGA0L7Qs9Cw0LXRgiBkYW5nZXIt0YLQvtC9LgogICAqLwogIC0tZ3ItaW52YWxpZC1icmQ6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1nci1pbnZhbGlkLXJpbmc6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1nci1pbnZhbGlkLXRleHQ6IHZhcigtLWdyLWRhbmdlci10ZXh0KTsKCiAgLyogQWN0aW9uIHJvbGVzICovCiAgLyoKICAgKiBQcmltYXJ5INCx0YvQuyDQtdC00LjQvdGB0YLQstC10L3QvdGL0Lwg0YLQvtC90L7QvCwg0LLRi9C/0LDQtNCw0LLRiNC40Lwg0LjQtyDQutC+0L3QstC10L3RhtC40Lgg0YLRkdC80L3QvtC5INGC0LXQvNGLCiAgICogKNGB0LLQtdGC0LvQsNGPINC30LDQu9C40LLQutCwICsg0YLRkdC80L3Ri9C5INGC0LXQutGB0YIsINC60LDQuiDRgyBzdWNjZXNzL3dhcm5pbmcvZGFuZ2VyL2luZm8vYXp1cmUpOgogICAqINC+0YHRgtCw0LLQsNC70YHRjyDRgdCy0LXRgtC70L4t0YLRkdC80L3Ri9C8INC40L3QtNC40LPQviAjNjM2NmYxINGBINCx0LXQu9GL0Lwg0YLQtdC60YHRgtC+0Lwg0Lgg0L/RgNC+0LLQsNC70LjQstCw0Lsg0YHRgNCw0LfRgwogICAqINCy0YHQtSDRgtGA0Lgg0YDQvtC70Lgg4oCUINGC0LXQutGB0YIg0L3QsCDRhNC+0L3QtSA0LjAwLCDRgtC10LrRgdGCINC90LAg0LrQsNGA0YLQvtGH0LrQtSAzLjI3LCDQsdC10LvRi9C5INC90LAKICAgKiDQt9Cw0LvQuNCy0LrQtSA0LjQ3LiDQodCy0LXRgtC70YvQuSDQuNC90LTQuNCz0L4g0YEg0YLRkdC80L3Ri9C8IGAtZmdgINC00LDRkdGCIDYuMzggLyA1LjIzIC8gNi4zOC4KICAgKiDQndC1IGluZGlnby00MDAgKCM4MThjZjgpOiDQsiDRgtGDINGB0YLQvtGA0L7QvdGDINC70LXQttC40YIgYC0tZ3ItaW5mb2AsINC4INGD0LLQtdGB0YLQuCBwcmltYXJ5CiAgICog0YLRg9C00LAg0LfQvdCw0YfQuNC70L4g0LHRiyDQstC10YDQvdGD0YLRjCDRgdC70LjRj9C90LjQtSDQtNCy0YPRhSDRgtC+0L3QvtCyLCDRgNCw0LTQuCDRgNCw0LfQstC10LTQtdC90LjRjyDQutC+0YLQvtGA0L7Qs9C+IGluZm8KICAgKiDQuCDQv9C10YDQtdC60YDQsNGI0LXQvSDQsiDRgdC40L3QuNC5LgogICAqINCa0L3QvtC/0L7QuiDQvdC1INC60LDRgdCw0LXRgtGB0Y86IEdyQnV0dG9uINC30LDQtNCw0ZHRgiDRgdCy0L7QuSBgLS1nci1idXR0b24tcHJpbWFyeS1iZ2AuCiAgICovCiAgLS1nci1wcmltYXJ5OiAjOWQ4YmZhOwogIC0tZ3ItcHJpbWFyeS1mZzogIzBmMTcyYTsKICAtLWdyLWFjY2VudDogIzFlMWI0YjsKICAtLWdyLWFjY2VudC1mZzogI2M3ZDJmZTsKCiAgLyogU3RhdHVzIHJvbGVzICovCiAgLS1nci1zdWNjZXNzOiAjMzRkMzk5OwogIC0tZ3Itc3VjY2Vzcy1saWdodDogIzA2NGUzYjsKICAtLWdyLXN1Y2Nlc3MtZmc6ICMwZjE3MmE7CiAgLS1nci1wcmltYXJ5LXRleHQ6ICNjN2QyZmU7CiAgLS1nci1zdWNjZXNzLXRleHQ6ICM2ZWU3Yjc7CiAgLS1nci13YXJuaW5nOiAjZmI5MjNjOwogIC0tZ3Itd2FybmluZy1saWdodDogIzdjMmQxMjsKICAtLWdyLXdhcm5pbmctZmc6ICMwZjE3MmE7CiAgLS1nci13YXJuaW5nLXRleHQ6ICNmZGJhNzQ7CiAgLS1nci1kYW5nZXI6ICNmODcxNzE7CiAgLS1nci1kYW5nZXItbGlnaHQ6ICM3ZjFkMWQ7CiAgLS1nci1kYW5nZXItZmc6ICMwZjE3MmE7CiAgLS1nci1kYW5nZXItdGV4dDogI2ZjYTVhNTsKICAtLWdyLWluZm86ICM2MGE1ZmE7CiAgLS1nci1pbmZvLWxpZ2h0OiAjMWUzYThhOwogIC0tZ3ItaW5mby1mZzogIzBmMTcyYTsKICAtLWdyLWluZm8tdGV4dDogI2JmZGJmZTsKICAtLWdyLXNsYXRlOiAjOTRhM2I4OwogIC0tZ3Itc2xhdGUtbGlnaHQ6ICMzMzQxNTU7CiAgLS1nci1zbGF0ZS1mZzogIzBmMTcyYTsKICAtLWdyLXNsYXRlLXRleHQ6ICNjYmQ1ZTE7CiAgLS1nci1henVyZTogIzM4YmRmODsKICAtLWdyLWF6dXJlLWxpZ2h0OiAjMGM0YTZlOwogIC0tZ3ItYXp1cmUtZmc6ICMwZjE3MmE7CiAgLS1nci1henVyZS10ZXh0OiAjYmFlNmZkOwoKICAvKgogICAqIFNvbGlkIGZpbGwgcm9sZXMKICAgKgogICAqINCh0L/Qu9C+0YjQvdCw0Y8g0LfQsNC70LjQstC60LAg0LrQvdC+0L/QvtGH0L3QvtCz0L4g0LLQtdGB0LAg0Lgg0LXRkSDRgtC10LrRgdGCLgogICAqCiAgICog0JIg0YLRkdC80L3QvtC5INGC0LXQvNC1INGB0L7QsdGB0YLQstC10L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQvdGD0LbQvdGLINCy0YHQtdC8INGB0LXQvNC4INGC0L7QvdCw0Lw6INCz0LvQvtCx0LDQu9GM0L3Ri9C1CiAgICogYC0tZ3Ite3RvbmV9YCDQt9C00LXRgdGMIOKAlCDQv9Cw0YHRgtC10LvRjNC90YvQtSDQt9Cw0LvQuNCy0LrQuCDQv9C+0LQg0KLQgdCc0J3Qq9CZINGC0LXQutGB0YIsINCwINC60L3QvtC/0LrQsCDQvtCx0Y/Qt9Cw0L3QsAogICAqINC+0YHRgtCw0YLRjNGB0Y8g0L3QsNGB0YvRidC10L3QvdC+0Lkg0YHQviDRgdCy0LXRgtC70L7QuSDQv9C+0LTQv9C40YHRjNGOLgogICAqCiAgICogaG92ZXIg0LggYWN0aXZlINGD0LLQvtC00Y/RgiDQt9Cw0LvQuNCy0LrRgyDRgtC10LzQvdC10LUsINCwINC90LUg0YHQstC10YLQu9C10LU6INC+0LHRidCw0Y8g0YTQvtGA0LzRg9C70LAg0L/QvtC00LzQtdGB0LAg0LoKICAgKiBgLS1nci1mZ2Ag0LIg0YLRkdC80L3QvtC5INGC0LXQvNC1INC+0YHQstC10YLQu9GP0LvQsCDQsdGLINC60L3QvtC/0LrRgyDQv9C+
|
|
95
|
+
dark: new URL("data:text/css;base64,LyoKICog0KHQk9CV0J3QldCg0JjQoNCe0JLQkNCd0J4gYHlhcm4gZ2VuZXJhdGU6dG9rZW5zYCDQuNC3IGB0b2tlbnMvKi5qc29uYCDigJQg0L/RgNCw0LLQutC4INC30LTQtdGB0Ywg0L/QvtGC0LXRgNGP0Y7RgtGB0Y8uCiAqINCc0LXQvdGP0YLRjCDQt9C90LDRh9C10L3QuNGPINC4INC60L7QvNC80LXQvdGC0LDRgNC40Lgg0L3Rg9C20L3QviDQsiBKU09OLCDQt9Cw0YLQtdC8INC/0LXRgNC10LPQtdC90LXRgNC40YDQvtCy0LDRgtGMLgogKi8KLyoKICog0KLRkdC80L3QsNGPINGC0LXQvNCwLiDQmtCw0L3QvtC9IOKAlCDQsNGC0YDQuNCx0YPRgiBgW2RhdGEtdGhlbWU9J2RhcmsnXWAg0L3QsCBgPGh0bWw+YCAo0LXQs9C+INGB0YLQsNCy0LjRggogKiBgdXNlVGhlbWVgL2Bpbml0VGhlbWVFYXJseWApLiDQodC10LvQtdC60YLQvtGAIGAuZGFya2Ag0L7RgdGC0LDQstC70LXQvSDQtNC70Y8g0LjQvdGC0LXRgNC+0L/QsCDRgQogKiBjbGFzcy3RgdGC0YDQsNGC0LXQs9C40LXQuSBUYWlsd2luZC9Vbm9DU1M6INC/0YDQuNC70L7QttC10L3QuNC1INC80L7QttC10YIg0YPQttC1INC/0LXRgNC10LrQu9GO0YfQsNGC0Ywg0YLQtdC80YMg0LjQvC4KICovCltkYXRhLXRoZW1lPSdkYXJrJ10sCi5kYXJrIHsKICAvKiBTdXJmYWNlIHJvbGVzICovCiAgLS1nci1iZzogIzBmMTcyYTsKICAtLWdyLWZnOiAjZjhmYWZjOwogIC0tZ3ItY2FyZDogIzFlMjkzYjsKICAtLWdyLWNhcmQtZmc6ICNmOGZhZmM7CiAgLS1nci1wb3BvdmVyOiAjMWUyOTNiOwogIC0tZ3ItcG9wb3Zlci1mZzogI2Y4ZmFmYzsKICAtLWdyLW11dGVkOiAjMzM0MTU1OwogIC8qCiAgICog0KHQuNC80LzQtdGC0YDQuNGH0L3QviBsaWdodDog0LzQuNC90LjQvNGD0Lwg0L/QviDRhNC+0L3RgyBgLS1nci1tdXRlZGAvYC0tZ3Itc2Vjb25kYXJ5YCAoIzMzNDE1NSkuCiAgICog0J/RgNC10LbQvdC40LkgIzk0YTNiOCDQtNCw0LLQsNC7INGC0LDQvCA0LjA0LCAjYWFiNmM3INC00LDRkdGCIDUuMDQuCiAgICovCiAgLS1nci1tdXRlZC1mZzogI2FhYjZjNzsKICAtLWdyLXNlY29uZGFyeTogIzMzNDE1NTsKICAtLWdyLXNlY29uZGFyeS1mZzogI2YxZjVmOTsKICAtLWdyLW92ZXJsYXktYmc6IHJnYigyIDYgMjMgLyAwLjY1KTsKICAtLWdyLWJyZDogIzMzNDE1NTsKICAtLWdyLWlucHV0OiAjMzM0MTU1OwogIC0tZ3ItcmluZzogIzgxOGNmODsKCiAgLyogU3RhdGUgcm9sZXMgKi8KICAtLWdyLWRpc2FibGVkLWJnOiAjMjczNTQ4OwogIC0tZ3ItZGlzYWJsZWQtZmc6ICM2NDc0OGI7CiAgLS1nci1kaXNhYmxlZC1icmQ6ICMzMzQxNTU7CiAgLyoKICAgKiDQntGI0LjQsdC60LAg0LLQsNC70LjQtNCw0YbQuNC4INC4INC00LXQutC+0YDQsNGC0LjQstC90YvQuSDRgtC+0L0gYHN0YXRlPSJkYW5nZXIiYCDigJQg0YDQsNC30L3Ri9C1INCy0LXRidC4LCDRhdC+0YLRjwogICAqINCy0YvQs9C70Y/QtNGP0YIg0L7QtNC40L3QsNC60L7QstC+INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLiDQodGB0YvQu9C60LAsINCwINC90LUg0LrQvtC/0LjRjyBoZXg6INGC0LXQvNCwLCDQv9C+0LzQtdC90Y/QstGI0LDRjwogICAqINGC0L7Qu9GM0LrQviBgLS1nci1kYW5nZXJgLCDQvdC1INC+0LHRj9C30LDQvdCwINC/0L7QvNC90LjRgtGMINC/0YDQviDQstGC0L7RgNC+0Lkg0L3QsNCx0L7RgCwg0LAg0YLQtdC80LAsINC60L7RgtC+0YDQvtC5CiAgICog0L3Rg9C20LXQvSDQvtGC0LTQtdC70YzQvdGL0Lkg0YbQstC10YIg0L7RiNC40LHQutC4LCDQv9C10YDQtdC60YDQsNGI0LjQstCw0LXRgiDRgtGA0Lgg0YDQvtC70Lgg0Lgg0L3QtSDRgtGA0L7Qs9Cw0LXRgiBkYW5nZXIt0YLQvtC9LgogICAqLwogIC0tZ3ItaW52YWxpZC1icmQ6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1nci1pbnZhbGlkLXJpbmc6IHZhcigtLWdyLWRhbmdlcik7CiAgLS1nci1pbnZhbGlkLXRleHQ6IHZhcigtLWdyLWRhbmdlci10ZXh0KTsKCiAgLyogQWN0aW9uIHJvbGVzICovCiAgLyoKICAgKiBQcmltYXJ5INCx0YvQuyDQtdC00LjQvdGB0YLQstC10L3QvdGL0Lwg0YLQvtC90L7QvCwg0LLRi9C/0LDQtNCw0LLRiNC40Lwg0LjQtyDQutC+0L3QstC10L3RhtC40Lgg0YLRkdC80L3QvtC5INGC0LXQvNGLCiAgICogKNGB0LLQtdGC0LvQsNGPINC30LDQu9C40LLQutCwICsg0YLRkdC80L3Ri9C5INGC0LXQutGB0YIsINC60LDQuiDRgyBzdWNjZXNzL3dhcm5pbmcvZGFuZ2VyL2luZm8vYXp1cmUpOgogICAqINC+0YHRgtCw0LLQsNC70YHRjyDRgdCy0LXRgtC70L4t0YLRkdC80L3Ri9C8INC40L3QtNC40LPQviAjNjM2NmYxINGBINCx0LXQu9GL0Lwg0YLQtdC60YHRgtC+0Lwg0Lgg0L/RgNC+0LLQsNC70LjQstCw0Lsg0YHRgNCw0LfRgwogICAqINCy0YHQtSDRgtGA0Lgg0YDQvtC70Lgg4oCUINGC0LXQutGB0YIg0L3QsCDRhNC+0L3QtSA0LjAwLCDRgtC10LrRgdGCINC90LAg0LrQsNGA0YLQvtGH0LrQtSAzLjI3LCDQsdC10LvRi9C5INC90LAKICAgKiDQt9Cw0LvQuNCy0LrQtSA0LjQ3LiDQodCy0LXRgtC70YvQuSDQuNC90LTQuNCz0L4g0YEg0YLRkdC80L3Ri9C8IGAtZmdgINC00LDRkdGCIDYuMzggLyA1LjIzIC8gNi4zOC4KICAgKiDQndC1IGluZGlnby00MDAgKCM4MThjZjgpOiDQsiDRgtGDINGB0YLQvtGA0L7QvdGDINC70LXQttC40YIgYC0tZ3ItaW5mb2AsINC4INGD0LLQtdGB0YLQuCBwcmltYXJ5CiAgICog0YLRg9C00LAg0LfQvdCw0YfQuNC70L4g0LHRiyDQstC10YDQvdGD0YLRjCDRgdC70LjRj9C90LjQtSDQtNCy0YPRhSDRgtC+0L3QvtCyLCDRgNCw0LTQuCDRgNCw0LfQstC10LTQtdC90LjRjyDQutC+0YLQvtGA0L7Qs9C+IGluZm8KICAgKiDQuCDQv9C10YDQtdC60YDQsNGI0LXQvSDQsiDRgdC40L3QuNC5LgogICAqINCa0L3QvtC/0L7QuiDQvdC1INC60LDRgdCw0LXRgtGB0Y86IEdyQnV0dG9uINC30LDQtNCw0ZHRgiDRgdCy0L7QuSBgLS1nci1idXR0b24tcHJpbWFyeS1iZ2AuCiAgICovCiAgLS1nci1wcmltYXJ5OiAjOWQ4YmZhOwogIC0tZ3ItcHJpbWFyeS1mZzogIzBmMTcyYTsKICAtLWdyLWFjY2VudDogIzFlMWI0YjsKICAtLWdyLWFjY2VudC1mZzogI2M3ZDJmZTsKCiAgLyogU3RhdHVzIHJvbGVzICovCiAgLS1nci1zdWNjZXNzOiAjMzRkMzk5OwogIC0tZ3Itc3VjY2Vzcy1saWdodDogIzA2NGUzYjsKICAtLWdyLXN1Y2Nlc3MtZmc6ICMwZjE3MmE7CiAgLS1nci1wcmltYXJ5LXRleHQ6ICNjN2QyZmU7CiAgLS1nci1zdWNjZXNzLXRleHQ6ICM2ZWU3Yjc7CiAgLS1nci13YXJuaW5nOiAjZmI5MjNjOwogIC0tZ3Itd2FybmluZy1saWdodDogIzdjMmQxMjsKICAtLWdyLXdhcm5pbmctZmc6ICMwZjE3MmE7CiAgLS1nci13YXJuaW5nLXRleHQ6ICNmZGJhNzQ7CiAgLS1nci1kYW5nZXI6ICNmODcxNzE7CiAgLS1nci1kYW5nZXItbGlnaHQ6ICM3ZjFkMWQ7CiAgLS1nci1kYW5nZXItZmc6ICMwZjE3MmE7CiAgLS1nci1kYW5nZXItdGV4dDogI2ZjYTVhNTsKICAtLWdyLWluZm86ICM2MGE1ZmE7CiAgLS1nci1pbmZvLWxpZ2h0OiAjMWUzYThhOwogIC0tZ3ItaW5mby1mZzogIzBmMTcyYTsKICAtLWdyLWluZm8tdGV4dDogI2JmZGJmZTsKICAtLWdyLXNsYXRlOiAjOTRhM2I4OwogIC0tZ3Itc2xhdGUtbGlnaHQ6ICMzMzQxNTU7CiAgLS1nci1zbGF0ZS1mZzogIzBmMTcyYTsKICAtLWdyLXNsYXRlLXRleHQ6ICNjYmQ1ZTE7CiAgLS1nci1henVyZTogIzM4YmRmODsKICAtLWdyLWF6dXJlLWxpZ2h0OiAjMGM0YTZlOwogIC0tZ3ItYXp1cmUtZmc6ICMwZjE3MmE7CiAgLS1nci1henVyZS10ZXh0OiAjYmFlNmZkOwoKICAvKgogICAqIFNvbGlkIGZpbGwgcm9sZXMKICAgKgogICAqINCh0L/Qu9C+0YjQvdCw0Y8g0LfQsNC70LjQstC60LAg0LrQvdC+0L/QvtGH0L3QvtCz0L4g0LLQtdGB0LAg0Lgg0LXRkSDRgtC10LrRgdGCLgogICAqCiAgICog0JIg0YLRkdC80L3QvtC5INGC0LXQvNC1INGB0L7QsdGB0YLQstC10L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjyDQvdGD0LbQvdGLINCy0YHQtdC8INGB0LXQvNC4INGC0L7QvdCw0Lw6INCz0LvQvtCx0LDQu9GM0L3Ri9C1CiAgICogYC0tZ3Ite3RvbmV9YCDQt9C00LXRgdGMIOKAlCDQv9Cw0YHRgtC10LvRjNC90YvQtSDQt9Cw0LvQuNCy0LrQuCDQv9C+0LQg0KLQgdCc0J3Qq9CZINGC0LXQutGB0YIsINCwINC60L3QvtC/0LrQsCDQvtCx0Y/Qt9Cw0L3QsAogICAqINC+0YHRgtCw0YLRjNGB0Y8g0L3QsNGB0YvRidC10L3QvdC+0Lkg0YHQviDRgdCy0LXRgtC70L7QuSDQv9C+0LTQv9C40YHRjNGOLgogICAqCiAgICogaG92ZXIg0LggYWN0aXZlINGD0LLQvtC00Y/RgiDQt9Cw0LvQuNCy0LrRgyDRgtC10LzQvdC10LUsINCwINC90LUg0YHQstC10YLQu9C10LU6INC+0LHRidCw0Y8g0YTQvtGA0LzRg9C70LAg0L/QvtC00LzQtdGB0LAg0LoKICAgKiBgLS1nci1mZ2Ag0LIg0YLRkdC80L3QvtC5INGC0LXQvNC1INC+0YHQstC10YLQu9GP0LvQsCDQsdGLINC60L3QvtC/0LrRgyDQv9C+0LQg0LrRg9GA0YHQvtGA0L7QvC4KICAgKi8KICAtLWdyLXByaW1hcnktc29saWQ6ICM1OTVjZTY7CiAgLS1nci1wcmltYXJ5LXNvbGlkLWhvdmVyOiAjNTA1M2RkOwogIC0tZ3ItcHJpbWFyeS1zb2xpZC1hY3RpdmU6ICM0NzRhY2Y7CiAgLS1nci1wcmltYXJ5LXNvbGlkLWZnOiB2YXIoLS1nci1zbGF0ZS0wKTsKICAtLWdyLXN1Y2Nlc3Mtc29saWQ6ICMwNDc4NTc7CiAgLS1nci1zdWNjZXNzLXNvbGlkLWhvdmVyOiAjMDM2YzRkOwogIC0tZ3Itc3VjY2Vzcy1zb2xpZC1hY3RpdmU6ICMwMjVmNDQ7CiAgLS1nci1zdWNjZXNzLXNvbGlkLWZnOiB2YXIoLS1nci1zbGF0ZS01MCk7CiAgLS1nci13YXJuaW5nLXNvbGlkOiAjYzI0MTBjOwogIC0tZ3Itd2FybmluZy1zb2xpZC1ob3ZlcjogI2I1M2IwYTsKICAtLWdyLXdhcm5pbmctc29saWQtYWN0aXZlOiAjOWYzMzA3OwogIC0tZ3Itd2FybmluZy1zb2xpZC1mZzogdmFyKC0tZ3Itc2xhdGUtNTApOwogIC0tZ3ItZGFuZ2VyLXNvbGlkOiAjYjkxYzFjOwogIC0tZ3ItZGFuZ2VyLXNvbGlkLWhvdmVyOiAjYTkxOTE5OwogIC0tZ3ItZGFuZ2VyLXNvbGlkLWFjdGl2ZTogIzkzMTUxNTsKICAtLWdyLWRhbmdlci1zb2xpZC1mZzogdmFyKC0tZ3Itc2xhdGUtNTApOwogIC0tZ3ItaW5mby1zb2xpZDogIzFkNGVkODsKICAtLWdyLWluZm8tc29saWQtaG92ZXI6ICMxZTQwYWY7CiAgLS1nci1pbmZvLXNvbGlkLWFjdGl2ZTogIzFlM2E4YTsKICAtLWdyLWluZm8tc29saWQtZmc6IHZhcigtLWdyLXNsYXRlLTUwKTsKICAtLWdyLXNsYXRlLXNvbGlkOiB2YXIoLS1nci1zbGF0ZS02MDApOwogIC0tZ3Itc2xhdGUtc29saWQtaG92ZXI6IHZhcigtLWdyLXNsYXRlLTcwMCk7CiAgLS1nci1zbGF0ZS1zb2xpZC1hY3RpdmU6IHZhcigtLWdyLXNsYXRlLTgwMCk7CiAgLS1nci1zbGF0ZS1zb2xpZC1mZzogdmFyKC0tZ3Itc2xhdGUtNTApOwogIC0tZ3ItYXp1cmUtc29saWQ6ICMwMzY5YTE7CiAgLS1nci1henVyZS1zb2xpZC1ob3ZlcjogIzA3NTk4NTsKICAtLWdyLWF6dXJlLXNvbGlkLWFjdGl2ZTogIzBjNGE2ZTsKICAtLWdyLWF6dXJlLXNvbGlkLWZnOiB2YXIoLS1nci1zbGF0ZS01MCk7CgogIC8qIERhdGEgdmlzdWFsaXphdGlvbiByb2xlcyAqLwogIC0tZ3ItY2hhcnQtMTogIzYzNjZmMTsKICAtLWdyLWNoYXJ0LTI6ICMzNGQzOTk7CiAgLS1nci1jaGFydC0zOiAjZmI5MjNjOwogIC0tZ3ItY2hhcnQtNDogIzgxOGNmODsKICAtLWdyLWNoYXJ0LTU6ICNhNzhiZmE7CgogIC8qIE5hdmlnYXRpb24gcm9sZXMgKi8KICAtLWdyLXNpZGViYXI6ICMxZTI5M2I7CiAgLS1nci1zaWRlYmFyLWZnOiAjZjhmYWZjOwogIC8qCiAgICog0JHQtdC70YvQuSDRgtC10LrRgdGCINC90LAgIzYzNjZmMSDQtNCw0ZHRgiA0LjQ3OjEg4oCUINGC0L7RgiDQttC1INC90LXQtNC+0LvRkdGCIEFBLCDQuNC3LdC30LAg0LrQvtGC0L7RgNC+0LPQvgogICAqINC/0LXRgNC10LrRgNCw0YjQtdC9IGAtLWdyLXByaW1hcnlgICjQt9Cw0LzQtdGC0LrQsCDQstGL0YjQtSkuINCX0LTQtdGB0Ywg0LLQt9GP0YIg0LzQuNC90LjQvNCw0LvRjNC90YvQuSDRiNCw0LMsINGB0L3QuNC80LDRjtGJ0LjQuQogICAqINC90LXQtNC+0LvRkdGCINCx0LXQtyDRgdC80LXQvdGLINCy0LjQtNCwOiA0LjUyOjEg0L/RgNC4IM6URSAwLjQyINC6INC/0YDQtdC20L3QtdC80YMg0YbQstC10YLRgy4KICAgKi8KICAtLWdyLXNpZGViYXItcHJpbWFyeTogIzYzNjVmMDsKICAtLWdyLXNpZGViYXItcHJpbWFyeS1mZzogI2ZmZmZmZjsKICAtLWdyLXNpZGViYXItYWNjZW50OiAjMzM0MTU1OwogIC0tZ3Itc2lkZWJhci1hY2NlbnQtZmc6ICNmMWY1Zjk7CiAgLS1nci1zaWRlYmFyLWJyZDogIzMzNDE1NTsKICAtLWdyLXNpZGViYXItcmluZzogIzgxOGNmODsKfQoKQHN1cHBvcnRzIG5vdCAoY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCAjMDAwIDUwJSwgI2ZmZikpIHsKICBbZGF0YS10aGVtZT0nZGFyayddLAogIC5kYXJrIHsKICAgIC8qIEFjdGlvbiByb2xlIGZhbGxiYWNrcyAqLwogICAgLS1nci1wcmltYXJ5LWhvdmVyOiAjYTQ5NGZhOwogICAgLS1nci1wcmltYXJ5LWFjdGl2ZTogI2FjOWRmYTsKICAgIC0tZ3Itc2Vjb25kYXJ5LWhvdmVyOiAjNDM1MDYyOwogICAgLS1nci1zZWNvbmRhcnktYWN0aXZlOiAjNTM1ZjcwOwogICAgLS1nci1icmQtaG92ZXI6ICM2ZTc5ODc7CiAgICAtLWdyLWJyZC1hY3RpdmU6ICM4Yzk0YTA7CgogICAgLyogU3RhdHVzIHJvbGUgZmFsbGJhY2tzICovCiAgICAtLWdyLXN1Y2Nlc3MtaG92ZXI6ICM0NGQ2YTE7CiAgICAtLWdyLXN1Y2Nlc3MtYWN0aXZlOiAjNTNkOWE5OwogICAgLS1nci13YXJuaW5nLWhvdmVyOiAjZmI5YTRiOwogICAgLS1nci13YXJuaW5nLWFjdGl2ZTogI2ZiYTM1YjsKICAgIC0tZ3ItZGFuZ2VyLWhvdmVyOiAjZjg3YzdjOwogICAgLS1nci1kYW5nZXItYWN0aXZlOiAjZjg4Nzg3OwogICAgLS1nci1pbmZvLWhvdmVyOiAjNmNhY2ZhOwogICAgLS1nci1pbmZvLWFjdGl2ZTogIzc4YjNmYTsKICAgIC0tZ3Itc2xhdGUtaG92ZXI6ICM5Y2FhYmQ7CiAgICAtLWdyLXNsYXRlLWFjdGl2ZTogI2E0YjFjMzsKICAgIC0tZ3ItYXp1cmUtaG92ZXI6ICM0N2MyZjg7CiAgICAtLWdyLWF6dXJlLWFjdGl2ZTogIzU3YzdmOTsKICB9Cn0K", "" + import.meta.url).href
|
|
95
96
|
},
|
|
96
97
|
defaultThemes: granularityDefaultThemes
|
|
97
98
|
};
|
|
@@ -155,6 +156,7 @@ var granularityComponentConfigs = {
|
|
|
155
156
|
GrSidebar: grSidebarConfig,
|
|
156
157
|
GrSkeleton: grSkeletonConfig,
|
|
157
158
|
GrSlider: grSliderConfig,
|
|
159
|
+
GrSortableList: grSortableListConfig,
|
|
158
160
|
GrSplitter: grSplitterConfig,
|
|
159
161
|
GrStatistic: grStatisticConfig,
|
|
160
162
|
GrSwitch: grSwitchConfig,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"granular-provider-C6uAujdJ.js","names":[],"sources":["../../src/components/GrDialog/config.ts","../../src/components/GrResponseErrorBanner/config.ts","../../src/granular-provider/shared.ts","../../src/granular-provider/index.ts"],"sourcesContent":["import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nimport { grDialogSafelist } from './safelist'\n\nexport const grDialogConfig = defineGranularComponent(import.meta.url, {\n name: 'GrDialog',\n dependencies: ['GrButton', 'GrModal'],\n safelist: grDialogSafelist,\n})\n","import { defineGranularComponent } from '@feugene/unocss-preset-granular/contract'\n\nexport const grResponseErrorBannerConfig = defineGranularComponent(import.meta.url, {\n name: 'GrResponseErrorBanner',\n dependencies: ['GrAlert', 'GrButton'],\n})\n","// `id`, `theme.*`, `packageBaseUrl` и реестр компонентов провайдера.\n//\n// Все `new URL('../styles/...', import.meta.url)` обязаны лежать именно здесь:\n// `shared.ts` в одной директории с `index.ts` / `node.ts`, поэтому\n// относительные пути совпадают. Для браузера безопасно — бандлеры\n// транслируют такие литералы в статические asset-URL.\n//\n// `apps/showcase/scripts/generate-component-api.mjs` читает список компонентов\n// из `Object.keys(granularityComponentConfigs)` через vite SSR.\nimport {\n defineGranularProvider,\n type GranularComponentDescriptor,\n type GranularProvider,\n resolvePackageBaseUrl,\n} from '@feugene/unocss-preset-granular/contract'\n// <granularity:components:imports> — блок генерируется `yarn generate:registry`\nimport { grAlertConfig } from '../components/GrAlert/config'\nimport { grAutocompleteConfig } from '../components/GrAutocomplete/config'\nimport { grAvatarConfig } from '../components/GrAvatar/config'\nimport { grBadgeConfig } from '../components/GrBadge/config'\nimport { grBadgeWrapConfig } from '../components/GrBadgeWrap/config'\nimport { grBottomNavConfig } from '../components/GrBottomNav/config'\nimport { grBreadcrumbsConfig } from '../components/GrBreadcrumbs/config'\nimport { grButtonConfig } from '../components/GrButton/config'\nimport { grButtonGroupConfig } from '../components/GrButtonGroup/config'\nimport { grCardConfig } from '../components/GrCard/config'\nimport { grCheckboxConfig } from '../components/GrCheckbox/config'\nimport { grCheckboxGroupConfig } from '../components/GrCheckboxGroup/config'\nimport { grCollapseConfig } from '../components/GrCollapse/config'\nimport { grColorPickerConfig } from '../components/GrColorPicker/config'\nimport { grCommandPaletteConfig } from '../components/GrCommandPalette/config'\nimport { grConfigProviderConfig } from '../components/GrConfigProvider/config'\nimport { grConfirmDialogConfig } from '../components/GrConfirmDialog/config'\nimport { grDataTableConfig } from '../components/GrDataTable/config'\nimport { grDialogConfig } from '../components/GrDialog/config'\nimport { grDialogServiceConfig } from '../components/GrDialogService/config'\nimport { grDividerConfig } from '../components/GrDivider/config'\nimport { grDrawerConfig } from '../components/GrDrawer/config'\nimport { grDropdownConfig } from '../components/GrDropdown/config'\nimport { grDropdownMenuConfig } from '../components/GrDropdownMenu/config'\nimport { grEmptyStateConfig } from '../components/GrEmptyState/config'\nimport { grFileUploadConfig } from '../components/GrFileUpload/config'\nimport { grFormConfig } from '../components/GrForm/config'\nimport { grFormFieldConfig } from '../components/GrFormField/config'\nimport { grFormFileConfig } from '../components/GrFormFile/config'\nimport { grFormSectionConfig } from '../components/GrFormSection/config'\nimport { grIconConfig } from '../components/GrIcon/config'\nimport { grImageViewerConfig } from '../components/GrImageViewer/config'\nimport { grInputConfig } from '../components/GrInput/config'\nimport { grInputTagConfig } from '../components/GrInputTag/config'\nimport { grKbdConfig } from '../components/GrKbd/config'\nimport { grLinkConfig } from '../components/GrLink/config'\nimport { grListConfig } from '../components/GrList/config'\nimport { grLoadingConfig } from '../components/GrLoading/config'\nimport { grModalConfig } from '../components/GrModal/config'\nimport { grNavbarConfig } from '../components/GrNavbar/config'\nimport { grNumberInputConfig } from '../components/GrNumberInput/config'\nimport { grPaginationConfig } from '../components/GrPagination/config'\nimport { grPopoverConfig } from '../components/GrPopover/config'\nimport { grProgressBarConfig } from '../components/GrProgressBar/config'\nimport { grProgressCircleConfig } from '../components/GrProgressCircle/config'\nimport { grPromptDialogConfig } from '../components/GrPromptDialog/config'\nimport { grRadioConfig } from '../components/GrRadio/config'\nimport { grRadioGroupConfig } from '../components/GrRadioGroup/config'\nimport { grRatingConfig } from '../components/GrRating/config'\nimport { grResponseErrorBannerConfig } from '../components/GrResponseErrorBanner/config'\nimport { grSegmentedConfig } from '../components/GrSegmented/config'\nimport { grSelectConfig } from '../components/GrSelect/config'\nimport { grSidebarConfig } from '../components/GrSidebar/config'\nimport { grSkeletonConfig } from '../components/GrSkeleton/config'\nimport { grSliderConfig } from '../components/GrSlider/config'\nimport { grSortableListConfig } from '../components/GrSortableList/config'\nimport { grSplitterConfig } from '../components/GrSplitter/config'\nimport { grStatisticConfig } from '../components/GrStatistic/config'\nimport { grSwitchConfig } from '../components/GrSwitch/config'\nimport { grTableConfig } from '../components/GrTable/config'\nimport { grTabPanelsConfig } from '../components/GrTabPanels/config'\nimport { grTabsConfig } from '../components/GrTabs/config'\nimport { grTextareaConfig } from '../components/GrTextarea/config'\nimport { grTimelineConfig } from '../components/GrTimeline/config'\nimport { grToasterConfig } from '../components/GrToaster/config'\nimport { grTooltipConfig } from '../components/GrTooltip/config'\nimport { grTreeConfig } from '../components/GrTree/config'\nimport { grTreeSelectConfig } from '../components/GrTreeSelect/config'\n// </granularity:components:imports>\n\n/** Идентификатор провайдера — совпадает с именем пакета. */\nexport const GRANULARITY_PROVIDER_ID = '@feugene/granularity'\n\n// Не заменять на `new URL('..', import.meta.url)`: Vite и rolldown распознают\n// этот литерал и подставляют `data:`-URL, после чего scan-директории пустеют.\nconst packageBaseUrl = resolvePackageBaseUrl(import.meta.url)\n\n/** Встроенные темы пакета. Единственный источник правды о списке тем. */\nexport const granularityThemeNames = ['light', 'dark'] as const\nexport type GranularityThemeName = (typeof granularityThemeNames)[number]\n\n/** Темы, активные по умолчанию, если окружение не переопределяет выбор. */\nexport const granularityDefaultThemes: readonly GranularityThemeName[] = ['light']\n\nconst theme = {\n baseCssUrl: new URL('../styles/base.css', import.meta.url).href,\n tokensCssUrl: new URL('../styles/tokens.css', import.meta.url).href,\n themes: {\n light: new URL('../styles/themes/light.css', import.meta.url).href,\n dark: new URL('../styles/themes/dark.css', import.meta.url).href,\n },\n defaultThemes: granularityDefaultThemes,\n} as const\n\n/**\n * Реестр публичных компонентов. Ключи совпадают с subpath-экспортом\n * `@feugene/granularity/components/<Name>`.\n */\nexport const granularityComponentConfigs = {\n // <granularity:components:registry> — блок генерируется `yarn generate:registry`\n GrAlert: grAlertConfig,\n GrAutocomplete: grAutocompleteConfig,\n GrAvatar: grAvatarConfig,\n GrBadge: grBadgeConfig,\n GrBadgeWrap: grBadgeWrapConfig,\n GrBottomNav: grBottomNavConfig,\n GrBreadcrumbs: grBreadcrumbsConfig,\n GrButton: grButtonConfig,\n GrButtonGroup: grButtonGroupConfig,\n GrCard: grCardConfig,\n GrCheckbox: grCheckboxConfig,\n GrCheckboxGroup: grCheckboxGroupConfig,\n GrCollapse: grCollapseConfig,\n GrColorPicker: grColorPickerConfig,\n GrCommandPalette: grCommandPaletteConfig,\n GrConfigProvider: grConfigProviderConfig,\n GrConfirmDialog: grConfirmDialogConfig,\n GrDataTable: grDataTableConfig,\n GrDialog: grDialogConfig,\n GrDialogService: grDialogServiceConfig,\n GrDivider: grDividerConfig,\n GrDrawer: grDrawerConfig,\n GrDropdown: grDropdownConfig,\n GrDropdownMenu: grDropdownMenuConfig,\n GrEmptyState: grEmptyStateConfig,\n GrFileUpload: grFileUploadConfig,\n GrForm: grFormConfig,\n GrFormField: grFormFieldConfig,\n GrFormFile: grFormFileConfig,\n GrFormSection: grFormSectionConfig,\n GrIcon: grIconConfig,\n GrImageViewer: grImageViewerConfig,\n GrInput: grInputConfig,\n GrInputTag: grInputTagConfig,\n GrKbd: grKbdConfig,\n GrLink: grLinkConfig,\n GrList: grListConfig,\n GrLoading: grLoadingConfig,\n GrModal: grModalConfig,\n GrNavbar: grNavbarConfig,\n GrNumberInput: grNumberInputConfig,\n GrPagination: grPaginationConfig,\n GrPopover: grPopoverConfig,\n GrProgressBar: grProgressBarConfig,\n GrProgressCircle: grProgressCircleConfig,\n GrPromptDialog: grPromptDialogConfig,\n GrRadio: grRadioConfig,\n GrRadioGroup: grRadioGroupConfig,\n GrRating: grRatingConfig,\n GrResponseErrorBanner: grResponseErrorBannerConfig,\n GrSegmented: grSegmentedConfig,\n GrSelect: grSelectConfig,\n GrSidebar: grSidebarConfig,\n GrSkeleton: grSkeletonConfig,\n GrSlider: grSliderConfig,\n GrSortableList: grSortableListConfig,\n GrSplitter: grSplitterConfig,\n GrStatistic: grStatisticConfig,\n GrSwitch: grSwitchConfig,\n GrTable: grTableConfig,\n GrTabPanels: grTabPanelsConfig,\n GrTabs: grTabsConfig,\n GrTextarea: grTextareaConfig,\n GrTimeline: grTimelineConfig,\n GrToaster: grToasterConfig,\n GrTooltip: grTooltipConfig,\n GrTree: grTreeConfig,\n GrTreeSelect: grTreeSelectConfig,\n // </granularity:components:registry>\n}\n\nexport type GranularityComponentName = keyof typeof granularityComponentConfigs\n\n/** Базовый набор компонентов в порядке реестра. */\nconst baseComponents: readonly GranularComponentDescriptor[] = Object.values(\n granularityComponentConfigs,\n)\n\n/**\n * Собирает granular-provider пакета.\n *\n * `overrides` — точка расширения для потребителя: дескриптор с именем из\n * базового реестра заменяет его, остальные дописываются в конец.\n */\nexport function createGranularityProvider(\n overrides: readonly GranularComponentDescriptor[] = [],\n): GranularProvider {\n const overrideByName = new Map(\n overrides.map(component => [component.name, component]),\n )\n const components: GranularComponentDescriptor[] = [\n ...baseComponents.map(component => overrideByName.get(component.name) ?? component),\n ...overrides.filter(component => !baseComponents.some(base => base.name === component.name)),\n ]\n\n return defineGranularProvider({\n id: GRANULARITY_PROVIDER_ID,\n contractVersion: 1,\n packageBaseUrl,\n components,\n theme,\n })\n}\n","import { createGranularityProvider } from './shared'\n\nexport * from './shared'\n\nexport const granularityProvider = createGranularityProvider()\n\nexport default granularityProvider\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAa,iBAAiB,wBAAwB,OAAO,KAAK,KAAK;CACrE,MAAM;CACN,cAAc,CAAC,YAAY,SAAS;CACpC,UAAU;AACZ,CAAC;;;ACND,IAAa,8BAA8B,wBAAwB,OAAO,KAAK,KAAK;CAClF,MAAM;CACN,cAAc,CAAC,WAAW,UAAU;AACtC,CAAC;;;;ACkFD,IAAa,0BAA0B;AAIvC,IAAM,iBAAiB,sBAAsB,OAAO,KAAK,GAAG;;AAG5D,IAAa,wBAAwB,CAAC,SAAS,MAAM;;AAIrD,IAAa,2BAA4D,CAAC,OAAO;AAEjF,IAAM,QAAQ;CACZ,YAAY,IAAA,IAAA,q5KAAA,KAAA,OAAA,KAAA,GAAA,CAA8C,CAAC;CAC3D,cAAc,IAAA,IAAA,ykXAAA,KAAA,OAAA,KAAA,GAAA,CAAgD,CAAC;CAC/D,QAAQ;EACN,OAAO,IAAA,IAAA,qjYAAA,KAAA,OAAA,KAAA,GAAA,CAAsD,CAAC;EAC9D,MAAM,IAAA,IAAA,yxSAAA,KAAA,OAAA,KAAA,GAAA,CAAqD,CAAC;CAC9D;CACA,eAAe;AACjB;;;;;AAMA,IAAa,8BAA8B;CAEzC,SAAS;CACT,gBAAgB;CAChB,UAAU;CACV,SAAS;CACT,aAAa;CACb,aAAa;CACb,eAAe;CACf,UAAU;CACV,eAAe;CACf,QAAQ;CACR,YAAY;CACZ,iBAAiB;CACjB,YAAY;CACZ,eAAe;CACf,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,cAAc;CACd,QAAQ;CACR,aAAa;CACb,YAAY;CACZ,eAAe;CACf,QAAQ;CACR,eAAe;CACf,SAAS;CACT,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,eAAe;CACf,cAAc;CACd,WAAW;CACX,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,cAAc;CACd,UAAU;CACV,uBAAuB;CACvB,aAAa;CACb,UAAU;CACV,WAAW;CACX,YAAY;CACZ,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,UAAU;CACV,SAAS;CACT,aAAa;CACb,QAAQ;CACR,YAAY;CACZ,YAAY;CACZ,WAAW;CACX,WAAW;CACX,QAAQ;CACR,cAAc;AAEhB;;AAKA,IAAM,iBAAyD,OAAO,OACpE,2BACF;;;;;;;AAQA,SAAgB,0BACd,YAAoD,CAAC,GACnC;CAClB,MAAM,iBAAiB,IAAI,IACzB,UAAU,KAAI,cAAa,CAAC,UAAU,MAAM,SAAS,CAAC,CACxD;CAMA,OAAO,uBAAuB;EAC5B,IAAI;EACJ,iBAAiB;EACjB;EACA,aARA,GAAG,eAAe,KAAI,cAAa,eAAe,IAAI,UAAU,IAAI,KAAK,SAAS,GAClF,GAAG,UAAU,QAAO,cAAa,CAAC,eAAe,MAAK,SAAQ,KAAK,SAAS,UAAU,IAAI,CAAC,CAO3F;EACA;CACF,CAAC;AACH;;;ACtNA,IAAa,sBAAsB,0BAA0B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createElementBlock, createStaticVNode, markRaw, openBlock } from "vue";
|
|
2
|
+
//#region ~icons/lucide/grip-vertical
|
|
3
|
+
var _hoisted_1 = {
|
|
4
|
+
viewBox: "0 0 24 24",
|
|
5
|
+
width: "1.2em",
|
|
6
|
+
height: "1.2em"
|
|
7
|
+
};
|
|
8
|
+
function render$1(_ctx, _cache) {
|
|
9
|
+
return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [createStaticVNode("<g fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"><circle cx=\"9\" cy=\"12\" r=\"1\"></circle><circle cx=\"9\" cy=\"5\" r=\"1\"></circle><circle cx=\"9\" cy=\"19\" r=\"1\"></circle><circle cx=\"15\" cy=\"12\" r=\"1\"></circle><circle cx=\"15\" cy=\"5\" r=\"1\"></circle><circle cx=\"15\" cy=\"19\" r=\"1\"></circle></g>", 1)])]);
|
|
10
|
+
}
|
|
11
|
+
var grip_vertical_default = markRaw({
|
|
12
|
+
name: "lucide-grip-vertical",
|
|
13
|
+
render: render$1
|
|
14
|
+
});
|
|
15
|
+
//#endregion
|
|
16
|
+
export { grip_vertical_default as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grip-vertical-lRha2S7q.js","names":[],"sources":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { markRaw } from "vue";
|
|
2
|
+
//#region src/components/shared/icon.ts
|
|
3
|
+
/**
|
|
4
|
+
* Иконку компонент получает двумя способами, и рисуются они разными тегами.
|
|
5
|
+
*
|
|
6
|
+
* Vue-компонент пакет рисует сам — он ни от чего не зависит. Класс иконки
|
|
7
|
+
* (`i-lucide-*`) генерирует не пакет, а UnoCSS-сборка приложения: без своего
|
|
8
|
+
* `presetIcons` потребитель получит пустое место вместо картинки
|
|
9
|
+
* (`docs/installation.md`). Поэтому класс уезжает в `:class` пустого `span`,
|
|
10
|
+
* а компонент — в `:is`.
|
|
11
|
+
*/
|
|
12
|
+
function iconTag(icon, fallback = "span") {
|
|
13
|
+
if (!icon) return fallback;
|
|
14
|
+
return typeof icon === "string" ? "span" : markRaw(icon);
|
|
15
|
+
}
|
|
16
|
+
/** Класс иконки, если она задана строкой; для компонента классов нет. */
|
|
17
|
+
function iconClass(icon) {
|
|
18
|
+
return typeof icon === "string" ? icon : "";
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { iconTag as n, iconClass as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-Dag2tIMs.js","names":[],"sources":["../../src/components/shared/icon.ts"],"sourcesContent":["import type { Component } from 'vue'\nimport { markRaw } from 'vue'\n\n/**\n * Иконку компонент получает двумя способами, и рисуются они разными тегами.\n *\n * Vue-компонент пакет рисует сам — он ни от чего не зависит. Класс иконки\n * (`i-lucide-*`) генерирует не пакет, а UnoCSS-сборка приложения: без своего\n * `presetIcons` потребитель получит пустое место вместо картинки\n * (`docs/installation.md`). Поэтому класс уезжает в `:class` пустого `span`,\n * а компонент — в `:is`.\n */\nexport function iconTag(\n icon: string | Component | undefined,\n fallback: string | Component = 'span',\n): string | Component {\n if (!icon) return fallback\n\n return typeof icon === 'string' ? 'span' : markRaw(icon)\n}\n\n/** Класс иконки, если она задана строкой; для компонента классов нет. */\nexport function iconClass(icon: string | Component | undefined): string {\n return typeof icon === 'string' ? icon : ''\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,QACd,MACA,WAA+B,QACX;CACpB,IAAI,CAAC,MAAM,OAAO;CAElB,OAAO,OAAO,SAAS,WAAW,SAAS,QAAQ,IAAI;AACzD;;AAGA,SAAgB,UAAU,MAA8C;CACtE,OAAO,OAAO,SAAS,WAAW,OAAO;AAC3C"}
|
|
@@ -29,6 +29,15 @@ function isEditableTarget(target) {
|
|
|
29
29
|
const tag = target.tagName;
|
|
30
30
|
return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT";
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* macOS определяем по платформе: от неё зависит, чем является токен `mod` —
|
|
34
|
+
* Cmd или Ctrl. Живёт здесь, а не рядом с одним потребителем: то же нужно
|
|
35
|
+
* `GrKbd` (что показать), палитре (что слушать) и директиве `v-hotkey`.
|
|
36
|
+
*/
|
|
37
|
+
function isAppleDevice() {
|
|
38
|
+
if (typeof navigator === "undefined") return false;
|
|
39
|
+
return /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent);
|
|
40
|
+
}
|
|
32
41
|
/** Физический код клавиши для латинской буквы или цифры; иначе `null`. */
|
|
33
42
|
function codeForChar(ch) {
|
|
34
43
|
if (/^[a-z]$/i.test(ch)) return `Key${ch.toUpperCase()}`;
|
|
@@ -58,4 +67,4 @@ function shiftSatisfied(event, expectedKey, expectShift) {
|
|
|
58
67
|
return expectedKey.length === 1 && !/\p{L}/u.test(expectedKey) && event.key === expectedKey;
|
|
59
68
|
}
|
|
60
69
|
//#endregion
|
|
61
|
-
export { shiftSatisfied as i,
|
|
70
|
+
export { shiftSatisfied as a, isEditableTarget as i, isAppleDevice as n, isComposingEvent as r, eventMatchesKey as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-DE2yhz_b.js","names":[],"sources":["../../src/internal/keyboard.ts"],"sourcesContent":["/**\n * Общие примитивы разбора клавиатурных событий: IME-композиция и матчинг\n * клавиш, не зависящий от раскладки.\n *\n * Живут в `internal/`, а не рядом с потребителем: одно и то же нужно стеку\n * оверлеев (`composables/internal/overlayStack.ts`), директиве `v-hotkey` и\n * матчеру палитры (`components/shared/hotkey.ts`) — три слоя, у которых нет\n * общего предка ближе этого модуля.\n */\n\n/**\n * Событие пришло во время IME-композиции — обрабатывать его как команду нельзя:\n * Esc здесь отменяет композицию, Enter — коммитит её, стрелки ходят по\n * кандидатам. `keyCode === 229` — страховка для движков, которые не выставляют\n * `isComposing` (исторически WebKit/старый Chromium).\n */\nexport function isComposingEvent(event: KeyboardEvent): boolean {\n return event.isComposing || event.keyCode === 229\n}\n\n/**\n * Фокус на контроле, который сам распоряжается печатными клавишами.\n *\n * Нужен всем, кто вешает клавиатурные команды на контейнер: горячая клавиша и\n * typeahead меню обязаны молчать, пока пользователь печатает в поле внутри них.\n */\nexport function isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) return false\n if (target.isContentEditable) return true\n\n const tag = target.tagName\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT'\n}\n\n/**\n * macOS определяем по платформе: от неё зависит, чем является токен `mod` —\n * Cmd или Ctrl. Живёт здесь, а не рядом с одним потребителем: то же нужно\n * `GrKbd` (что показать), палитре (что слушать) и директиве `v-hotkey`.\n */\nexport function isAppleDevice(): boolean {\n if (typeof navigator === 'undefined') return false\n return /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent)\n}\n\n/** Физический код клавиши для латинской буквы или цифры; иначе `null`. */\nexport function codeForChar(ch: string): string | null {\n if (/^[a-z]$/i.test(ch)) return `Key${ch.toUpperCase()}`\n if (/^\\d$/.test(ch)) return `Digit${ch}`\n return null\n}\n\nexport interface EventMatchesKeyOptions {\n /**\n * Дополнительно матчить по физическому коду (`event.code`), когда `event.key`\n * не совпал. Нужен комбинациям с модификаторами: на нелатинской раскладке\n * Ctrl/Cmd+K приходит как `key: 'л'`, и без кода сочетание мертво. Для\n * одиночных клавиш без модификаторов фолбэк не включается — там семантика\n * печатная, а не позиционная.\n */\n codeFallback?: boolean\n}\n\n/** Совпадает ли нажатая клавиша с ожидаемой (`'k'`, `'Escape'`, `' '`). */\nexport function eventMatchesKey(\n event: KeyboardEvent,\n expected: string,\n options: EventMatchesKeyOptions = {},\n): boolean {\n if (expected === ' ') return event.key === ' ' || event.key === 'Spacebar'\n\n if (expected.length === 1) {\n if (event.key.toLowerCase() === expected.toLowerCase()) return true\n return Boolean(options.codeFallback) && codeForChar(expected) === event.code\n }\n\n return event.key === expected\n}\n\n/**\n * Удовлетворяет ли состояние Shift ожиданиям комбинации.\n *\n * Объявленный `shift` требует нажатого Shift. Необъявленный — запрещает его\n * с одним исключением: символ, который без Shift не набрать (`?`, `+`, `:`),\n * легален вместе с ним, когда `event.key` уже равен ожидаемому символу.\n * Буквы под исключение не попадают: `'a'` и Shift+A — разные намерения.\n */\nexport function shiftSatisfied(event: KeyboardEvent, expectedKey: string, expectShift: boolean): boolean {\n if (expectShift) return event.shiftKey\n if (!event.shiftKey) return true\n\n return expectedKey.length === 1 && !/\\p{L}/u.test(expectedKey) && event.key === expectedKey\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,SAAgB,iBAAiB,OAA+B;CAC9D,OAAO,MAAM,eAAe,MAAM,YAAY;AAChD;;;;;;;AAQA,SAAgB,iBAAiB,QAAqC;CACpE,IAAI,EAAE,kBAAkB,cAAc,OAAO;CAC7C,IAAI,OAAO,mBAAmB,OAAO;CAErC,MAAM,MAAM,OAAO;CACnB,OAAO,QAAQ,WAAW,QAAQ,cAAc,QAAQ;AAC1D;;;;;;AAOA,SAAgB,gBAAyB;CACvC,IAAI,OAAO,cAAc,aAAa,OAAO;CAC7C,OAAO,uBAAuB,KAAK,UAAU,YAAY,UAAU,SAAS;AAC9E;;AAGA,SAAgB,YAAY,IAA2B;CACrD,IAAI,WAAW,KAAK,EAAE,GAAG,OAAO,MAAM,GAAG,YAAY;CACrD,IAAI,OAAO,KAAK,EAAE,GAAG,OAAO,QAAQ;CACpC,OAAO;AACT;;AAcA,SAAgB,gBACd,OACA,UACA,UAAkC,CAAC,GAC1B;CACT,IAAI,aAAa,KAAK,OAAO,MAAM,QAAQ,OAAO,MAAM,QAAQ;CAEhE,IAAI,SAAS,WAAW,GAAG;EACzB,IAAI,MAAM,IAAI,YAAY,MAAM,SAAS,YAAY,GAAG,OAAO;EAC/D,OAAO,QAAQ,QAAQ,YAAY,KAAK,YAAY,QAAQ,MAAM,MAAM;CAC1E;CAEA,OAAO,MAAM,QAAQ;AACvB;;;;;;;;;AAUA,SAAgB,eAAe,OAAsB,aAAqB,aAA+B;CACvG,IAAI,aAAa,OAAO,MAAM;CAC9B,IAAI,CAAC,MAAM,UAAU,OAAO;CAE5B,OAAO,YAAY,WAAW,KAAK,CAAC,SAAS,KAAK,WAAW,KAAK,MAAM,QAAQ;AAClF"}
|
|
@@ -1,73 +1,3 @@
|
|
|
1
|
-
import { computed, ref, watch } from "vue";
|
|
2
|
-
//#region src/composables/internal/useComboboxNavigation.ts
|
|
3
|
-
function useComboboxNavigation(options) {
|
|
4
|
-
const activeIndex = ref(-1);
|
|
5
|
-
const activeItem = computed(() => activeIndex.value >= 0 ? options.items()[activeIndex.value] : void 0);
|
|
6
|
-
const activeDescendantId = computed(() => {
|
|
7
|
-
if (!options.open()) return void 0;
|
|
8
|
-
const item = activeItem.value;
|
|
9
|
-
if (item === void 0) return void 0;
|
|
10
|
-
return options.idOf(item, activeIndex.value);
|
|
11
|
-
});
|
|
12
|
-
function clamp(index) {
|
|
13
|
-
const len = options.items().length;
|
|
14
|
-
if (len === 0) return -1;
|
|
15
|
-
return (index % len + len) % len;
|
|
16
|
-
}
|
|
17
|
-
function setActive(index) {
|
|
18
|
-
activeIndex.value = clamp(index);
|
|
19
|
-
const item = activeItem.value;
|
|
20
|
-
if (item !== void 0) options.scrollTo?.(item, activeIndex.value);
|
|
21
|
-
}
|
|
22
|
-
function init() {
|
|
23
|
-
const len = options.items().length;
|
|
24
|
-
if (len === 0) {
|
|
25
|
-
activeIndex.value = -1;
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const preferred = options.initialIndex?.() ?? -1;
|
|
29
|
-
activeIndex.value = preferred >= 0 && preferred < len ? preferred : 0;
|
|
30
|
-
}
|
|
31
|
-
function reset(index = -1) {
|
|
32
|
-
activeIndex.value = index;
|
|
33
|
-
}
|
|
34
|
-
watch(options.items, (items) => {
|
|
35
|
-
if (!options.open()) return;
|
|
36
|
-
if (activeIndex.value >= items.length) activeIndex.value = items.length - 1;
|
|
37
|
-
if (activeIndex.value < 0 && items.length) activeIndex.value = 0;
|
|
38
|
-
});
|
|
39
|
-
function handleNavigationKeys(event) {
|
|
40
|
-
switch (event.key) {
|
|
41
|
-
case "ArrowDown":
|
|
42
|
-
event.preventDefault();
|
|
43
|
-
setActive(activeIndex.value + 1);
|
|
44
|
-
return true;
|
|
45
|
-
case "ArrowUp":
|
|
46
|
-
event.preventDefault();
|
|
47
|
-
setActive(activeIndex.value - 1);
|
|
48
|
-
return true;
|
|
49
|
-
case "Home":
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
setActive(0);
|
|
52
|
-
return true;
|
|
53
|
-
case "End":
|
|
54
|
-
event.preventDefault();
|
|
55
|
-
setActive(options.items().length - 1);
|
|
56
|
-
return true;
|
|
57
|
-
default: return false;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
activeIndex,
|
|
62
|
-
activeItem,
|
|
63
|
-
activeDescendantId,
|
|
64
|
-
setActive,
|
|
65
|
-
init,
|
|
66
|
-
reset,
|
|
67
|
-
handleNavigationKeys
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
1
|
//#region src/components/shared/optionFilter.ts
|
|
72
2
|
/**
|
|
73
3
|
* Подстрочный поиск по опциям — один на пакет.
|
|
@@ -146,4 +76,4 @@ function resolveSelectedOptions(values, options, keyOf = (value) => String(value
|
|
|
146
76
|
});
|
|
147
77
|
}
|
|
148
78
|
//#endregion
|
|
149
|
-
export { resolveSelectedOptions as a, normalizeOptionQuery as i, matchesOptionQuery as n,
|
|
79
|
+
export { resolveSelectedOptions as a, normalizeOptionQuery as i, matchesOptionQuery as n, matchesQueryParts as r, filterOptions as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionFilter-DYw9XPPx.js","names":[],"sources":["../../src/components/shared/optionFilter.ts"],"sourcesContent":["/**\n * Подстрочный поиск по опциям — один на пакет.\n *\n * Тот же предикат был написан трижды, и у каждой копии был свой контракт\n * нормализации: `GrSelect` лоукейсил запрос в вызывающем коде, `GrAutocomplete`\n * внутри матчера, `GrCommandPalette` — внутри своего. Расхождение такого рода\n * не видно на глаз и всплывает как «в одном компоненте регистр учитывается, в\n * другом нет».\n *\n * Нормализация здесь ровно одна (`normalizeOptionQuery`), а компонент выбирает,\n * что ему нужно: готовый плоский список (`filterOptions`) или голый предикат\n * (`matchesOptionQuery`) — `GrSelect` фильтрует внутри обхода групп и списка не\n * имеет.\n */\n\n/** Запрос в сравнимом виде: без краевых пробелов и в нижнем регистре. */\nexport function normalizeOptionQuery(raw: string): string {\n return raw.trim().toLowerCase()\n}\n\n/**\n * Ядро матча: подстрока в любом из полей. `undefined` в наборе пропускается —\n * у команды палитры может не быть ни описания, ни группы.\n *\n * `needle` ожидается уже нормализованным: нормализовать на каждый элемент\n * списка значило бы делать одну и ту же работу n раз.\n */\nexport function matchesQueryParts(parts: readonly (string | undefined)[], needle: string): boolean {\n if (!needle) return true\n\n return parts.some(part => part !== undefined && part.toLowerCase().includes(needle))\n}\n\n/** Опция в терминах поиска: метка видна пользователю, значение — то, что он мог запомнить. */\nexport interface OptionLike {\n label: string\n value: unknown\n}\n\n/** Матчер по умолчанию: метка и значение опции. */\nexport function matchesOptionQuery(option: OptionLike, needle: string): boolean {\n return matchesQueryParts([option.label, String(option.value)], needle)\n}\n\n/**\n * Плоская фильтрация списка опций.\n *\n * Пустой запрос отдаёт **тот же массив** и матчер не зовёт вовсе: свой `filter`\n * потребителя не должен решать, что показывать «без запроса», а копия на\n * каждый пересчёт била бы по виртуализированным спискам на тысячи опций.\n *\n * Пользовательскому матчеру уходит **сырой** запрос (только `trim`), а не\n * нормализованный: это публичный контракт пропа `filter` у `GrAutocomplete`,\n * и чужая реализация вправе смотреть на регистр.\n */\nexport function filterOptions<TOption extends OptionLike>(\n options: TOption[],\n rawQuery: string,\n filter?: (option: TOption, query: string) => boolean,\n): TOption[] {\n const query = rawQuery.trim()\n if (!query) return options\n\n if (filter) return options.filter(option => filter(option, query))\n\n const needle = query.toLowerCase()\n return options.filter(option => matchesOptionQuery(option, needle))\n}\n\n/**\n * Значения выбора — в опции для чипов.\n *\n * Значение, которого нет среди опций, показывается как есть: так выглядит\n * произвольное значение (`allowCustomValue`) и значение, пришедшее из модели\n * раньше, чем подгрузились опции. Прятать его нельзя — пользователь видел бы\n * пустое место вместо своего выбора.\n *\n * Сравнение идёт через ключ, а не `===`: объектные значения приходят в модель\n * отдельной копией, и ссылочное равенство не нашло бы ничего.\n */\nexport function resolveSelectedOptions<TValue, TOption extends { label: string, value: TValue }>(\n values: readonly TValue[],\n options: readonly TOption[],\n keyOf: (value: TValue) => string = value => String(value),\n): (TOption | { value: TValue, label: string })[] {\n const byKey = new Map<string, TOption>()\n\n // Первый выигрывает: одно и то же значение в двух группах — это одна опция,\n // и подпись чипа не должна зависеть от порядка обхода.\n for (const option of options) {\n const key = keyOf(option.value)\n if (!byKey.has(key)) byKey.set(key, option)\n }\n\n return values.map((value) => {\n const key = keyOf(value)\n return byKey.get(key) ?? { value, label: key }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,SAAgB,qBAAqB,KAAqB;CACxD,OAAO,IAAI,KAAK,CAAC,CAAC,YAAY;AAChC;;;;;;;;AASA,SAAgB,kBAAkB,OAAwC,QAAyB;CACjG,IAAI,CAAC,QAAQ,OAAO;CAEpB,OAAO,MAAM,MAAK,SAAQ,SAAS,KAAA,KAAa,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC;AACrF;;AASA,SAAgB,mBAAmB,QAAoB,QAAyB;CAC9E,OAAO,kBAAkB,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK,CAAC,GAAG,MAAM;AACvE;;;;;;;;;;;;AAaA,SAAgB,cACd,SACA,UACA,QACW;CACX,MAAM,QAAQ,SAAS,KAAK;CAC5B,IAAI,CAAC,OAAO,OAAO;CAEnB,IAAI,QAAQ,OAAO,QAAQ,QAAO,WAAU,OAAO,QAAQ,KAAK,CAAC;CAEjE,MAAM,SAAS,MAAM,YAAY;CACjC,OAAO,QAAQ,QAAO,WAAU,mBAAmB,QAAQ,MAAM,CAAC;AACpE;;;;;;;;;;;;AAaA,SAAgB,uBACd,QACA,SACA,SAAmC,UAAS,OAAO,KAAK,GACR;CAChD,MAAM,wBAAQ,IAAI,IAAqB;CAIvC,KAAK,MAAM,UAAU,SAAS;EAC5B,MAAM,MAAM,MAAM,OAAO,KAAK;EAC9B,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,KAAK,MAAM;CAC5C;CAEA,OAAO,OAAO,KAAK,UAAU;EAC3B,MAAM,MAAM,MAAM,KAAK;EACvB,OAAO,MAAM,IAAI,GAAG,KAAK;GAAE;GAAO,OAAO;EAAI;CAC/C,CAAC;AACH"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { nextTick, onUnmounted, watch } from "vue";
|
|
1
|
+
import { r as isComposingEvent } from "./keyboard-DE2yhz_b.js";
|
|
3
2
|
//#region src/composables/internal/overlayStack.ts
|
|
4
3
|
/**
|
|
5
4
|
* Единый стек слоёв оверлеев: модалки, drawer'ы, просмотрщик, панели селектов,
|
|
@@ -13,6 +12,9 @@ import { nextTick, onUnmounted, watch } from "vue";
|
|
|
13
12
|
* - **`inert`** → ставится на модальные слои ниже последнего **модального**.
|
|
14
13
|
* Немодальный слой сверху модалку не понижает: иначе окно ушло бы в `inert`
|
|
15
14
|
* вместе со своим же открытым дропдауном и перестало отвечать.
|
|
15
|
+
* - **высота** → `openModalCount()` поднимает floating-панель над окном, из
|
|
16
|
+
* которого её открыли: телепортированная панель лежит рядом с корнем окна,
|
|
17
|
+
* и статический `z-index` дропдауна оставлял её под ним.
|
|
16
18
|
*
|
|
17
19
|
* Вести эти две вершины в двух независимых реестрах нельзя: реестры описывают
|
|
18
20
|
* один и тот же порядок и расходятся молча — достаточно оверлея, который
|
|
@@ -83,67 +85,15 @@ function layerRootsAbove(id) {
|
|
|
83
85
|
if (index < 0) return [];
|
|
84
86
|
return stack.slice(index + 1).map((layer) => layer.root?.() ?? null).filter((root) => root !== null);
|
|
85
87
|
}
|
|
86
|
-
//#endregion
|
|
87
|
-
//#region src/composables/useOverlayLayer.ts
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* Один контракт на порядок Esc, `inert` и возврат фокуса — три механизма,
|
|
92
|
-
* которые обязаны видеть один и тот же порядок слоёв. Что берёт на себя:
|
|
93
|
-
*
|
|
94
|
-
* - **Esc** — верхнему слою, вниз не проваливается;
|
|
95
|
-
* - **`inert`** — через `onTopmostChange` у модальных слоёв;
|
|
96
|
-
* - **возврат фокуса** — по единому правилу (см. ниже).
|
|
97
|
-
*
|
|
98
|
-
* Чего **не** делает: фокус-ловушку — это `useFocusTrap`, отдельный примитив.
|
|
99
|
-
* Поповеру ловушка и не нужна: Tab обязан уводить фокус наружу и закрывать его,
|
|
100
|
-
* поэтому связка «слой + ловушка» собирается в компоненте, а не тут.
|
|
89
|
+
* Сколько **модальных** слоёв открыто прямо сейчас.
|
|
101
90
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* клавиатуры» промахивается в обе стороны: мышью открытый слой фокус не вернёт,
|
|
106
|
-
* а клавиатурный отберёт его у того, куда пользователь ушёл сам.
|
|
91
|
+
* Читает `useFloating`, когда считает высоту панели: панель телепортирована в
|
|
92
|
+
* общий портал и лежит рядом с корнем окна, а не внутри него, поэтому свой
|
|
93
|
+
* стек-контекст её не спасает — высоту приходится брать из порядка слоёв.
|
|
107
94
|
*/
|
|
108
|
-
function
|
|
109
|
-
|
|
110
|
-
let previouslyFocused = null;
|
|
111
|
-
function register() {
|
|
112
|
-
if (layerId !== null) return;
|
|
113
|
-
if (typeof window === "undefined") return;
|
|
114
|
-
if (options.restoreFocus !== false && typeof document !== "undefined") previouslyFocused = document.activeElement ?? null;
|
|
115
|
-
layerId = pushOverlayLayer({
|
|
116
|
-
modal: typeof options.modal === "function" ? options.modal() : options.modal ?? false,
|
|
117
|
-
shouldClose: () => options.closeOnEscape?.() ?? true,
|
|
118
|
-
close: onDismiss,
|
|
119
|
-
setTopmost: options.onTopmostChange,
|
|
120
|
-
root: () => options.root?.value ?? null
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
function unregister() {
|
|
124
|
-
if (layerId === null) return;
|
|
125
|
-
removeOverlayLayer(layerId);
|
|
126
|
-
layerId = null;
|
|
127
|
-
restoreFocus();
|
|
128
|
-
}
|
|
129
|
-
function restoreFocus() {
|
|
130
|
-
const target = previouslyFocused;
|
|
131
|
-
previouslyFocused = null;
|
|
132
|
-
if (options.restoreFocus === false || !target) return;
|
|
133
|
-
if (typeof document === "undefined") return;
|
|
134
|
-
const active = document.activeElement;
|
|
135
|
-
const root = options.root?.value;
|
|
136
|
-
if (root && active && active !== document.body && !root.contains(active)) return;
|
|
137
|
-
nextTick(() => {
|
|
138
|
-
if (target.isConnected) target.focus?.();
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
watch(open, (isOpen) => {
|
|
142
|
-
if (isOpen) register();
|
|
143
|
-
else unregister();
|
|
144
|
-
}, { immediate: true });
|
|
145
|
-
onUnmounted(unregister);
|
|
146
|
-
return { rootsAbove: () => layerId === null ? [] : layerRootsAbove(layerId) };
|
|
95
|
+
function openModalCount() {
|
|
96
|
+
return stack.reduce((count, layer) => count + (layer.modal ? 1 : 0), 0);
|
|
147
97
|
}
|
|
148
98
|
//#endregion
|
|
149
|
-
export {
|
|
99
|
+
export { removeOverlayLayer as i, openModalCount as n, pushOverlayLayer as r, layerRootsAbove as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlayStack-C8cfsqXa.js","names":[],"sources":["../../src/composables/internal/overlayStack.ts"],"sourcesContent":["/**\n * Единый стек слоёв оверлеев: модалки, drawer'ы, просмотрщик, панели селектов,\n * дропдауны, подсказки — всё, что открывается поверх страницы.\n *\n * Список один, и порядок регистрации совпадает с порядком открытия, но из него\n * выводятся **две разные вершины**:\n *\n * - **Esc** → последний слой любого рода. Дропдаун, открытый внутри модалки,\n * обязан закрыться первым — пользователь видит верхним именно его.\n * - **`inert`** → ставится на модальные слои ниже последнего **модального**.\n * Немодальный слой сверху модалку не понижает: иначе окно ушло бы в `inert`\n * вместе со своим же открытым дропдауном и перестало отвечать.\n * - **высота** → `openModalCount()` поднимает floating-панель над окном, из\n * которого её открыли: телепортированная панель лежит рядом с корнем окна,\n * и статический `z-index` дропдауна оставлял её под ним.\n *\n * Вести эти две вершины в двух независимых реестрах нельзя: реестры описывают\n * один и тот же порядок и расходятся молча — достаточно оверлея, который\n * зарегистрировался в одном и забыл про другой.\n *\n * Ловушку фокуса стек не реализует сам, но питает её (`useFocusTrap`): он\n * видит слои из **разных деревьев рендера** (диалоги `useDialogService`\n * монтируются отдельным `render()` в `body`) и знает их корни.\n */\n\nimport { isComposingEvent } from '../../internal/keyboard'\n\nexport interface OverlayLayer {\n /** Уникальный id зарегистрированного слоя. */\n id: number\n /**\n * Модальный слой: блокирует страницу и участвует в вычислении `inert`.\n * Немодальные (поповеры, меню, подсказки) — только в очереди Esc.\n */\n modal: boolean\n /** Закрывать ли слой по Esc (реактивный геттер: `closeOnEsc` и подобные). */\n shouldClose: () => boolean\n /** Закрыть слой. */\n close: () => void\n /** Уведомление «этот модальный слой сейчас верхний». Только для `modal`. */\n setTopmost?: (isTopmost: boolean) => void\n /**\n * Корень слоя. Ловушка фокуса нижнего слоя обязана считать его своим:\n * панель селекта, открытого внутри модалки, телепортирована в `body` и лежит\n * вне DOM-поддерева окна, но для пользователя это тот же слой.\n */\n root?: () => HTMLElement | null\n}\n\nconst stack: OverlayLayer[] = []\nlet listening = false\nlet nextId = 1\n\n/** Пересчитывает верхний **модальный** слой и уведомляет все модальные. */\nfunction syncTopmost(): void {\n const modals = stack.filter(layer => layer.modal)\n const top = modals[modals.length - 1]\n for (const layer of modals) layer.setTopmost?.(layer === top)\n}\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') return\n // Esc во время IME-композиции отменяет её, а не закрывает слой.\n if (isComposingEvent(event)) return\n if (stack.length === 0) return\n\n const top = stack[stack.length - 1]\n\n // Гасим всегда, даже если верхний слой не закрывается по Esc: иначе нажатие\n // «провалится» на слой ниже и закроет не то, что видит пользователь.\n event.preventDefault()\n event.stopPropagation()\n if (typeof event.stopImmediatePropagation === 'function')\n event.stopImmediatePropagation()\n\n if (top.shouldClose()) top.close()\n}\n\nfunction startListening(): void {\n if (listening) return\n if (typeof window === 'undefined') return\n // Capture-фаза опережает любые локальные обработчики: Esc обязан достаться\n // верхнему слою, а не тому, кто первым подписался.\n window.addEventListener('keydown', handleKeydown, true)\n listening = true\n}\n\nfunction stopListening(): void {\n if (!listening) return\n if (typeof window === 'undefined') return\n window.removeEventListener('keydown', handleKeydown, true)\n listening = false\n}\n\n/** Регистрирует слой как верхний и возвращает его id. */\nexport function pushOverlayLayer(layer: Omit<OverlayLayer, 'id'>): number {\n const id = nextId++\n stack.push({ ...layer, id })\n startListening()\n syncTopmost()\n return id\n}\n\n/** Снимает слой со стека (при закрытии или размонтировании). */\nexport function removeOverlayLayer(id: number): void {\n const index = stack.findIndex(item => item.id === id)\n if (index >= 0) stack.splice(index, 1)\n if (stack.length === 0) stopListening()\n syncTopmost()\n}\n\n/**\n * Корни слоёв, открытых **поверх** данного.\n *\n * Ими ловушка фокуса дополняет свой контейнер: всё, что открыто изнутри слоя\n * (панель селекта, меню, подсказка), лежит в `body` отдельным поддеревом, и\n * без этого списка ловушка утаскивала бы из него фокус обратно в окно.\n */\nexport function layerRootsAbove(id: number): HTMLElement[] {\n const index = stack.findIndex(layer => layer.id === id)\n if (index < 0) return []\n\n return stack\n .slice(index + 1)\n .map(layer => layer.root?.() ?? null)\n .filter((root): root is HTMLElement => root !== null)\n}\n\n/** Корни всех зарегистрированных слоёв. */\nexport function allLayerRoots(): HTMLElement[] {\n return stack\n .map(layer => layer.root?.() ?? null)\n .filter((root): root is HTMLElement => root !== null)\n}\n\n/** Сколько слоёв открыто. Для тестов и диагностики. */\nexport function overlayStackSize(): number {\n return stack.length\n}\n\n/**\n * Сколько **модальных** слоёв открыто прямо сейчас.\n *\n * Читает `useFloating`, когда считает высоту панели: панель телепортирована в\n * общий портал и лежит рядом с корнем окна, а не внутри него, поэтому свой\n * стек-контекст её не спасает — высоту приходится брать из порядка слоёв.\n */\nexport function openModalCount(): number {\n return stack.reduce((count, layer) => count + (layer.modal ? 1 : 0), 0)\n}\n\n/** Тестовая/служебная очистка стека. */\nexport function resetOverlayStack(): void {\n stack.splice(0, stack.length)\n stopListening()\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,IAAM,QAAwB,CAAC;AAC/B,IAAI,YAAY;AAChB,IAAI,SAAS;;AAGb,SAAS,cAAoB;CAC3B,MAAM,SAAS,MAAM,QAAO,UAAS,MAAM,KAAK;CAChD,MAAM,MAAM,OAAO,OAAO,SAAS;CACnC,KAAK,MAAM,SAAS,QAAQ,MAAM,aAAa,UAAU,GAAG;AAC9D;AAEA,SAAS,cAAc,OAA4B;CACjD,IAAI,MAAM,QAAQ,UAAU;CAE5B,IAAI,iBAAiB,KAAK,GAAG;CAC7B,IAAI,MAAM,WAAW,GAAG;CAExB,MAAM,MAAM,MAAM,MAAM,SAAS;CAIjC,MAAM,eAAe;CACrB,MAAM,gBAAgB;CACtB,IAAI,OAAO,MAAM,6BAA6B,YAC5C,MAAM,yBAAyB;CAEjC,IAAI,IAAI,YAAY,GAAG,IAAI,MAAM;AACnC;AAEA,SAAS,iBAAuB;CAC9B,IAAI,WAAW;CACf,IAAI,OAAO,WAAW,aAAa;CAGnC,OAAO,iBAAiB,WAAW,eAAe,IAAI;CACtD,YAAY;AACd;AAEA,SAAS,gBAAsB;CAC7B,IAAI,CAAC,WAAW;CAChB,IAAI,OAAO,WAAW,aAAa;CACnC,OAAO,oBAAoB,WAAW,eAAe,IAAI;CACzD,YAAY;AACd;;AAGA,SAAgB,iBAAiB,OAAyC;CACxE,MAAM,KAAK;CACX,MAAM,KAAK;EAAE,GAAG;EAAO;CAAG,CAAC;CAC3B,eAAe;CACf,YAAY;CACZ,OAAO;AACT;;AAGA,SAAgB,mBAAmB,IAAkB;CACnD,MAAM,QAAQ,MAAM,WAAU,SAAQ,KAAK,OAAO,EAAE;CACpD,IAAI,SAAS,GAAG,MAAM,OAAO,OAAO,CAAC;CACrC,IAAI,MAAM,WAAW,GAAG,cAAc;CACtC,YAAY;AACd;;;;;;;;AASA,SAAgB,gBAAgB,IAA2B;CACzD,MAAM,QAAQ,MAAM,WAAU,UAAS,MAAM,OAAO,EAAE;CACtD,IAAI,QAAQ,GAAG,OAAO,CAAC;CAEvB,OAAO,MACJ,MAAM,QAAQ,CAAC,CAAC,CAChB,KAAI,UAAS,MAAM,OAAO,KAAK,IAAI,CAAC,CACpC,QAAQ,SAA8B,SAAS,IAAI;AACxD;;;;;;;;AAqBA,SAAgB,iBAAyB;CACvC,OAAO,MAAM,QAAQ,OAAO,UAAU,SAAS,MAAM,QAAQ,IAAI,IAAI,CAAC;AACxE"}
|
|
@@ -31,5 +31,14 @@ function ensurePortalRoot() {
|
|
|
31
31
|
document.body.appendChild(root);
|
|
32
32
|
return root;
|
|
33
33
|
}
|
|
34
|
+
/** Текущий корень портала, если он уже создан. */
|
|
35
|
+
function getPortalRoot() {
|
|
36
|
+
if (typeof document === "undefined") return null;
|
|
37
|
+
return document.getElementById(GR_PORTAL_ID);
|
|
38
|
+
}
|
|
39
|
+
/** Тестовая/служебная очистка: убирает корень из документа. */
|
|
40
|
+
function resetPortalRoot() {
|
|
41
|
+
getPortalRoot()?.remove();
|
|
42
|
+
}
|
|
34
43
|
//#endregion
|
|
35
|
-
export { ensurePortalRoot as t };
|
|
44
|
+
export { resetPortalRoot as n, ensurePortalRoot as t };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portalRoot-
|
|
1
|
+
{"version":3,"file":"portalRoot-CVhCgdG6.js","names":[],"sources":["../../src/composables/internal/portalRoot.ts"],"sourcesContent":["/**\n * Единая точка монтирования оверлеев.\n *\n * До неё каждый оверлей телепортировался в `body` сам по себе, и правило\n * `inert` держалось на договорённости «все оверлеи лежат ровно на один уровень\n * ниже `body`». Один контейнер даёт управляемую точку монтирования (своё\n * приложение в контейнере, микрофронтенд, shadow DOM), одну точку очистки и\n * порядок, совпадающий с порядком открытия.\n *\n * **У корня не должно быть ни стилей, ни классов.** `transform`, `filter`,\n * `contain`, `perspective` и `will-change` создают containing block для\n * `position: fixed`, и тогда панели `useFloating` начинают позиционироваться\n * относительно портала, а не вьюпорта — с виду это «панель прилипла не туда»,\n * и ищется такое долго.\n */\n\nexport const GR_PORTAL_ID = 'gr-portal'\n\n/**\n * Создаёт корень портала при первом обращении и возвращает его.\n *\n * `null` на сервере: DOM там трогать нечем, а телепорт всё равно выключен до\n * монтирования (см. `useTeleportEnabled`).\n */\nexport function ensurePortalRoot(): HTMLElement | null {\n if (typeof document === 'undefined') return null\n\n const existing = document.getElementById(GR_PORTAL_ID)\n if (existing) return existing\n\n const root = document.createElement('div')\n root.id = GR_PORTAL_ID\n root.setAttribute('data-gr-portal', '')\n document.body.appendChild(root)\n\n return root\n}\n\n/** Текущий корень портала, если он уже создан. */\nexport function getPortalRoot(): HTMLElement | null {\n if (typeof document === 'undefined') return null\n return document.getElementById(GR_PORTAL_ID)\n}\n\n/** Тестовая/служебная очистка: убирает корень из документа. */\nexport function resetPortalRoot(): void {\n getPortalRoot()?.remove()\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAa,eAAe;;;;;;;AAQ5B,SAAgB,mBAAuC;CACrD,IAAI,OAAO,aAAa,aAAa,OAAO;CAE5C,MAAM,WAAW,SAAS,eAAe,YAAY;CACrD,IAAI,UAAU,OAAO;CAErB,MAAM,OAAO,SAAS,cAAc,KAAK;CACzC,KAAK,KAAK;CACV,KAAK,aAAa,kBAAkB,EAAE;CACtC,SAAS,KAAK,YAAY,IAAI;CAE9B,OAAO;AACT;;AAGA,SAAgB,gBAAoC;CAClD,IAAI,OAAO,aAAa,aAAa,OAAO;CAC5C,OAAO,SAAS,eAAe,YAAY;AAC7C;;AAGA,SAAgB,kBAAwB;CACtC,cAAc,CAAC,EAAE,OAAO;AAC1B"}
|