@shapio/cms 0.0.0-stage → 0.3.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/README.md +27 -2
- package/dist/admin/apple-touch-icon.png +0 -0
- package/dist/admin/assets/AssistError-BITJ_tpg.js +2 -0
- package/dist/admin/assets/AssistError-BITJ_tpg.js.map +1 -0
- package/dist/admin/assets/BlockMenuItems-CcluK965.js +6 -0
- package/dist/admin/assets/BlockMenuItems-CcluK965.js.map +1 -0
- package/dist/admin/assets/Body-BXa9DhtH.js +2 -0
- package/dist/admin/assets/Body-BXa9DhtH.js.map +1 -0
- package/dist/admin/assets/Builder-DcpRfXuc.js +2 -0
- package/dist/admin/assets/Builder-DcpRfXuc.js.map +1 -0
- package/dist/admin/assets/ConfirmDialog-B9nWhIIz.js +2 -0
- package/dist/admin/assets/ConfirmDialog-B9nWhIIz.js.map +1 -0
- package/dist/admin/assets/CopyButton-BoWb-xi1.js +2 -0
- package/dist/admin/assets/CopyButton-BoWb-xi1.js.map +1 -0
- package/dist/admin/assets/CursorPager-BnxmTk47.js +2 -0
- package/dist/admin/assets/CursorPager-BnxmTk47.js.map +1 -0
- package/dist/admin/assets/ExternalLink-Eeb9mONJ.js +2 -0
- package/dist/admin/assets/ExternalLink-Eeb9mONJ.js.map +1 -0
- package/dist/admin/assets/Form-DZRLD3vH.js +2 -0
- package/dist/admin/assets/Form-DZRLD3vH.js.map +1 -0
- package/dist/admin/assets/FormCheckboxGroup-uIC2XQIL.js +2 -0
- package/dist/admin/assets/FormCheckboxGroup-uIC2XQIL.js.map +1 -0
- package/dist/admin/assets/FormRadioGroup-hd95vPOu.js +2 -0
- package/dist/admin/assets/FormRadioGroup-hd95vPOu.js.map +1 -0
- package/dist/admin/assets/FormSelectField-D7VHmnx5.js +2 -0
- package/dist/admin/assets/FormSelectField-D7VHmnx5.js.map +1 -0
- package/dist/admin/assets/FormSwitchField-ft8Jbe6E.js +2 -0
- package/dist/admin/assets/FormSwitchField-ft8Jbe6E.js.map +1 -0
- package/dist/admin/assets/FormTextareaField-DzyOzfZb.js +2 -0
- package/dist/admin/assets/FormTextareaField-DzyOzfZb.js.map +1 -0
- package/dist/admin/assets/HintedLabel-CvC46uy_.js +2 -0
- package/dist/admin/assets/HintedLabel-CvC46uy_.js.map +1 -0
- package/dist/admin/assets/InfoHint-GJLRVumb.js +2 -0
- package/dist/admin/assets/InfoHint-GJLRVumb.js.map +1 -0
- package/dist/admin/assets/InsertMenuItem-D976G0Rj.js +2 -0
- package/dist/admin/assets/InsertMenuItem-D976G0Rj.js.map +1 -0
- package/dist/admin/assets/LinkTabs-BZSlA57U.js +2 -0
- package/dist/admin/assets/LinkTabs-BZSlA57U.js.map +1 -0
- package/dist/admin/assets/Match-DdxTHHM4.js +2 -0
- package/dist/admin/assets/Match-DdxTHHM4.js.map +1 -0
- package/dist/admin/assets/Panel-iIKjEURi.js +2 -0
- package/dist/admin/assets/Panel-iIKjEURi.js.map +1 -0
- package/dist/admin/assets/QueryView-D6aZQJRN.js +2 -0
- package/dist/admin/assets/QueryView-D6aZQJRN.js.map +1 -0
- package/dist/admin/assets/RadioTile-BpB79rIK.js +2 -0
- package/dist/admin/assets/RadioTile-BpB79rIK.js.map +1 -0
- package/dist/admin/assets/RichTextField-BuHCONPu.js +144 -0
- package/dist/admin/assets/RichTextField-BuHCONPu.js.map +1 -0
- package/dist/admin/assets/RowTitle--uFCpx8n.js +2 -0
- package/dist/admin/assets/RowTitle--uFCpx8n.js.map +1 -0
- package/dist/admin/assets/SecretReveal-DFpzeNE0.js +2 -0
- package/dist/admin/assets/SecretReveal-DFpzeNE0.js.map +1 -0
- package/dist/admin/assets/SharedGlyph-Cqkx30tn.js +2 -0
- package/dist/admin/assets/SharedGlyph-Cqkx30tn.js.map +1 -0
- package/dist/admin/assets/StepList-BY5MuJPJ.js +2 -0
- package/dist/admin/assets/StepList-BY5MuJPJ.js.map +1 -0
- package/dist/admin/assets/Structure-CqRa2t7z.js +2 -0
- package/dist/admin/assets/Structure-CqRa2t7z.js.map +1 -0
- package/dist/admin/assets/SubNavLink-B2o4kSZ9.js +2 -0
- package/dist/admin/assets/SubNavLink-B2o4kSZ9.js.map +1 -0
- package/dist/admin/assets/SuggestAltButton-4rf2xhEJ.js +2 -0
- package/dist/admin/assets/SuggestAltButton-4rf2xhEJ.js.map +1 -0
- package/dist/admin/assets/TextLink-D15oyXlc.js +2 -0
- package/dist/admin/assets/TextLink-D15oyXlc.js.map +1 -0
- package/dist/admin/assets/Thumbnail-CP5mfgNY.js +2 -0
- package/dist/admin/assets/Thumbnail-CP5mfgNY.js.map +1 -0
- package/dist/admin/assets/UnsavedChangesGuard-DgOASh0p.js +2 -0
- package/dist/admin/assets/UnsavedChangesGuard-DgOASh0p.js.map +1 -0
- package/dist/admin/assets/UserAvatar-BocvNVL-.js +2 -0
- package/dist/admin/assets/UserAvatar-BocvNVL-.js.map +1 -0
- package/dist/admin/assets/View-BLsQYPow.js +11 -0
- package/dist/admin/assets/View-BLsQYPow.js.map +1 -0
- package/dist/admin/assets/arrow-up-gf_j6SVQ.js +2 -0
- package/dist/admin/assets/arrow-up-gf_j6SVQ.js.map +1 -0
- package/dist/admin/assets/auth-pcS9CCXu.js +2 -0
- package/dist/admin/assets/auth-pcS9CCXu.js.map +1 -0
- package/dist/admin/assets/badge-DD0mE96i.js +2 -0
- package/dist/admin/assets/badge-DD0mE96i.js.map +1 -0
- package/dist/admin/assets/boxes-DcK-kaSa.js +2 -0
- package/dist/admin/assets/boxes-DcK-kaSa.js.map +1 -0
- package/dist/admin/assets/calendar-clock-DEwACe0M.js +2 -0
- package/dist/admin/assets/calendar-clock-DEwACe0M.js.map +1 -0
- package/dist/admin/assets/changeSets-BjUEfYbj.js +2 -0
- package/dist/admin/assets/changeSets-BjUEfYbj.js.map +1 -0
- package/dist/admin/assets/chevron-left-BsQYDUEC.js +2 -0
- package/dist/admin/assets/chevron-left-BsQYDUEC.js.map +1 -0
- package/dist/admin/assets/circle-check-Dq1owihe.js +2 -0
- package/dist/admin/assets/circle-check-Dq1owihe.js.map +1 -0
- package/dist/admin/assets/circle-x-Dx6zIZko.js +2 -0
- package/dist/admin/assets/circle-x-Dx6zIZko.js.map +1 -0
- package/dist/admin/assets/client-C8vMCv-p.js +10 -0
- package/dist/admin/assets/client-C8vMCv-p.js.map +1 -0
- package/dist/admin/assets/clock-DQvkffqQ.js +2 -0
- package/dist/admin/assets/clock-DQvkffqQ.js.map +1 -0
- package/dist/admin/assets/cn-BQ3voEft.js +2 -0
- package/dist/admin/assets/cn-BQ3voEft.js.map +1 -0
- package/dist/admin/assets/coerce-OsqQRj19.js +2 -0
- package/dist/admin/assets/coerce-OsqQRj19.js.map +1 -0
- package/dist/admin/assets/constants-DCtq_UOe.js +2 -0
- package/dist/admin/assets/constants-DCtq_UOe.js.map +1 -0
- package/dist/admin/assets/constants-DUBUgzpU.js +2 -0
- package/dist/admin/assets/constants-DUBUgzpU.js.map +1 -0
- package/dist/admin/assets/constants-SrImR6C3.js +2 -0
- package/dist/admin/assets/constants-SrImR6C3.js.map +1 -0
- package/dist/admin/assets/content-_SLbbnfX.js +3 -0
- package/dist/admin/assets/content-_SLbbnfX.js.map +1 -0
- package/dist/admin/assets/contentCounts-Ch3uMXVU.js +2 -0
- package/dist/admin/assets/contentCounts-Ch3uMXVU.js.map +1 -0
- package/dist/admin/assets/contentTypes-BCOdUK_Z.js +2 -0
- package/dist/admin/assets/contentTypes-BCOdUK_Z.js.map +1 -0
- package/dist/admin/assets/copy-BDc3r0fO.js +2 -0
- package/dist/admin/assets/copy-BDc3r0fO.js.map +1 -0
- package/dist/admin/assets/dateTimeLocal-C92tyKwz.js +2 -0
- package/dist/admin/assets/dateTimeLocal-C92tyKwz.js.map +1 -0
- package/dist/admin/assets/defineEditor-CiJc766Y.js +2 -0
- package/dist/admin/assets/defineEditor-CiJc766Y.js.map +1 -0
- package/dist/admin/assets/develop-DS9TlDmv.js +11 -0
- package/dist/admin/assets/develop-DS9TlDmv.js.map +1 -0
- package/dist/admin/assets/dropdown-menu-gmP2Rp3n.js +2 -0
- package/dist/admin/assets/dropdown-menu-gmP2Rp3n.js.map +1 -0
- package/dist/admin/assets/ellipsis-NK0pWgqU.js +2 -0
- package/dist/admin/assets/ellipsis-NK0pWgqU.js.map +1 -0
- package/dist/admin/assets/external-link-D3Aoi2yX.js +2 -0
- package/dist/admin/assets/external-link-D3Aoi2yX.js.map +1 -0
- package/dist/admin/assets/file-text-DxXAmmxL.js +2 -0
- package/dist/admin/assets/file-text-DxXAmmxL.js.map +1 -0
- package/dist/admin/assets/fileRoute-C2tOrKhO.js +2 -0
- package/dist/admin/assets/fileRoute-C2tOrKhO.js.map +1 -0
- package/dist/admin/assets/followPlural-CN6cQfNk.js +2 -0
- package/dist/admin/assets/followPlural-CN6cQfNk.js.map +1 -0
- package/dist/admin/assets/globe-CuElSilX.js +2 -0
- package/dist/admin/assets/globe-CuElSilX.js.map +1 -0
- package/dist/admin/assets/image-CsH8dZve.js +2 -0
- package/dist/admin/assets/image-CsH8dZve.js.map +1 -0
- package/dist/admin/assets/image-off-B_uBCsYu.js +2 -0
- package/dist/admin/assets/image-off-B_uBCsYu.js.map +1 -0
- package/dist/admin/assets/inbox-3iAHL3pC.js +2 -0
- package/dist/admin/assets/inbox-3iAHL3pC.js.map +1 -0
- package/dist/admin/assets/inbox-DsuXNaKE.js +2 -0
- package/dist/admin/assets/inbox-DsuXNaKE.js.map +1 -0
- package/dist/admin/assets/index-BLYOgCKc.css +2 -0
- package/dist/admin/assets/index-BSzXA60W.js +4 -0
- package/dist/admin/assets/index-BSzXA60W.js.map +1 -0
- package/dist/admin/assets/jsx-runtime-DREnUpxT.js +2 -0
- package/dist/admin/assets/jsx-runtime-DREnUpxT.js.map +1 -0
- package/dist/admin/assets/key-round-B17HiT3K.js +2 -0
- package/dist/admin/assets/key-round-B17HiT3K.js.map +1 -0
- package/dist/admin/assets/link-2-off-hWGS8LW6.js +2 -0
- package/dist/admin/assets/link-2-off-hWGS8LW6.js.map +1 -0
- package/dist/admin/assets/link-bhHmG4Tc.js +2 -0
- package/dist/admin/assets/link-bhHmG4Tc.js.map +1 -0
- package/dist/admin/assets/list-DRtRdjBC.js +2 -0
- package/dist/admin/assets/list-DRtRdjBC.js.map +1 -0
- package/dist/admin/assets/locales-BzPbz8FF.js +2 -0
- package/dist/admin/assets/locales-BzPbz8FF.js.map +1 -0
- package/dist/admin/assets/media-WLnWaL7U.js +2 -0
- package/dist/admin/assets/media-WLnWaL7U.js.map +1 -0
- package/dist/admin/assets/media-Xzot1ueY.js +2 -0
- package/dist/admin/assets/media-Xzot1ueY.js.map +1 -0
- package/dist/admin/assets/modelPermissions-DZ1lWfQZ.js +2 -0
- package/dist/admin/assets/modelPermissions-DZ1lWfQZ.js.map +1 -0
- package/dist/admin/assets/network-DHGqLwji.js +2 -0
- package/dist/admin/assets/network-DHGqLwji.js.map +1 -0
- package/dist/admin/assets/pencil-Bdp2z9D_.js +2 -0
- package/dist/admin/assets/pencil-Bdp2z9D_.js.map +1 -0
- package/dist/admin/assets/plus-BN_iSsnp.js +2 -0
- package/dist/admin/assets/plus-BN_iSsnp.js.map +1 -0
- package/dist/admin/assets/preload-helper-DAbCfXID.js +2 -0
- package/dist/admin/assets/preload-helper-DAbCfXID.js.map +1 -0
- package/dist/admin/assets/publishing-B7zv1e7j.js +2 -0
- package/dist/admin/assets/publishing-B7zv1e7j.js.map +1 -0
- package/dist/admin/assets/publishing-d9yhMwgA.js +2 -0
- package/dist/admin/assets/publishing-d9yhMwgA.js.map +1 -0
- package/dist/admin/assets/radio-group-DHIxK-IU.js +2 -0
- package/dist/admin/assets/radio-group-DHIxK-IU.js.map +1 -0
- package/dist/admin/assets/react-CQOZoUwg.js +2 -0
- package/dist/admin/assets/react-CQOZoUwg.js.map +1 -0
- package/dist/admin/assets/react-dom-pEVw9mjF.js +2 -0
- package/dist/admin/assets/react-dom-pEVw9mjF.js.map +1 -0
- package/dist/admin/assets/rolldown-runtime-Dd_uD5pT.js +1 -0
- package/dist/admin/assets/root-CDpNo7ef.js +2 -0
- package/dist/admin/assets/root-CDpNo7ef.js.map +1 -0
- package/dist/admin/assets/rotate-ccw-CBoZle-b.js +2 -0
- package/dist/admin/assets/rotate-ccw-CBoZle-b.js.map +1 -0
- package/dist/admin/assets/schedules-Dy89Nm6P.js +2 -0
- package/dist/admin/assets/schedules-Dy89Nm6P.js.map +1 -0
- package/dist/admin/assets/schema-B4smPFcR.js +2 -0
- package/dist/admin/assets/schema-B4smPFcR.js.map +1 -0
- package/dist/admin/assets/scroll-text-UbyzpWh-.js +2 -0
- package/dist/admin/assets/scroll-text-UbyzpWh-.js.map +1 -0
- package/dist/admin/assets/search-_YlNpPvU.js +2 -0
- package/dist/admin/assets/search-_YlNpPvU.js.map +1 -0
- package/dist/admin/assets/searchSchema-CvOhn4FV.js +2 -0
- package/dist/admin/assets/searchSchema-CvOhn4FV.js.map +1 -0
- package/dist/admin/assets/searchSchemas-BxRnxenn.js +2 -0
- package/dist/admin/assets/searchSchemas-BxRnxenn.js.map +1 -0
- package/dist/admin/assets/sections-Bb3Q4bcY.js +2 -0
- package/dist/admin/assets/sections-Bb3Q4bcY.js.map +1 -0
- package/dist/admin/assets/sections-DiySZZHb.js +2 -0
- package/dist/admin/assets/sections-DiySZZHb.js.map +1 -0
- package/dist/admin/assets/select-tHVWX85X.js +2 -0
- package/dist/admin/assets/select-tHVWX85X.js.map +1 -0
- package/dist/admin/assets/send-BqECHYi6.js +2 -0
- package/dist/admin/assets/send-BqECHYi6.js.map +1 -0
- package/dist/admin/assets/settings-D-v8gL8F.js +2 -0
- package/dist/admin/assets/settings-D-v8gL8F.js.map +1 -0
- package/dist/admin/assets/settle-LRKtTN_e.js +2 -0
- package/dist/admin/assets/settle-LRKtTN_e.js.map +1 -0
- package/dist/admin/assets/shared-react-KADNSNpb.js +1 -0
- package/dist/admin/assets/shared-react-dom-BpneAejY.js +1 -0
- package/dist/admin/assets/shared-react-dom-client-CnpZTXxo.js +1 -0
- package/dist/admin/assets/shared-react-jsx-runtime-CU_Fm1m8.js +1 -0
- package/dist/admin/assets/shared-shapio-editor-sdk-9ANIbEN0.js +1 -0
- package/dist/admin/assets/sites-C6_THCVK.js +2 -0
- package/dist/admin/assets/sites-C6_THCVK.js.map +1 -0
- package/dist/admin/assets/skeleton-C3QLIh7W.js +42 -0
- package/dist/admin/assets/skeleton-C3QLIh7W.js.map +1 -0
- package/dist/admin/assets/snapshots-BQrhsCmC.js +2 -0
- package/dist/admin/assets/snapshots-BQrhsCmC.js.map +1 -0
- package/dist/admin/assets/sparkles-BW4CbD6W.js +2 -0
- package/dist/admin/assets/sparkles-BW4CbD6W.js.map +1 -0
- package/dist/admin/assets/src-XaU0N8C-.js +4 -0
- package/dist/admin/assets/src-XaU0N8C-.js.map +1 -0
- package/dist/admin/assets/stableId-C9Yq5iUw.js +2 -0
- package/dist/admin/assets/stableId-C9Yq5iUw.js.map +1 -0
- package/dist/admin/assets/store-BphwUzV5.js +2 -0
- package/dist/admin/assets/store-BphwUzV5.js.map +1 -0
- package/dist/admin/assets/switch-BVy02Vc8.js +2 -0
- package/dist/admin/assets/switch-BVy02Vc8.js.map +1 -0
- package/dist/admin/assets/table-CZYtdoHn.js +56 -0
- package/dist/admin/assets/table-CZYtdoHn.js.map +1 -0
- package/dist/admin/assets/tabs-quHbeVxA.js +5 -0
- package/dist/admin/assets/tabs-quHbeVxA.js.map +1 -0
- package/dist/admin/assets/textarea-B8Vl5gJ1.js +2 -0
- package/dist/admin/assets/textarea-B8Vl5gJ1.js.map +1 -0
- package/dist/admin/assets/titles-B2z5ckxG.js +2 -0
- package/dist/admin/assets/titles-B2z5ckxG.js.map +1 -0
- package/dist/admin/assets/tokens-Fh_OeIlf.js +2 -0
- package/dist/admin/assets/tokens-Fh_OeIlf.js.map +1 -0
- package/dist/admin/assets/tooltip-DwqM3opE.js +2 -0
- package/dist/admin/assets/tooltip-DwqM3opE.js.map +1 -0
- package/dist/admin/assets/undo-2-D4Fz4JMZ.js +2 -0
- package/dist/admin/assets/undo-2-D4Fz4JMZ.js.map +1 -0
- package/dist/admin/assets/useAuditLabels-DKrsrciQ.js +2 -0
- package/dist/admin/assets/useAuditLabels-DKrsrciQ.js.map +1 -0
- package/dist/admin/assets/useConfirmTarget-Dp8mCulm.js +2 -0
- package/dist/admin/assets/useConfirmTarget-Dp8mCulm.js.map +1 -0
- package/dist/admin/assets/useContentSchema-Bv4_6VJR.js +2 -0
- package/dist/admin/assets/useContentSchema-Bv4_6VJR.js.map +1 -0
- package/dist/admin/assets/useCursorPager-B1upg5EU.js +2 -0
- package/dist/admin/assets/useCursorPager-B1upg5EU.js.map +1 -0
- package/dist/admin/assets/useDebouncedValue-Dqs3wwhn.js +2 -0
- package/dist/admin/assets/useDebouncedValue-Dqs3wwhn.js.map +1 -0
- package/dist/admin/assets/useDiscardGuard-34ynGJIk.js +2 -0
- package/dist/admin/assets/useDiscardGuard-34ynGJIk.js.map +1 -0
- package/dist/admin/assets/useMediaUploader-QXSjZStv.js +2 -0
- package/dist/admin/assets/useMediaUploader-QXSjZStv.js.map +1 -0
- package/dist/admin/assets/usePaletteItems-62-TZhy7.js +2 -0
- package/dist/admin/assets/usePaletteItems-62-TZhy7.js.map +1 -0
- package/dist/admin/assets/usePlaces-CY6f2DmI.js +2 -0
- package/dist/admin/assets/usePlaces-CY6f2DmI.js.map +1 -0
- package/dist/admin/assets/useQueries-BuKJBA0M.js +2 -0
- package/dist/admin/assets/useQueries-BuKJBA0M.js.map +1 -0
- package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js +2 -0
- package/dist/admin/assets/useSaveShortcut-rKtp1qK7.js.map +1 -0
- package/dist/admin/assets/useSchemaScopeAccess-DUBeS9kU.js +2 -0
- package/dist/admin/assets/useSchemaScopeAccess-DUBeS9kU.js.map +1 -0
- package/dist/admin/assets/useSearchInput-1fDoEtXe.js +2 -0
- package/dist/admin/assets/useSearchInput-1fDoEtXe.js.map +1 -0
- package/dist/admin/assets/users-BOn2ohJQ.js +2 -0
- package/dist/admin/assets/users-BOn2ohJQ.js.map +1 -0
- package/dist/admin/assets/users-BkKc4MNB.js +2 -0
- package/dist/admin/assets/users-BkKc4MNB.js.map +1 -0
- package/dist/admin/assets/w3c-keyname-BOAvb0qz.js +2 -0
- package/dist/admin/assets/w3c-keyname-BOAvb0qz.js.map +1 -0
- package/dist/admin/assets/zod-BHAd1wTC.js +2 -0
- package/dist/admin/assets/zod-BHAd1wTC.js.map +1 -0
- package/dist/admin/favicon-32.png +0 -0
- package/dist/admin/favicon.svg +5 -0
- package/dist/admin/fonts/OFL-SourceSerif4.txt +93 -0
- package/dist/admin/fonts/OFL.txt +93 -0
- package/dist/admin/fonts/manrope-latin-ext-wght-normal.woff2 +0 -0
- package/dist/admin/fonts/manrope-latin-wght-normal.woff2 +0 -0
- package/dist/admin/fonts/source-serif-4-latin-ext-wght-italic.woff2 +0 -0
- package/dist/admin/fonts/source-serif-4-latin-ext-wght-normal.woff2 +0 -0
- package/dist/admin/fonts/source-serif-4-latin-wght-italic.woff2 +0 -0
- package/dist/admin/fonts/source-serif-4-latin-wght-normal.woff2 +0 -0
- package/dist/admin/index.html +90 -0
- package/dist/admin/theme-init.js +18 -0
- package/dist/cli.js +5383 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +39 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +1056 -0
- package/dist/index.js +3 -0
- package/dist/public-CGO8RBn3.d.ts +1185 -0
- package/dist/worker-BLXy8aRW.js +47532 -0
- package/dist/worker-BLXy8aRW.js.map +1 -0
- package/package.json +97 -3
- package/vendor/graphiql/LICENSE.graphiql +21 -0
- package/vendor/graphiql/LICENSE.react +21 -0
- package/vendor/graphiql/LICENSE.react-dom +21 -0
- package/vendor/graphiql/graphiql.min.css +1 -0
- package/vendor/graphiql/graphiql.min.js +46 -0
- package/vendor/graphiql/react-dom.production.min.js +267 -0
- package/vendor/graphiql/react.production.min.js +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMediaUploader-QXSjZStv.js","names":["__iconData","__iconData","__iconData","PERCENT","useId","useRef","useRef","_Fragment","i18next","CheckCircle2","XCircle","Loader2","useState","_Fragment","useCallback","i18next","__toESM","require_jsx_runtime","buildUploadForm","resolveUploadUrl","queryKeys","useQueryClient","createLucideIcon","useTranslation","create","LoaderCircle","withCsrf","cn","apiBaseUrl","useMediaAssets","Lock","X","StatusChip","EmptyState","ErrorState","LoadingState","formatRelativeTime","formatDateTime","RowTitle","toast","logError","FieldLabel","FieldLegend","Field","FieldSet","InfoHint","instance","Button","describeError","Input","SelectValue","SelectTrigger","SelectContent","ChevronUp","SelectItem","ChevronDown","Select","Checkbox","CircleCheck","CircleX","fileKindLabel","MEDIA_STATUS_DISPLAY","formatBytes","Thumbnail","List","RotateCcw","Search","TableHeader","TableHead","TableBody","TableRow","TableCell","TableCard","Table","useSearchInput","MEDIA_TYPE_FILTERS","Panel","__iconData$3","Crosshair","__iconData$2","Images","__iconData$1","LayoutGrid","__iconData","Upload","import_react","require_react","import_jsx_runtime","PERCENT$1","CENTRE","clamp","value","FocalPoint","id","point","place","box","event","onChange","setAxis","number","text","axis","t","imageUrl","selectionRange","from","anchor","ids","to","target","useRangeSelection","range","shiftKey","rangeId","onSelectChange","checked","Card","status","asset","selected","active","selectable","onSelect","onOpen","AssetGrid","assets","activeId","AssetTable","isSelected","Library","query","items","page","scoped","filtered","view","ALL_TYPES","TYPE_LABEL_KEYS","Toolbar","onQueryChange","setText","type","onTypeChange","filter","onViewChange","UploadButton","buttonProps","input","label","files","onFiles","useMediaUploadsStore","set","state","item","patch","UploadTransferError","body","uploadWithProgress","request","url","onProgress","resolve","reject","signal","form","describeUploadError","error","PERCENT","Row","percent","statusText","onRetry","onDismiss","UploadQueue","clearFinished","showFinished","setShowFinished","failed","done","settled","expanded","current","FALLBACK_MIME_TYPE","requestGrant","details","adminApi","uploadFile","grant","onConfirming","useMediaUploader","queryClient","run","update","file","options","add","candidate","remove"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/crosshair.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/images.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/layout-grid.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/upload.mjs","../../src/components/FocalPoint/index.tsx","../../src/features/Media/helpers/selectionRange.ts","../../src/features/Media/hooks/useRangeSelection.ts","../../src/features/Media/AssetGrid/Card/index.tsx","../../src/features/Media/AssetGrid/index.tsx","../../src/features/Media/AssetTable/index.tsx","../../src/features/Media/Library/index.tsx","../../src/features/Media/Toolbar/index.tsx","../../src/features/Media/UploadButton/index.tsx","../../src/stores/mediaUploads.ts","../../src/helpers/uploadWithProgress.ts","../../src/features/Media/helpers/describeUploadError.ts","../../src/features/Media/UploadQueue/Row/index.tsx","../../src/features/Media/UploadQueue/index.tsx","../../src/hooks/useMediaUploader.ts"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"crosshair\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"22\", x2: \"18\", y1: \"12\", y2: \"12\", key: \"l9bcsi\" }],\n [\"line\", { x1: \"6\", x2: \"2\", y1: \"12\", y2: \"12\", key: \"13hhkx\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"6\", y2: \"2\", key: \"10w3f3\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"22\", y2: \"18\", key: \"15g9kq\" }]\n ]\n};\n__iconData.node;\nconst Crosshair = createLucideIcon(__iconData);\n\nexport { __iconData, Crosshair as default };\n//# sourceMappingURL=crosshair.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"images\",\n size: 24,\n node: [\n [\"path\", { d: \"m22 11-1.296-1.296a2.4 2.4 0 0 0-3.408 0L11 16\", key: \"9kzy35\" }],\n [\"path\", { d: \"M4 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2\", key: \"1t0f0t\" }],\n [\"circle\", { cx: \"13\", cy: \"7\", r: \"1\", fill: \"currentColor\", key: \"1obus6\" }],\n [\"rect\", { x: \"8\", y: \"2\", width: \"14\", height: \"14\", rx: \"2\", key: \"1gvhby\" }]\n ]\n};\n__iconData.node;\nconst Images = createLucideIcon(__iconData);\n\nexport { __iconData, Images as default };\n//# sourceMappingURL=images.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"layout-grid\",\n size: 24,\n node: [\n [\"rect\", { width: \"7\", height: \"7\", x: \"3\", y: \"3\", rx: \"1\", key: \"1g98yp\" }],\n [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"3\", rx: \"1\", key: \"6d4xhi\" }],\n [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"14\", rx: \"1\", key: \"nxv5o0\" }],\n [\"rect\", { width: \"7\", height: \"7\", x: \"3\", y: \"14\", rx: \"1\", key: \"1bb6yr\" }]\n ]\n};\n__iconData.node;\nconst LayoutGrid = createLucideIcon(__iconData);\n\nexport { __iconData, LayoutGrid as default };\n//# sourceMappingURL=layout-grid.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"upload\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 3v12\", key: \"1x0j5s\" }],\n [\"path\", { d: \"m17 8-5-5-5 5\", key: \"7q97r8\" }],\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }]\n ]\n};\n__iconData.node;\nconst Upload = createLucideIcon(__iconData);\n\nexport { __iconData, Upload as default };\n//# sourceMappingURL=upload.mjs.map\n","import type { MediaFocalPoint } from '@shapio/client';\nimport { Crosshair } from 'lucide-react';\nimport { useId, type CSSProperties, type MouseEvent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { InfoHint } from '@/components/InfoHint';\nimport { Button } from '@/components/ui/button';\nimport { Field, FieldLabel, FieldLegend, FieldSet } from '@/components/ui/field';\nimport { Input } from '@/components/ui/input';\n\ntype FocalPointProps = {\n imageUrl: string;\n value: MediaFocalPoint | null;\n onChange: (value: MediaFocalPoint | null) => void;\n};\n\nconst PERCENT = 100;\nconst CENTRE: MediaFocalPoint = { x: 0.5, y: 0.5 };\n\nconst clamp = (value: number) => Math.min(1, Math.max(0, value));\n\n/**\n * The point crops keep in view. Click the image to place it; the percentage inputs are the keyboard path\n * (the image itself is a pointer shortcut and hidden from assistive technology).\n */\nexport const FocalPoint = ({ imageUrl, value, onChange }: FocalPointProps) => {\n const { t } = useTranslation();\n // Unique per instance: the media details sheet and the entry's settings drawer can both show one.\n const id = useId();\n const point = value ?? CENTRE;\n const place = (event: MouseEvent<HTMLDivElement>) => {\n const box = event.currentTarget.getBoundingClientRect();\n onChange({\n x: clamp((event.clientX - box.left) / box.width),\n y: clamp((event.clientY - box.top) / box.height),\n });\n };\n const setAxis = (axis: 'x' | 'y', text: string) => {\n const number = Number(text);\n if (text !== '' && Number.isFinite(number)) {\n onChange({ ...point, [axis]: clamp(number / PERCENT) });\n }\n };\n return (\n <FieldSet aria-labelledby={`${id}-title`}>\n <FieldLegend variant=\"label\" className=\"flex items-center gap-1\">\n <span id={`${id}-title`}>{t('media.focal.title')}</span>\n <InfoHint about={t('media.focal.title')}>{t('media.focal.hint')}</InfoHint>\n </FieldLegend>\n <div\n aria-hidden=\"true\"\n onClick={place}\n className=\"relative w-fit max-w-full cursor-crosshair overflow-hidden rounded-lg border\"\n style={\n { '--focal-x': `${point.x * PERCENT}%`, '--focal-y': `${point.y * PERCENT}%` } as CSSProperties\n }\n >\n <img src={imageUrl} alt=\"\" className=\"block max-h-64 w-auto\" draggable={false} />\n {value ? (\n <span className=\"absolute top-[var(--focal-y)] left-[var(--focal-x)] flex size-6 -translate-1/2 items-center justify-center rounded-full border-2 border-background bg-primary text-primary-foreground shadow\">\n <Crosshair className=\"size-3.5\" />\n </span>\n ) : null}\n </div>\n <div className=\"flex flex-wrap items-end gap-3\">\n <Field className=\"w-28\">\n <FieldLabel htmlFor={`${id}-x`}>{t('media.focal.x')}</FieldLabel>\n <Input\n id={`${id}-x`}\n type=\"number\"\n min={0}\n max={PERCENT}\n step={1}\n value={value ? Math.round(value.x * PERCENT) : ''}\n placeholder={t('media.focal.unset')}\n onChange={(event) => setAxis('x', event.target.value)}\n />\n </Field>\n <Field className=\"w-28\">\n <FieldLabel htmlFor={`${id}-y`}>{t('media.focal.y')}</FieldLabel>\n <Input\n id={`${id}-y`}\n type=\"number\"\n min={0}\n max={PERCENT}\n step={1}\n value={value ? Math.round(value.y * PERCENT) : ''}\n placeholder={t('media.focal.unset')}\n onChange={(event) => setAxis('y', event.target.value)}\n />\n </Field>\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" disabled={!value} onClick={() => onChange(null)}>\n {t('media.focal.clear')}\n </Button>\n </div>\n </FieldSet>\n );\n};\n","/**\n * The items a shift-click selects: from the anchor (the last item toggled) to the clicked one, inclusive,\n * in list order. Undefined when there is no usable anchor (then the click toggles one item).\n */\nexport const selectionRange = (\n ids: readonly string[],\n anchor: string | undefined,\n target: string,\n): string[] | undefined => {\n const from = anchor === undefined ? -1 : ids.indexOf(anchor);\n const to = ids.indexOf(target);\n if (from === -1 || to === -1) {\n return undefined;\n }\n return ids.slice(Math.min(from, to), Math.max(from, to) + 1);\n};\n","import { useRef } from 'react';\nimport { selectionRange } from '../helpers/selectionRange';\n\ntype SelectRequest = { id: string; checked: boolean; shiftKey: boolean };\n\n/**\n * Shift-click selection over an ordered list: a plain toggle sets the anchor; a shift toggle selects\n * everything from the anchor to the clicked item. Works through `onSelectChange` alone, so any owner of the\n * selection (the library, the media picker) gets ranges without new props.\n */\nexport const useRangeSelection = (\n ids: readonly string[],\n onSelectChange: (id: string, checked: boolean) => void,\n) => {\n const anchor = useRef<string | undefined>(undefined);\n const select = ({ id, checked, shiftKey }: SelectRequest) => {\n const range = shiftKey ? selectionRange(ids, anchor.current, id) : undefined;\n if (range) {\n for (const rangeId of range) {\n onSelectChange(rangeId, true);\n }\n } else {\n onSelectChange(id, checked);\n }\n anchor.current = id;\n };\n return { select };\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { Lock } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '@/components/StatusChip';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { cn } from '@/helpers/cn';\nimport { fileKindLabel } from '../../helpers/fileKind';\nimport { formatBytes } from '../../helpers/formatBytes';\nimport { MEDIA_STATUS_DISPLAY } from '../../helpers/statusDisplay';\nimport { Thumbnail } from '../../Thumbnail';\n\ntype CardProps = {\n asset: MediaAsset;\n selected: boolean;\n selectable: boolean;\n active: boolean;\n /** `shiftKey`: extend the selection to here from the last item toggled. */\n onSelect: (checked: boolean, shiftKey: boolean) => void;\n onOpen: () => void;\n};\n\n/**\n * One asset tile: a button that opens its details (shift-click selects instead), and a checkbox for bulk\n * actions. The square thumbnail, then the name and \"PNG · 120 kB\".\n */\nexport const Card = ({ asset, selected, selectable, active, onSelect, onOpen }: CardProps) => {\n const { t } = useTranslation();\n const status = MEDIA_STATUS_DISPLAY[asset.status];\n return (\n <li\n className={cn(\n 'group relative overflow-hidden rounded-xl border bg-card transition-shadow focus-within:ring-[3px] focus-within:ring-ring/50 hover:border-input',\n (selected || active) && 'border-primary ring-2 ring-primary hover:border-primary',\n )}\n >\n <button\n type=\"button\"\n onClick={(event) => {\n if (event.shiftKey && selectable) {\n onSelect(!selected, true);\n return;\n }\n onOpen();\n }}\n className=\"flex w-full flex-col text-left outline-none\"\n aria-label={t('media.openDetails', { name: asset.filename })}\n >\n <Thumbnail asset={asset} className=\"aspect-square w-full border-b\" />\n <span className=\"flex min-w-0 flex-col gap-0.5 px-3 py-2.5\">\n <span className=\"truncate text-sm font-medium\" title={asset.filename}>\n {asset.filename}\n </span>\n <span className=\"flex min-w-0 items-center gap-1.5 text-meta text-muted-foreground\">\n <span className=\"truncate\">\n {fileKindLabel(asset.filename, asset.mimeType)} · {formatBytes(asset.sizeBytes)}\n </span>\n {asset.visibility === 'private' ? (\n <Lock aria-hidden=\"true\" className=\"size-3.5 shrink-0\" />\n ) : null}\n </span>\n </span>\n </button>\n {asset.status === 'ready' ? null : (\n <StatusChip\n tone={status.tone}\n label={t(status.labelKey)}\n size=\"sm\"\n className=\"pointer-events-none absolute top-2 right-2\"\n />\n )}\n {selectable ? (\n <Checkbox\n checked={selected}\n onClick={(event) => {\n if (event.shiftKey) {\n event.preventDefault();\n onSelect(!selected, true);\n }\n }}\n onCheckedChange={(checked) => onSelect(checked === true, false)}\n aria-label={t('media.select', { name: asset.filename })}\n className=\"absolute top-2 left-2 bg-card\"\n />\n ) : null}\n </li>\n );\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { useRangeSelection } from '../hooks/useRangeSelection';\nimport { Card } from './Card';\n\ntype AssetGridProps = {\n assets: readonly MediaAsset[];\n selected: ReadonlySet<string>;\n selectable: boolean;\n activeId: string | undefined;\n onSelectChange: (id: string, checked: boolean) => void;\n onOpen: (asset: MediaAsset) => void;\n};\n\n/** Square tiles that fill the width; shift-click (tile or checkbox) selects a range. */\nexport const AssetGrid = ({\n assets,\n selected,\n selectable,\n activeId,\n onSelectChange,\n onOpen,\n}: AssetGridProps) => {\n const { t } = useTranslation();\n const range = useRangeSelection(\n assets.map((asset) => asset.id),\n onSelectChange,\n );\n return (\n <ul\n aria-label={t('media.assetsLabel', { count: assets.length })}\n className=\"grid grid-cols-[repeat(auto-fill,minmax(160px,1fr))] gap-4\"\n >\n {assets.map((asset) => (\n <Card\n key={asset.id}\n asset={asset}\n selected={selected.has(asset.id)}\n selectable={selectable}\n active={asset.id === activeId}\n onSelect={(checked, shiftKey) => range.select({ id: asset.id, checked, shiftKey })}\n onOpen={() => onOpen(asset)}\n />\n ))}\n </ul>\n );\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { Lock } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { RowTitle } from '@/components/RowTitle';\nimport { StatusChip } from '@/components/StatusChip';\nimport { TableCard } from '@/components/TableCard';\nimport { Checkbox } from '@/components/ui/checkbox';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\nimport { formatDateTime, formatRelativeTime } from '@/helpers/formatDate';\nimport { fileKindLabel } from '../helpers/fileKind';\nimport { formatBytes } from '../helpers/formatBytes';\nimport { MEDIA_STATUS_DISPLAY } from '../helpers/statusDisplay';\nimport { useRangeSelection } from '../hooks/useRangeSelection';\nimport { Thumbnail } from '../Thumbnail';\n\ntype AssetTableProps = {\n assets: readonly MediaAsset[];\n selected: ReadonlySet<string>;\n selectable: boolean;\n onSelectChange: (id: string, checked: boolean) => void;\n onOpen: (asset: MediaAsset) => void;\n};\n\n/** The list view: name, type, size, status and date per asset; shift-click a checkbox to select a range. */\nexport const AssetTable = ({ assets, selected, selectable, onSelectChange, onOpen }: AssetTableProps) => {\n const { t } = useTranslation();\n const range = useRangeSelection(\n assets.map((asset) => asset.id),\n onSelectChange,\n );\n return (\n <TableCard>\n <Table>\n <TableHeader>\n <TableRow>\n {selectable ? (\n <TableHead className=\"w-10\">\n <span className=\"sr-only\">{t('media.selection')}</span>\n </TableHead>\n ) : null}\n <TableHead>{t('media.fields.filename')}</TableHead>\n <TableHead>{t('media.fields.type')}</TableHead>\n <TableHead className=\"text-right\">{t('media.fields.size')}</TableHead>\n <TableHead>{t('media.fields.status')}</TableHead>\n <TableHead>{t('media.fields.uploaded')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {assets.map((asset) => {\n const status = MEDIA_STATUS_DISPLAY[asset.status];\n const isSelected = selected.has(asset.id);\n return (\n <TableRow key={asset.id} data-state={isSelected ? 'selected' : undefined}>\n {selectable ? (\n <TableCell>\n <Checkbox\n checked={isSelected}\n onClick={(event) => {\n if (event.shiftKey) {\n event.preventDefault();\n range.select({ id: asset.id, checked: !isSelected, shiftKey: true });\n }\n }}\n onCheckedChange={(checked) =>\n range.select({ id: asset.id, checked: checked === true, shiftKey: false })\n }\n aria-label={t('media.select', { name: asset.filename })}\n />\n </TableCell>\n ) : null}\n <TableCell className=\"max-w-96\">\n <span className=\"flex min-w-0 items-center gap-3\">\n <Thumbnail asset={asset} className=\"size-8 shrink-0 rounded-md\" />\n <RowTitle asChild className=\"min-w-0 truncate text-left\">\n <button type=\"button\" onClick={() => onOpen(asset)}>\n {asset.filename}\n </button>\n </RowTitle>\n {asset.visibility === 'private' ? (\n <Lock\n role=\"img\"\n aria-label={t('media.visibility.private')}\n className=\"size-3.5 shrink-0 text-muted-foreground\"\n />\n ) : null}\n </span>\n </TableCell>\n <TableCell className=\"text-muted-foreground\" title={asset.mimeType}>\n {fileKindLabel(asset.filename, asset.mimeType)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums\">{formatBytes(asset.sizeBytes)}</TableCell>\n <TableCell>\n <StatusChip tone={status.tone} label={t(status.labelKey)} size=\"sm\" />\n </TableCell>\n <TableCell className=\"whitespace-nowrap\" title={formatDateTime(asset.createdAt)}>\n {formatRelativeTime(asset.createdAt)}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableCard>\n );\n};\n","import type { MediaAsset } from '@shapio/client';\nimport { Images } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useMediaAssets } from '@/api/media';\nimport { EmptyState } from '@/components/EmptyState';\nimport { ErrorState } from '@/components/ErrorState';\nimport { LoadingState } from '@/components/LoadingState';\nimport { Button } from '@/components/ui/button';\nimport { AssetGrid } from '../AssetGrid';\nimport { AssetTable } from '../AssetTable';\nimport type { MediaView } from '../constants';\n\ntype LibraryProps = {\n query: Parameters<typeof useMediaAssets>[0];\n filtered: boolean;\n view: MediaView;\n selected: ReadonlySet<string>;\n selectable: boolean;\n activeId: string | undefined;\n onSelectChange: (id: string, checked: boolean) => void;\n onOpen: (asset: MediaAsset) => void;\n};\n\n/** The assets of the current folder and filters: loading, error, empty, grid or list, and \"Load more\". */\nexport const Library = ({\n query,\n filtered,\n view,\n selected,\n selectable,\n activeId,\n onSelectChange,\n onOpen,\n}: LibraryProps) => {\n const { t } = useTranslation();\n const assets = useMediaAssets(query);\n if (assets.isPending) {\n return <LoadingState rows={4} />;\n }\n if (assets.isError) {\n return <ErrorState error={assets.error} onRetry={() => void assets.refetch()} />;\n }\n const items = assets.data.pages.flatMap((page) => page.items);\n if (items.length === 0) {\n // The whole library is empty: a page-sized empty state. An empty folder or search: a quieter one.\n const scoped = filtered || query.folder !== undefined;\n return (\n <EmptyState\n icon={Images}\n size={scoped ? 'panel' : 'page'}\n title={filtered ? t('media.emptyFiltered') : scoped ? t('media.emptyFolder') : t('media.empty')}\n />\n );\n }\n return (\n <div className=\"space-y-4\">\n {view === 'grid' ? (\n <AssetGrid\n assets={items}\n selected={selected}\n selectable={selectable}\n activeId={activeId}\n onSelectChange={onSelectChange}\n onOpen={onOpen}\n />\n ) : (\n <AssetTable\n assets={items}\n selected={selected}\n selectable={selectable}\n onSelectChange={onSelectChange}\n onOpen={onOpen}\n />\n )}\n {assets.hasNextPage ? (\n <div className=\"flex justify-center\">\n <Button\n variant=\"outline\"\n disabled={assets.isFetchingNextPage}\n aria-busy={assets.isFetchingNextPage || undefined}\n onClick={() => void assets.fetchNextPage()}\n >\n {assets.isFetchingNextPage ? t('common.loading') : t('media.loadMore')}\n </Button>\n </div>\n ) : null}\n </div>\n );\n};\n","import { LayoutGrid, List, Search } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';\nimport { useSearchInput } from '@/hooks/useSearchInput';\nimport { MEDIA_TYPE_FILTERS, type MediaTypeFilter, type MediaView } from '../constants';\n\ntype ToolbarProps = {\n query: string | undefined;\n type: MediaTypeFilter | undefined;\n view: MediaView;\n onQueryChange: (query: string | undefined) => void;\n onTypeChange: (type: MediaTypeFilter | undefined) => void;\n onViewChange: (view: MediaView) => void;\n};\n\nconst ALL_TYPES = 'all';\n\nconst TYPE_LABEL_KEYS = {\n image: 'media.types.image',\n video: 'media.types.video',\n audio: 'media.types.audio',\n pdf: 'media.types.pdf',\n} as const satisfies Record<MediaTypeFilter, string>;\n\n/** Search, type filter and grid/list switch. */\nexport const Toolbar = ({ query, type, view, onQueryChange, onTypeChange, onViewChange }: ToolbarProps) => {\n const { t } = useTranslation();\n const { text, setText } = useSearchInput(query, onQueryChange);\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"relative min-w-48 flex-1\">\n <Search\n aria-hidden=\"true\"\n className=\"absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground\"\n />\n <Input\n type=\"search\"\n value={text}\n onChange={(event) => setText(event.target.value)}\n aria-label={t('media.search')}\n placeholder={t('media.searchPlaceholder')}\n inputSize=\"sm\"\n className=\"pl-8\"\n />\n </div>\n <Select\n value={type ?? ALL_TYPES}\n onValueChange={(value) => onTypeChange(value === ALL_TYPES ? undefined : (value as MediaTypeFilter))}\n >\n <SelectTrigger size=\"sm\" aria-label={t('media.typeFilter')} className=\"w-36\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL_TYPES}>{t('media.types.all')}</SelectItem>\n {MEDIA_TYPE_FILTERS.map((filter) => (\n <SelectItem key={filter} value={filter}>\n {t(TYPE_LABEL_KEYS[filter])}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <div\n role=\"group\"\n aria-label={t('media.view')}\n className=\"flex h-9 items-center gap-0.5 rounded-lg border border-input px-px\"\n >\n <Button\n variant={view === 'grid' ? 'secondary' : 'ghost'}\n size=\"icon-sm\"\n aria-pressed={view === 'grid'}\n aria-label={t('media.viewGrid')}\n onClick={() => onViewChange('grid')}\n >\n <LayoutGrid aria-hidden=\"true\" />\n </Button>\n <Button\n variant={view === 'list' ? 'secondary' : 'ghost'}\n size=\"icon-sm\"\n aria-pressed={view === 'list'}\n aria-label={t('media.viewList')}\n onClick={() => onViewChange('list')}\n >\n <List aria-hidden=\"true\" />\n </Button>\n </div>\n </div>\n );\n};\n","import { Upload } from 'lucide-react';\nimport { useRef, type ComponentProps } from 'react';\nimport { Button } from '@/components/ui/button';\n\ntype UploadButtonProps = Omit<ComponentProps<typeof Button>, 'onClick'> & {\n label: string;\n multiple?: boolean;\n onFiles: (files: File[]) => void;\n};\n\n/** A button that opens the file picker (the keyboard path; dropping files is the pointer shortcut). */\nexport const UploadButton = ({ label, multiple = true, onFiles, ...buttonProps }: UploadButtonProps) => {\n const input = useRef<HTMLInputElement>(null);\n return (\n <>\n <Button {...buttonProps} onClick={() => input.current?.click()}>\n <Upload aria-hidden=\"true\" />\n {label}\n </Button>\n <input\n ref={input}\n type=\"file\"\n multiple={multiple}\n tabIndex={-1}\n aria-hidden=\"true\"\n className=\"sr-only\"\n onChange={(event) => {\n const files = [...(event.target.files ?? [])];\n event.target.value = '';\n if (files.length > 0) {\n onFiles(files);\n }\n }}\n />\n </>\n );\n};\n","import type { MediaVisibility } from '@shapio/client';\nimport { create } from 'zustand';\n\nexport type UploadStatus = 'uploading' | 'confirming' | 'done' | 'failed';\n\nexport type UploadItem = {\n id: string;\n file: File;\n folderId: string | null;\n visibility: MediaVisibility;\n /** Set when the upload replaces this asset's file. */\n replaceAssetId: string | undefined;\n status: UploadStatus;\n /** 0 to 1 while the bytes are sent. */\n progress: number;\n error: unknown;\n assetId: string | undefined;\n};\n\ntype MediaUploadsState = {\n items: UploadItem[];\n add: (item: UploadItem) => void;\n update: (id: string, patch: Partial<UploadItem>) => void;\n remove: (id: string) => void;\n clearFinished: () => void;\n};\n\n/** Uploads in flight and recently finished (client-only; kept while the admin is open, not persisted). */\nexport const useMediaUploadsStore = create<MediaUploadsState>()((set) => ({\n items: [],\n add: (item) => set((state) => ({ items: [...state.items, item] })),\n update: (id, patch) =>\n set((state) => ({ items: state.items.map((item) => (item.id === id ? { ...item, ...patch } : item)) })),\n remove: (id) => set((state) => ({ items: state.items.filter((item) => item.id !== id) })),\n clearFinished: () => set((state) => ({ items: state.items.filter((item) => item.status !== 'done') })),\n}));\n","/** The storage (bucket or Shapio's upload route) refused the bytes; `status` 0 means the request never completed. */\nexport class UploadTransferError extends Error {\n readonly status: number;\n readonly body: string;\n\n constructor(status: number, body: string) {\n super(`Upload failed with status ${status}`);\n this.name = 'UploadTransferError';\n this.status = status;\n this.body = body;\n }\n}\n\ntype UploadWithProgressInput = {\n url: string;\n form: FormData;\n onProgress: (fraction: number) => void;\n signal?: AbortSignal;\n};\n\n/**\n * POSTs a multipart form with upload progress (fetch cannot report it, so this uses XMLHttpRequest).\n * No credentials are sent: the grant's fields authorise the upload, whether it goes to a bucket or to Shapio.\n */\nexport const uploadWithProgress = ({ url, form, onProgress, signal }: UploadWithProgressInput) =>\n new Promise<void>((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open('POST', url);\n request.withCredentials = false;\n request.upload.onprogress = (event) => {\n if (event.lengthComputable && event.total > 0) {\n onProgress(event.loaded / event.total);\n }\n };\n request.onload = () => {\n if (request.status >= 200 && request.status < 300) {\n onProgress(1);\n resolve();\n return;\n }\n reject(new UploadTransferError(request.status, request.responseText));\n };\n request.onerror = () => reject(new UploadTransferError(0, ''));\n request.onabort = () => reject(new DOMException('Upload cancelled', 'AbortError'));\n signal?.addEventListener('abort', () => request.abort(), { once: true });\n request.send(form);\n });\n","import { i18next } from '@/app/i18n';\nimport { describeError } from '@/helpers/describeError';\nimport { UploadTransferError } from '@/helpers/uploadWithProgress';\n\n/** Why an upload failed, for the queue. Storage refusals (bucket or upload route) get their own message. */\nexport const describeUploadError = (error: unknown): string => {\n if (error instanceof UploadTransferError) {\n if (error.status === 0) {\n return i18next.t('media.upload.unreachable');\n }\n if (error.status === 413 || /EntityTooLarge/.test(error.body)) {\n return i18next.t('errors.codes.FILE_TOO_LARGE');\n }\n return i18next.t('media.upload.transferFailed', { status: error.status });\n }\n return describeError(error);\n};\n","import { CheckCircle2, Loader2, RotateCcw, X, XCircle } from 'lucide-react';\nimport type { CSSProperties } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/helpers/cn';\nimport type { UploadItem } from '@/stores/mediaUploads';\nimport { describeUploadError } from '../../helpers/describeUploadError';\nimport { formatBytes } from '../../helpers/formatBytes';\n\ntype RowProps = { item: UploadItem; onRetry: () => void; onDismiss: () => void };\n\nconst PERCENT = 100;\n\n/** One upload: name, size, progress (a real progressbar), and Retry/Dismiss when it failed. */\nexport const Row = ({ item, onRetry, onDismiss }: RowProps) => {\n const { t } = useTranslation();\n const percent = Math.round(item.progress * PERCENT);\n const statusText =\n item.status === 'uploading'\n ? t('media.upload.uploading', { percent })\n : item.status === 'confirming'\n ? t('media.upload.checking')\n : item.status === 'done'\n ? t('media.upload.done')\n : describeUploadError(item.error);\n return (\n <li className=\"flex items-start gap-3 px-5 py-2.5\">\n <span className=\"mt-0.5 shrink-0\">\n {item.status === 'done' ? (\n <CheckCircle2 aria-hidden=\"true\" className=\"size-4 text-success\" />\n ) : item.status === 'failed' ? (\n <XCircle aria-hidden=\"true\" className=\"size-4 text-destructive\" />\n ) : (\n <Loader2\n aria-hidden=\"true\"\n className=\"size-4 animate-spin text-muted-foreground motion-reduce:animate-none\"\n />\n )}\n </span>\n <div className=\"min-w-0 flex-1 space-y-1\">\n <p className=\"flex items-baseline gap-2 text-sm\">\n <span className=\"truncate font-medium\">{item.file.name}</span>\n <span className=\"shrink-0 text-meta text-muted-foreground\">{formatBytes(item.file.size)}</span>\n </p>\n {item.status === 'uploading' || item.status === 'confirming' ? (\n <div\n role=\"progressbar\"\n aria-label={t('media.upload.progress', { name: item.file.name })}\n aria-valuemin={0}\n aria-valuemax={PERCENT}\n aria-valuenow={percent}\n className=\"h-1.5 overflow-hidden rounded-full bg-muted\"\n style={{ '--upload-progress': `${percent}%` } as CSSProperties}\n >\n <div className=\"h-full w-[var(--upload-progress)] bg-primary transition-[width]\" />\n </div>\n ) : null}\n <p\n className={cn('text-meta', item.status === 'failed' ? 'text-destructive' : 'text-muted-foreground')}\n >\n {statusText}\n </p>\n </div>\n {item.status === 'failed' ? (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={t('media.upload.retry', { name: item.file.name })}\n onClick={onRetry}\n >\n <RotateCcw aria-hidden=\"true\" />\n </Button>\n ) : null}\n {item.status === 'failed' || item.status === 'done' ? (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={t('media.upload.dismiss', { name: item.file.name })}\n onClick={onDismiss}\n >\n <X aria-hidden=\"true\" />\n </Button>\n ) : null}\n </li>\n );\n};\n","import { ChevronDown, ChevronUp } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Panel } from '@/components/Panel';\nimport { Button } from '@/components/ui/button';\nimport { useMediaUploadsStore } from '@/stores/mediaUploads';\nimport { Row } from './Row';\n\ntype UploadQueueProps = { onRetry: (id: string) => void; onDismiss: (id: string) => void };\n\n/**\n * Uploads in progress and recently finished, newest last, as a compact panel. Once nothing is running or\n * failed it collapses to one line (\"3 uploaded\"); failures stay open until retried or dismissed.\n */\nexport const UploadQueue = ({ onRetry, onDismiss }: UploadQueueProps) => {\n const { t } = useTranslation();\n const items = useMediaUploadsStore((state) => state.items);\n const clearFinished = useMediaUploadsStore((state) => state.clearFinished);\n const [showFinished, setShowFinished] = useState(false);\n if (items.length === 0) {\n return null;\n }\n const active = items.filter((item) => item.status === 'uploading' || item.status === 'confirming').length;\n const failed = items.filter((item) => item.status === 'failed').length;\n const done = items.length - active - failed;\n const settled = active === 0 && failed === 0;\n const expanded = !settled || showFinished;\n return (\n <Panel\n title={t('media.upload.queueTitle')}\n titleAs=\"h2\"\n flush={expanded}\n actions={\n <>\n <span role=\"status\" aria-live=\"polite\" className=\"text-meta text-muted-foreground\">\n {settled\n ? t('media.upload.doneSummary', { count: done })\n : t('media.upload.summary', { active, failed })}\n </span>\n {settled ? (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-expanded={expanded}\n aria-label={expanded ? t('media.upload.hideFinished') : t('media.upload.showFinished')}\n onClick={() => setShowFinished((current) => !current)}\n >\n {expanded ? <ChevronUp aria-hidden=\"true\" /> : <ChevronDown aria-hidden=\"true\" />}\n </Button>\n ) : null}\n {done > 0 ? (\n <Button variant=\"ghost\" size=\"sm\" onClick={clearFinished}>\n {t('media.upload.clearFinished')}\n </Button>\n ) : null}\n </>\n }\n bodyClassName={expanded ? undefined : 'hidden'}\n >\n {expanded ? (\n <ul className=\"max-h-64 divide-y overflow-y-auto\">\n {items.map((item) => (\n <Row\n key={item.id}\n item={item}\n onRetry={() => onRetry(item.id)}\n onDismiss={() => onDismiss(item.id)}\n />\n ))}\n </ul>\n ) : null}\n </Panel>\n );\n};\n","import { buildUploadForm, type MediaAsset, type MediaVisibility, type UploadGrant } from '@shapio/client';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useCallback } from 'react';\nimport { toast } from 'sonner';\nimport { adminApi, apiBaseUrl } from '@/api/client';\nimport { withCsrf } from '@/api/csrf';\nimport { queryKeys } from '@/api/queryKeys';\nimport { i18next } from '@/app/i18n';\nimport { logError } from '@/helpers/reportError';\nimport { resolveUploadUrl } from '@/helpers/resolveUploadUrl';\nimport { uploadWithProgress } from '@/helpers/uploadWithProgress';\nimport { useMediaUploadsStore, type UploadItem } from '@/stores/mediaUploads';\n\nconst FALLBACK_MIME_TYPE = 'application/octet-stream';\n\ntype UploadTarget = Pick<UploadItem, 'file' | 'folderId' | 'visibility' | 'replaceAssetId'>;\n\nconst requestGrant = (item: UploadTarget): Promise<UploadGrant> => {\n const details = {\n filename: item.file.name,\n mimeType: item.file.type || FALLBACK_MIME_TYPE,\n sizeBytes: item.file.size,\n };\n return withCsrf(() =>\n item.replaceAssetId\n ? adminApi.media.assets.replace(item.replaceAssetId, details)\n : adminApi.media.uploads.create({ ...details, folderId: item.folderId, visibility: item.visibility }),\n );\n};\n\n/** Grant, send (with progress), confirm: one file into the library. Throws when any step fails. */\nconst uploadFile = async (\n item: UploadTarget,\n onProgress: (progress: number) => void,\n onConfirming: () => void,\n): Promise<MediaAsset> => {\n const grant = await requestGrant(item);\n await uploadWithProgress({\n url: resolveUploadUrl(grant, apiBaseUrl()),\n form: buildUploadForm(grant, item.file, item.file.name),\n onProgress,\n });\n onConfirming();\n return withCsrf(() => adminApi.media.uploads.confirm(grant.grantId));\n};\n\n/** What an editor gets back from `uploadOne`: the new asset's ID and its library alt text. */\nexport type UploadedMedia = { id: string; alt: string | null };\n\ntype EnqueueOptions = { folderId: string | null; visibility: MediaVisibility; replaceAssetId?: string };\n\n/**\n * The upload flow, the same for local disk and S3: ask for a grant, send the form to the grant's URL\n * (with progress), then confirm so the server checks the bytes and records the asset. A failed upload stays\n * in the queue with its error; retrying starts again with a fresh grant (grants are single-use).\n */\nexport const useMediaUploader = () => {\n const queryClient = useQueryClient();\n const { add, update, remove } = useMediaUploadsStore.getState();\n\n const run = useCallback(\n async (item: UploadItem) => {\n update(item.id, { status: 'uploading', progress: 0, error: undefined });\n try {\n const asset = await uploadFile(\n item,\n (progress) => update(item.id, { progress }),\n () => update(item.id, { status: 'confirming' }),\n );\n update(item.id, { status: 'done', assetId: asset.id });\n if (item.replaceAssetId) {\n toast.success(i18next.t('media.upload.replaced', { name: item.file.name }));\n }\n } catch (error) {\n logError(error, `uploading ${item.file.name}`);\n update(item.id, { status: 'failed', error });\n } finally {\n await queryClient.invalidateQueries({ queryKey: queryKeys.media.all });\n }\n },\n [queryClient, update],\n );\n\n const enqueue = useCallback(\n (files: readonly File[], options: EnqueueOptions) => {\n for (const file of files) {\n const item: UploadItem = {\n id: crypto.randomUUID(),\n file,\n folderId: options.folderId,\n visibility: options.visibility,\n replaceAssetId: options.replaceAssetId,\n status: 'uploading',\n progress: 0,\n error: undefined,\n assetId: undefined,\n };\n add(item);\n void run(item);\n }\n },\n [add, run],\n );\n\n const retry = useCallback(\n (id: string) => {\n const item = useMediaUploadsStore.getState().items.find((candidate) => candidate.id === id);\n if (item) {\n void run(item);\n }\n },\n [run],\n );\n\n /**\n * One file uploaded outside the queue (a file dropped into rich text): resolves with the new asset, or\n * rejects so the caller can undo its placeholder. Public, in the root folder.\n */\n const uploadOne = useCallback(\n async (file: File): Promise<UploadedMedia> => {\n try {\n const asset = await uploadFile(\n { file, folderId: null, visibility: 'public', replaceAssetId: undefined },\n () => undefined,\n () => undefined,\n );\n queryClient.setQueryData(queryKeys.media.asset(asset.id), asset);\n return { id: asset.id, alt: asset.alt || null };\n } finally {\n await queryClient.invalidateQueries({ queryKey: queryKeys.media.all });\n }\n },\n [queryClient],\n );\n\n return { enqueue, retry, dismiss: remove, uploadOne };\n};\n"],"ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./store-BphwUzV5.js";var r=e(t(),1),i=`(max-width: 1023px)`,a=e=>{let t=window.matchMedia(i);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)},o=()=>window.matchMedia(i).matches;function s(){return r.useSyncExternalStore(a,o,()=>!1)}var c=(e,t)=>{let i=(0,r.useId)(),a=n(e=>e.register),o=n(e=>e.unregister);(0,r.useEffect)(()=>(a(i,{group:e,items:t}),()=>o(i)),[i,e,t,a,o])};export{s as n,c as t};
|
|
2
|
+
//# sourceMappingURL=usePaletteItems-62-TZhy7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePaletteItems-62-TZhy7.js","names":["useId","__toESM","usePaletteStore","import_react","require_react","MOBILE_QUERY","subscribe","mql","onChange","getSnapshot","useIsMobile","usePaletteItems","id","register","state","unregister","group","items"],"sources":["../../src/hooks/use-mobile.ts","../../src/components/CommandPalette/hooks/usePaletteItems.ts"],"sourcesContent":["import * as React from 'react';\n\n// Shapio: the sidebar becomes a sheet below lg (DESIGN.md), not md.\nconst MOBILE_BREAKPOINT = 1024;\nconst MOBILE_QUERY = `(max-width: ${MOBILE_BREAKPOINT - 1}px)`;\n\n// Shapio: subscribes with useSyncExternalStore instead of setState in an effect (shadcn's original).\nconst subscribe = (onChange: () => void) => {\n const mql = window.matchMedia(MOBILE_QUERY);\n mql.addEventListener('change', onChange);\n return () => mql.removeEventListener('change', onChange);\n};\n\nconst getSnapshot = () => window.matchMedia(MOBILE_QUERY).matches;\n\nexport function useIsMobile() {\n return React.useSyncExternalStore(subscribe, getSnapshot, () => false);\n}\n","import { useEffect, useId } from 'react';\nimport { usePaletteStore } from '../store';\nimport type { PaletteItem, RegisteredGroup } from '../types';\n\n/**\n * Offers `items` in the palette while the calling component is mounted. Pass a memoized array: a new\n * array re-registers.\n */\nexport const usePaletteItems = (group: RegisteredGroup, items: readonly PaletteItem[]) => {\n const id = useId();\n const register = usePaletteStore((state) => state.register);\n const unregister = usePaletteStore((state) => state.unregister);\n useEffect(() => {\n register(id, { group, items });\n return () => unregister(id);\n }, [id, group, items, register, unregister]);\n};\n"],"mappings":"6IAIMK,EAAe,sBAGfC,EAAa,GAAyB,CAC1C,IAAMC,EAAM,OAAO,WAAWF,CAAY,EAE1C,OADAE,EAAI,iBAAiB,SAAUC,CAAQ,MAC1BD,EAAI,oBAAoB,SAAUC,CAAQ,CACzD,EAEMC,MAAoB,OAAO,WAAWJ,CAAY,CAAC,CAAC,QAE1D,SAAgBK,GAAc,CAC5B,OAAAP,EAAa,qBAAqBG,EAAWG,MAAmB,EAAK,CACvE,CCTA,IAAaE,GAAmB,EAAwB,IAAkC,CACxF,IAAMC,GAAA,EAAKZ,EAAAA,MAAAA,CAAM,EACXa,EAAWX,EAAiB,GAAUY,EAAM,QAAQ,EACpDC,EAAab,EAAiB,GAAUY,EAAM,UAAU,GAC9D,EAAAX,EAAA,UAAA,MACEU,EAASD,EAAI,CAAE,QAAO,OAAM,CAAC,MAChBG,EAAWH,CAAE,GACzB,CAACA,EAAII,EAAOC,EAAOJ,EAAUE,CAAU,CAAC,CAC7C"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{P as n,bt as r,i}from"./cn-BQ3voEft.js";import{u as a}from"./auth-pcS9CCXu.js";import{s as o}from"./schema-B4smPFcR.js";import{t as s}from"./modelPermissions-DZ1lWfQZ.js";import{t as c}from"./contentCounts-Ch3uMXVU.js";var l={name:`file-plus-corner`,size:24,node:[[`path`,{d:`M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35`,key:`17jvcc`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M14 19h6`,key:`bvotb8`}],[`path`,{d:`M17 16v6`,key:`18yu1i`}]],aliases:[`file-plus-2`]};l.node;var u=i(l),d=e(t(),1),f=e=>{let t=r(),{data:i,isFetching:o}=a(),s=(0,d.useRef)(new Set);(0,d.useEffect)(()=>{if(!i||!e||o)return;let r=e.map(({definition:e})=>e.id).filter(e=>!(e in i.modelPermissions)&&!s.current.has(e));if(r.length>0){for(let e of r)s.current.add(e);t.invalidateQueries({queryKey:n.me})}},[e,i,o,t])},p={collection:0,singleton:1},m=()=>{let{data:e}=a(),{data:t}=o(`model`),n=c();return f(t),(0,d.useMemo)(()=>t?.flatMap(({definition:t,scope:r})=>t.kind!==`component`&&s(e,t.id,`read`)?[{id:t.id,apiKey:t.apiKey,label:t.label,kind:t.kind,count:t.kind===`collection`?n?.get(t.id):void 0,canCreate:s(e,t.id,`create`),shared:r===`network`}]:[]).sort((e,t)=>p[e.kind]-p[t.kind]||e.label.localeCompare(t.label)),[t,n,e])};export{u as n,m as t};
|
|
2
|
+
//# sourceMappingURL=usePlaces-CY6f2DmI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePlaces-CY6f2DmI.js","names":["useRef","useMemo","__toESM","queryKeys","useQueryClient","useMe","useDefinitions","canOnModel","useContentCounts","__iconData","FilePlusCorner","createLucideIcon","import_react","require_react","useModelPermissionsRefresh","queryClient","me","asked","definitions","isFetching","unknown","definition","id","KIND_ORDER","usePlaces","counts","scope","a","b"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-plus-corner.mjs","../../src/features/Shell/hooks/useModelPermissionsRefresh.ts","../../src/features/Shell/hooks/usePlaces.ts"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-plus-corner\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35\",\n key: \"17jvcc\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M14 19h6\", key: \"bvotb8\" }],\n [\"path\", { d: \"M17 16v6\", key: \"18yu1i\" }]\n ],\n aliases: [\"file-plus-2\"]\n};\n__iconData.node;\nconst FilePlusCorner = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlusCorner as default };\n//# sourceMappingURL=file-plus-corner.mjs.map\n","import type { DefinitionListItem } from '@shapio/client';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useEffect, useRef } from 'react';\nimport { useMe } from '@/api/auth';\nimport { queryKeys } from '@/api/queryKeys';\n\n/**\n * `me.modelPermissions` is keyed by model ID and read once a minute, so a model created since (here or in\n * another session) is missing from it. When the registry shows such a model, re-read `me` once for it.\n */\nexport const useModelPermissionsRefresh = (definitions: readonly DefinitionListItem[] | undefined) => {\n const queryClient = useQueryClient();\n const { data: me, isFetching } = useMe();\n const asked = useRef(new Set<string>());\n useEffect(() => {\n if (!me || !definitions || isFetching) {\n return;\n }\n const unknown = definitions\n .map(({ definition }) => definition.id)\n .filter((id) => !(id in me.modelPermissions) && !asked.current.has(id));\n if (unknown.length > 0) {\n for (const id of unknown) {\n asked.current.add(id);\n }\n void queryClient.invalidateQueries({ queryKey: queryKeys.me });\n }\n }, [definitions, me, isFetching, queryClient]);\n};\n","import { useMemo } from 'react';\nimport { useMe } from '@/api/auth';\nimport { useContentCounts } from '@/api/contentCounts';\nimport { useDefinitions } from '@/api/schema';\nimport { canOnModel } from '@/helpers/modelPermissions';\nimport { useModelPermissionsRefresh } from './useModelPermissionsRefresh';\n\n/** A content type as editors see it: a place in the sidebar. */\nexport type Place = {\n id: string;\n apiKey: string;\n label: string;\n kind: 'collection' | 'singleton';\n /** Entries the admin can read; undefined until counts load (or for single types, which need none). */\n count: number | undefined;\n canCreate: boolean;\n /** Shared with all sites (rather than this site's own). */\n shared: boolean;\n};\n\nconst KIND_ORDER = { collection: 0, singleton: 1 } as const;\n\n/**\n * The places the admin may read, from the model registry: collections, then single types, by label. Models\n * are data (CONTRIBUTING.md rule 2), so a model created a moment ago appears as soon as the registry refreshes.\n */\nexport const usePlaces = (): Place[] | undefined => {\n const { data: me } = useMe();\n const { data: definitions } = useDefinitions('model');\n const counts = useContentCounts();\n useModelPermissionsRefresh(definitions);\n return useMemo(\n () =>\n definitions\n ?.flatMap(({ definition, scope }): Place[] =>\n definition.kind !== 'component' && canOnModel(me, definition.id, 'read')\n ? [\n {\n id: definition.id,\n apiKey: definition.apiKey,\n label: definition.label,\n kind: definition.kind,\n count: definition.kind === 'collection' ? counts?.get(definition.id) : undefined,\n canCreate: canOnModel(me, definition.id, 'create'),\n shared: scope === 'network',\n },\n ]\n : [],\n )\n .sort((a, b) => KIND_ORDER[a.kind] - KIND_ORDER[b.kind] || a.label.localeCompare(b.label)),\n [definitions, counts, me],\n );\n};\n"],"ignoreList":[0],"mappings":"wTASA,IAAMS,EAAa,CACjB,KAAM,mBACN,KAAM,GACN,KAAM,CACJ,CACE,OACA,CACE,EAAG,0GACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,0BAA2B,IAAK,QAAS,CAAC,EACxD,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAC3C,EACA,QAAS,CAAC,aAAa,CACzB,EACAA,EAAW,KACX,IAAMC,EAAiBC,EAAiBF,CAAU,aCjBrCK,EAA8B,GAA2D,CACpG,IAAMC,EAAcX,EAAe,EAC7B,CAAE,KAAMY,EAAI,cAAeX,EAAM,EACjCY,GAAA,EAAQjB,EAAAA,OAAAA,CAAO,IAAI,GAAa,GACtC,EAAAY,EAAA,UAAA,KAAgB,CACd,GAAI,CAACI,GAAM,CAACE,GAAeC,EACzB,OAEF,IAAMC,EAAUF,EACb,KAAK,CAAE,gBAAiBG,EAAW,EAAE,CAAC,CACtC,OAAQ,GAAO,EAAEC,KAAMN,EAAG,mBAAqB,CAACC,EAAM,QAAQ,IAAIK,CAAE,CAAC,EACxE,GAAIF,EAAQ,OAAS,EAAG,CACtB,IAAK,IAAME,KAAMF,EACfH,EAAM,QAAQ,IAAIK,CAAE,EAEtBP,EAAiB,kBAAkB,CAAE,SAAUZ,EAAU,EAAG,CAAC,CAC/D,CACF,EAAG,CAACe,EAAaF,EAAIG,EAAYJ,CAAW,CAAC,CAC/C,ECRMQ,EAAa,CAAE,WAAY,EAAG,UAAW,CAAE,EAMpCC,MAAuC,CAClD,GAAM,CAAE,KAAMR,GAAOX,EAAM,EACrB,CAAE,KAAMa,GAAgBZ,EAAe,OAAO,EAC9CmB,EAASjB,EAAiB,EAEhC,OADAM,EAA2BI,CAAW,GACtC,EAAOjB,EAAAA,QAAAA,KAEHiB,GACI,SAAS,CAAE,aAAY,WACvBG,EAAW,OAAS,aAAed,EAAWS,EAAIK,EAAW,GAAI,MAAM,EACnE,CACE,CACE,GAAIA,EAAW,GACf,OAAQA,EAAW,OACnB,MAAOA,EAAW,MAClB,KAAMA,EAAW,KACjB,MAAOA,EAAW,OAAS,aAAeI,GAAQ,IAAIJ,EAAW,EAAE,EAAI,IAAA,GACvE,UAAWd,EAAWS,EAAIK,EAAW,GAAI,QAAQ,EACjD,OAAQK,IAAU,SACpB,CACF,EACA,CAAC,CACP,CAAC,CACA,MAAM,EAAG,IAAMH,EAAWI,EAAE,MAAQJ,EAAWK,EAAE,OAASD,EAAE,MAAM,cAAcC,EAAE,KAAK,CAAC,EAC7F,CAACV,EAAaO,EAAQT,CAAE,CAC1B,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{$ as n,G as r,J as i,K as a,W as o,X as s,Y as c,Z as l,_t as u,bt as d,ht as f,it as p,ot as m,pt as h,q as g}from"./cn-BQ3voEft.js";function _(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}var v=class extends m{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,p.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!u(e,n)});(o||s)&&(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(_(e,n).forEach(e=>{e.destroy()}),_(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){let n=new Set;return t.map((r,i)=>{let a=e[i];return r.defaultedQueryOptions.notifyOnChangeProps?a:r.observer.trackResult(a,e=>{n.has(e)||(n.add(e),t.forEach(t=>{t.observer.trackProp(e)}))})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=f(this.#a,t(e))),this.#a}return e}#f(){return!this.#r?.combine||this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let r=[];return e.forEach(e=>{let i=this.#e.defaultQueryOptions(e),a=t.get(i.queryHash)?.shift()??new n(this.#e,i);r.push({defaultedQueryOptions:i,observer:a})}),r}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=this.#t.slice(),this.#t[n]=t,this.#h())}#h(){if(this.hasListeners()){let e=this.#f(),t=this.#a,n=e?t:this.#d(this.#u(this.#t,this.#l),this.#r?.combine);(e||t!==n)&&p.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},y=e(t(),1);function b({queries:e,...t},u){let f=d(u),m=l(),_=s(),b=t.subscribed!==!1,x=y.useMemo(()=>e.map(e=>{let t=f.defaultQueryOptions(e);return t._optimisticResults=m?`isRestoring`:b?`optimistic`:void 0,t}),[e,f,m,b]);x.forEach(e=>{o(e);let t=f.getQueryCache().get(e.queryHash);g(e,_,t)}),c(_);let[S]=y.useState(()=>new v(f,x,t)),[C,w,T]=S.getOptimisticResult(x,t.combine),E=!m&&b;y.useSyncExternalStore(y.useCallback(e=>E?S.subscribe(p.batchCalls(e)):h,[S,E]),()=>S.getCurrentResult(),()=>S.getCurrentResult()),y.useEffect(()=>{S.setQueries(x,t)},[x,t,S]);let D=C.some((e,t)=>a(x[t],e))?C.flatMap((e,t)=>{let i=x[t];if(i&&a(i,e)){let e=new n(f,i);return r(i,e,_)}return[]}):[];if(D.length>0)throw Promise.all(D);let O=C.find((e,t)=>{let n=x[t];return n&&i({result:e,errorResetBoundary:_,throwOnError:n.throwOnError,query:f.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(O)throw O.error;return w(T())}export{b as t};
|
|
2
|
+
//# sourceMappingURL=useQueries-BuKJBA0M.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueries-BuKJBA0M.js","names":["__toESM","QueryObserver","fetchOptimistic","getHasError","shouldSuspend","ensureSuspenseTimers","useQueryErrorResetBoundary","useClearResetErrorBoundary","useIsRestoring","shallowEqualObjects","useQueryClient","replaceEqualDeep","notifyManager","Subscribable","noop","ensurePreventErrorBoundaryRetry","difference","excludeSet","array2","array1","x","QueriesObserver","#client","client","#options","options","#queries","#observers","#result","queries","observer","#onUpdate","result","prevObservers","newObserverMatches","#findMatchingObservers","match","newObservers","newResult","hasLengthChange","hasIndexChange","index","hasStructuralChange","hasResultChange","prev","#observerMatches","#notify","matches","queryHashes","#combineResult","r","combine","#trackResult","trackedProps","observerResult","accessedProp","m","lastHashes","#lastQueryHashes","queryHashesChanged","hash","i","#lastResult","#lastCombine","#combinedResult","input","prevObserversMap","key","previousObservers","observers","defaultedOptions","shouldSkipCombine","#shouldSkipCombine","previousResult","listener","import_react","require_react","useQueries","queryClient","isRestoring","errorResetBoundary","subscribed","defaultedQueries","opts","queryOptions","query","optimisticResult","getCombinedResult","trackResult","shouldSubscribe","onStoreChange","suspensePromises","queryObserver","firstSingleResultWhichShouldThrow"],"sources":["../../../../node_modules/.pnpm/@tanstack+query-core@5.104.0/node_modules/@tanstack/query-core/build/modern/queriesObserver.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.104.0_react@19.3.0/node_modules/@tanstack/react-query/build/modern/useQueries.js"],"sourcesContent":["import { replaceEqualDeep, shallowEqualObjects } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { QueryObserver } from \"./queryObserver.js\";\n//#region src/queriesObserver.ts\nfunction difference(array1, array2) {\n\tconst excludeSet = new Set(array2);\n\treturn array1.filter((x) => !excludeSet.has(x));\n}\n/**\n* A `QueriesObserver` watches an array of queries at once, exposing them as\n* a single array of `QueryObserverResult`s (or, when a `combine` option is\n* given, as a combined value derived from that array). It manages one\n* internal `QueryObserver` per query, and is the primitive that framework\n* adapters (e.g. `useQueries`) build their hooks on top of.\n*\n* @example\n* ```ts\n* const observer = new QueriesObserver(queryClient, [\n* { queryKey: ['post', 1], queryFn: fetchPost },\n* { queryKey: ['post', 2], queryFn: fetchPost },\n* ])\n*\n* const unsubscribe = observer.subscribe((result) => {\n* console.log(result)\n* })\n* ```\n*/\nvar QueriesObserver = class extends Subscribable {\n\t#client;\n\t#result;\n\t#queries;\n\t#options;\n\t#observers;\n\t#combinedResult;\n\t#lastCombine;\n\t#lastResult;\n\t#lastQueryHashes;\n\t#observerMatches = [];\n\tconstructor(client, queries, options) {\n\t\tsuper();\n\t\tthis.#client = client;\n\t\tthis.#options = options;\n\t\tthis.#queries = [];\n\t\tthis.#observers = [];\n\t\tthis.#result = [];\n\t\tthis.setQueries(queries);\n\t}\n\tonSubscribe() {\n\t\tif (this.listeners.size === 1) this.#observers.forEach((observer) => {\n\t\t\tobserver.subscribe((result) => {\n\t\t\t\tthis.#onUpdate(observer, result);\n\t\t\t});\n\t\t});\n\t}\n\tonUnsubscribe() {\n\t\tif (!this.listeners.size) this.destroy();\n\t}\n\t/**\n\t* Stops observing all queries: clears all listeners and destroys every\n\t* underlying `QueryObserver` this observer manages.\n\t*/\n\tdestroy() {\n\t\tthis.listeners = /* @__PURE__ */ new Set();\n\t\tthis.#observers.forEach((observer) => {\n\t\t\tobserver.destroy();\n\t\t});\n\t}\n\t/**\n\t* Replaces the set of queries being observed. Existing `QueryObserver`s\n\t* are reused for queries that match an already-observed query hash;\n\t* observers for queries that are no longer present are destroyed, and new\n\t* observers are created and subscribed to for newly added queries.\n\t*\n\t* @example\n\t* ```ts\n\t* observer.setQueries([\n\t* { queryKey: ['post', 1], queryFn: fetchPost },\n\t* { queryKey: ['post', 3], queryFn: fetchPost },\n\t* ])\n\t* ```\n\t*/\n\tsetQueries(queries, options) {\n\t\tthis.#queries = queries;\n\t\tthis.#options = options;\n\t\tif (process.env.NODE_ENV !== \"production\") {\n\t\t\tconst queryHashes = queries.map((query) => this.#client.defaultQueryOptions(query).queryHash);\n\t\t\tif (new Set(queryHashes).size !== queryHashes.length) console.warn(\"[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.\");\n\t\t}\n\t\tnotifyManager.batch(() => {\n\t\t\tconst prevObservers = this.#observers;\n\t\t\tconst newObserverMatches = this.#findMatchingObservers(this.#queries);\n\t\t\tnewObserverMatches.forEach((match) => match.observer.setOptions(match.defaultedQueryOptions));\n\t\t\tconst newObservers = newObserverMatches.map((match) => match.observer);\n\t\t\tconst newResult = newObservers.map((observer) => observer.getCurrentResult());\n\t\t\tconst hasLengthChange = prevObservers.length !== newObservers.length;\n\t\t\tconst hasIndexChange = newObservers.some((observer, index) => observer !== prevObservers[index]);\n\t\t\tconst hasStructuralChange = hasLengthChange || hasIndexChange;\n\t\t\tconst hasResultChange = hasStructuralChange ? true : newResult.some((result, index) => {\n\t\t\t\tconst prev = this.#result[index];\n\t\t\t\treturn !prev || !shallowEqualObjects(result, prev);\n\t\t\t});\n\t\t\tif (!hasStructuralChange && !hasResultChange) return;\n\t\t\tif (hasStructuralChange) {\n\t\t\t\tthis.#observerMatches = newObserverMatches;\n\t\t\t\tthis.#observers = newObservers;\n\t\t\t}\n\t\t\tthis.#result = newResult;\n\t\t\tif (!this.hasListeners()) return;\n\t\t\tif (hasStructuralChange) {\n\t\t\t\tdifference(prevObservers, newObservers).forEach((observer) => {\n\t\t\t\t\tobserver.destroy();\n\t\t\t\t});\n\t\t\t\tdifference(newObservers, prevObservers).forEach((observer) => {\n\t\t\t\t\tobserver.subscribe((result) => {\n\t\t\t\t\t\tthis.#onUpdate(observer, result);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.#notify();\n\t\t});\n\t}\n\t/**\n\t* Returns the most recently computed array of `QueryObserverResult`s, one\n\t* per observed query, in the same order as the queries passed to the\n\t* constructor or `setQueries`.\n\t*\n\t* @example\n\t* ```ts\n\t* const results = observer.getCurrentResult()\n\t* const data = results.map((result) => result.data)\n\t* ```\n\t*/\n\tgetCurrentResult() {\n\t\treturn this.#result;\n\t}\n\t/**\n\t* Returns the underlying `Query` instances currently being observed, in\n\t* the same order as the queries passed to the constructor or `setQueries`.\n\t*/\n\tgetQueries() {\n\t\treturn this.#observers.map((observer) => observer.getCurrentQuery());\n\t}\n\t/**\n\t* Returns the underlying `QueryObserver` instances this observer manages,\n\t* in the same order as the queries passed to the constructor or\n\t* `setQueries`.\n\t*/\n\tgetObservers() {\n\t\treturn this.#observers;\n\t}\n\t/**\n\t* The `QueriesObserver` counterpart of {@link QueryObserver#getOptimisticResult} — computes\n\t* the result for the given (already-defaulted) queries right now, synchronously. Called by\n\t* framework adapters (e.g. `useQueries`) ahead of subscribing, returning a tuple of the raw\n\t* per-query results, a function to compute the combined result from them, and a function to\n\t* wrap the results for property-access tracking.\n\t*/\n\tgetOptimisticResult(queries, combine) {\n\t\tconst matches = this.#findMatchingObservers(queries);\n\t\tconst result = matches.map((match) => match.observer.getOptimisticResult(match.defaultedQueryOptions));\n\t\tconst queryHashes = matches.map((match) => match.defaultedQueryOptions.queryHash);\n\t\treturn [\n\t\t\tresult,\n\t\t\t(r) => {\n\t\t\t\treturn this.#combineResult(r ?? result, combine, queryHashes);\n\t\t\t},\n\t\t\t() => {\n\t\t\t\treturn this.#trackResult(result, matches);\n\t\t\t}\n\t\t];\n\t}\n\t#trackResult(result, matches) {\n\t\tconst trackedProps = /* @__PURE__ */ new Set();\n\t\treturn matches.map((match, index) => {\n\t\t\tconst observerResult = result[index];\n\t\t\treturn !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {\n\t\t\t\tif (!trackedProps.has(accessedProp)) {\n\t\t\t\t\ttrackedProps.add(accessedProp);\n\t\t\t\t\tmatches.forEach((m) => {\n\t\t\t\t\t\tm.observer.trackProp(accessedProp);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}) : observerResult;\n\t\t});\n\t}\n\t#combineResult(input, combine, queryHashes) {\n\t\tif (combine) {\n\t\t\tconst lastHashes = this.#lastQueryHashes;\n\t\t\tconst queryHashesChanged = queryHashes !== void 0 && lastHashes !== void 0 && (lastHashes.length !== queryHashes.length || queryHashes.some((hash, i) => hash !== lastHashes[i]));\n\t\t\tif (this.#result !== this.#lastResult || queryHashesChanged || combine !== this.#lastCombine) {\n\t\t\t\tthis.#lastCombine = combine;\n\t\t\t\tthis.#lastResult = this.#result;\n\t\t\t\tif (queryHashes !== void 0) this.#lastQueryHashes = queryHashes;\n\t\t\t\tthis.#combinedResult = replaceEqualDeep(this.#combinedResult, combine(input));\n\t\t\t}\n\t\t\treturn this.#combinedResult;\n\t\t}\n\t\treturn input;\n\t}\n\t#shouldSkipCombine() {\n\t\treturn !this.#options?.combine || this.#observers.some((observer, index) => {\n\t\t\treturn observer.options.suspense && this.#result[index]?.data === void 0;\n\t\t});\n\t}\n\t#findMatchingObservers(queries) {\n\t\tconst prevObserversMap = /* @__PURE__ */ new Map();\n\t\tthis.#observers.forEach((observer) => {\n\t\t\tconst key = observer.options.queryHash;\n\t\t\tif (!key) return;\n\t\t\tconst previousObservers = prevObserversMap.get(key);\n\t\t\tif (previousObservers) previousObservers.push(observer);\n\t\t\telse prevObserversMap.set(key, [observer]);\n\t\t});\n\t\tconst observers = [];\n\t\tqueries.forEach((options) => {\n\t\t\tconst defaultedOptions = this.#client.defaultQueryOptions(options);\n\t\t\tconst observer = prevObserversMap.get(defaultedOptions.queryHash)?.shift() ?? new QueryObserver(this.#client, defaultedOptions);\n\t\t\tobservers.push({\n\t\t\t\tdefaultedQueryOptions: defaultedOptions,\n\t\t\t\tobserver\n\t\t\t});\n\t\t});\n\t\treturn observers;\n\t}\n\t#onUpdate(observer, result) {\n\t\tconst index = this.#observers.indexOf(observer);\n\t\tif (index !== -1) {\n\t\t\tthis.#result = this.#result.slice();\n\t\t\tthis.#result[index] = result;\n\t\t\tthis.#notify();\n\t\t}\n\t}\n\t#notify() {\n\t\tif (this.hasListeners()) {\n\t\t\tconst shouldSkipCombine = this.#shouldSkipCombine();\n\t\t\tconst previousResult = this.#combinedResult;\n\t\t\tconst newResult = shouldSkipCombine ? previousResult : this.#combineResult(this.#trackResult(this.#result, this.#observerMatches), this.#options?.combine);\n\t\t\tif (shouldSkipCombine || previousResult !== newResult) notifyManager.batch(() => {\n\t\t\t\tthis.listeners.forEach((listener) => {\n\t\t\t\t\tlistener(this.#result);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n};\n//#endregion\nexport { QueriesObserver };\n\n//# sourceMappingURL=queriesObserver.js.map","\"use client\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary } from \"./errorBoundaryUtils.js\";\nimport { ensureSuspenseTimers, fetchOptimistic, shouldSuspend } from \"./suspense.js\";\nimport * as React from \"react\";\nimport { QueriesObserver, QueryObserver, noop, notifyManager } from \"@tanstack/query-core\";\n//#region src/useQueries.ts\n/**\n* The `useQueries` hook can be used to fetch a variable number of queries.\n*\n* The `queries` key accepts an array with query option objects mostly identical to `useQuery` — the top-level\n* `subscribed` option isn't accepted per query (see `placeholderData` below for another difference). A custom\n* `QueryClient` is supplied once, as `useQueries`' own top-level second argument, rather than per query.\n*\n* Having the same query key more than once in the array of query objects may cause some data to be shared\n* between queries. To avoid this, consider de-duplicating the queries and map the results back to the desired\n* structure.\n*\n* The `combine` option can be used to combine the results of the queries into a single value. The result will\n* be structurally shared to be as referentially stable as possible.\n*\n* @remarks The `combine` function only re-runs if it changed referentially, or if any of the query results\n* changed. An inlined `combine` function, as shown in the example below, therefore runs on every render — wrap\n* it in `useCallback`, or extract it to a stable function reference if it doesn't have any dependencies, to\n* avoid that.\n*\n* Unlike `useQuery`, `useQueries` cannot infer the `data` argument of an _inline_ `select` from its sibling\n* `queryFn`. Because `useQueries` infers the type of the whole `queries` array at once, the `select` parameter\n* of a query object written inline cannot be contextually typed from that same object's `queryFn`, so it falls\n* back to `unknown` — a [known TypeScript limitation](https://github.com/TanStack/query/issues/6556). Annotate\n* the `select` parameter explicitly, or define the query with {@link queryOptions}, which resolves its types in\n* a single object _before_ it reaches `useQueries`, to work around this — see the example below. The same\n* limitation applies to {@link useSuspenseQueries}.\n*\n* `placeholderData` is supported here too, but unlike `useQuery`, it doesn't receive information from\n* previously rendered queries, because the number of queries can differ between renders.\n* @param queryClient - Use this to provide a custom `QueryClient`. Otherwise, the one from the nearest context\n* will be used.\n* @returns The combined result. Without `combine`, this is an array with all the query results, in the same\n* order as the input. When `combine` is provided, this is the value returned by `combine` instead.\n*\n* @example\n* ```tsx\n* import { useQueries } from '@tanstack/react-query'\n*\n* function Posts({ ids }: { ids: Array<number> }) {\n* const postQueries = useQueries({\n* queries: ids.map((id) => ({\n* queryKey: ['post', id],\n* queryFn: () => fetchPost(id),\n* staleTime: Infinity,\n* })),\n* })\n*\n* return (\n* <ul>\n* {postQueries.map((query, index) => {\n* if (query.isPending) return <li key={ids[index]}>Loading...</li>\n* if (query.isError) return <li key={ids[index]}>Error: {query.error.message}</li>\n* return <li key={ids[index]}>{query.data.title}</li>\n* })}\n* </ul>\n* )\n* }\n* ```\n*\n* @example\n* Combining results into a single value:\n* ```tsx\n* import { useQueries } from '@tanstack/react-query'\n*\n* function Posts({ ids }: { ids: Array<number> }) {\n* const { data, isPending, isError } = useQueries({\n* queries: ids.map((id) => ({\n* queryKey: ['post', id],\n* queryFn: () => fetchPost(id),\n* })),\n* combine: (postQueries) => {\n* return {\n* data: postQueries.map((query) => query.data),\n* isPending: postQueries.some((query) => query.isPending),\n* isError: postQueries.some((query) => query.isError),\n* }\n* },\n* })\n*\n* if (isPending) return 'Loading...'\n* if (isError) return 'Error loading posts'\n*\n* return (\n* <ul>\n* {data.map((post) => (\n* <li key={post?.id}>{post?.title}</li>\n* ))}\n* </ul>\n* )\n* }\n* ```\n*\n* @example\n* Typing `select` via {@link queryOptions}. Note that spreading a `queryOptions` result and overriding\n* `select` inline still falls back to `unknown` — wrap the spread in `queryOptions` again so the override is\n* resolved before it reaches `useQueries`:\n* ```tsx\n* import { queryOptions, useQueries } from '@tanstack/react-query'\n*\n* const postOptions = (id: number) =>\n* queryOptions({\n* queryKey: ['post', id],\n* queryFn: () => fetchPost(id),\n* })\n*\n* function PostTitle({ id }: { id: number }) {\n* const [{ data: broken }] = useQueries({\n* queries: [\n* {\n* ...postOptions(id),\n* // ❌ `data` is `unknown` here\n* select: (data) => data.title,\n* },\n* ],\n* })\n*\n* const [{ data: fixed }] = useQueries({\n* queries: [\n* queryOptions({\n* ...postOptions(id),\n* // ✅ `data` is `Post`\n* select: (data) => data.title,\n* }),\n* ],\n* })\n*\n* return <h1>{fixed}</h1>\n* }\n* ```\n*/\nfunction useQueries({ queries, ...options }, queryClient) {\n\tconst client = useQueryClient(queryClient);\n\tconst isRestoring = useIsRestoring();\n\tconst errorResetBoundary = useQueryErrorResetBoundary();\n\tconst subscribed = options.subscribed !== false;\n\tconst defaultedQueries = React.useMemo(() => queries.map((opts) => {\n\t\tconst defaultedOptions = client.defaultQueryOptions(opts);\n\t\tdefaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n\t\treturn defaultedOptions;\n\t}), [\n\t\tqueries,\n\t\tclient,\n\t\tisRestoring,\n\t\tsubscribed\n\t]);\n\tdefaultedQueries.forEach((queryOptions) => {\n\t\tensureSuspenseTimers(queryOptions);\n\t\tconst query = client.getQueryCache().get(queryOptions.queryHash);\n\t\tensurePreventErrorBoundaryRetry(queryOptions, errorResetBoundary, query);\n\t});\n\tuseClearResetErrorBoundary(errorResetBoundary);\n\tconst [observer] = React.useState(() => new QueriesObserver(client, defaultedQueries, options));\n\tconst [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(defaultedQueries, options.combine);\n\tconst shouldSubscribe = !isRestoring && subscribed;\n\tReact.useSyncExternalStore(React.useCallback((onStoreChange) => shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop, [observer, shouldSubscribe]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n\tReact.useEffect(() => {\n\t\tobserver.setQueries(defaultedQueries, options);\n\t}, [\n\t\tdefaultedQueries,\n\t\toptions,\n\t\tobserver\n\t]);\n\tconst suspensePromises = optimisticResult.some((result, index) => shouldSuspend(defaultedQueries[index], result)) ? optimisticResult.flatMap((result, index) => {\n\t\tconst opts = defaultedQueries[index];\n\t\tif (opts && shouldSuspend(opts, result)) {\n\t\t\tconst queryObserver = new QueryObserver(client, opts);\n\t\t\treturn fetchOptimistic(opts, queryObserver, errorResetBoundary);\n\t\t}\n\t\treturn [];\n\t}) : [];\n\tif (suspensePromises.length > 0) throw Promise.all(suspensePromises);\n\tconst firstSingleResultWhichShouldThrow = optimisticResult.find((result, index) => {\n\t\tconst query = defaultedQueries[index];\n\t\treturn query && getHasError({\n\t\t\tresult,\n\t\t\terrorResetBoundary,\n\t\t\tthrowOnError: query.throwOnError,\n\t\t\tquery: client.getQueryCache().get(query.queryHash),\n\t\t\tsuspense: query.suspense\n\t\t});\n\t});\n\tif (firstSingleResultWhichShouldThrow) throw firstSingleResultWhichShouldThrow.error;\n\treturn getCombinedResult(trackResult());\n}\n//#endregion\nexport { useQueries };\n\n//# sourceMappingURL=useQueries.js.map"],"ignoreList":[0,1],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";var n=e(t(),1),r=(e,t)=>{let r=(0,n.useRef)(e);(0,n.useEffect)(()=>{r.current=e}),(0,n.useEffect)(()=>{if(!t)return;let e=e=>{(e.metaKey||e.ctrlKey)&&!e.altKey&&e.key.toLowerCase()===`s`&&(e.preventDefault(),r.current())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t])};export{r as t};
|
|
2
|
+
//# sourceMappingURL=useSaveShortcut-rKtp1qK7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSaveShortcut-rKtp1qK7.js","names":["useRef","__toESM","import_react","require_react","useSaveShortcut","latest","onSave","enabled","onKeyDown","event"],"sources":["../../src/hooks/useSaveShortcut.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * Mod+S runs `onSave` (instead of the browser's \"save page\") while `enabled`. The entry form saves with it,\n * the model builder opens its review.\n */\nexport const useSaveShortcut = (onSave: () => void, enabled: boolean) => {\n const latest = useRef(onSave);\n useEffect(() => {\n latest.current = onSave;\n });\n useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n const onKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && !event.altKey && event.key.toLowerCase() === 's') {\n event.preventDefault();\n latest.current();\n }\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [enabled]);\n};\n"],"mappings":"qGAMaI,GAAmB,EAAoB,IAAqB,CACvE,IAAMC,GAAA,EAASL,EAAAA,OAAAA,CAAOM,CAAM,GAC5B,EAAAJ,EAAA,UAAA,KAAgB,CACd,EAAO,QAAUI,CACnB,CAAC,GACD,EAAAJ,EAAA,UAAA,KAAgB,CACd,GAAI,CAACK,EACH,OAEF,IAAMC,EAAa,GAAyB,EACrCC,EAAM,SAAWA,EAAM,UAAY,CAACA,EAAM,QAAUA,EAAM,IAAI,YAAY,IAAM,MACnFA,EAAM,eAAe,EACrBJ,EAAO,QAAQ,EAEnB,EAEA,OADA,OAAO,iBAAiB,UAAWG,CAAS,MAC/B,OAAO,oBAAoB,UAAWA,CAAS,CAC9D,EAAG,CAACD,CAAO,CAAC,CACd"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./cn-BQ3voEft.js";import{u as t}from"./auth-pcS9CCXu.js";var n={name:`braces`,size:24,node:[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]],aliases:[`curly-braces`]};n.node;var r=e(n),i={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};i.node;var a=e(i),o={name:`link-2`,size:24,node:[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]};o.node;var s=e(o),c=()=>{let e=t().data;return{multiSite:(e?.siteCount??1)>1,canShare:e?.networkPermissions.includes(`schema.create`)??!1,canCreateOnSite:e?.sitePermissions.includes(`schema.create`)??!1}};export{r as i,s as n,a as r,c as t};
|
|
2
|
+
//# sourceMappingURL=useSchemaScopeAccess-DUBeS9kU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSchemaScopeAccess-DUBeS9kU.js","names":["__iconData","__iconData","createLucideIcon","useMe","__iconData$2","Braces","__iconData$1","Layers","__iconData","Link2","useSchemaScopeAccess","me"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/braces.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/layers.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/link-2.mjs","../../src/hooks/useSchemaScopeAccess.ts"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"braces\",\n size: 24,\n node: [\n [\n \"path\",\n { d: \"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1\", key: \"ezmyqa\" }\n ],\n [\n \"path\",\n {\n d: \"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1\",\n key: \"e1hn23\"\n }\n ]\n ],\n aliases: [\"curly-braces\"]\n};\n__iconData.node;\nconst Braces = createLucideIcon(__iconData);\n\nexport { __iconData, Braces as default };\n//# sourceMappingURL=braces.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"layers\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\",\n key: \"zw3jo\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\",\n key: \"1wduqc\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\",\n key: \"kqbvx6\"\n }\n ]\n ],\n aliases: [\"layers-3\"]\n};\n__iconData.node;\nconst Layers = createLucideIcon(__iconData);\n\nexport { __iconData, Layers as default };\n//# sourceMappingURL=layers.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"link-2\",\n size: 24,\n node: [\n [\"path\", { d: \"M9 17H7A5 5 0 0 1 7 7h2\", key: \"8i5ue5\" }],\n [\"path\", { d: \"M15 7h2a5 5 0 1 1 0 10h-2\", key: \"1b9ql8\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"12\", y2: \"12\", key: \"1jonct\" }]\n ]\n};\n__iconData.node;\nconst Link2 = createLucideIcon(__iconData);\n\nexport { __iconData, Link2 as default };\n//# sourceMappingURL=link-2.mjs.map\n","import { useMe } from '@/api/auth';\n\n/**\n * Where definitions can live, for this admin: `multiSite` when the instance has more than one site (scope\n * is shown only then), `canShare` when the admin may create and change definitions shared with all sites\n * (`schema.create` on every site), and `canCreateOnSite` when a role on this site grants it for the site's\n * own definitions. The server enforces each of these.\n */\nexport const useSchemaScopeAccess = () => {\n const me = useMe().data;\n return {\n multiSite: (me?.siteCount ?? 1) > 1,\n canShare: me?.networkPermissions.includes('schema.create') ?? false,\n canCreateOnSite: me?.sitePermissions.includes('schema.create') ?? false,\n };\n};\n"],"ignoreList":[0,1,2],"mappings":"4EASA,IAAMA,EAAa,CACjB,KAAM,SACN,KAAM,GACN,KAAM,CACJ,CACE,OACA,CAAE,EAAG,uEAAwE,IAAK,QAAS,CAC7F,EACA,CACE,OACA,CACE,EAAG,2EACH,IAAK,QACP,CACF,CACF,EACA,QAAS,CAAC,cAAc,CAC1B,EACAA,EAAW,KACX,IAAMK,EAASH,EAAiBF,CAAU,ECnBpCC,EAAa,CACjB,KAAM,SACN,KAAM,GACN,KAAM,CACJ,CACE,OACA,CACE,EAAG,+GACH,IAAK,OACP,CACF,EACA,CACE,OACA,CACE,EAAG,4EACH,IAAK,QACP,CACF,EACA,CACE,OACA,CACE,EAAG,4EACH,IAAK,QACP,CACF,CACF,EACA,QAAS,CAAC,UAAU,CACtB,EACAA,EAAW,KACX,IAAMM,EAASL,EAAiBD,CAAU,EC7BpCO,EAAa,CACjB,KAAM,SACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,EAAG,0BAA2B,IAAK,QAAS,CAAC,EACxD,CAAC,OAAQ,CAAE,EAAG,4BAA6B,IAAK,QAAS,CAAC,EAC1D,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAS,CAAC,CACnE,CACF,EACAA,EAAW,KACX,IAAMC,EAAQP,EAAiBM,CAAU,ECX5BE,MAA6B,CACxC,IAAMC,EAAKR,EAAM,CAAC,CAAC,KACnB,MAAO,CACL,WAAYQ,GAAI,WAAa,GAAK,EAClC,SAAUA,GAAI,mBAAmB,SAAS,eAAe,GAAK,GAC9D,gBAAiBA,GAAI,gBAAgB,SAAS,eAAe,GAAK,EACpE,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./useDebouncedValue-Dqs3wwhn.js";var r=e(t(),1),i=300,a=(e,t)=>{let[a,o]=(0,r.useState)(e??``),s=n(a,i),c=(0,r.useRef)(t);return(0,r.useEffect)(()=>{c.current=t}),(0,r.useEffect)(()=>{let t=s.trim()||void 0;t!==e&&c.current(t)},[s]),{text:a,setText:o}};export{a as t};
|
|
2
|
+
//# sourceMappingURL=useSearchInput-1fDoEtXe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearchInput-1fDoEtXe.js","names":["useState","useRef","__toESM","useDebouncedValue","import_react","require_react","SEARCH_DEBOUNCE_MS","useSearchInput","text","setText","urlValue","debounced","commit","onCommit","next"],"sources":["../../src/hooks/useSearchInput.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDebouncedValue } from './useDebouncedValue';\n\nconst SEARCH_DEBOUNCE_MS = 300;\n\n/** A search box bound to a URL value: typing updates the URL once the user pauses. */\nexport const useSearchInput = (\n urlValue: string | undefined,\n onCommit: (value: string | undefined) => void,\n) => {\n const [text, setText] = useState(urlValue ?? '');\n const debounced = useDebouncedValue(text, SEARCH_DEBOUNCE_MS);\n const commit = useRef(onCommit);\n useEffect(() => {\n commit.current = onCommit;\n });\n useEffect(() => {\n const next = debounced.trim() || undefined;\n if (next !== urlValue) {\n commit.current(next);\n }\n // Only when the debounced text settles; the URL value is the comparison, not a trigger.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debounced]);\n return { text, setText };\n};\n"],"mappings":"yJAGMM,EAAqB,IAGdC,GACX,EACA,IACG,CACH,GAAM,CAACC,EAAMC,IAAA,EAAWT,EAAAA,SAAAA,CAASU,GAAY,EAAE,EACzCC,EAAYR,EAAkBK,EAAMF,CAAkB,EACtDM,GAAA,EAASX,EAAAA,OAAAA,CAAOY,CAAQ,EAY9B,OAXA,EAAAT,EAAA,UAAA,KAAgB,CACd,EAAO,QAAUS,CACnB,CAAC,GACD,EAAAT,EAAA,UAAA,KAAgB,CACd,IAAMU,EAAOH,EAAU,KAAK,GAAK,IAAA,GAC7BG,IAASJ,GACXE,EAAO,QAAQE,CAAI,CAIvB,EAAG,CAACH,CAAS,CAAC,EACP,CAAE,OAAM,SAAQ,CACzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./cn-BQ3voEft.js";var t={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};t.node;var n=e(t);export{n as t};
|
|
2
|
+
//# sourceMappingURL=users-BOn2ohJQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-BOn2ohJQ.js","names":["createLucideIcon","__iconData","Users"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/users.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"users\",\n size: 24,\n node: [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"path\", { d: \"M16 3.128a4 4 0 0 1 0 7.744\", key: \"16gr8j\" }],\n [\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\", key: \"kshegd\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }]\n ]\n};\n__iconData.node;\nconst Users = createLucideIcon(__iconData);\n\nexport { __iconData, Users as default };\n//# sourceMappingURL=users.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAS,CAAC,EAC1E,CAAC,OAAQ,CAAE,EAAG,8BAA+B,IAAK,QAAS,CAAC,EAC5D,CAAC,OAAQ,CAAE,EAAG,6BAA8B,IAAK,QAAS,CAAC,EAC3D,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,OAAQ,CAAC,CACvD,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{H as e,P as t,V as n,bt as r,l as i,s as a}from"./cn-BQ3voEft.js";var o=()=>e({queryKey:t.users,queryFn:()=>i.users.list(),meta:{silent:!0}}),s=()=>e({queryKey:t.invitations,queryFn:()=>i.invitations.list(),meta:{silent:!0}}),c=()=>{let e=r();return n({mutationKey:[`invitations`,`create`],meta:{silent:!0},mutationFn:e=>a(()=>i.invitations.create(e)),onSuccess:()=>e.invalidateQueries({queryKey:t.invitations})})},l=()=>{let e=r();return n({mutationKey:[`invitations`,`revoke`],mutationFn:e=>a(()=>i.invitations.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:t.invitations})})},u=()=>n({mutationKey:[`invitations`,`link`],mutationFn:e=>a(()=>i.invitations.link(e))}),d=()=>{let e=r();return n({mutationKey:[`users`,`update`],meta:{silent:!0},mutationFn:({id:e,input:t})=>a(()=>i.users.update(e,t)),onSettled:()=>e.invalidateQueries({queryKey:t.users})})},f=()=>{let e=r();return n({mutationKey:[`users`,`setStatus`],mutationFn:({id:e,status:t})=>a(()=>i.users.update(e,{status:t})),onSettled:()=>e.invalidateQueries({queryKey:t.users})})},p=()=>{let e=r();return n({mutationKey:[`users`,`remove`],mutationFn:e=>a(()=>i.users.remove(e)),onSettled:()=>e.invalidateQueries({queryKey:t.users})})};export{l as a,o as c,p as i,c as n,f as o,u as r,d as s,s as t};
|
|
2
|
+
//# sourceMappingURL=users-BkKc4MNB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-BkKc4MNB.js","names":["useQuery","queryKeys","useMutation","useQueryClient","adminApi","withCsrf","useUsers","useInvitations","useInviteUser","queryClient","input","useRevokeInvitation","id","useIssueInvitationLink","useUpdateUser","useSetUserStatus","useRemoveUser"],"sources":["../../src/api/users.ts"],"sourcesContent":["import type { AdminUserStatus, InviteUserInput, UpdateAdminUserInput } from '@shapio/client';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { withCsrf } from './csrf';\nimport { queryKeys } from './queryKeys';\n\nexport const useUsers = () =>\n useQuery({ queryKey: queryKeys.users, queryFn: () => adminApi.users.list(), meta: { silent: true } });\n\nexport const useInvitations = () =>\n useQuery({\n queryKey: queryKeys.invitations,\n queryFn: () => adminApi.invitations.list(),\n meta: { silent: true },\n });\n\nexport const useInviteUser = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['invitations', 'create'],\n meta: { silent: true },\n mutationFn: (input: InviteUserInput) => withCsrf(() => adminApi.invitations.create(input)),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: queryKeys.invitations }),\n });\n};\n\nexport const useRevokeInvitation = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['invitations', 'revoke'],\n mutationFn: (id: string) => withCsrf(() => adminApi.invitations.revoke(id)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.invitations }),\n });\n};\n\n/** A fresh accept link to send by hand; any earlier link for the invitation stops working. */\nexport const useIssueInvitationLink = () =>\n useMutation({\n mutationKey: ['invitations', 'link'],\n mutationFn: (id: string) => withCsrf(() => adminApi.invitations.link(id)),\n });\n\nexport const useUpdateUser = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['users', 'update'],\n meta: { silent: true },\n mutationFn: ({ id, input }: { id: string; input: UpdateAdminUserInput }) =>\n withCsrf(() => adminApi.users.update(id, input)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.users }),\n });\n};\n\nexport const useSetUserStatus = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['users', 'setStatus'],\n mutationFn: ({ id, status }: { id: string; status: AdminUserStatus }) =>\n withCsrf(() => adminApi.users.update(id, { status })),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.users }),\n });\n};\n\nexport const useRemoveUser = () => {\n const queryClient = useQueryClient();\n return useMutation({\n mutationKey: ['users', 'remove'],\n mutationFn: (id: string) => withCsrf(() => adminApi.users.remove(id)),\n onSettled: () => queryClient.invalidateQueries({ queryKey: queryKeys.users }),\n });\n};\n"],"mappings":"yEAMA,IAAaM,MACXN,EAAS,CAAE,SAAUC,EAAU,MAAO,YAAeG,EAAS,MAAM,KAAK,EAAG,KAAM,CAAE,OAAQ,EAAK,CAAE,CAAC,EAEzFG,MACXP,EAAS,CACP,SAAUC,EAAU,YACpB,YAAeG,EAAS,YAAY,KAAK,EACzC,KAAM,CAAE,OAAQ,EAAK,CACvB,CAAC,EAEUI,MAAsB,CACjC,IAAMC,EAAcN,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,cAAe,QAAQ,EACrC,KAAM,CAAE,OAAQ,EAAK,EACrB,WAAa,GAA2BG,MAAeD,EAAS,YAAY,OAAOM,CAAK,CAAC,EACzF,cAAiBD,EAAY,kBAAkB,CAAE,SAAUR,EAAU,WAAY,CAAC,CACpF,CAAC,CACH,EAEaU,MAA4B,CACvC,IAAMF,EAAcN,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,cAAe,QAAQ,EACrC,WAAa,GAAeG,MAAeD,EAAS,YAAY,OAAOQ,CAAE,CAAC,EAC1E,cAAiBH,EAAY,kBAAkB,CAAE,SAAUR,EAAU,WAAY,CAAC,CACpF,CAAC,CACH,EAGaY,MACXX,EAAY,CACV,YAAa,CAAC,cAAe,MAAM,EACnC,WAAa,GAAeG,MAAeD,EAAS,YAAY,KAAKQ,CAAE,CAAC,CAC1E,CAAC,EAEUE,MAAsB,CACjC,IAAML,EAAcN,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,QAAS,QAAQ,EAC/B,KAAM,CAAE,OAAQ,EAAK,EACrB,YAAa,CAAE,KAAI,WACjBG,MAAeD,EAAS,MAAM,OAAOQ,EAAIF,CAAK,CAAC,EACjD,cAAiBD,EAAY,kBAAkB,CAAE,SAAUR,EAAU,KAAM,CAAC,CAC9E,CAAC,CACH,EAEac,MAAyB,CACpC,IAAMN,EAAcN,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,QAAS,WAAW,EAClC,YAAa,CAAE,KAAI,YACjBG,MAAeD,EAAS,MAAM,OAAOQ,EAAI,CAAE,QAAO,CAAC,CAAC,EACtD,cAAiBH,EAAY,kBAAkB,CAAE,SAAUR,EAAU,KAAM,CAAC,CAC9E,CAAC,CACH,EAEae,MAAsB,CACjC,IAAMP,EAAcN,EAAe,EACnC,OAAOD,EAAY,CACjB,YAAa,CAAC,QAAS,QAAQ,EAC/B,WAAa,GAAeG,MAAeD,EAAS,MAAM,OAAOQ,CAAE,CAAC,EACpE,cAAiBH,EAAY,kBAAkB,CAAE,SAAUR,EAAU,KAAM,CAAC,CAC9E,CAAC,CACH"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
for(var e={8:`Backspace`,9:`Tab`,10:`Enter`,12:`NumLock`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,44:`PrintScreen`,45:`Insert`,46:`Delete`,59:`;`,61:`=`,91:`Meta`,92:`Meta`,106:`*`,107:`+`,108:`,`,109:`-`,110:`.`,111:`/`,144:`NumLock`,145:`ScrollLock`,160:`Shift`,161:`Shift`,162:`Control`,163:`Control`,164:`Alt`,165:`Alt`,173:`-`,186:`;`,187:`=`,188:`,`,189:`-`,190:`.`,191:`/`,192:"`",219:`[`,220:`\\`,221:`]`,222:`'`},t={48:`)`,49:`!`,50:`@`,51:`#`,52:`$`,53:`%`,54:`^`,55:`&`,56:`*`,57:`(`,59:`:`,61:`+`,173:`_`,186:`:`,187:`+`,188:`<`,189:`_`,190:`>`,191:`?`,192:`~`,219:`{`,220:`|`,221:`}`,222:`"`},n=typeof navigator<`u`&&/Mac/.test(navigator.platform),r=typeof navigator<`u`&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),i=0;i<10;i++)e[48+i]=e[96+i]=String(i);for(var i=1;i<=24;i++)e[i+111]=`F`+i;for(var i=65;i<=90;i++)e[i]=String.fromCharCode(i+32),t[i]=String.fromCharCode(i);for(var a in e)t.hasOwnProperty(a)||(t[a]=e[a]);function o(i){var a=!(n&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||r&&i.shiftKey&&i.key&&i.key.length==1||i.key==`Unidentified`)&&i.key||(i.shiftKey?t:e)[i.keyCode]||i.key||`Unidentified`;return a==`Esc`&&(a=`Escape`),a==`Del`&&(a=`Delete`),a==`Left`&&(a=`ArrowLeft`),a==`Up`&&(a=`ArrowUp`),a==`Right`&&(a=`ArrowRight`),a==`Down`&&(a=`ArrowDown`),a}export{o as n,t as r,e as t};
|
|
2
|
+
//# sourceMappingURL=w3c-keyname-BOAvb0qz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"w3c-keyname-BOAvb0qz.js","names":["base","shift","mac","ie","code","keyName","name","event"],"sources":["../../../../node_modules/.pnpm/w3c-keyname@2.2.8/node_modules/w3c-keyname/index.js"],"sourcesContent":["export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n"],"ignoreList":[0],"mappings":"AAsFA,IAAK,IAtFMA,EAAO,CAChB,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,UACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,MACJ,GAAI,WACJ,GAAI,SACJ,GAAI,IACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,cACJ,GAAI,SACJ,GAAI,SACJ,GAAI,IACJ,GAAI,IACJ,GAAI,OACJ,GAAI,OACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,UACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,MACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,GACP,EAEWC,EAAQ,CACjB,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,GACP,EAEIC,EAAM,OAAO,UAAa,KAAe,MAAM,KAAK,UAAU,QAAQ,EACtEC,EAAK,OAAO,UAAa,KAAe,gDAAgD,KAAK,UAAU,SAAS,EAG3G,EAAI,EAAG,EAAI,GAAI,IAAK,EAAK,GAAK,GAAK,EAAK,GAAK,GAAK,OAAO,CAAC,EAGnE,IAAK,IAAI,EAAI,EAAG,GAAK,GAAI,IAAK,EAAK,EAAI,KAAO,IAAM,EAGpD,IAAK,IAAI,EAAI,GAAI,GAAK,GAAI,IACxB,EAAK,GAAK,OAAO,aAAa,EAAI,EAAE,EACpC,EAAM,GAAK,OAAO,aAAa,CAAC,EAIlC,IAAK,IAAIC,KAAQJ,EAAWC,EAAM,eAAeG,CAAI,IAAG,EAAMA,GAAQJ,EAAKI,IAE3E,SAAgBC,EAAQ,EAAO,CAM7B,IAAIC,EAAQ,EAHIJ,GAAOK,EAAM,SAAWA,EAAM,UAAY,CAACA,EAAM,SAAW,CAACA,EAAM,QAC/EJ,GAAMI,EAAM,UAAYA,EAAM,KAAOA,EAAM,IAAI,QAAU,GACzDA,EAAM,KAAO,iBACSA,EAAM,MAC7BA,EAAM,SAAWN,EAAQD,EAAA,CAAMO,EAAM,UACtCA,EAAM,KAAO,eASf,OAPID,GAAQ,QAAO,EAAO,UACtBA,GAAQ,QAAO,EAAO,UAEtBA,GAAQ,SAAQ,EAAO,aACvBA,GAAQ,OAAM,EAAO,WACrBA,GAAQ,UAAS,EAAO,cACxBA,GAAQ,SAAQ,EAAO,aACpBA,CACT"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{j as r}from"./cn-BQ3voEft.js";import{c as i,l as a,o}from"./InfoHint-GJLRVumb.js";import{n as s}from"./skeleton-C3QLIh7W.js";import{n as c}from"./settle-LRKtTN_e.js";import{_ as l,g as u,p as d}from"./table-CZYtdoHn.js";import{t as f}from"./HintedLabel-CvC46uy_.js";var p=e(t(),1),m=e=>e.type===`checkbox`,h=e=>e.type===`file`,g=e=>e instanceof Date,_=e=>e==null,v=e=>typeof e==`object`,y=e=>!_(e)&&!Array.isArray(e)&&v(e)&&!g(e),b=e=>y(e)&&e.target?m(e.target)?e.target.checked:h(e.target)?e.target.files:e.target.value:e,x=/[.[\]'"]/,S=e=>e.split(x).filter(Boolean);function C(e,t){let n=S(t),r=e._formValues,i=e._defaultValues;for(let e=0;e<n.length-1;e++){let t=n[e];if(r=r==null?r:r[t],i=i==null?i:i[t],r===null||i===null)return null}}var w=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),T=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function E(e){if(typeof e!=`object`||!e)return e;if(e instanceof Date)return new Date(e);let t=typeof Blob<`u`&&e instanceof Blob,n=typeof FileList<`u`&&e instanceof FileList;if(T&&(t||n))return e;let r=Array.isArray(e);if(!r&&e.constructor!==Object)return e;let i=r?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(i[t]=E(e[t]));return i}var D={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},O={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},k={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},ee=[k.required,k.min,k.max,k.minLength,k.maxLength,k.pattern,k.validate],te=`form`,A=`root`,j=[`__proto__`,`constructor`,`prototype`],ne=/^\w*$/,M=e=>ne.test(e),N=e=>e===void 0,P=(e,t,n)=>{if(!t||!y(e))return n;let r=M(t)?[t]:S(t);if(r.some(e=>j.includes(e)))return n;let i=r.reduce((e,t)=>_(e)?void 0:e[t],e);return N(i)||i===e?N(e[t])?n:e[t]:i},F=e=>typeof e==`boolean`,I=e=>typeof e==`function`,L=(e,t,n)=>{let r=-1,i=M(t)?[t]:S(t),a=i.length,o=a-1;for(;++r<a;){let t=i[r],a=n;if(r!==o){let n=e[t];a=y(n)||Array.isArray(n)?n:isNaN(+i[r+1])?{}:[]}if(j.includes(t))return;e[t]=a,e=e[t]}},R=p.createContext(null);R.displayName=`HookFormControlContext`;var re=()=>p.useContext(R),ie=(e,t,n,r=!0)=>{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==O.all&&(t._proxyFormState[i]=!r||O.all),n&&(n[i]=!0),e[i]}});return i},z=T?p.useLayoutEffect:p.useEffect,ae=e=>{let t=e.constructor&&e.constructor.prototype;return y(t)&&t.hasOwnProperty(`isPrototypeOf`)},B=e=>_(e)||!v(e),V=(e,t)=>t.length===0&&!Array.isArray(e)&&!ae(e);function H(e,t,n=new WeakMap){if(e===t)return!0;if(B(e)||B(t))return Object.is(e,t);if(g(e)&&g(t))return Object.is(e.getTime(),t.getTime());let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;if(V(e,r)||V(t,i))return Object.is(e,t);if(!r.length&&Array.isArray(e)!==Array.isArray(t))return!1;let a=n.get(e);if(a&&a.has(t))return!0;if(a)a.add(t);else{let r=new WeakSet;r.add(t),n.set(e,r)}for(let i of r){let r=e[i];if(!(i in t))return!1;if(i!==`ref`){let e=t[i];if(g(r)&&g(e)||(y(r)||Array.isArray(r))&&(y(e)||Array.isArray(e))?!H(r,e,n):!Object.is(r,e))return!1}}return!0}function oe(e){let t=p.useRef(!1),n=p.useRef(!1),r=p.useRef(void 0),i=p.useRef(0);return i.current++,!n.current&&e&&(n.current=!0,r.current=E(e())),{resyncIfNeeded:p.useCallback((e,a,o)=>{if(e&&(t.current||n.current&&i.current>1)){let e=a();H(r.current,e)||o(e)}t.current=!0},[]),snapshot:p.useCallback((e,t)=>{e&&(r.current=E(t()))},[])}}function se(e){let t=re(),{control:n=t,disabled:r,name:i,exact:a}=e||{},o=()=>({...n._formState,defaultValues:n._defaultValues}),[s,c]=p.useState(o),l=p.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1}),{resyncIfNeeded:u,snapshot:d}=oe(o);return z(()=>{u(!r,o,c);let e=n._subscribe({name:i,formState:l.current,exact:a,callback:e=>{!r&&c({...n._formState,...e,defaultValues:n._defaultValues})}});return()=>{e(),d(!r,o)}},[n,i,r,a,u,d]),p.useEffect(()=>{l.current.isValid&&n._setValid(!0)},[n]),p.useMemo(()=>ie(s,n,l.current,!1),[s,n])}var U=e=>typeof e==`string`,ce=(e,t,n,r,i)=>U(e)?(r&&t.watch.add(e),P(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),P(n,e,P(i,e)))):(r&&(t.watchAll=!0),n);function le(e){let t=re(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:o,compute:s}=e||{},c=p.useRef(i),l=p.useRef(s),u=p.useRef(n),d=p.useRef(r);l.current=s;let f=()=>{let e=n._getWatch(r,c.current);return l.current?l.current(e):e},[m,h]=p.useState(f),g=p.useRef(m),_=p.useCallback(e=>{let t=ce(r,n._names,e||n._formValues,!1,c.current);return l.current?l.current(t):t},[n._formValues,n._names,r]),v=p.useCallback(e=>{if(!a){let t=ce(r,n._names,e||n._formValues,!1,c.current);if(l.current){let e=l.current(t);H(e,g.current)||(h(e),g.current=e)}else h(t)}},[n._formValues,n._names,a,r]),{resyncIfNeeded:y,snapshot:b}=oe(f),x=p.useRef(v);x.current=v;let S=p.useRef(_);S.current=_,z(()=>{u.current!==n||!H(d.current,r)?(u.current=n,d.current=r,x.current()):y(!a,()=>S.current(),e=>{h(e),g.current=e});let e=n._subscribe({name:r,formState:{values:!0},exact:o,callback:e=>{x.current(e.values)}});return()=>{e(),b(!a,()=>S.current())}},[n,o,r,a,y,b]),p.useEffect(()=>n._removeUnmounted());let C=u.current!==n,w=d.current;return p.useMemo(()=>{if(a)return!1;let e=!C&&!H(w,r);return C||e},[a,C,r,w])?_():m}function ue(e){let t=re(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,c=w(i._names.array,n),l=le({control:i,name:n,defaultValue:p.useMemo(()=>{let e=P(i._formValues,n,P(i._defaultValues,n,o));return N(e)?C(i,n):e},[i,n,o]),exact:s}),u=se({control:i,name:n,exact:s}),d=p.useRef(e),f=p.useRef(null),m=p.useRef(i.register(n,{...e.rules,value:l,...F(e.disabled)?{disabled:e.disabled}:{}}));d.current=e;let h=p.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!P(u.errors,n)},isDirty:{enumerable:!0,get:()=>!!P(u.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!P(u.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!P(u.validatingFields,n)},error:{enumerable:!0,get:()=>P(u.errors,n)}}),[u,n]),g=p.useCallback(e=>{let t=b(e);return P(i._fields,n)||(m.current=i.register(n,{...d.current.rules,value:t})),m.current.onChange({target:{value:b(e),name:n},type:D.CHANGE})},[n,i]),_=p.useCallback(()=>m.current.onBlur({target:{value:P(i._formValues,n),name:n},type:D.BLUR}),[n,i._formValues]),v=p.useCallback(e=>{e&&(f.current={focus:()=>I(e.focus)&&e.focus(),select:()=>I(e.select)&&e.select(),setCustomValidity:t=>I(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>I(e.reportValidity)&&e.reportValidity()});let t=P(i._fields,n);t&&t._f&&e&&(t._f.ref=f.current,t._f._c=!0)},[i._fields,n]),y=p.useMemo(()=>({name:n,value:l,...F(r)||u.disabled?{disabled:u.disabled||r}:{},onChange:g,onBlur:_,ref:v}),[n,r,u.disabled,g,_,v,l]);return p.useEffect(()=>{let e=i._options.shouldUnregister||a;m.current=i.register(n,{...d.current.rules,...F(d.current.disabled)?{disabled:d.current.disabled}:{}});let t=(e,t)=>{let n=P(i._fields,e);n&&n._f&&(n._f.mount=t,n._f._c=t)};if(t(n,!0),e){let e=E(P(a?i._defaultValues:i._options.values||i._defaultValues,n,P(i._options.defaultValues,n,d.current.defaultValue)));L(i._defaultValues,n,e),N(P(i._formValues,n))&&L(i._formValues,n,e)}if(!c&&i.register(n,{...d.current.rules,...F(d.current.disabled)?{disabled:d.current.disabled}:{}}),f.current){let e=P(i._fields,n);e&&e._f&&(e._f.ref=f.current)}return()=>{(c?e&&!i._state.action:e)?i.unregister(n):t(n,!1)}},[n,i,c,a]),p.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),p.useMemo(()=>({field:y,formState:u,fieldState:h}),[y,u,h])}var W=()=>typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)}),de=(e,t,n={})=>n.shouldFocus||N(n.shouldFocus)?n.focusName||`${e}.${N(n.focusIndex)?t:n.focusIndex}.`:``,fe=e=>({isOnSubmit:!e||e===O.onSubmit,isOnBlur:e===O.onBlur,isOnChange:e===O.onChange,isOnAll:e===O.all,isOnTouch:e===O.onTouched}),pe=(e,t,n)=>{if(n)return!1;if(t.watchAll||t.watch.has(e))return!0;for(let n of t.watch)if(e.startsWith(n)&&e.charAt(n.length)===`.`)return!0;return!1},me=(e,t,n)=>{for(let r of n||Object.keys(e)){if(r===`_f`)continue;let i=n?P(e,r):e[r];if(i){let{_f:e}=i;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],e.name)||e.ref&&t(e.ref,e.name)||me(i,t))return!0}else if((y(i)||Array.isArray(i))&&me(i,t))return!0}}},he=(e,t,n)=>{let r=P(e,n),i=Array.isArray(r)?r:[];return L(i,A,t[n]),L(e,n,i),e},G=e=>y(e)&&!Object.keys(e).length,ge=e=>{if(!T)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},_e=e=>e.type===`radio`,ve=e=>e instanceof RegExp,ye=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},be={value:!1,isValid:!1},xe={value:!0,isValid:!0},Se=e=>{if(!Array.isArray(e))return be;if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}let t=e[0];return!t||!t.checked||t.disabled?be:!t.attributes||!(`value`in t.attributes)||N(t.value)||t.value===``?xe:{value:t.value,isValid:!0}},K={isValid:!1,value:null},Ce=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,K):K;function q(e,t,n=`validate`){if(U(e)||Array.isArray(e)&&e.every(U)||F(e)&&!e)return{type:n,message:U(e)?e:``,ref:t}}var J=e=>y(e)&&!ve(e)?e:{value:e,message:``},we=async(e,t,n,r,i,a)=>{let{ref:o,refs:s,required:c,maxLength:l,minLength:u,min:d,max:f,pattern:p,validate:v,name:b,valueAsNumber:x,mount:S,_c:C}=e._f,w=P(n,b);if(!S||t.has(b))return{};let T=s?s[0]:o,E=e=>{if(i&&T.reportValidity){let t=F(e)?``:e||``;s?s.forEach(e=>I(e.setCustomValidity)&&e.setCustomValidity(t)):T.setCustomValidity(t),T.reportValidity()}},D={},O=_e(o),ee=m(o),te=O||ee,A=(x||h(o))&&N(o.value)&&N(w)||ge(o)&&o.value===``&&!C||w===``||Array.isArray(w)&&!w.length,j=ye.bind(null,b,r,D),ne=(e,t,n,r=k.maxLength,i=k.minLength)=>{let a=e?t:n;D[b]={type:e?r:i,message:a,ref:o,...j(e?r:i,a)}};if(a?!Array.isArray(w)||!w.length:c&&(!te&&(A||_(w))||F(w)&&!w||ee&&!Se(s).isValid||O&&!Ce(s).isValid)){let{value:e,message:t}=U(c)?{value:!!c,message:c}:J(c);if(e&&(D[b]={type:k.required,message:t,ref:T,...j(k.required,t)},!r))return E(t),D}if(!A&&(!_(d)||!_(f))){let e,t,n=J(f),i=J(d);if(!_(w)&&!g(w)&&!isNaN(w)){let r=o.valueAsNumber||w&&+w;_(n.value)||(e=r>n.value),_(i.value)||(t=r<i.value)}else{let r=o.valueAsDate||new Date(w),a=e=>new Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;U(n.value)&&w&&(e=s?a(w)>a(n.value):c?w>n.value:r>new Date(n.value)),U(i.value)&&w&&(t=s?a(w)<a(i.value):c?w<i.value:r<new Date(i.value))}if((e||t)&&(ne(!!e,n.message,i.message,k.max,k.min),!r))return E(D[b].message),D}if((l||u)&&!A&&(U(w)||a&&Array.isArray(w))){let e=J(l),t=J(u),n=!_(e.value)&&w.length>+e.value,i=!_(t.value)&&w.length<+t.value;if((n||i)&&(ne(n,e.message,t.message),!r))return E(D[b].message),D}if(p&&!A&&U(w)){let{value:e,message:t}=J(p);if(ve(e)&&!w.match(e)&&(D[b]={type:k.pattern,message:t,ref:o,...j(k.pattern,t)},!r))return E(t),D}if(v){if(I(v)){let e=q(await v(w,n),T);if(e&&(D[b]={...e,...j(k.validate,e.message)},!r))return E(e.message),D}else if(y(v)){let e={};for(let t in v){if(!G(e)&&!r)break;let i=q(await v[t](w,n),T,t);i&&(e={...i,...j(t,i.message)},r||E(i.message),r&&(D[b]=e))}if(!G(e)&&(D[b]={ref:T,...e},!r))return D}}let M=D[b];return E(!M||M.message),D},Y=e=>Array.isArray(e)?e:[e],Te=(e,t)=>[...e,...Y(t)],Ee=e=>Array.isArray(e)?e.map(()=>void 0):void 0;function De(e,t,n){return[...e.slice(0,t),...Y(n),...e.slice(t)]}var Oe=(e,t,n)=>Array.isArray(e)?(N(e[n])&&(e[n]=void 0),e.splice(n,0,e.splice(t,1)[0]),e):[],X=(e,t)=>[...Y(t),...Y(e)],ke=e=>Array.isArray(e)?e.filter(Boolean):[];function Ae(e,t){let n=0,r=[...e];for(let e of t)r.splice(e-n,1),n++;return ke(r).length?r:[]}var je=(e,t)=>N(t)?[]:Ae(e,Y(t).sort((e,t)=>e-t)),Me=(e,t,n)=>{[e[t],e[n]]=[e[n],e[t]]};function Ne(e,t){let n=t.length-1,r=0;for(;r<n;){if(_(e)){e=void 0;break}e=e[t[r]],r++}return e}function Pe(e){for(let t in e)if(e.hasOwnProperty(t)&&!N(e[t]))return!1;return!0}function Z(e,t){if(U(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;let n=Array.isArray(t)?t:M(t)?[t]:S(t);if(n.some(e=>j.includes(String(e))))return e;let r=n.length===1?e:Ne(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(y(r)&&G(r)||Array.isArray(r)&&Pe(r))&&Z(e,n.slice(0,-1)),e}var Fe=(e,t,n)=>(e[t]=n,e);function Ie(e){let t=re(),{control:n=t,name:r,keyName:i=`id`,disabled:a,shouldUnregister:o,rules:s}=e,c=()=>n._getFieldArray(r),[l,u]=p.useState(c),d=p.useRef(n._getFieldArray(r).map(W)),f=p.useRef(!1),{resyncIfNeeded:m,snapshot:h}=oe(c),g=p.useRef(n),_=p.useRef(r);a||n._names.array.add(r),p.useMemo(()=>!a&&s&&l.length>=0&&n.register(r,s),[n,r,l.length,s,a]),z(()=>{if(a)return;if(g.current===n&&_.current===r)m(!0,c,e=>{u(e),d.current=e.map(W)});else{g.current=n,_.current=r;let e=c();H(l,e)||(u(e),d.current=e.map(W)),h(!0,c)}let e=n._subjects.array.subscribe({next:({values:e,name:t})=>{if(t===r||!t){let n=P(e,r);Array.isArray(n)?(u(n),d.current=n.map(W)):t||(u([]),d.current=[])}}}).unsubscribe;return()=>{e(),h(!0,c)}},[n,r,a,m,h]);let v=p.useCallback(e=>{f.current=!0,n._setFieldArray(r,e)},[n,r]);return p.useEffect(()=>{if(a){n._state.actionArrayLengths.delete(r);return}n._state.action=!1,n._state.actionArrayLengths.delete(r),pe(r,n._names)&&n._subjects.state.next({...n._formState});let e=fe(n._options.mode);if(f.current&&(!e.isOnSubmit||n._formState.isSubmitted)&&!fe(n._options.reValidateMode).isOnSubmit&&!e.isOnBlur){if(n._options.resolver)n._runSchema([r]).then(e=>{n._updateIsValidating([r]);let t=P(e.errors,r),i=P(n._formState.errors,r),a=i&&(i.type||i.root?.type),o=i&&(i.message||i.root?.message);(i?!t&&a||t&&(a!==t.type||o!==t.message):t&&t.type)&&(t?y(t)&&!Object.keys(t).some(e=>!Number.isNaN(+e))?he(n._formState.errors,{[r]:t},r):L(n._formState.errors,r,t):Z(n._formState.errors,r),n._subjects.state.next({errors:n._formState.errors}))});else{let e=P(n._fields,r);e&&e._f&&we(e,n._names.disabled,n._formValues,n._options.criteriaMode===O.all,n._options.shouldUseNativeValidation,!0).then(e=>{if(!G(e))n._subjects.state.next({errors:he(n._formState.errors,e,r)});else{let e=P(n._formState.errors,r);e&&e[A]&&(Z(n._formState.errors,`${r}.${A}`),n._subjects.state.next({errors:n._formState.errors}))}})}}f.current&&n._subjects.state.next({name:r,values:E(n._formValues)}),n._names.focus&&me(n._fields,(e,t)=>{if(n._names.focus&&t.startsWith(n._names.focus)&&e.focus)return e.focus(),1}),n._names.focus=``,n._setValid(),f.current=!1},[l,r,n,a]),p.useEffect(()=>(a||N(P(n._formValues,r))&&n._setFieldArray(r),()=>{if(n._state.actionArrayLengths.delete(r),a)return;let e=!(n._options.shouldUnregister||o);f.current&&e&&n._subjects.state.next({name:r,values:E(n._formValues)}),e?((e,t)=>{let r=P(n._fields,e);r&&r._f&&(r._f.mount=t)})(r,!1):n.unregister(r)}),[r,n,i,o,a]),{swap:p.useCallback((e,t)=>{if(a)return;let i=n._getFieldArray(r);Me(i,e,t),Me(d.current,e,t),v(i),u(i),n._setFieldArray(r,i,Me,{argA:e,argB:t},!1)},[v,r,n,a]),move:p.useCallback((e,t)=>{if(a)return;let i=n._getFieldArray(r);Oe(i,e,t),Oe(d.current,e,t),v(i),u(i),n._setFieldArray(r,i,Oe,{argA:e,argB:t},!1)},[v,r,n,a]),prepend:p.useCallback((e,t)=>{if(a)return;let i=Y(E(e)),o=X(n._getFieldArray(r),i);n._names.focus=de(r,0,t),d.current=X(d.current,i.map(W)),v(o),u(o),n._setFieldArray(r,o,X,{argA:Ee(e)})},[v,r,n,a]),append:p.useCallback((e,t)=>{if(a)return;let i=Y(E(e)),o=Te(n._getFieldArray(r),i);n._names.focus=de(r,o.length-1,t),d.current=Te(d.current,i.map(W)),v(o),u(o),n._setFieldArray(r,o,Te,{argA:Ee(e)})},[v,r,n,a]),remove:p.useCallback(e=>{if(a)return;let t=je(n._getFieldArray(r),e);d.current=je(d.current,e),v(t),u(t),!Array.isArray(P(n._fields,r))&&L(n._fields,r,void 0),n._setFieldArray(r,t,je,{argA:e})},[v,r,n,a]),insert:p.useCallback((e,t,i)=>{if(a)return;let o=Y(E(t)),s=De(n._getFieldArray(r),e,o);n._names.focus=de(r,e,i),d.current=De(d.current,e,o.map(W)),v(s),u(s),n._setFieldArray(r,s,De,{argA:e,argB:Ee(t)})},[v,r,n,a]),update:p.useCallback((e,t)=>{if(a)return;let i=E(t),o=Fe(n._getFieldArray(r),e,i);d.current=[...o].map((t,n)=>!t||n===e?W():d.current[n]),v(o),u([...o]),n._setFieldArray(r,o,Fe,{argA:e,argB:Ee(t)})},[v,r,n,a]),replace:p.useCallback(e=>{if(a)return;let t=Y(E(e));d.current=t.map(W),v([...t]),u([...t]),n._setFieldArray(r,[...t],e=>Array.isArray(e)?e.slice(0,t.length):e,{})},[v,r,n,a]),fields:p.useMemo(()=>l.map((e,t)=>({...e,...F(a)?{disabled:a}:{},[i]:d.current[t]||W()})),[l,i,a])}}var Le=p.createContext(null);Le.displayName=`HookFormContext`;var Re=()=>{let e=[];return{get observers(){return e},next:t=>{for(let n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter(e=>e!==t)}}),unsubscribe:()=>{e=[]}}};function ze(e,t){let n=Array.isArray(e)?[]:{};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];i&&(y(i)||Array.isArray(i))&&a?n[r]=ze(i,a):e[r]&&(n[r]=a)}return n}var Be=(e,t)=>e!==null&&v(e)&&Object.prototype.hasOwnProperty.call(e,t),Ve=(e,t)=>{if(!t)return!1;let n=e;for(let r of M(t)?[t]:S(t)){if(!Be(n,r))return Be(e,t);n=n[r]}return!0},He=e=>e.type===`select-multiple`,Ue=e=>_e(e)||m(e),We=e=>ge(e)&&e.isConnected;function Ge(e){return Array.isArray(e)||y(e)}function Ke(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];Ge(o)&&Ge(P(t,a))?Ke(o,t,a,r):r.push(a)}return r}var qe=e=>{for(let t in e)if(I(e[t]))return!0;return!1};function Je(e){return Array.isArray(e)||y(e)&&!qe(e)}function Ye(e){return!!(e&&`_f`in e)}function Xe(e){return Array.isArray(e)?!e.some(e=>!N(e)):!Object.keys(e).length}function Ze(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function Qe(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];Je(i)&&(!Array.isArray(i)||!Ye(a))?(t[r]=Array.isArray(i)?[]:{},Qe(i,t[r],a),Xe(t[r])&&Ze(t,r)):N(i)||(t[r]=!0)}return t}function Q(e,t,n,r){n||=Qe(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];Je(a)&&(!Array.isArray(a)||!Ye(o))?(N(t)||B(n[i])?n[i]=Qe(a,Array.isArray(a)?[]:{},o):Q(a,_(t)?{}:t[i],n[i],o),Xe(n[i])&&Ze(n,i)):H(a,t[i])?Ze(n,i):n[i]=!0}return n}var $e=(e,t)=>{let n=t.split(`.`),r=[],i=n[0];for(let t=1;t<n.length;i+=`.`+n[t++])!isNaN(+n[t])&&e.has(i)&&r.push(`${i}.${n[t]}`);return r},et=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>N(e)?e:t?e===``?NaN:e&&+e:n&&U(e)?new Date(e):r?r(e):e;function tt(e){let t=e.ref;return h(t)?t.files:_e(t)?Ce(e.refs).value:He(t)?[...t.selectedOptions].map(({value:e})=>e):m(t)?Se(e.refs).value:et(t.value,e)}var nt=(e,t,n,r)=>{let i={};for(let n of e){let e=P(t,n);e&&L(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},rt=e=>N(e)?e:ve(e)?e.source:y(e)?ve(e.value)?e.value.source:e.value:e,it=`AsyncFunction`,at=e=>{if(!e||!e.validate)return!1;if(I(e.validate))return e.validate.constructor.name===it;if(y(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===it)return!0}return!1},ot=e=>e.mount&&(e.required||!N(e.required)&&e.required!==!1||!N(e.min)||!N(e.max)||!N(e.maxLength)||!N(e.minLength)||e.pattern||e.validate);function st(e,t,n){let r=P(e,n);if(r?.type||r?.message||Array.isArray(r))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=P(t,r),o=P(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(o&&o.type)return{name:r,error:o};if(o&&o.root&&o.root.type)return{name:`${r}.root`,error:o.root};i.pop()}return{name:n}}var ct=(e,t,n,r)=>{n(e);let i=Object.keys(e).filter(e=>e!==`name`);return!i.length||r&&i.length>=Object.keys(t).length||i.find(e=>t[e]===(!r||O.all))},lt=(e,t,n)=>!e||!t||e===t||Y(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),ut=(e,t,n,r,i)=>i.isOnAll?!1:!n&&i.isOnTouch?!(t||e):(n?r.isOnBlur:i.isOnBlur)?!e:!(n?r.isOnChange:i.isOnChange)||e,dt=(e,t)=>{let n=P(e,t);!ke(n).length&&!(n!=null&&n.root)&&Z(e,t)},ft={mode:O.onSubmit,reValidateMode:O.onChange,shouldFocusError:!0},pt=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},mt={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function ht(e={}){let t={...ft,...e},n={...E(mt),isLoading:I(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(y(t.defaultValues)||y(t.values))&&E(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:E(i),o={action:!1,actionArrayLengths:new Map,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set,registerName:new Set},c={},l={},u=0,d=fe(t.mode),f=fe(t.reValidateMode),p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},v={...p},x={...v},C=(...e)=>e.some(e=>v[e]||x[e]),j={array:Re(),state:Re()},ne=0,R=0,re=t.criteriaMode===O.all,ie=(e,t)=>n=>{clearTimeout(l[e]),l[e]=setTimeout(t,n)},z=e=>{clearTimeout(l[e]),delete l[e],delete c[e]},ae=e=>{z(e);let t=`${e}.`;for(let e of Object.keys(c))e.startsWith(t)&&z(e)},B=async e=>{if(!o.keepIsValid&&!t.disabled&&(C(`isValid`)||e)){let e=++ne,i;t.resolver?(i=G((await be()).errors),e===ne&&V()):i=await K({fields:r,onlyCheckValid:!0,eventType:D.VALID}),e===ne&&i!==n.isValid&&j.state.next({isValid:i})}},V=(e,r)=>{!t.disabled&&C(`isValidating`,`validatingFields`)&&((e||s.mount).forEach(e=>{e&&(r?L(n.validatingFields,e,r):Z(n.validatingFields,e))}),j.state.next({validatingFields:n.validatingFields,isValidating:!G(n.validatingFields)}))},oe=()=>{n.dirtyFields=Q(i,a,void 0,r)},se=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){o.action=!0;let t=P(r,e);if(o.actionArrayLengths.has(e)||o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0),u&&Array.isArray(t)){let n=s(t,c.argA,c.argB);l&&L(r,e,n)}let a=P(n.errors,e);if(u&&Array.isArray(a)){let t=a.root,r=s(a,c.argA,c.argB)||a;t&&(r.root=t),l&&L(n.errors,e,r),dt(n.errors,e)}let d=P(n.touchedFields,e),f=u&&Array.isArray(d);if(f){let t=s(d,c.argA,c.argB);l&&L(n.touchedFields,e,t)}let p=P(n.dirtyFields,e);if(u&&Array.isArray(p)){let t=s(p,c.argA,c.argB)||p;l&&L(n.dirtyFields,e,t)}C(`dirtyFields`)&&oe(),j.state.next({name:e,isDirty:q(e,i),dirtyFields:n.dirtyFields,...f&&{touchedFields:n.touchedFields},errors:n.errors,isValid:n.isValid})}else L(a,e,i)},le=(e,t)=>{L(n.errors,e,t),n.errors={...n.errors},j.state.next({errors:n.errors})},ue=e=>{Object.keys(c).forEach(z);let t=!G(e);n.errors=e,j.state.next({errors:n.errors,...t?{isValid:!1}:{}}),!t&&o.mount&&B()},W=e=>{let t=M(e)?[e]:S(e),n=a,r=i;for(let e=0;e<t.length-1;e++){let i=t[e];if(n=_(n)?n:n[i],r=_(r)?r:r[i],n===null&&r!==null)return!0}return!1},de=e=>{if(!o.actionArrayLengths.size)return!1;let t=M(e)?[e]:S(e),n=a,r=``,i=-1,s=0;for(let e=0;e<t.length;e++){if(_(n))return!1;let a=t[e];if(r=r?`${r}.${a}`:a,Array.isArray(n)&&+a>=n.length)return i===-1?!1:e!==i||+a<s;if(o.actionArrayLengths.has(r)&&(i=e+1,s=o.actionArrayLengths.get(r)),n=n[a],N(n)&&i!==-1&&e>i&&+t[i]<s)return!0}return!1},_e=(c,l,u,d)=>{let f=P(r,c);if(f){if(W(c)||de(c))return;let r=N(P(a,c)),p=P(a,c,N(u)?P(i,c):u);N(p)||d&&d.defaultChecked||l?L(a,c,l?p:tt(f._f)):Ee(c,p),o.mount&&!o.action&&(t.resolver&&C(`isValidating`,`validatingFields`)?Promise.resolve().then(()=>B()):B(),r&&n.isDirty&&C(`isDirty`)&&(q()||(n.isDirty=!1,j.state.next({...n}))),e.shouldUnregister&&r&&!N(P(a,c))&&pe(c,s)&&(o.watch=!0))}},ve=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=H(P(i,e),o);C(`isDirty`)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||q(),u=d!==f.isDirty),d=!!P(n.dirtyFields,e),t===n.isDirty?t?Z(n.dirtyFields,e):L(n.dirtyFields,e,!0):pt(n.dirtyFields,Q(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=C(`dirtyFields`)&&d!==!t}if(s){let t=P(n.touchedFields,e);t||(L(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=C(`touchedFields`)&&t!==s)}u&&l&&j.state.next(f)}return u?f:{}},ye=(e,r,i,a)=>{let o=P(n.errors,e),s=C(`isValid`)&&F(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=ie(e,()=>le(e,i)),c[e](t.delayError)):(z(e),i?L(n.errors,e,i):Z(n.errors,e),n.errors={...n.errors}),(i?!H(o,i):o)||!G(a)||s){let t={...a,...s&&F(r)?{isValid:r}:{},errors:n.errors,name:e};j.state.next(t)}},be=async e=>(V(e,!0),await t.resolver(a,t.context,nt(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),xe=async e=>{let t=R,{errors:i}=await be(e);if(t!==R)return i;if(V(e),e){for(let t of e){let e=P(i,t);ae(t);let a=s.array.has(t)&&y(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e))),o=P(r,t),c=y(o)&&Object.keys(o).some(e=>e!==`_f`);a?he(n.errors,{[t]:e},t):e?.type||e?.message||Array.isArray(e)||y(e)&&c?L(n.errors,t,e):Z(n.errors,t)}n.errors={...n.errors}}else Object.keys(c).forEach(z),n.errors=i;return i},Se=async({name:e,eventType:r})=>{if(t.validate){let i=R,o=await t.validate({formValues:a,formState:n,name:e,eventType:r});if(i!==R)return!0;if(y(o)){let e=!0;Le(te);for(let t in o){let n=o[t];n&&(e=!1,Be(`${te}.${t}`,{message:U(n.message)?n.message:``,type:n.type||k.validate}))}return e}return U(o)||!o?(Be(te,{message:o||``,type:k.validate}),!1):(Le(te),!0)}return!0},K=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{let u=R;if(t.validate&&!l.runRootValidation&&(l.runRootValidation=!0,!await Se({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let d=r[o];if(d){let{_f:r,...f}=d;if(r){let o=s.array.has(r.name),c=d._f&&at(d._f),f=C(`isValidating`,`validatingFields`);c&&f&&V([r.name],!0);let p=await we(d,s.disabled,a,re,t.shouldUseNativeValidation&&!i,o);if(u!==R)return l.valid;if(c&&f&&V([r.name]),p[r.name]&&(l.valid=!1,i)||(i||(z(r.name),P(p,r.name)?o?he(n.errors,p,r.name):L(n.errors,r.name,p[r.name]):Z(n.errors,r.name)),e.shouldUseNativeValidation&&p[r.name]))break}!G(f)&&await K({context:l,onlyCheckValid:i,fields:f,name:o,eventType:c})}}return l.valid},Ce=()=>{for(let e of s.unMount){let t=P(r,e);t&&(t._f.refs?t._f.refs.every(e=>!We(e)):!We(t._f.ref))&&Ye(e)}s.unMount=new Set},q=(e,t)=>(e&&t&&L(a,e,t),!H(o.mount?a:i,i)),J=(e,t,n)=>ce(e,s,{...o.mount?a:N(t)||U(e)?i:t},n,t),Te=e=>ke(P(o.mount?a:i,e,t.shouldUnregister?P(i,e,[]):[])),Ee=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=P(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&L(a,e,et(t,n)),l=ge(n.ref)&&_(t)?``:t,He(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?m(n.ref)?n.refs.forEach(e=>{(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(l)?!!l.find(t=>t===e.value):l===e.value||!!l)}):n.refs.forEach(e=>e.checked=e.value===l):h(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&j.state.next({name:e,values:i?a:E(a)})))}(n.shouldDirty||n.shouldTouch)&&ve(e,c&&c._f&&!c._f.disabled&&(c._f.valueAsNumber||c._f.valueAsDate||c._f.setValueAs)?et(t,c._f):l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&Ne(e,{delayError:n.delayError}),n.shouldValidate&&c&&c._f&&c._f.deps&&(!Array.isArray(c._f.deps)||c._f.deps.length>0)&&Ne(c._f.deps)},De=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&j.array.next({name:e,values:i?a:E(a)});for(let a in t){if(!t.hasOwnProperty(a))continue;let l=t[a],u=e+`.`+a,d=P(r,u);(s.array.has(e)||y(l)||d&&!d._f)&&!g(l)?De(u,l,n,i,o,c):Ee(u,l,n,i,o,c)}},Oe=(e,t,i,c,l=!1)=>{let u=P(r,e),d=s.array.has(e),f=c?t:E(t),p=H(P(a,e),f);if(p||L(a,e,f),d)j.array.next({name:e,values:c?a:E(a)}),C(`isDirty`,`dirtyFields`)&&i.shouldDirty&&(oe(),l||j.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:q(e,f)})),i.shouldValidate&&Ne(e,{delayError:i.delayError});else{let t=Array.isArray(f)&&!f.length||G(f),n=!p&&!l;!u||u._f||_(f)||t?Ee(e,f,i,c,l,n):De(e,f,i,c,l,n)}if(!p&&!l){let t=pe(e,s),r=c?a:E(a);if(j.state.next({...t&&n,name:o.mount||t?e:void 0,values:r}),!d)for(let t of $e(s.array,e))j.state.next({name:t,values:r})}},X=(e,t,n={})=>Oe(e,t,n,!1),Ae=(e,t={})=>{let r=I(e)?e(a):e;if(!H(a,r)){a={...a,...r};for(let e of s.mount)Ve(r,e)&&Oe(e,P(r,e),t,!0,!0);j.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&B()}},je=async e=>{o.mount=!0;let i=e.target,l=i.name,p=!0,m=P(r,l),h=e=>{p=Number.isNaN(e)||g(e)&&isNaN(e.getTime())||H(e,P(a,l,e))};if(m){let o,g,_=i.type?tt(m._f):b(e),v=e.type===D.BLUR||e.type===D.FOCUS_OUT,y=!ot(m._f)&&!t.validate&&!t.resolver&&!P(n.errors,l)&&!m._f.deps,x=y||ut(v,P(n.touchedFields,l),n.isSubmitted,f,d),S=pe(l,s,v);if(L(a,l,E(_)),v){if(!i||!i.readOnly){m._f.onBlur&&m._f.onBlur(e);let t=c[l];t&&t(0)}}else m._f.onChange&&m._f.onChange(e);let w=ve(l,_,v),T=!G(w)||S;if(!v&&j.state.next({name:l,type:e.type,...u?{values:E(a)}:{}}),x)return(!y||!n.isValid)&&C(`isValid`)&&(t.mode===`onBlur`?v&&B():v||B()),T&&j.state.next({name:l,...S?{}:w});if(!t.resolver&&t.validate&&await Se({name:l,eventType:e.type}),!v&&S&&j.state.next({...n}),t.resolver){let e=R,{errors:t}=await be([l]);if(e!==R)return;if(V([l]),h(_),!p){!G(w)&&j.state.next(w);return}let i=st(n.errors,r,l),a=st(t,r,i.name||l);o=a.error,l=a.name,g=G(t)}else{let n=R;if(V([l],!0),o=(await we(m,s.disabled,a,re,t.shouldUseNativeValidation))[l],n!==R)return;if(V([l]),h(_),p){if(o)g=!1;else if(C(`isValid`)&&(g=await K({fields:r,onlyCheckValid:!0,name:l,eventType:e.type}),n!==R))return}}p&&(m._f.deps&&(!Array.isArray(m._f.deps)||m._f.deps.length>0)&&Ne(m._f.deps),ye(l,g,o,w))}},Me=(e,t)=>{if(P(n.errors,t)&&e.focus)return e.focus(),1},Ne=async(e,i={})=>{let a,o,l=Y(e);if(t.resolver){let t=R,n=await xe(N(e)?e:l);if(a=G(n),o=e?!l.some(e=>P(n,e)):a,t!==R)return o}else e?(o=(await Promise.all(l.map(async e=>{let t=P(r,e);return await K({fields:t&&t._f?{[e]:t}:t,eventType:D.TRIGGER})}))).every(Boolean),(o||n.isValid)&&B()):o=a=await K({fields:r,name:e,eventType:D.TRIGGER});if(i.delayError&&t.delayError&&U(e)){let r=P(n.errors,e);r?(Z(n.errors,e),c[e]=ie(e,()=>le(e,r)),c[e](t.delayError)):z(e)}if(i.shouldTouch)for(let t of e?l:s.mount)!s.array.has(t)&&L(n.touchedFields,t,!0);return j.state.next({...!U(e)||C(`isValid`)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},...i.shouldTouch&&C(`touchedFields`)?{touchedFields:n.touchedFields}:{},errors:n.errors}),i.shouldFocus&&!o&&me(r,Me,e?l:s.mount),o},Pe=(e,t)=>{let r={...o.mount?a:i};return t&&(r=ze(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),N(e)?r:U(e)?P(r,e):e.map(e=>P(r,e))},Fe=e=>N(e)?{...n.errors}:U(e)?P(n.errors,e):e.map(e=>P(n.errors,e)),Ie=(e,t)=>{let r=t||n,i=P(r.errors,e);return{invalid:!!i,isDirty:!!P(r.dirtyFields,e),error:i,isValidating:!!P(r.validatingFields,e),isTouched:!!P(r.touchedFields,e)}},Le=e=>{let t=e?Y(e):void 0;t?t.forEach(e=>{ae(e),Z(n.errors,e),j.state.next({name:e,errors:n.errors})}):(Object.keys(c).forEach(z),n.errors={},j.state.next({errors:n.errors}))},Be=(e,t,i)=>{ae(e);let a=(P(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,types:l,...u}=P(n.errors,e)||{};L(n.errors,e,{...u,...t,ref:a}),j.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},Ge=(e,t)=>{if(I(e)){u++;let{unsubscribe:n}=j.state.subscribe({next:n=>`values`in n&&e(n.values||J(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,u--,n())}}}return J(e,t,!0)},qe=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=j.state.subscribe({next:t=>{if(lt(e.name,t.name,e.exact)&&ct(t,e.formState||v,yt,e.reRenderRoot)){let r={...a};e.callback({values:r,...n,...t,defaultValues:i})}}});if(!t)return r;let o=!1;return()=>{o||(o=!0,u--,r())}},Je=e=>(o.mount=!0,x={...x,...e.formState},qe({...e,formState:{...p,...e.formState}})),Ye=(e,o={})=>{for(let c of e?Y(e):s.mount)s.mount.delete(c),s.array.delete(c),s.disabled.delete(c),o.keepValue||(Z(r,c),Z(a,c)),o.keepError||(ae(c),Z(n.errors,c)),!o.keepDirty&&Z(n.dirtyFields,c),!o.keepTouched&&Z(n.touchedFields,c),!o.keepIsValidating&&Z(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&Z(i,c);u&&j.state.next({values:E(a)}),j.state.next({...n,...o.keepDirty?{}:{isDirty:q()},...o.keepIsValidating?{}:{isValidating:!G(n.validatingFields)}}),!o.keepIsValid&&B()},Xe=({disabled:e,name:t})=>{if(F(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&B()}},Ze=(e,n={})=>{let a=P(r,e),c=F(n.disabled)||F(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;if(L(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&a._f){let t=P(r,e);for(let e of ee)e in n||delete t._f[e]}return a&&!l?Xe({disabled:F(n.disabled)?n.disabled:t.disabled,name:e}):_e(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:rt(n.min),max:rt(n.max),minLength:rt(n.minLength),maxLength:rt(n.maxLength),pattern:rt(n.pattern)}:{},name:e,onChange:je,onBlur:je,ref:c=>{if(c){s.registerName.add(e),Ze(e,n),s.registerName.delete(e),a=P(r,e);let t=N(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=Ue(t),l=a._f.refs||[];if(o?l.find(e=>e===t):t===a._f.ref)return;let u={...a._f};o?(u.refs=[...l.filter(We),t,...Array.isArray(P(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),L(r,e,{_f:u}),_e(e,!1,void 0,t)}else a=P(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(w(s.array,e)&&o.action)&&s.unMount.add(e)}}},Qe=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&me(r,Me,s.mount),it=e=>{F(e)&&(j.state.next({disabled:e}),me(r,(t,n)=>{let i=P(r,n);i&&(t.disabled=i._f.disabled||e,Array.isArray(i._f.refs)&&i._f.refs.forEach(t=>{t.disabled=i._f.disabled||e}))},0))},ht=(e,i)=>async o=>{let l,u;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let d=E(a);if(j.state.next({isSubmitting:!0}),t.resolver){let e=R,{errors:t,values:r}=await be();if(e!==R)return;V(),Object.keys(c).forEach(z),n.errors=t,d=E(r)}else{let e=R;if(await K({fields:r,eventType:D.SUBMIT}),e!==R)return;Z(n.errors,A)}if(s.disabled.size)for(let e of s.disabled)Z(d,e);if(G(n.errors)){j.state.next({errors:{}});try{l=await e(d,o)}catch(e){u=e}}else i&&await i({...n.errors},o),Qe(),setTimeout(Qe);if(j.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:G(n.errors)&&!u,submitCount:n.submitCount+1,errors:n.errors}),u)throw u;return l},gt=(e,t={})=>{P(r,e)&&(Z(n.validatingFields,e),N(t.defaultValue)?X(e,E(P(i,e))):(X(e,t.defaultValue),L(i,e,E(t.defaultValue))),t.keepTouched||Z(n.touchedFields,e),t.keepDirty||(Z(n.dirtyFields,e),n.isDirty=t.defaultValue?q(e,E(P(i,e))):q()),t.keepError||(ae(e),Z(n.errors,e),B()),j.state.next({...n,isValidating:!G(n.validatingFields)}))},$=(e,l={})=>{R++;let u=e?E(e):i,d=E(u),f=G(e),p=d,m=r;if(Object.keys(c).forEach(z),l.keepDefaultValues||(i=u),!l.keepValues){if(l.keepDirtyValues){let e=new Set([...s.mount,...Ke(Q(i,a,void 0,m),n.dirtyFields)]);for(let t of e){let e=P(n.dirtyFields,t),r=P(a,t),i=P(p,t);e&&!N(r)?L(p,t,r):!e&&!N(i)&&X(t,i)}}else{if(T&&N(e))for(let e of s.mount){let t=P(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(ge(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(l.keepFieldsRef)for(let e of s.mount)X(e,P(p,e));else r={}}if(t.shouldUnregister){if(a=l.keepDefaultValues?E(i):{},l.keepFieldsRef)for(let e of s.mount)L(a,e,P(p,e))}else a=E(p);j.array.next({values:{...p}}),j.state.next({name:void 0,type:void 0,values:{...p}})}s={mount:l.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,registerName:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:``},o.mount=!v.isValid||!!l.keepIsValid||!!l.keepDirtyValues||!t.shouldUnregister&&!G(p),o.watch=!!t.shouldUnregister,o.keepIsValid=!!l.keepIsValid,o.action=!1,o.actionArrayLengths.clear(),l.keepErrors||(n.errors={}),j.state.next({submitCount:l.keepSubmitCount?n.submitCount:0,isDirty:f?!1:l.keepDirty?n.isDirty:l.keepValues?q():!(!l.keepDefaultValues||H(e,i)),isSubmitted:l.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:f?{}:l.keepDirtyValues?l.keepDefaultValues&&a?Q(i,a,void 0,m):n.dirtyFields:l.keepDefaultValues&&e?Q(i,e,void 0,m):l.keepDirty?n.dirtyFields:l.keepValues?Q(i,a,void 0,m):{},touchedFields:l.keepTouched?n.touchedFields:{},...!l.keepIsValidating&&(n.isValidating||!G(n.validatingFields))?{validatingFields:{},isValidating:!1}:null,errors:l.keepErrors?n.errors:{},isSubmitSuccessful:l.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},_t=(e,n)=>$(I(e)?e(a):e,{...t.resetOptions,...n}),vt=(e,t={})=>{let n=P(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&I(e.select)&&e.select()})}},yt=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};j.state.subscribe({next:yt});let bt={control:{register:Ze,unregister:Ye,getFieldState:Ie,handleSubmit:ht,setError:Be,_subscribe:qe,_runSchema:be,_updateIsValidating:V,_focusError:Qe,_getWatch:J,_getDirty:q,_setValid:B,_setFieldArray:se,_setDisabledField:Xe,_setErrors:ue,_getFieldArray:Te,_reset:$,_resetDefaultValues:()=>I(t.defaultValues)&&t.defaultValues().then(e=>{_t(e,t.resetOptions),j.state.next({isLoading:!1})}),_removeUnmounted:Ce,_disableForm:it,_subjects:j,_proxyFormState:v,get _fields(){return r},get _formValues(){return a},get _state(){return o},set _state(e){o=e},get _defaultValues(){return i},get _names(){return s},set _names(e){s=e},get _formState(){return n},get _options(){return t},set _options(e){t={...t,...e},d=fe(t.mode),f=fe(t.reValidateMode),re=t.criteriaMode===O.all}},subscribe:Je,trigger:Ne,register:Ze,handleSubmit:ht,watch:Ge,setValue:X,setValues:Ae,getValues:Pe,getErrors:Fe,reset:_t,resetField:gt,resetDefaultValues:(e,t={})=>{if(i=E(e),!t.keepDirty){let e=Q(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!G(e)}t.keepIsValid||B(),j.state.next({...n,defaultValues:i})},clearErrors:Le,unregister:Ye,setError:Be,setFocus:vt,getFieldState:Ie};return{...bt,formControl:bt}}function gt(e={}){let t=p.useRef(void 0),n=p.useRef(void 0),r=p.useRef(e.formControl),i=p.useRef(!!e.validate),[a,o]=p.useState(()=>({...E(mt),isLoading:I(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:I(e.defaultValues)?void 0:e.defaultValues}));if(!t.current||e.formControl&&r.current!==e.formControl){if(r.current=e.formControl,e.formControl)t.current={...e.formControl,formState:a},e.defaultValues&&!I(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=ht(e);t.current={...r,formState:a}}}let s=t.current.control;s._options={...e,validate:e.validate};let c=()=>({...s._formState,defaultValues:s._defaultValues}),{resyncIfNeeded:l,snapshot:u}=oe(c);return z(()=>{l(!0,c,o);let e=s._subscribe({formState:s._proxyFormState,callback:()=>o({...s._formState,defaultValues:s._defaultValues}),reRenderRoot:!0});return o(e=>({...e,isReady:!0})),s._formState.isReady=!0,()=>{e(),u(!0,c)}},[s,l,u]),p.useEffect(()=>s._disableForm(e.disabled),[s,e.disabled]),p.useEffect(()=>{e.mode&&(s._options.mode=e.mode),e.reValidateMode&&(s._options.reValidateMode=e.reValidateMode)},[s,e.mode,e.reValidateMode]),p.useEffect(()=>{e.errors&&(s._setErrors(e.errors),s._focusError())},[s,e.errors]),p.useEffect(()=>{var n;i.current&&!e.validate&&((n=t.current)==null||n.clearErrors(te)),i.current=!!e.validate},[e.validate]),p.useEffect(()=>{e.shouldUnregister&&s._subjects.state.next({values:s._getWatch()})},[s,e.shouldUnregister]),p.useEffect(()=>{if(s._proxyFormState.isDirty){let e=s._getDirty();e!==a.isDirty&&s._subjects.state.next({isDirty:e})}},[s,a.isDirty]),p.useEffect(()=>{e.values&&!H(e.values,n.current)?(s._reset(e.values,{keepFieldsRef:!0,...s._options.resetOptions}),s._options.resetOptions?.keepIsValid||s._setValid(),n.current=e.values,o(e=>({...e}))):s._resetDefaultValues()},[s,e.values]),p.useEffect(()=>{s._state.mount||(s._setValid(),s._state.mount=!0),s._state.watch&&(s._state.watch=!1,s._subjects.state.next({...s._formState})),s._removeUnmounted()}),t.current.formState=p.useMemo(()=>ie(a,s),[s,a]),t.current}var $=e=>e,_t=()=>l().trim().min(1,$(`validation.required`)),vt=()=>l().trim().min(1,$(`validation.required`)).pipe(d($(`validation.email`))),yt=()=>l().min(12,$(`validation.passwordTooShort`)).max(256,$(`validation.passwordTooLong`)),bt=e=>u({...e,confirmPassword:l()}).refine(e=>e.confirmPassword===e.password,{message:$(`validation.passwordsDontMatch`),path:[`confirmPassword`]}),xt=e=>e?.startsWith(`validation.`)??!1,St=e(n(),1),Ct=({id:e,message:t})=>{let{t:n}=r();return t?(0,St.jsx)(a,{id:e,children:xt(t)?n(t):t}):null},wt=({control:e,name:t,label:n,hint:r,description:a,extra:l,...u})=>{let{field:d,fieldState:p}=ue({control:e,name:t}),m=`field-${t}`,h=r?`${m}-hint`:void 0,g=a?`${m}-description`:void 0,_=p.error?`${m}-error`:void 0,v=p.error?.message;return(0,St.jsxs)(o,{"data-invalid":p.invalid||void 0,children:[(0,St.jsx)(f,{htmlFor:m,label:n,hint:r,hintId:h}),(0,St.jsx)(s,{...u,...d,value:d.value??``,id:m,"aria-invalid":p.invalid||void 0,"aria-describedby":c(h,g,_)}),a?(0,St.jsx)(i,{id:g,children:a}):null,l,(0,St.jsx)(Ct,{id:_,message:v})]})},Tt=(e,t,n)=>{if(e&&`reportValidity`in e){let r=P(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},Et=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?Tt(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>Tt(t,n,e))}},Dt=(e,t)=>{t.shouldUseNativeValidation&&Et(e,t);let n={};for(let r in e){let i=P(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(Ot(t.names||Object.keys(e),r)){let e=Object.assign({},P(n,r));L(e,`root`,a),L(n,r,e)}else L(n,r,a)}return n},Ot=(e,t)=>{let n=kt(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>kt(e).match(`^${n}\\.\\d+`))};function kt(e){return e.replace(/\[(\d+)]/g,`.$1`).replace(/[[\]]/g,``)}function At(){return At=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},At.apply(null,arguments)}function jt(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}function Mt(e,t){for(var n=Object.create(null);e.length;){var r=e[0],i=r.code,a=r.message,o=r.path.join(`.`);if(!n[o]){if(`unionErrors`in r){var s=r.unionErrors.reduce(function(e,t){return t.errors.length<e.errors.length?t:e}).errors[0];n[o]={message:s?.message??a,type:s?.code??i}}else n[o]={message:a,type:i}}if(`unionErrors`in r&&r.unionErrors.forEach(function(t){return t.errors.forEach(function(t){return e.push(t)})}),t){var c=n[o].types,l=c&&c[r.code];n[o]=ye(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()}return n}function Nt(e,t){for(var n=Object.create(null),r=function(){var r=e[0],i=r.code,a=r.message,o=r.path.join(`.`);if(!n[o]){if(r.code===`invalid_union`&&r.errors.length>0){var s=r.errors.reduce(function(e,t){return t.length<e.length?t:e})[0];n[o]={message:s?.message??a,type:s?.code??i}}else n[o]={message:a,type:i}}if(r.code===`invalid_union`&&r.errors.forEach(function(t){return t.forEach(function(t){return e.push(At({},t,{path:[].concat(r.path,t.path)}))})}),t){var c=n[o].types,l=c&&c[r.code];n[o]=ye(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()};e.length;)r();return n}function Pt(e,t,n){if(n===void 0&&(n={}),function(e){return`_zod`in e&&typeof e._zod==`object`}(e))return function(r,i,a){try{return Promise.resolve(jt(function(){function i(e){return a.shouldUseNativeValidation&&Et({},a),{errors:{},values:n.raw?Object.assign({},r):e}}var o=e;return n.mode===`sync`?i(o.parse(r,t)):Promise.resolve(o.parseAsync(r,t)).then(i)},function(e){if(function(e){var t;return!(e==null||(t=e._zod)==null||(t=t.traits)==null||!t.has(`$ZodError`))}(e))return{values:{},errors:Dt(Nt(e.issues,!a.shouldUseNativeValidation&&a.criteriaMode===`all`),a)};throw e}))}catch(e){return Promise.reject(e)}};if(function(e){return`_def`in e&&typeof e._def==`object`}(e))return function(r,i,a){try{return Promise.resolve(jt(function(){return Promise.resolve(e[n.mode===`sync`?`parse`:`parseAsync`](r,t)).then(function(e){return a.shouldUseNativeValidation&&Et({},a),{errors:{},values:n.raw?Object.assign({},r):e}})},function(e){if(function(e){return Array.isArray(e?.issues)}(e))return{values:{},errors:Dt(Mt(e.errors,!a.shouldUseNativeValidation&&a.criteriaMode===`all`),a)};throw e}))}catch(e){return Promise.reject(e)}};throw Error(`Invalid input: not a Zod schema`)}export{yt as a,ue as c,se as d,le as f,vt as i,Ie as l,wt as n,_t as o,Ct as r,bt as s,Pt as t,gt as u};
|
|
2
|
+
//# sourceMappingURL=zod-BHAd1wTC.js.map
|