@modern-admin/web 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/vite.js +20 -0
- package/dist/lib/index.js +6 -5
- package/dist/lib/index.js.map +1 -1
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js +2 -0
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js.br +0 -0
- package/dist/standalone/assets/action-component-host-8DE4kuUJ.js.gz +0 -0
- package/dist/standalone/assets/{action-component-host-QVowRL_F.js.map → action-component-host-8DE4kuUJ.js.map} +1 -1
- package/dist/standalone/assets/{action-page-CET1s1MA.js → action-page-D6BbXzUo.js} +2 -2
- package/dist/standalone/assets/action-page-D6BbXzUo.js.br +0 -0
- package/dist/standalone/assets/action-page-D6BbXzUo.js.gz +0 -0
- package/dist/standalone/assets/{action-page-CET1s1MA.js.map → action-page-D6BbXzUo.js.map} +1 -1
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js +2 -0
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-BORa8_hT.js.gz +0 -0
- package/dist/standalone/assets/{ai-assistant-widget-pJHSP1PB.js.map → ai-assistant-widget-BORa8_hT.js.map} +1 -1
- package/dist/standalone/assets/arrow-left-yVCaEJJu.js +2 -0
- package/dist/standalone/assets/{arrow-left-CI9hUPwJ.js.map → arrow-left-yVCaEJJu.js.map} +1 -1
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js +2 -0
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js.gz +0 -0
- package/dist/standalone/assets/{audit-log-page-DoZPtbGo.js.map → audit-log-page-uHj9GWfi.js.map} +1 -1
- package/dist/standalone/assets/{badge-8oeWEs3P.js → badge-CdW_Z0lB.js} +2 -2
- package/dist/standalone/assets/{badge-8oeWEs3P.js.map → badge-CdW_Z0lB.js.map} +1 -1
- package/dist/standalone/assets/{bot-DFDgGfNj.js → bot-CuDPD_ZU.js} +2 -2
- package/dist/standalone/assets/{bot-DFDgGfNj.js.map → bot-CuDPD_ZU.js.map} +1 -1
- package/dist/standalone/assets/cache-page-CBKj7WFq.js +2 -0
- package/dist/standalone/assets/cache-page-CBKj7WFq.js.br +0 -0
- package/dist/standalone/assets/cache-page-CBKj7WFq.js.gz +0 -0
- package/dist/standalone/assets/{cache-page-CoKusfv-.js.map → cache-page-CBKj7WFq.js.map} +1 -1
- package/dist/standalone/assets/calendar-BuLRvNBg.js +2 -0
- package/dist/standalone/assets/calendar-BuLRvNBg.js.br +0 -0
- package/dist/standalone/assets/calendar-BuLRvNBg.js.gz +0 -0
- package/dist/standalone/assets/calendar-BuLRvNBg.js.map +1 -0
- package/dist/standalone/assets/card-BYbadRar.js +2 -0
- package/dist/standalone/assets/card-BYbadRar.js.br +0 -0
- package/dist/standalone/assets/card-BYbadRar.js.gz +0 -0
- package/dist/standalone/assets/{card-MNH_XK0V.js.map → card-BYbadRar.js.map} +1 -1
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js +2 -0
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js.br +0 -0
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js.gz +0 -0
- package/dist/standalone/assets/{chart-widget-R2NG5T1y.js.map → chart-widget-Bfk_mvm2.js.map} +1 -1
- package/dist/standalone/assets/chevrons-up-down-y29_Sm-3.js +2 -0
- package/dist/standalone/assets/{chevrons-up-down-BHCs46XQ.js.map → chevrons-up-down-y29_Sm-3.js.map} +1 -1
- package/dist/standalone/assets/{circle-alert-0EyKeic4.js → circle-alert-D1sKnXtO.js} +2 -2
- package/dist/standalone/assets/{circle-alert-0EyKeic4.js.map → circle-alert-D1sKnXtO.js.map} +1 -1
- package/dist/standalone/assets/{clock-OCmX6DtA.js → clock-B9qbSr_k.js} +2 -2
- package/dist/standalone/assets/{clock-OCmX6DtA.js.map → clock-B9qbSr_k.js.map} +1 -1
- package/dist/standalone/assets/command-BAXXxf0P.js +2 -0
- package/dist/standalone/assets/command-BAXXxf0P.js.br +0 -0
- package/dist/standalone/assets/command-BAXXxf0P.js.gz +0 -0
- package/dist/standalone/assets/command-BAXXxf0P.js.map +1 -0
- package/dist/standalone/assets/{copy-BexCWf4U.js → copy-5fb4qj-_.js} +2 -2
- package/dist/standalone/assets/{copy-BexCWf4U.js.map → copy-5fb4qj-_.js.map} +1 -1
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js +2 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.gz +0 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.map +1 -0
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js +2 -0
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js.br +0 -0
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js.gz +0 -0
- package/dist/standalone/assets/{date-picker-DQ4XOgO6.js.map → date-picker-Bxv-yrWf.js.map} +1 -1
- package/dist/standalone/assets/dist-COXu-_Zv.js +2 -0
- package/dist/standalone/assets/dist-COXu-_Zv.js.br +0 -0
- package/dist/standalone/assets/dist-COXu-_Zv.js.gz +0 -0
- package/dist/standalone/assets/dist-COXu-_Zv.js.map +1 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js +2 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js.br +0 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js.gz +0 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js.map +1 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js +2 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js.br +0 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js.gz +0 -0
- package/dist/standalone/assets/dist-DPxQeZn3.js.map +1 -0
- package/dist/standalone/assets/{edit-page-CVjik6T5.js → edit-page-Dm638D2J.js} +2 -2
- package/dist/standalone/assets/edit-page-Dm638D2J.js.br +0 -0
- package/dist/standalone/assets/edit-page-Dm638D2J.js.gz +0 -0
- package/dist/standalone/assets/{edit-page-CVjik6T5.js.map → edit-page-Dm638D2J.js.map} +1 -1
- package/dist/standalone/assets/{ellipsis-lEjcTxo0.js → ellipsis-BRmOlhsy.js} +2 -2
- package/dist/standalone/assets/{ellipsis-lEjcTxo0.js.map → ellipsis-BRmOlhsy.js.map} +1 -1
- package/dist/standalone/assets/empty-DMs98grx.js +2 -0
- package/dist/standalone/assets/empty-DMs98grx.js.br +0 -0
- package/dist/standalone/assets/empty-DMs98grx.js.gz +0 -0
- package/dist/standalone/assets/empty-DMs98grx.js.map +1 -0
- package/dist/standalone/assets/{file-text-CcLZq8HA.js → file-text-MQF--yeB.js} +2 -2
- package/dist/standalone/assets/{file-text-CcLZq8HA.js.map → file-text-MQF--yeB.js.map} +1 -1
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js +2 -0
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.br +0 -0
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.gz +0 -0
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.map +1 -0
- package/dist/standalone/assets/{global-search-dialog-CT30gcRv.js → global-search-dialog-DxwxFDO5.js} +2 -2
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js.gz +0 -0
- package/dist/standalone/assets/{global-search-dialog-CT30gcRv.js.map → global-search-dialog-DxwxFDO5.js.map} +1 -1
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js +174 -0
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-LnhreUPp.js.map +1 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js +61 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js.br +0 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js.gz +0 -0
- package/dist/standalone/assets/home-page-DiDOzuic.js.map +1 -0
- package/dist/standalone/assets/{hooks-DHDUQgzs.js → hooks-BiOfAnEq.js} +11 -11
- package/dist/standalone/assets/hooks-BiOfAnEq.js.br +0 -0
- package/dist/standalone/assets/hooks-BiOfAnEq.js.gz +0 -0
- package/dist/standalone/assets/hooks-BiOfAnEq.js.map +1 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js +2 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js.br +0 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js.gz +0 -0
- package/dist/standalone/assets/icon-registry-s31CNk7M.js.map +1 -0
- package/dist/standalone/assets/index-CASCzvYu.js +15 -0
- package/dist/standalone/assets/index-CASCzvYu.js.br +0 -0
- package/dist/standalone/assets/index-CASCzvYu.js.gz +0 -0
- package/dist/standalone/assets/index-CASCzvYu.js.map +1 -0
- package/dist/standalone/assets/index-Cz5ntgJ_.css +2 -0
- package/dist/standalone/assets/index-Cz5ntgJ_.css.br +0 -0
- package/dist/standalone/assets/index-Cz5ntgJ_.css.gz +0 -0
- package/dist/standalone/assets/{info-CGVdWTj1.js → info-ChwYoM77.js} +2 -2
- package/dist/standalone/assets/{info-CGVdWTj1.js.map → info-ChwYoM77.js.map} +1 -1
- package/dist/standalone/assets/json-editor-BD0UhGOT.js +2 -0
- package/dist/standalone/assets/json-editor-BD0UhGOT.js.br +0 -0
- package/dist/standalone/assets/json-editor-BD0UhGOT.js.gz +0 -0
- package/dist/standalone/assets/json-editor-BD0UhGOT.js.map +1 -0
- package/dist/standalone/assets/key-BzJFbNbz.js +2 -0
- package/dist/standalone/assets/key-BzJFbNbz.js.map +1 -0
- package/dist/standalone/assets/{key-round-CQLp1Ua9.js → key-round-oSqmVdkQ.js} +2 -2
- package/dist/standalone/assets/{key-round-CQLp1Ua9.js.map → key-round-oSqmVdkQ.js.map} +1 -1
- package/dist/standalone/assets/{minimize-2-Bx2cH_WS.js → minimize-2-iWv98HjE.js} +2 -2
- package/dist/standalone/assets/{minimize-2-Bx2cH_WS.js.map → minimize-2-iWv98HjE.js.map} +1 -1
- package/dist/standalone/assets/{palette-DVP_4RAn.js → palette-jgTV28yN.js} +2 -2
- package/dist/standalone/assets/{palette-DVP_4RAn.js.map → palette-jgTV28yN.js.map} +1 -1
- package/dist/standalone/assets/{pencil-BO-k3yTG.js → pencil-kFOObGrY.js} +2 -2
- package/dist/standalone/assets/{pencil-BO-k3yTG.js.map → pencil-kFOObGrY.js.map} +1 -1
- package/dist/standalone/assets/{pipette-CqHYfQnn.js → pipette-roLBCmPv.js} +2 -2
- package/dist/standalone/assets/pipette-roLBCmPv.js.br +0 -0
- package/dist/standalone/assets/pipette-roLBCmPv.js.gz +0 -0
- package/dist/standalone/assets/{pipette-CqHYfQnn.js.map → pipette-roLBCmPv.js.map} +1 -1
- package/dist/standalone/assets/plus-D7PHzena.js +2 -0
- package/dist/standalone/assets/{plus-Dk-FzitW.js.map → plus-D7PHzena.js.map} +1 -1
- package/dist/standalone/assets/property-renderer-ClrVnSny.js +4 -0
- package/dist/standalone/assets/property-renderer-ClrVnSny.js.br +0 -0
- package/dist/standalone/assets/property-renderer-ClrVnSny.js.gz +0 -0
- package/dist/standalone/assets/property-renderer-ClrVnSny.js.map +1 -0
- package/dist/standalone/assets/reference-BMbhUBHD.js +2 -0
- package/dist/standalone/assets/reference-BMbhUBHD.js.br +0 -0
- package/dist/standalone/assets/reference-BMbhUBHD.js.gz +0 -0
- package/dist/standalone/assets/{reference-BDP1QYCg.js.map → reference-BMbhUBHD.js.map} +1 -1
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js +2 -0
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js.map +1 -0
- package/dist/standalone/assets/revisions-button-Csueldv_.js +2 -0
- package/dist/standalone/assets/revisions-button-Csueldv_.js.br +0 -0
- package/dist/standalone/assets/revisions-button-Csueldv_.js.gz +0 -0
- package/dist/standalone/assets/{revisions-button-CI74_D14.js.map → revisions-button-Csueldv_.js.map} +1 -1
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js +68 -0
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.br +0 -0
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.map +1 -0
- package/dist/standalone/assets/{rotate-ccw-BLr0QLAg.js → rotate-ccw-AB1VcvbK.js} +2 -2
- package/dist/standalone/assets/{rotate-ccw-BLr0QLAg.js.map → rotate-ccw-AB1VcvbK.js.map} +1 -1
- package/dist/standalone/assets/{save-Cd3oR3Sj.js → save-BkkrgP5Q.js} +2 -2
- package/dist/standalone/assets/{save-Cd3oR3Sj.js.map → save-BkkrgP5Q.js.map} +1 -1
- package/dist/standalone/assets/schemas-ByMQmMCS.js +65 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.br +0 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.gz +0 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.map +1 -0
- package/dist/standalone/assets/select-BOe2daO9.js +2 -0
- package/dist/standalone/assets/select-BOe2daO9.js.br +0 -0
- package/dist/standalone/assets/select-BOe2daO9.js.gz +0 -0
- package/dist/standalone/assets/select-BOe2daO9.js.map +1 -0
- package/dist/standalone/assets/{send-D4KHQGYj.js → send-Bzb_4uMT.js} +2 -2
- package/dist/standalone/assets/{send-D4KHQGYj.js.map → send-Bzb_4uMT.js.map} +1 -1
- package/dist/standalone/assets/settings-page-BmphreWj.js +2 -0
- package/dist/standalone/assets/settings-page-BmphreWj.js.br +0 -0
- package/dist/standalone/assets/settings-page-BmphreWj.js.gz +0 -0
- package/dist/standalone/assets/{settings-page-CdIWVeh0.js.map → settings-page-BmphreWj.js.map} +1 -1
- package/dist/standalone/assets/show-page-CDgUXhsx.js +2 -0
- package/dist/standalone/assets/show-page-CDgUXhsx.js.br +0 -0
- package/dist/standalone/assets/show-page-CDgUXhsx.js.gz +0 -0
- package/dist/standalone/assets/{show-page-Dgw-9Pmn.js.map → show-page-CDgUXhsx.js.map} +1 -1
- package/dist/standalone/assets/{sparkles-CqF0zjrF.js → sparkles-1tT0H4n4.js} +2 -2
- package/dist/standalone/assets/{sparkles-CqF0zjrF.js.map → sparkles-1tT0H4n4.js.map} +1 -1
- package/dist/standalone/assets/{square-pen-DGT7ekeJ.js → square-pen-ZvVEwkzw.js} +2 -2
- package/dist/standalone/assets/{square-pen-DGT7ekeJ.js.map → square-pen-ZvVEwkzw.js.map} +1 -1
- package/dist/standalone/assets/table-RI-lM4fw.js +2 -0
- package/dist/standalone/assets/table-RI-lM4fw.js.br +1 -0
- package/dist/standalone/assets/table-RI-lM4fw.js.gz +0 -0
- package/dist/standalone/assets/{table-DzBSPeVH.js.map → table-RI-lM4fw.js.map} +1 -1
- package/dist/standalone/assets/tabs-Bj4gQaH2.js +2 -0
- package/dist/standalone/assets/tabs-Bj4gQaH2.js.br +0 -0
- package/dist/standalone/assets/tabs-Bj4gQaH2.js.gz +0 -0
- package/dist/standalone/assets/tabs-Bj4gQaH2.js.map +1 -0
- package/dist/standalone/assets/textarea-C2w7TG3h.js +2 -0
- package/dist/standalone/assets/{textarea-T25SXcrC.js.map → textarea-C2w7TG3h.js.map} +1 -1
- package/dist/standalone/assets/{trash-2-DhyKQCKv.js → trash-2-BIJVpWxv.js} +2 -2
- package/dist/standalone/assets/{trash-2-DhyKQCKv.js.map → trash-2-BIJVpWxv.js.map} +1 -1
- package/dist/standalone/assets/{triangle-alert-CyaaNWN8.js → triangle-alert-yljVpQCM.js} +2 -2
- package/dist/standalone/assets/{triangle-alert-CyaaNWN8.js.map → triangle-alert-yljVpQCM.js.map} +1 -1
- package/dist/standalone/assets/{undo-2-DlSB-5DM.js → undo-2-CnH3ScKE.js} +2 -2
- package/dist/standalone/assets/undo-2-CnH3ScKE.js.br +0 -0
- package/dist/standalone/assets/undo-2-CnH3ScKE.js.gz +0 -0
- package/dist/standalone/assets/{undo-2-DlSB-5DM.js.map → undo-2-CnH3ScKE.js.map} +1 -1
- package/dist/standalone/assets/{upload-BVhXhZgn.js → upload-DrfB-4bU.js} +2 -2
- package/dist/standalone/assets/upload-DrfB-4bU.js.br +0 -0
- package/dist/standalone/assets/upload-DrfB-4bU.js.gz +0 -0
- package/dist/standalone/assets/{upload-BVhXhZgn.js.map → upload-DrfB-4bU.js.map} +1 -1
- package/dist/standalone/assets/{use-dashboard-charts-aymvhXUB.js → use-dashboard-charts-D7-ctwCE.js} +2 -2
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js.br +0 -0
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js.gz +0 -0
- package/dist/standalone/assets/{use-dashboard-charts-aymvhXUB.js.map → use-dashboard-charts-D7-ctwCE.js.map} +1 -1
- package/dist/standalone/assets/useQueries-DNUnShBb.js +2 -0
- package/dist/standalone/assets/useQueries-DNUnShBb.js.br +0 -0
- package/dist/standalone/assets/useQueries-DNUnShBb.js.gz +0 -0
- package/dist/standalone/assets/useQueries-DNUnShBb.js.map +1 -0
- package/dist/standalone/assets/{user-directory-C33bGZdb.js → user-directory-BvmDzxsG.js} +3 -3
- package/dist/standalone/assets/user-directory-BvmDzxsG.js.br +0 -0
- package/dist/standalone/assets/user-directory-BvmDzxsG.js.gz +0 -0
- package/dist/standalone/assets/{user-directory-C33bGZdb.js.map → user-directory-BvmDzxsG.js.map} +1 -1
- package/dist/standalone/assets/{wand-sparkles-DWaFQeYS.js → wand-sparkles-DwseTI5T.js} +2 -2
- package/dist/standalone/assets/{wand-sparkles-DWaFQeYS.js.map → wand-sparkles-DwseTI5T.js.map} +1 -1
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js +2 -0
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js.gz +0 -0
- package/dist/standalone/assets/{wizard-create-page-BtfveXmP.js.map → wizard-create-page-D4a8FnmI.js.map} +1 -1
- package/dist/standalone/assets/x-c-gfVPJa.js +2 -0
- package/dist/standalone/assets/{x-C3kLunD6.js.map → x-c-gfVPJa.js.map} +1 -1
- package/dist/standalone/assets/zap-BxPAEPtJ.js +2 -0
- package/dist/standalone/assets/zap-BxPAEPtJ.js.map +1 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js +2 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js.br +0 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js.gz +0 -0
- package/dist/standalone/assets/zod-2-ubQvxh.js.map +1 -0
- package/dist/standalone/index.html +12 -12
- package/dist/standalone/index.html.br +0 -0
- package/dist/standalone/index.html.gz +0 -0
- package/package.json +21 -21
- package/src/vite.ts +21 -0
- package/dist/standalone/assets/action-component-host-QVowRL_F.js +0 -2
- package/dist/standalone/assets/action-component-host-QVowRL_F.js.br +0 -0
- package/dist/standalone/assets/action-component-host-QVowRL_F.js.gz +0 -0
- package/dist/standalone/assets/action-page-CET1s1MA.js.br +0 -0
- package/dist/standalone/assets/action-page-CET1s1MA.js.gz +0 -0
- package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js +0 -2
- package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-pJHSP1PB.js.gz +0 -0
- package/dist/standalone/assets/arrow-left-CI9hUPwJ.js +0 -2
- package/dist/standalone/assets/audit-log-page-DoZPtbGo.js +0 -2
- package/dist/standalone/assets/audit-log-page-DoZPtbGo.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-DoZPtbGo.js.gz +0 -0
- package/dist/standalone/assets/cache-page-CoKusfv-.js +0 -2
- package/dist/standalone/assets/cache-page-CoKusfv-.js.br +0 -0
- package/dist/standalone/assets/cache-page-CoKusfv-.js.gz +0 -0
- package/dist/standalone/assets/calendar-DDv0Qalf.js +0 -2
- package/dist/standalone/assets/calendar-DDv0Qalf.js.br +0 -0
- package/dist/standalone/assets/calendar-DDv0Qalf.js.gz +0 -0
- package/dist/standalone/assets/calendar-DDv0Qalf.js.map +0 -1
- package/dist/standalone/assets/card-MNH_XK0V.js +0 -2
- package/dist/standalone/assets/card-MNH_XK0V.js.br +0 -0
- package/dist/standalone/assets/card-MNH_XK0V.js.gz +0 -0
- package/dist/standalone/assets/chart-widget-R2NG5T1y.js +0 -2
- package/dist/standalone/assets/chart-widget-R2NG5T1y.js.br +0 -0
- package/dist/standalone/assets/chart-widget-R2NG5T1y.js.gz +0 -0
- package/dist/standalone/assets/chevrons-up-down-BHCs46XQ.js +0 -2
- package/dist/standalone/assets/command-Cw-hTtpk.js +0 -2
- package/dist/standalone/assets/command-Cw-hTtpk.js.br +0 -0
- package/dist/standalone/assets/command-Cw-hTtpk.js.gz +0 -0
- package/dist/standalone/assets/command-Cw-hTtpk.js.map +0 -1
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js +0 -2
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.gz +0 -0
- package/dist/standalone/assets/createLucideIcon-CUopU_LC.js.map +0 -1
- package/dist/standalone/assets/date-picker-DQ4XOgO6.js +0 -2
- package/dist/standalone/assets/date-picker-DQ4XOgO6.js.br +0 -0
- package/dist/standalone/assets/date-picker-DQ4XOgO6.js.gz +0 -0
- package/dist/standalone/assets/dist-CmyV2PEd.js +0 -2
- package/dist/standalone/assets/dist-CmyV2PEd.js.br +0 -0
- package/dist/standalone/assets/dist-CmyV2PEd.js.gz +0 -0
- package/dist/standalone/assets/dist-CmyV2PEd.js.map +0 -1
- package/dist/standalone/assets/dist-DI9XNddW.js +0 -2
- package/dist/standalone/assets/dist-DI9XNddW.js.br +0 -0
- package/dist/standalone/assets/dist-DI9XNddW.js.gz +0 -0
- package/dist/standalone/assets/dist-DI9XNddW.js.map +0 -1
- package/dist/standalone/assets/dist-jC1pK2zN.js +0 -2
- package/dist/standalone/assets/dist-jC1pK2zN.js.br +0 -0
- package/dist/standalone/assets/dist-jC1pK2zN.js.gz +0 -0
- package/dist/standalone/assets/dist-jC1pK2zN.js.map +0 -1
- package/dist/standalone/assets/edit-page-CVjik6T5.js.br +0 -0
- package/dist/standalone/assets/edit-page-CVjik6T5.js.gz +0 -0
- package/dist/standalone/assets/empty-DcETRWsu.js +0 -2
- package/dist/standalone/assets/empty-DcETRWsu.js.br +0 -0
- package/dist/standalone/assets/empty-DcETRWsu.js.gz +0 -0
- package/dist/standalone/assets/empty-DcETRWsu.js.map +0 -1
- package/dist/standalone/assets/floating-layer-DJGCYMex.js +0 -2
- package/dist/standalone/assets/floating-layer-DJGCYMex.js.br +0 -0
- package/dist/standalone/assets/floating-layer-DJGCYMex.js.gz +0 -0
- package/dist/standalone/assets/floating-layer-DJGCYMex.js.map +0 -1
- package/dist/standalone/assets/global-search-dialog-CT30gcRv.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-CT30gcRv.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js +0 -181
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.gz +0 -0
- package/dist/standalone/assets/heavy-fields-ByzRCqe0.js.map +0 -1
- package/dist/standalone/assets/home-page-B3WVGerG.js +0 -3
- package/dist/standalone/assets/home-page-B3WVGerG.js.br +0 -0
- package/dist/standalone/assets/home-page-B3WVGerG.js.gz +0 -0
- package/dist/standalone/assets/home-page-B3WVGerG.js.map +0 -1
- package/dist/standalone/assets/hooks-DHDUQgzs.js.br +0 -0
- package/dist/standalone/assets/hooks-DHDUQgzs.js.gz +0 -0
- package/dist/standalone/assets/hooks-DHDUQgzs.js.map +0 -1
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js +0 -2
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js.br +0 -0
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js.gz +0 -0
- package/dist/standalone/assets/icon-registry-O7MDzgTi.js.map +0 -1
- package/dist/standalone/assets/index-BvESJd1R.js +0 -15
- package/dist/standalone/assets/index-BvESJd1R.js.br +0 -0
- package/dist/standalone/assets/index-BvESJd1R.js.gz +0 -0
- package/dist/standalone/assets/index-BvESJd1R.js.map +0 -1
- package/dist/standalone/assets/index-DSYyF4Ah.css +0 -2
- package/dist/standalone/assets/index-DSYyF4Ah.css.br +0 -0
- package/dist/standalone/assets/index-DSYyF4Ah.css.gz +0 -0
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js +0 -2
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js.br +0 -0
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js.gz +0 -0
- package/dist/standalone/assets/json-editor-DJ-yNmlx.js.map +0 -1
- package/dist/standalone/assets/key-lbuX0yk_.js +0 -2
- package/dist/standalone/assets/key-lbuX0yk_.js.map +0 -1
- package/dist/standalone/assets/pipette-CqHYfQnn.js.br +0 -0
- package/dist/standalone/assets/pipette-CqHYfQnn.js.gz +0 -0
- package/dist/standalone/assets/plus-Dk-FzitW.js +0 -2
- package/dist/standalone/assets/property-renderer-DeykD9hp.js +0 -7
- package/dist/standalone/assets/property-renderer-DeykD9hp.js.br +0 -0
- package/dist/standalone/assets/property-renderer-DeykD9hp.js.gz +0 -0
- package/dist/standalone/assets/property-renderer-DeykD9hp.js.map +0 -1
- package/dist/standalone/assets/reference-BDP1QYCg.js +0 -2
- package/dist/standalone/assets/reference-BDP1QYCg.js.br +0 -0
- package/dist/standalone/assets/reference-BDP1QYCg.js.gz +0 -0
- package/dist/standalone/assets/refresh-cw-DHvUQTMb.js +0 -2
- package/dist/standalone/assets/refresh-cw-DHvUQTMb.js.map +0 -1
- package/dist/standalone/assets/revisions-button-CI74_D14.js +0 -2
- package/dist/standalone/assets/revisions-button-CI74_D14.js.br +0 -0
- package/dist/standalone/assets/revisions-button-CI74_D14.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js +0 -67
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js.br +0 -0
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-BHGG3eKV.js.map +0 -1
- package/dist/standalone/assets/schemas-twnCb1uT.js +0 -65
- package/dist/standalone/assets/schemas-twnCb1uT.js.br +0 -0
- package/dist/standalone/assets/schemas-twnCb1uT.js.gz +0 -0
- package/dist/standalone/assets/schemas-twnCb1uT.js.map +0 -1
- package/dist/standalone/assets/select-BR1RMqsn.js +0 -2
- package/dist/standalone/assets/select-BR1RMqsn.js.br +0 -0
- package/dist/standalone/assets/select-BR1RMqsn.js.gz +0 -0
- package/dist/standalone/assets/select-BR1RMqsn.js.map +0 -1
- package/dist/standalone/assets/settings-page-CdIWVeh0.js +0 -2
- package/dist/standalone/assets/settings-page-CdIWVeh0.js.br +0 -0
- package/dist/standalone/assets/settings-page-CdIWVeh0.js.gz +0 -0
- package/dist/standalone/assets/show-page-Dgw-9Pmn.js +0 -2
- package/dist/standalone/assets/show-page-Dgw-9Pmn.js.br +0 -0
- package/dist/standalone/assets/show-page-Dgw-9Pmn.js.gz +0 -0
- package/dist/standalone/assets/table-DzBSPeVH.js +0 -2
- package/dist/standalone/assets/table-DzBSPeVH.js.br +0 -0
- package/dist/standalone/assets/table-DzBSPeVH.js.gz +0 -0
- package/dist/standalone/assets/tabs-Dr7UA219.js +0 -2
- package/dist/standalone/assets/tabs-Dr7UA219.js.br +0 -0
- package/dist/standalone/assets/tabs-Dr7UA219.js.gz +0 -0
- package/dist/standalone/assets/tabs-Dr7UA219.js.map +0 -1
- package/dist/standalone/assets/textarea-T25SXcrC.js +0 -2
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.br +0 -0
- package/dist/standalone/assets/undo-2-DlSB-5DM.js.gz +0 -0
- package/dist/standalone/assets/upload-BVhXhZgn.js.br +0 -0
- package/dist/standalone/assets/upload-BVhXhZgn.js.gz +0 -0
- package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js.br +0 -0
- package/dist/standalone/assets/use-dashboard-charts-aymvhXUB.js.gz +0 -0
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js +0 -2
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js.br +0 -0
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js.gz +0 -0
- package/dist/standalone/assets/useQueries-Dch5Ggjr.js.map +0 -1
- package/dist/standalone/assets/user-directory-C33bGZdb.js.br +0 -0
- package/dist/standalone/assets/user-directory-C33bGZdb.js.gz +0 -0
- package/dist/standalone/assets/value-format-CLzWct9Y.js +0 -60
- package/dist/standalone/assets/value-format-CLzWct9Y.js.br +0 -0
- package/dist/standalone/assets/value-format-CLzWct9Y.js.gz +0 -0
- package/dist/standalone/assets/value-format-CLzWct9Y.js.map +0 -1
- package/dist/standalone/assets/wizard-create-page-BtfveXmP.js +0 -2
- package/dist/standalone/assets/wizard-create-page-BtfveXmP.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-BtfveXmP.js.gz +0 -0
- package/dist/standalone/assets/x-C3kLunD6.js +0 -2
- package/dist/standalone/assets/zap-b3saQVKc.js +0 -2
- package/dist/standalone/assets/zap-b3saQVKc.js.map +0 -1
- package/dist/standalone/assets/zod-N7mHo7BX.js +0 -2
- package/dist/standalone/assets/zod-N7mHo7BX.js.br +0 -0
- package/dist/standalone/assets/zod-N7mHo7BX.js.gz +0 -0
- package/dist/standalone/assets/zod-N7mHo7BX.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQueries-DNUnShBb.js","names":["Popover","PopperPrimitive.Root","PopoverAnchor","PopperPrimitive.Anchor","PopoverTrigger","PortalPrimitive","PopoverContent","RemoveScroll","PopperPrimitive.Content","#client","#options","#queries","#observers","#result","#onUpdate","#findMatchingObservers","#observerMatches","#notify","#combineResult","#trackResult","#lastQueryHashes","#combinedResult","#lastResult","#lastCombine","#shouldSkipCombine"],"sources":["../../../../../node_modules/.bun/@radix-ui+react-popover@1.1.23+c32617ced709d283/node_modules/@radix-ui/react-popover/dist/index.mjs","../../../../ui/src/components/popover.tsx","../../../../../node_modules/.bun/@tanstack+query-core@5.101.4/node_modules/@tanstack/query-core/build/modern/queriesObserver.js","../../../../../node_modules/.bun/@tanstack+react-query@5.101.4+0f58469d5b3bd39f/node_modules/@tanstack/react-query/build/modern/useQueries.js"],"sourcesContent":["\"use client\";\nvar __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = /* @__PURE__ */ __name((props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n}, \"Popover\");\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverAnchor2(props, forwardedRef) {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }, \"PopoverAnchor\")\n);\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverTrigger2(props, forwardedRef) {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }, \"PopoverTrigger\")\n);\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = /* @__PURE__ */ __name((props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n}, \"PopoverPortal\");\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContent2(props, forwardedRef) {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }, \"PopoverContent\")\n);\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContentModal2(props, forwardedRef) {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }, \"PopoverContentModal\")\n);\nvar PopoverContentNonModal = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContentNonModal2(props, forwardedRef) {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }, \"PopoverContentNonModal\")\n);\nvar PopoverContentImpl = /* @__PURE__ */ React.forwardRef(\n // blank line to reduce diff noise\n /* @__PURE__ */ __name(function PopoverContentImpl2(props, forwardedRef) {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n deferPointerDownOutside: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }, \"PopoverContentImpl\")\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverClose2(props, forwardedRef) {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }, \"PopoverClose\")\n);\nvar PopoverArrow = /* @__PURE__ */ React.forwardRef(\n /* @__PURE__ */ __name(function PopoverArrow2(props, forwardedRef) {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }, \"PopoverArrow\")\n);\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\n__name(getState, \"getState\");\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { cn } from '../lib/utils.js'\nimport { usePortalContainer, useViewportCollisionPadding } from '../lib/floating-layer.js'\n\nexport const Popover = PopoverPrimitive.Root\nexport const PopoverTrigger = PopoverPrimitive.Trigger\nexport const PopoverAnchor = PopoverPrimitive.Anchor\n\nexport interface PopoverContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content> {\n /** Override the portal target. Defaults to the enclosing Dialog/Sheet\n * content (so touch-scroll works inside it) or `document.body`. */\n container?: HTMLElement | null\n}\n\nexport const PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({ className, align = 'center', sideOffset = 4, collisionPadding, container, ...props }, ref) => {\n const portalContainer = usePortalContainer()\n const viewportPadding = useViewportCollisionPadding()\n return (\n <PopoverPrimitive.Portal container={container ?? portalContainer}>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n collisionPadding={collisionPadding ?? viewportPadding}\n className={cn(\n 'z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n})\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n","// src/queriesObserver.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { QueryObserver } from \"./queryObserver.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { replaceEqualDeep, shallowEqualObjects } from \"./utils.js\";\nfunction difference(array1, array2) {\n const excludeSet = new Set(array2);\n return array1.filter((x) => !excludeSet.has(x));\n}\nfunction replaceAt(array, index, value) {\n const copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nvar QueriesObserver = class extends Subscribable {\n #client;\n #result;\n #queries;\n #options;\n #observers;\n #combinedResult;\n #lastCombine;\n #lastResult;\n #lastQueryHashes;\n #observerMatches = [];\n constructor(client, queries, options) {\n super();\n this.#client = client;\n this.#options = options;\n this.#queries = [];\n this.#observers = [];\n this.#result = [];\n this.setQueries(queries);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result);\n });\n });\n }\n }\n onUnsubscribe() {\n if (!this.listeners.size) {\n this.destroy();\n }\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#observers.forEach((observer) => {\n observer.destroy();\n });\n }\n setQueries(queries, options) {\n this.#queries = queries;\n this.#options = options;\n if (process.env.NODE_ENV !== \"production\") {\n const queryHashes = queries.map(\n (query) => this.#client.defaultQueryOptions(query).queryHash\n );\n if (new Set(queryHashes).size !== queryHashes.length) {\n console.warn(\n \"[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.\"\n );\n }\n }\n notifyManager.batch(() => {\n const prevObservers = this.#observers;\n const newObserverMatches = this.#findMatchingObservers(this.#queries);\n newObserverMatches.forEach(\n (match) => match.observer.setOptions(match.defaultedQueryOptions)\n );\n const newObservers = newObserverMatches.map((match) => match.observer);\n const newResult = newObservers.map(\n (observer) => observer.getCurrentResult()\n );\n const hasLengthChange = prevObservers.length !== newObservers.length;\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index]\n );\n const hasStructuralChange = hasLengthChange || hasIndexChange;\n const hasResultChange = hasStructuralChange ? true : newResult.some((result, index) => {\n const prev = this.#result[index];\n return !prev || !shallowEqualObjects(result, prev);\n });\n if (!hasStructuralChange && !hasResultChange) return;\n if (hasStructuralChange) {\n this.#observerMatches = newObserverMatches;\n this.#observers = newObservers;\n }\n this.#result = newResult;\n if (!this.hasListeners()) return;\n if (hasStructuralChange) {\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy();\n });\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result);\n });\n });\n }\n this.#notify();\n });\n }\n getCurrentResult() {\n return this.#result;\n }\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery());\n }\n getObservers() {\n return this.#observers;\n }\n getOptimisticResult(queries, combine) {\n const matches = this.#findMatchingObservers(queries);\n const result = matches.map(\n (match) => match.observer.getOptimisticResult(match.defaultedQueryOptions)\n );\n const queryHashes = matches.map(\n (match) => match.defaultedQueryOptions.queryHash\n );\n return [\n result,\n (r) => {\n return this.#combineResult(r ?? result, combine, queryHashes);\n },\n () => {\n return this.#trackResult(result, matches);\n }\n ];\n }\n #trackResult(result, matches) {\n return matches.map((match, index) => {\n const observerResult = result[index];\n return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult, (accessedProp) => {\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp);\n });\n }) : observerResult;\n });\n }\n #combineResult(input, combine, queryHashes) {\n if (combine) {\n const lastHashes = this.#lastQueryHashes;\n const queryHashesChanged = queryHashes !== void 0 && lastHashes !== void 0 && (lastHashes.length !== queryHashes.length || queryHashes.some((hash, i) => hash !== lastHashes[i]));\n if (!this.#combinedResult || this.#result !== this.#lastResult || queryHashesChanged || combine !== this.#lastCombine) {\n this.#lastCombine = combine;\n this.#lastResult = this.#result;\n if (queryHashes !== void 0) {\n this.#lastQueryHashes = queryHashes;\n }\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input)\n );\n }\n return this.#combinedResult;\n }\n return input;\n }\n #shouldSkipCombine() {\n return this.#options?.combine !== void 0 && this.#observers.some((observer, index) => {\n return observer.options.suspense && this.#result[index]?.data === void 0;\n });\n }\n #findMatchingObservers(queries) {\n const prevObserversMap = /* @__PURE__ */ new Map();\n this.#observers.forEach((observer) => {\n const key = observer.options.queryHash;\n if (!key) return;\n const previousObservers = prevObserversMap.get(key);\n if (previousObservers) {\n previousObservers.push(observer);\n } else {\n prevObserversMap.set(key, [observer]);\n }\n });\n const observers = [];\n queries.forEach((options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const match = prevObserversMap.get(defaultedOptions.queryHash)?.shift();\n const observer = match ?? new QueryObserver(this.#client, defaultedOptions);\n observers.push({\n defaultedQueryOptions: defaultedOptions,\n observer\n });\n });\n return observers;\n }\n #onUpdate(observer, result) {\n const index = this.#observers.indexOf(observer);\n if (index !== -1) {\n this.#result = replaceAt(this.#result, index, result);\n this.#notify();\n }\n }\n #notify() {\n if (this.hasListeners()) {\n const newTracked = this.#trackResult(this.#result, this.#observerMatches);\n const shouldSkipCombine = this.#shouldSkipCombine();\n const previousResult = this.#combinedResult;\n const newResult = shouldSkipCombine ? previousResult : this.#combineResult(newTracked, this.#options?.combine);\n if (shouldSkipCombine || previousResult !== newResult) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result);\n });\n });\n }\n }\n }\n};\nexport {\n QueriesObserver\n};\n//# sourceMappingURL=queriesObserver.js.map","\"use client\";\n\n// src/useQueries.ts\nimport * as React from \"react\";\nimport {\n QueriesObserver,\n QueryObserver,\n noop,\n notifyManager\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend\n} from \"./suspense.js\";\nfunction useQueries({\n queries,\n ...options\n}, queryClient) {\n const client = useQueryClient(queryClient);\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedQueries = React.useMemo(\n () => queries.map((opts) => {\n const defaultedOptions = client.defaultQueryOptions(\n opts\n );\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n return defaultedOptions;\n }),\n [queries, client, isRestoring]\n );\n defaultedQueries.forEach((queryOptions) => {\n ensureSuspenseTimers(queryOptions);\n const query = client.getQueryCache().get(queryOptions.queryHash);\n ensurePreventErrorBoundaryRetry(queryOptions, errorResetBoundary, query);\n });\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(\n () => new QueriesObserver(\n client,\n defaultedQueries,\n options\n )\n );\n const [optimisticResult, getCombinedResult, trackResult] = observer.getOptimisticResult(\n defaultedQueries,\n options.combine\n );\n const shouldSubscribe = !isRestoring && options.subscribed !== false;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop,\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setQueries(\n defaultedQueries,\n options\n );\n }, [defaultedQueries, options, observer]);\n const shouldAtLeastOneSuspend = optimisticResult.some(\n (result, index) => shouldSuspend(defaultedQueries[index], result)\n );\n const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => {\n const opts = defaultedQueries[index];\n if (opts && shouldSuspend(opts, result)) {\n const queryObserver = new QueryObserver(client, opts);\n return fetchOptimistic(opts, queryObserver, errorResetBoundary);\n }\n return [];\n }) : [];\n if (suspensePromises.length > 0) {\n throw Promise.all(suspensePromises);\n }\n const firstSingleResultWhichShouldThrow = optimisticResult.find(\n (result, index) => {\n const query = defaultedQueries[index];\n return query && getHasError({\n result,\n errorResetBoundary,\n throwOnError: query.throwOnError,\n query: client.getQueryCache().get(query.queryHash),\n suspense: query.suspense\n });\n }\n );\n if (firstSingleResultWhichShouldThrow?.error) {\n throw firstSingleResultWhichShouldThrow.error;\n }\n return getCombinedResult(trackResult());\n}\nexport {\n useQueries\n};\n//# sourceMappingURL=useQueries.js.map"],"x_google_ignoreList":[0,2,3],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{n as e}from"./createLucideIcon-
|
|
2
|
-
`)||e.length>80;function l({fields:e,labels:
|
|
1
|
+
import{n as e}from"./createLucideIcon-QE2kj6ru.js";import{C as t,l as n}from"./floating-layer-BcTp2AMB.js";import{I as r}from"./hooks-BiOfAnEq.js";import{t as i}from"./useQueries-DNUnShBb.js";e();var a=t(),o={added:`Added`,changed:`Changed`,removed:`Removed`,before:`Before`,after:`After`,noChanges:`No changes`},s=e=>e===void 0?``:e===null?`null`:typeof e==`string`?e:JSON.stringify(e,null,2),c=e=>e.includes(`
|
|
2
|
+
`)||e.length>80;function l({fields:e,labels:t,className:r}){let i={...o,...t};return e.length===0?(0,a.jsx)(`div`,{className:n(`rounded-md border border-dashed border-border p-4 text-sm text-muted-foreground`,r),children:i.noChanges}):(0,a.jsx)(`ul`,{className:n(`divide-y divide-border overflow-hidden rounded-md border border-border bg-card text-xs`,r),children:e.map(e=>(0,a.jsx)(u,{field:e,labels:i},e.path))})}function u({field:e,labels:t}){let n=e.kind===`added`?``:s(e.before),r=e.kind===`removed`?``:s(e.after),i=!c(n)&&!c(r);return(0,a.jsxs)(`li`,{className:`grid grid-cols-[8rem_1fr] gap-x-3 px-3 py-1.5 sm:grid-cols-[10rem_1fr]`,children:[(0,a.jsxs)(`div`,{className:`min-w-0 pt-0.5`,children:[e.label&&(0,a.jsx)(`p`,{className:`truncate text-[11px] font-medium text-foreground`,title:e.label,children:e.label}),(0,a.jsx)(`code`,{className:`truncate font-mono text-[10px] text-muted-foreground`,title:e.path,children:e.path})]}),i?(0,a.jsx)(d,{kind:e.kind,before:n,after:r,labels:t}):(0,a.jsx)(f,{kind:e.kind,before:n,after:r,labels:t})]})}function d({kind:e,before:t,after:n,labels:r}){return(0,a.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5 font-mono text-xs leading-5`,children:[e!==`added`&&(0,a.jsx)(`span`,{"aria-label":r.before,className:`truncate rounded bg-red-50 px-1.5 text-red-900 line-through decoration-red-400/60 dark:bg-red-950/40 dark:text-red-100`,title:t,children:t||`\xA0`}),e!==`removed`&&(0,a.jsx)(`span`,{"aria-label":r.after,className:`truncate rounded bg-green-50 px-1.5 text-green-900 dark:bg-green-950/40 dark:text-green-100`,title:n,children:n||`\xA0`})]})}function f({kind:e,before:t,after:n,labels:r}){return(0,a.jsxs)(`div`,{className:`min-w-0 overflow-hidden rounded font-mono text-xs leading-5`,children:[e!==`added`&&(0,a.jsx)(`pre`,{"aria-label":r.before,className:`overflow-x-auto whitespace-pre-wrap bg-red-50 px-2 py-0.5 text-red-900 dark:bg-red-950/40 dark:text-red-100`,children:p(`-`,t)}),e!==`removed`&&(0,a.jsx)(`pre`,{"aria-label":r.after,className:`overflow-x-auto whitespace-pre-wrap bg-green-50 px-2 py-0.5 text-green-900 dark:bg-green-950/40 dark:text-green-100`,children:p(`+`,n)})]})}var p=(e,t)=>t.split(`
|
|
3
3
|
`).map(t=>`${e} ${t}`).join(`
|
|
4
4
|
`),m=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),h=e=>typeof e!=`object`||!e?JSON.stringify(e):e instanceof Date?JSON.stringify(e.toISOString()):typeof e.toJSON==`function`?h(e.toJSON()):Array.isArray(e)?`[${e.map(h).join(`,`)}]`:`{${Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${JSON.stringify(e)}:${h(t)}`).join(`,`)}}`,g=(e,t)=>h(e)===h(t);function _(e,t,n=new Set){let r=new Set([...Object.keys(e),...Object.keys(t)]),i=[];for(let a of[...r].sort((e,t)=>e.localeCompare(t))){if(n.has(a))continue;let r=m(e,a),o=m(t,a);!r&&o?i.push({path:a,after:t[a],kind:`added`}):r&&!o?i.push({path:a,before:e[a],kind:`removed`}):g(e[a],t[a])||i.push({path:a,before:e[a],after:t[a],kind:`changed`})}return i}var v=_,y=`admins`;function b(e){let t=r(),n=i({queries:e.map(e=>({queryKey:[`modern-admin`,`user-dir`,y,e],queryFn:async()=>{try{return(await t.show(y,e)).record}catch{return null}},staleTime:6e4,retry:!1}))}),a=new Map;return e.forEach((e,t)=>a.set(e,n[t]?.data??null)),a}function x(e,t){if(!e)return t;let n=e.params??{},r=[n.name,n.fullName,n.email,e.title];for(let t of r){let n=typeof t==`string`?t.trim():``;if(n&&n!==e.id)return n}return t}export{l as a,v as i,b as n,x as r,y as t};
|
|
5
|
-
//# sourceMappingURL=user-directory-
|
|
5
|
+
//# sourceMappingURL=user-directory-BvmDzxsG.js.map
|
|
Binary file
|
|
Binary file
|
package/dist/standalone/assets/{user-directory-C33bGZdb.js.map → user-directory-BvmDzxsG.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-directory-C33bGZdb.js","names":[],"sources":["../../../../ui/src/components/diff-view.tsx","../../../../core/src/diff/index.ts","../../../../react/src/user-directory.ts"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport interface DiffField {\n path: string\n /** Human-readable property label. When present, shown before the path. */\n label?: string\n before?: unknown\n after?: unknown\n kind: 'added' | 'changed' | 'removed'\n}\n\nexport interface DiffViewLabels {\n added?: string\n changed?: string\n removed?: string\n before?: string\n after?: string\n noChanges?: string\n}\n\nexport interface DiffViewProps {\n fields: ReadonlyArray<DiffField>\n labels?: DiffViewLabels\n className?: string\n}\n\nconst DEFAULT_LABELS: Required<DiffViewLabels> = {\n added: 'Added',\n changed: 'Changed',\n removed: 'Removed',\n before: 'Before',\n after: 'After',\n noChanges: 'No changes',\n}\n\nconst formatValue = (value: unknown): string => {\n if (value === undefined) return ''\n if (value === null) return 'null'\n if (typeof value === 'string') return value\n return JSON.stringify(value, null, 2)\n}\n\nconst isMultiline = (text: string): boolean => text.includes('\\n') || text.length > 80\n\nexport function DiffView({ fields, labels, className }: DiffViewProps): React.ReactElement {\n const l = { ...DEFAULT_LABELS, ...labels }\n if (fields.length === 0) {\n return (\n <div className={cn('rounded-md border border-dashed border-border p-4 text-sm text-muted-foreground', className)}>\n {l.noChanges}\n </div>\n )\n }\n return (\n <ul\n className={cn(\n 'divide-y divide-border overflow-hidden rounded-md border border-border bg-card text-xs',\n className,\n )}\n >\n {fields.map((field) => (\n <FieldDiff key={field.path} field={field} labels={l} />\n ))}\n </ul>\n )\n}\n\nfunction FieldDiff({\n field,\n labels,\n}: {\n field: DiffField\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n const beforeText = field.kind === 'added' ? '' : formatValue(field.before)\n const afterText = field.kind === 'removed' ? '' : formatValue(field.after)\n const compact = !isMultiline(beforeText) && !isMultiline(afterText)\n return (\n <li className=\"grid grid-cols-[8rem_1fr] gap-x-3 px-3 py-1.5 sm:grid-cols-[10rem_1fr]\">\n <div className=\"min-w-0 pt-0.5\">\n {field.label && (\n <p className=\"truncate text-[11px] font-medium text-foreground\" title={field.label}>\n {field.label}\n </p>\n )}\n <code\n className=\"truncate font-mono text-[10px] text-muted-foreground\"\n title={field.path}\n >\n {field.path}\n </code>\n </div>\n {compact ? (\n <CompactValues\n kind={field.kind}\n before={beforeText}\n after={afterText}\n labels={labels}\n />\n ) : (\n <StackedValues\n kind={field.kind}\n before={beforeText}\n after={afterText}\n labels={labels}\n />\n )}\n </li>\n )\n}\n\nfunction CompactValues({\n kind,\n before,\n after,\n labels,\n}: {\n kind: DiffField['kind']\n before: string\n after: string\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n return (\n <div className=\"flex min-w-0 flex-col gap-0.5 font-mono text-xs leading-5\">\n {kind !== 'added' && (\n <span\n aria-label={labels.before}\n className=\"truncate rounded bg-red-50 px-1.5 text-red-900 line-through decoration-red-400/60 dark:bg-red-950/40 dark:text-red-100\"\n title={before}\n >\n {before || '\\u00A0'}\n </span>\n )}\n {kind !== 'removed' && (\n <span\n aria-label={labels.after}\n className=\"truncate rounded bg-green-50 px-1.5 text-green-900 dark:bg-green-950/40 dark:text-green-100\"\n title={after}\n >\n {after || '\\u00A0'}\n </span>\n )}\n </div>\n )\n}\n\nfunction StackedValues({\n kind,\n before,\n after,\n labels,\n}: {\n kind: DiffField['kind']\n before: string\n after: string\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n return (\n <div className=\"min-w-0 overflow-hidden rounded font-mono text-xs leading-5\">\n {kind !== 'added' && (\n <pre\n aria-label={labels.before}\n className=\"overflow-x-auto whitespace-pre-wrap bg-red-50 px-2 py-0.5 text-red-900 dark:bg-red-950/40 dark:text-red-100\"\n >\n {prefixed('-', before)}\n </pre>\n )}\n {kind !== 'removed' && (\n <pre\n aria-label={labels.after}\n className=\"overflow-x-auto whitespace-pre-wrap bg-green-50 px-2 py-0.5 text-green-900 dark:bg-green-950/40 dark:text-green-100\"\n >\n {prefixed('+', after)}\n </pre>\n )}\n </div>\n )\n}\n\nconst prefixed = (sign: '+' | '-', text: string): string =>\n text.split('\\n').map((l) => `${sign} ${l}`).join('\\n')\n","/**\n * Snapshot diff utilities — shared between server-side history capture\n * (feature-history) and the client-side revisions UI (`packages/react`).\n *\n * Kept transport- and ORM-agnostic so both layers can render exactly the\n * same diff without round-tripping every entry through the network.\n */\n\nexport interface FieldDiffEntry {\n /** Top-level field name. (Nested paths are not split — the value is\n * compared structurally via `valuesEqual`.) */\n path: string\n before?: unknown\n after?: unknown\n kind: 'added' | 'changed' | 'removed'\n}\n\nconst has = (obj: Record<string, unknown>, key: string): boolean =>\n Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * JSON.stringify with deterministic key ordering for stable structural\n * equality. Used by `valuesEqual` and as a hash for the side-by-side\n * revision viewer.\n */\nexport const stableStringify = (value: unknown): string => {\n if (value === null || typeof value !== 'object') return JSON.stringify(value)\n if (value instanceof Date) return JSON.stringify(value.toISOString())\n // Honour custom `toJSON` (e.g. Decimal.js, Day.js, Mongo ObjectId) so\n // values that round-trip through JSON keep stable identity.\n if (typeof (value as { toJSON?: unknown }).toJSON === 'function') {\n return stableStringify((value as { toJSON: () => unknown }).toJSON())\n }\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${JSON.stringify(k)}:${stableStringify(v)}`)\n return `{${entries.join(',')}}`\n}\n\n/** Structural equality based on `stableStringify`. */\nexport const valuesEqual = (a: unknown, b: unknown): boolean =>\n stableStringify(a) === stableStringify(b)\n\n/**\n * Compare two record snapshots and return the field-level diff.\n *\n * Excluded fields are dropped from both sides before comparison. The\n * output is sorted alphabetically by `path` for stable rendering.\n */\nexport function computeFieldDiff(\n before: Record<string, unknown>,\n after: Record<string, unknown>,\n excludeFields: ReadonlySet<string> = new Set(),\n): FieldDiffEntry[] {\n const keys = new Set([...Object.keys(before), ...Object.keys(after)])\n const out: FieldDiffEntry[] = []\n for (const path of [...keys].sort((a, b) => a.localeCompare(b))) {\n if (excludeFields.has(path)) continue\n const beforeHas = has(before, path)\n const afterHas = has(after, path)\n if (!beforeHas && afterHas) {\n out.push({ path, after: after[path], kind: 'added' })\n } else if (beforeHas && !afterHas) {\n out.push({ path, before: before[path], kind: 'removed' })\n } else if (!valuesEqual(before[path], after[path])) {\n out.push({ path, before: before[path], after: after[path], kind: 'changed' })\n }\n }\n return out\n}\n\n/** Convenience alias used by the React revisions side panel. */\nexport const diffSnapshots = computeFieldDiff\n\n/** Return a shallow copy of `value` with `excludeFields` removed. */\nexport function omitFields(\n value: Record<string, unknown>,\n excludeFields: ReadonlySet<string>,\n): Record<string, unknown> {\n if (excludeFields.size === 0) return { ...value }\n const out: Record<string, unknown> = {}\n for (const [key, item] of Object.entries(value)) {\n if (!excludeFields.has(key)) out[key] = item\n }\n return out\n}\n","import { useQueries } from '@tanstack/react-query'\nimport { useAdminClient } from './provider.js'\nimport type { RecordJSON } from './types.js'\n\n/** Convention: the host app exposes panel administrators under the\n * `admins` resource id (backed by Better Auth's `ma_user` table). When\n * absent or the lookup fails we fall back to the raw id string. */\nexport const USERS_RESOURCE_ID = 'admins'\n\n/** Resolve admin user records by id via the conventional `users` resource.\n * Failed lookups (404 / no users resource) cache as `null` so we don't keep\n * retrying them on every re-render.\n *\n * NOTE: uses the `'user-dir'` segment (not `'show'`) so the cached value\n * (`RecordJSON | null`) doesn't collide with `useRecord`'s cache which stores\n * the full `RecordResponse` shape under `['modern-admin', id, 'show', ...]`. */\nexport function useUserDirectory(\n userIds: ReadonlyArray<string>,\n): Map<string, RecordJSON | null> {\n const client = useAdminClient()\n const queries = useQueries({\n queries: userIds.map((id) => ({\n queryKey: ['modern-admin', 'user-dir', USERS_RESOURCE_ID, id] as const,\n queryFn: async (): Promise<RecordJSON | null> => {\n try {\n const res = await client.show(USERS_RESOURCE_ID, id)\n return res.record\n } catch {\n return null\n }\n },\n staleTime: 60_000,\n retry: false,\n })),\n })\n const map = new Map<string, RecordJSON | null>()\n userIds.forEach((id, i) => map.set(id, queries[i]?.data ?? null))\n return map\n}\n\n/** Pick a human-readable label for an admin record. Checks explicit name\n * fields first — `record.title` may be the id fallback when the resource\n * has no matching TITLE_COLUMN_NAMES property. */\nexport function userLabelOf(\n record: RecordJSON | null | undefined,\n fallback: string,\n): string {\n if (!record) return fallback\n const params = record.params ?? {}\n const candidates = [params.name, params.fullName, params.email, record.title]\n for (const candidate of candidates) {\n const s = typeof candidate === 'string' ? candidate.trim() : ''\n if (s && s !== record.id) return s\n }\n return fallback\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"user-directory-BvmDzxsG.js","names":[],"sources":["../../../../ui/src/components/diff-view.tsx","../../../../core/src/diff/index.ts","../../../../react/src/user-directory.ts"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../lib/utils.js'\n\nexport interface DiffField {\n path: string\n /** Human-readable property label. When present, shown before the path. */\n label?: string\n before?: unknown\n after?: unknown\n kind: 'added' | 'changed' | 'removed'\n}\n\nexport interface DiffViewLabels {\n added?: string\n changed?: string\n removed?: string\n before?: string\n after?: string\n noChanges?: string\n}\n\nexport interface DiffViewProps {\n fields: ReadonlyArray<DiffField>\n labels?: DiffViewLabels\n className?: string\n}\n\nconst DEFAULT_LABELS: Required<DiffViewLabels> = {\n added: 'Added',\n changed: 'Changed',\n removed: 'Removed',\n before: 'Before',\n after: 'After',\n noChanges: 'No changes',\n}\n\nconst formatValue = (value: unknown): string => {\n if (value === undefined) return ''\n if (value === null) return 'null'\n if (typeof value === 'string') return value\n return JSON.stringify(value, null, 2)\n}\n\nconst isMultiline = (text: string): boolean => text.includes('\\n') || text.length > 80\n\nexport function DiffView({ fields, labels, className }: DiffViewProps): React.ReactElement {\n const l = { ...DEFAULT_LABELS, ...labels }\n if (fields.length === 0) {\n return (\n <div className={cn('rounded-md border border-dashed border-border p-4 text-sm text-muted-foreground', className)}>\n {l.noChanges}\n </div>\n )\n }\n return (\n <ul\n className={cn(\n 'divide-y divide-border overflow-hidden rounded-md border border-border bg-card text-xs',\n className,\n )}\n >\n {fields.map((field) => (\n <FieldDiff key={field.path} field={field} labels={l} />\n ))}\n </ul>\n )\n}\n\nfunction FieldDiff({\n field,\n labels,\n}: {\n field: DiffField\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n const beforeText = field.kind === 'added' ? '' : formatValue(field.before)\n const afterText = field.kind === 'removed' ? '' : formatValue(field.after)\n const compact = !isMultiline(beforeText) && !isMultiline(afterText)\n return (\n <li className=\"grid grid-cols-[8rem_1fr] gap-x-3 px-3 py-1.5 sm:grid-cols-[10rem_1fr]\">\n <div className=\"min-w-0 pt-0.5\">\n {field.label && (\n <p className=\"truncate text-[11px] font-medium text-foreground\" title={field.label}>\n {field.label}\n </p>\n )}\n <code\n className=\"truncate font-mono text-[10px] text-muted-foreground\"\n title={field.path}\n >\n {field.path}\n </code>\n </div>\n {compact ? (\n <CompactValues\n kind={field.kind}\n before={beforeText}\n after={afterText}\n labels={labels}\n />\n ) : (\n <StackedValues\n kind={field.kind}\n before={beforeText}\n after={afterText}\n labels={labels}\n />\n )}\n </li>\n )\n}\n\nfunction CompactValues({\n kind,\n before,\n after,\n labels,\n}: {\n kind: DiffField['kind']\n before: string\n after: string\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n return (\n <div className=\"flex min-w-0 flex-col gap-0.5 font-mono text-xs leading-5\">\n {kind !== 'added' && (\n <span\n aria-label={labels.before}\n className=\"truncate rounded bg-red-50 px-1.5 text-red-900 line-through decoration-red-400/60 dark:bg-red-950/40 dark:text-red-100\"\n title={before}\n >\n {before || '\\u00A0'}\n </span>\n )}\n {kind !== 'removed' && (\n <span\n aria-label={labels.after}\n className=\"truncate rounded bg-green-50 px-1.5 text-green-900 dark:bg-green-950/40 dark:text-green-100\"\n title={after}\n >\n {after || '\\u00A0'}\n </span>\n )}\n </div>\n )\n}\n\nfunction StackedValues({\n kind,\n before,\n after,\n labels,\n}: {\n kind: DiffField['kind']\n before: string\n after: string\n labels: Required<DiffViewLabels>\n}): React.ReactElement {\n return (\n <div className=\"min-w-0 overflow-hidden rounded font-mono text-xs leading-5\">\n {kind !== 'added' && (\n <pre\n aria-label={labels.before}\n className=\"overflow-x-auto whitespace-pre-wrap bg-red-50 px-2 py-0.5 text-red-900 dark:bg-red-950/40 dark:text-red-100\"\n >\n {prefixed('-', before)}\n </pre>\n )}\n {kind !== 'removed' && (\n <pre\n aria-label={labels.after}\n className=\"overflow-x-auto whitespace-pre-wrap bg-green-50 px-2 py-0.5 text-green-900 dark:bg-green-950/40 dark:text-green-100\"\n >\n {prefixed('+', after)}\n </pre>\n )}\n </div>\n )\n}\n\nconst prefixed = (sign: '+' | '-', text: string): string =>\n text.split('\\n').map((l) => `${sign} ${l}`).join('\\n')\n","/**\n * Snapshot diff utilities — shared between server-side history capture\n * (feature-history) and the client-side revisions UI (`packages/react`).\n *\n * Kept transport- and ORM-agnostic so both layers can render exactly the\n * same diff without round-tripping every entry through the network.\n */\n\nexport interface FieldDiffEntry {\n /** Top-level field name. (Nested paths are not split — the value is\n * compared structurally via `valuesEqual`.) */\n path: string\n before?: unknown\n after?: unknown\n kind: 'added' | 'changed' | 'removed'\n}\n\nconst has = (obj: Record<string, unknown>, key: string): boolean =>\n Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * JSON.stringify with deterministic key ordering for stable structural\n * equality. Used by `valuesEqual` and as a hash for the side-by-side\n * revision viewer.\n */\nexport const stableStringify = (value: unknown): string => {\n if (value === null || typeof value !== 'object') return JSON.stringify(value)\n if (value instanceof Date) return JSON.stringify(value.toISOString())\n // Honour custom `toJSON` (e.g. Decimal.js, Day.js, Mongo ObjectId) so\n // values that round-trip through JSON keep stable identity.\n if (typeof (value as { toJSON?: unknown }).toJSON === 'function') {\n return stableStringify((value as { toJSON: () => unknown }).toJSON())\n }\n if (Array.isArray(value)) return `[${value.map(stableStringify).join(',')}]`\n const entries = Object.entries(value as Record<string, unknown>)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${JSON.stringify(k)}:${stableStringify(v)}`)\n return `{${entries.join(',')}}`\n}\n\n/** Structural equality based on `stableStringify`. */\nexport const valuesEqual = (a: unknown, b: unknown): boolean =>\n stableStringify(a) === stableStringify(b)\n\n/**\n * Compare two record snapshots and return the field-level diff.\n *\n * Excluded fields are dropped from both sides before comparison. The\n * output is sorted alphabetically by `path` for stable rendering.\n */\nexport function computeFieldDiff(\n before: Record<string, unknown>,\n after: Record<string, unknown>,\n excludeFields: ReadonlySet<string> = new Set(),\n): FieldDiffEntry[] {\n const keys = new Set([...Object.keys(before), ...Object.keys(after)])\n const out: FieldDiffEntry[] = []\n for (const path of [...keys].sort((a, b) => a.localeCompare(b))) {\n if (excludeFields.has(path)) continue\n const beforeHas = has(before, path)\n const afterHas = has(after, path)\n if (!beforeHas && afterHas) {\n out.push({ path, after: after[path], kind: 'added' })\n } else if (beforeHas && !afterHas) {\n out.push({ path, before: before[path], kind: 'removed' })\n } else if (!valuesEqual(before[path], after[path])) {\n out.push({ path, before: before[path], after: after[path], kind: 'changed' })\n }\n }\n return out\n}\n\n/** Convenience alias used by the React revisions side panel. */\nexport const diffSnapshots = computeFieldDiff\n\n/** Return a shallow copy of `value` with `excludeFields` removed. */\nexport function omitFields(\n value: Record<string, unknown>,\n excludeFields: ReadonlySet<string>,\n): Record<string, unknown> {\n if (excludeFields.size === 0) return { ...value }\n const out: Record<string, unknown> = {}\n for (const [key, item] of Object.entries(value)) {\n if (!excludeFields.has(key)) out[key] = item\n }\n return out\n}\n","import { useQueries } from '@tanstack/react-query'\nimport { useAdminClient } from './provider.js'\nimport type { RecordJSON } from './types.js'\n\n/** Convention: the host app exposes panel administrators under the\n * `admins` resource id (backed by Better Auth's `ma_user` table). When\n * absent or the lookup fails we fall back to the raw id string. */\nexport const USERS_RESOURCE_ID = 'admins'\n\n/** Resolve admin user records by id via the conventional `users` resource.\n * Failed lookups (404 / no users resource) cache as `null` so we don't keep\n * retrying them on every re-render.\n *\n * NOTE: uses the `'user-dir'` segment (not `'show'`) so the cached value\n * (`RecordJSON | null`) doesn't collide with `useRecord`'s cache which stores\n * the full `RecordResponse` shape under `['modern-admin', id, 'show', ...]`. */\nexport function useUserDirectory(\n userIds: ReadonlyArray<string>,\n): Map<string, RecordJSON | null> {\n const client = useAdminClient()\n const queries = useQueries({\n queries: userIds.map((id) => ({\n queryKey: ['modern-admin', 'user-dir', USERS_RESOURCE_ID, id] as const,\n queryFn: async (): Promise<RecordJSON | null> => {\n try {\n const res = await client.show(USERS_RESOURCE_ID, id)\n return res.record\n } catch {\n return null\n }\n },\n staleTime: 60_000,\n retry: false,\n })),\n })\n const map = new Map<string, RecordJSON | null>()\n userIds.forEach((id, i) => map.set(id, queries[i]?.data ?? null))\n return map\n}\n\n/** Pick a human-readable label for an admin record. Checks explicit name\n * fields first — `record.title` may be the id fallback when the resource\n * has no matching TITLE_COLUMN_NAMES property. */\nexport function userLabelOf(\n record: RecordJSON | null | undefined,\n fallback: string,\n): string {\n if (!record) return fallback\n const params = record.params ?? {}\n const candidates = [params.name, params.fullName, params.email, record.title]\n for (const candidate of candidates) {\n const s = typeof candidate === 'string' ? candidate.trim() : ''\n if (s && s !== record.id) return s\n }\n return fallback\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-
|
|
2
|
-
//# sourceMappingURL=wand-sparkles-
|
|
1
|
+
import{t as e}from"./createLucideIcon-QE2kj6ru.js";var t=e(`wand-sparkles`,[[`path`,{d:`m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72`,key:`ul74o6`}],[`path`,{d:`m14 7 3 3`,key:`1r5n42`}],[`path`,{d:`M5 6v4`,key:`ilb8ba`}],[`path`,{d:`M19 14v4`,key:`blhpug`}],[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M7 8H3`,key:`zfb6yr`}],[`path`,{d:`M21 16h-4`,key:`1cnmox`}],[`path`,{d:`M11 3H9`,key:`1obp7u`}]]);export{t};
|
|
2
|
+
//# sourceMappingURL=wand-sparkles-DwseTI5T.js.map
|
package/dist/standalone/assets/{wand-sparkles-DWaFQeYS.js.map → wand-sparkles-DwseTI5T.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wand-sparkles-
|
|
1
|
+
{"version":3,"file":"wand-sparkles-DwseTI5T.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/wand-sparkles.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.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 __iconNode = [\n [\n \"path\",\n {\n d: \"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72\",\n key: \"ul74o6\"\n }\n ],\n [\"path\", { d: \"m14 7 3 3\", key: \"1r5n42\" }],\n [\"path\", { d: \"M5 6v4\", key: \"ilb8ba\" }],\n [\"path\", { d: \"M19 14v4\", key: \"blhpug\" }],\n [\"path\", { d: \"M10 2v2\", key: \"7u0qdc\" }],\n [\"path\", { d: \"M7 8H3\", key: \"zfb6yr\" }],\n [\"path\", { d: \"M21 16h-4\", key: \"1cnmox\" }],\n [\"path\", { d: \"M11 3H9\", key: \"1obp7u\" }]\n];\nconst WandSparkles = createLucideIcon(\"wand-sparkles\", __iconNode);\n\nexport { __iconNode, WandSparkles as default };\n//# sourceMappingURL=wand-sparkles.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAyBA,IAAM,EAAe,EAAiB,gBAAiB,CAfrD,CACE,OACA,CACE,EAAG,gJACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAS,CAAC,EAC1C,CAAC,OAAQ,CAAE,EAAG,SAAU,IAAK,QAAS,CAAC,EACvC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,SAAU,IAAK,QAAS,CAAC,EACvC,CAAC,OAAQ,CAAE,EAAG,YAAa,IAAK,QAAS,CAAC,EAC1C,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,CAEa,CAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,n as t}from"./createLucideIcon-QE2kj6ru.js";import{C as n,l as r}from"./floating-layer-BcTp2AMB.js";import{t as i}from"./plus-D7PHzena.js";import{t as a}from"./x-c-gfVPJa.js";import{o}from"./dist-DPxQeZn3.js";import{s}from"./empty-DMs98grx.js";import{N as c,T as l,s as u}from"./hooks-BiOfAnEq.js";import{c as d,l as f}from"./action-component-host-8DE4kuUJ.js";import{a as p,i as m,t as h}from"./card-BYbadRar.js";import{a as g,c as _,i as v,n as y,o as b,r as x,s as S,t as C}from"./zod-2-ubQvxh.js";import{l as w,n as T}from"./property-renderer-ClrVnSny.js";import{C as E,Dt as D,S as O,Tt as k,l as A,o as j,wt as M,x as N}from"./index-CASCzvYu.js";var P=e(t(),1),F=n();function I({steps:e,properties:t,resourceId:n,control:c,trigger:l,onSubmit:u,onCancel:d,isSubmitting:f=!1,submitError:p,labels:m={}}){let h=m.back??`Back`,g=m.next??`Next`,_=m.submit??`Create`,v=m.cancel??`Cancel`,y=m.stepOf??`Step {current} of {total}`,[x,S]=P.useState(0),C=P.useMemo(()=>{let n=new Set(e.flatMap(e=>e.properties??[])),r=t.filter(e=>!n.has(e.path));return e.map(e=>e.properties?e.properties.map(e=>t.find(t=>t.path===e)).filter(e=>e!=null):r)},[e,t]),w=e.length,A=x===0,j=x===w-1,I=async()=>{let e=(C[x]??[]).map(e=>e.path);(e.length===0||await l(e))&&S(e=>Math.min(e+1,w-1))},R=e[x],z=C[x]??[],B=y.replace(`{current}`,String(x+1)).replace(`{total}`,String(w));return(0,F.jsxs)(`div`,{children:[(0,F.jsxs)(`div`,{className:`px-6 pt-6 pb-5`,children:[(0,F.jsx)(`div`,{className:`flex w-full max-w-xl items-start mx-auto`,children:e.map((t,n)=>(0,F.jsxs)(P.Fragment,{children:[(0,F.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center`,children:[(0,F.jsx)(`div`,{className:r(`flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors`,n<x&&`border-primary bg-primary text-primary-foreground`,n===x&&`border-primary bg-background text-primary`,n>x&&`border-border bg-background text-muted-foreground`),children:n<x?(0,F.jsx)(D,{className:`size-3.5`}):n+1}),(0,F.jsx)(`span`,{className:r(`mt-1.5 hidden max-w-[6rem] text-center text-xs leading-tight sm:block`,n===x?`font-medium text-foreground`:n<x?`text-primary`:`text-muted-foreground`),children:t.label})]}),n<e.length-1&&(0,F.jsx)(`div`,{className:r(`mx-2 mt-3.5 h-0.5 flex-1 transition-colors`,n<x?`bg-primary`:`bg-border`)})]},n))}),(0,F.jsxs)(`p`,{className:`mt-2 text-center text-xs text-muted-foreground sm:hidden`,children:[B,R.label?` · ${R.label}`:``]})]}),R.description&&(0,F.jsx)(`p`,{className:`px-6 pb-2 text-sm text-muted-foreground`,children:R.description}),(0,F.jsx)(`div`,{className:`gap-4 px-6 pb-4 [column-fill:_balance] md:columns-2`,children:z.map(e=>(0,F.jsx)(L,{control:c,property:e,children:(0,F.jsx)(b,{control:c,name:e.path,render:({field:t,fieldState:r})=>(0,F.jsxs)(N,{"data-invalid":r.error?!0:void 0,className:`mb-8 break-inside-avoid`,children:[(0,F.jsxs)(E,{htmlFor:t.name,children:[e.label,e.description?(0,F.jsx)(s,{content:e.description,ariaLabel:e.description}):null,e.isRequired&&(0,F.jsx)(`span`,{className:`ml-1 text-destructive`,children:`*`})]}),(0,F.jsx)(T,{property:e,value:t.value,onChange:t.onChange,disabled:f,resourceId:n}),r.error?.message&&(0,F.jsx)(O,{children:r.error.message})]})})},e.path))}),(0,F.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-6 py-4`,children:[(0,F.jsx)(`div`,{children:p&&(0,F.jsx)(`span`,{className:`text-sm text-destructive`,children:p})}),(0,F.jsxs)(`div`,{className:`flex gap-2`,children:[A?(0,F.jsxs)(o,{type:`button`,variant:`ghost`,onClick:d,disabled:f,children:[(0,F.jsx)(a,{className:`size-4`}),v]}):(0,F.jsxs)(o,{type:`button`,variant:`outline`,onClick:()=>S(e=>e-1),disabled:f,children:[(0,F.jsx)(k,{className:`size-4`}),h]}),j?(0,F.jsxs)(o,{type:`button`,onClick:u,disabled:f,children:[(0,F.jsx)(i,{className:`size-4`}),_]}):(0,F.jsxs)(o,{type:`button`,onClick:()=>void I(),disabled:f,children:[g,(0,F.jsx)(M,{className:`size-4`})]})]})]})]})}I.displayName=`WizardForm`;function L({control:e,property:t,children:n}){let r=t.showWhen,i=_({control:e,name:r?.field??t.path});return r?v(r,{[r.field]:i})?(0,F.jsx)(F.Fragment,{children:n}):null:(0,F.jsx)(F.Fragment,{children:n})}function R({resourceId:e,steps:t,labels:n}){let r=l(e),i=u(e),a=j(),{t:o,locale:s}=c(),_=A(),v=P.useMemo(()=>r?w(r.properties,`edit`,r.propertyOrder?.edit).filter(e=>!e.isDisabled):[],[r]),b=P.useRef(()=>({})),T=P.useMemo(()=>y(v,o,()=>b.current()),[v,s]),E=P.useMemo(()=>{let e={};for(let t of v)e[t.path]=x(t);return e},[v]),D=S({resolver:C(T),defaultValues:E});b.current=D.getValues,P.useEffect(()=>{D.reset(E)},[E]);let[O,k]=P.useState(null),M=async t=>{k(null);try{let n=await i.mutateAsync(t),r=n.record.errors;if(r&&Object.keys(r).length>0){for(let[e,t]of Object.entries(r)){let n=typeof t==`string`?t:t?.message??`Invalid value`;D.setError(e,{type:`server`,message:n})}n.record.baseError&&k(String(n.record.baseError)),_.error({key:`toast:validationFailed`});return}_.success({key:`toast:created`}),a({name:`show`,resourceId:e,recordId:String(n.record.id)})}catch(e){let t=e instanceof Error?e.message:String(e);k(t),_.error({key:`toast:createFailed`},{description:t})}},N=()=>{D.handleSubmit(M,()=>{_.error({key:`toast:validationFailed`})})()};if(!r)return(0,F.jsx)(`div`,{className:`p-6`,children:o(`common:loading`)});let L={back:o(`common:back`),next:o(`common:next`),submit:o(`common:create`),cancel:o(`common:cancel`),stepOf:o(`wizard:stepOf`),...n},R=[f(o(`common:home`)),{label:r.name,to:{name:`list`,resourceId:e}},{label:o(`common:new`)}];return(0,F.jsxs)(`div`,{className:`flex min-h-full flex-col gap-4`,children:[(0,F.jsx)(d,{items:R}),(0,F.jsxs)(h,{className:`flex-1`,children:[(0,F.jsx)(m,{children:(0,F.jsx)(p,{className:`truncate`,children:o(`common:newRecord`,{name:r.name})})}),(0,F.jsx)(g,{...D,children:(0,F.jsx)(I,{steps:t,properties:v,resourceId:e,control:D.control,trigger:D.trigger,onSubmit:N,onCancel:()=>a({name:`list`,resourceId:e}),isSubmitting:D.formState.isSubmitting,submitError:O,labels:L})})]})]})}export{R as ResourceWizardCreatePage};
|
|
2
|
+
//# sourceMappingURL=wizard-create-page-D4a8FnmI.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-create-page-BtfveXmP.js","names":[],"sources":["../../../../react/src/components/wizard-form.tsx","../../../../react/src/pages/wizard-create-page.tsx"],"sourcesContent":["// WizardForm — multi-step create form. Each step shows a subset of the\n// resource's editable properties. Clicking \"Next\" validates only the current\n// step's fields before advancing; \"Back\" never re-validates. \"Create\" on the\n// final step triggers the caller-supplied submit handler.\n//\n// The component is i18n-unaware: all visible strings are passed via the\n// `labels` prop with English defaults. The ResourceWizardCreatePage calls\n// t() and wires the results in.\n\nimport * as React from 'react'\nimport { useWatch, type Control, type UseFormTrigger } from 'react-hook-form'\nimport {\n Button,\n Field,\n FieldError,\n FieldLabel,\n FormField,\n InfoTooltip,\n cn,\n} from '@modern-admin/ui'\nimport { Check, ChevronLeft, ChevronRight, Plus, X } from 'lucide-react'\nimport { PropertyEditor } from '../property-renderer.js'\nimport { evaluateShowWhen } from '../show-when.js'\nimport type { PropertyJSON } from '../types.js'\n\n// ── Public types ──────────────────────────────────────────────────────────────\n\nexport interface WizardStep {\n /** Short label shown in the step indicator circles */\n label: string\n /** Optional longer description rendered below the step indicator */\n description?: string\n /**\n * Property paths (from the resource) to show in this step.\n * If omitted on exactly one step, that step receives all properties not\n * claimed by the other steps (catch-all).\n */\n properties?: string[]\n}\n\nexport interface WizardFormLabels {\n back?: string\n next?: string\n submit?: string\n cancel?: string\n /** Template: 'Step {current} of {total}' — shown only on mobile */\n stepOf?: string\n}\n\ntype FormValues = Record<string, unknown>\n\nexport interface WizardFormProps {\n steps: WizardStep[]\n /** All editable properties of the resource. */\n properties: PropertyJSON[]\n resourceId: string\n control: Control<FormValues>\n trigger: UseFormTrigger<FormValues>\n onSubmit: () => void\n onCancel: () => void\n isSubmitting?: boolean\n submitError?: string | null\n labels?: WizardFormLabels\n}\n\n// ── WizardForm ────────────────────────────────────────────────────────────────\n\nexport function WizardForm({\n steps,\n properties,\n resourceId,\n control,\n trigger,\n onSubmit,\n onCancel,\n isSubmitting = false,\n submitError,\n labels = {},\n}: WizardFormProps): React.ReactElement {\n const backLabel = labels.back ?? 'Back'\n const nextLabel = labels.next ?? 'Next'\n const submitLabel = labels.submit ?? 'Create'\n const cancelLabel = labels.cancel ?? 'Cancel'\n const stepOfTemplate = labels.stepOf ?? 'Step {current} of {total}'\n\n const [currentStep, setCurrentStep] = React.useState(0)\n\n // ── Distribute properties across steps ───────────────────────────────────\n const stepProperties = React.useMemo<PropertyJSON[][]>(() => {\n const claimedPaths = new Set(steps.flatMap((s) => s.properties ?? []))\n const unclaimed = properties.filter((p) => !claimedPaths.has(p.path))\n return steps.map((step) => {\n if (step.properties) {\n return step.properties\n .map((path) => properties.find((p) => p.path === path))\n .filter((p): p is PropertyJSON => p != null)\n }\n return unclaimed\n })\n }, [steps, properties])\n\n const totalSteps = steps.length\n const isFirst = currentStep === 0\n const isLast = currentStep === totalSteps - 1\n\n const handleNext = async (): Promise<void> => {\n const paths = (stepProperties[currentStep] ?? []).map((p) => p.path)\n // When the step has no properties, advance without validation.\n const valid =\n paths.length === 0 ||\n (await trigger(paths as Parameters<typeof trigger>[0]))\n if (valid) setCurrentStep((s) => Math.min(s + 1, totalSteps - 1))\n }\n\n const currentStepDef = steps[currentStep]!\n const currentProperties = stepProperties[currentStep] ?? []\n\n const stepOfLabel = stepOfTemplate\n .replace('{current}', String(currentStep + 1))\n .replace('{total}', String(totalSteps))\n\n return (\n <div>\n {/* ── Step indicator ──────────────────────────────────────────── */}\n <div className=\"px-6 pt-6 pb-5\">\n <div className=\"flex w-full max-w-xl items-start mx-auto\">\n {steps.map((step, index) => (\n <React.Fragment key={index}>\n {/* Step node */}\n <div className=\"flex shrink-0 flex-col items-center\">\n <div\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors',\n index < currentStep &&\n 'border-primary bg-primary text-primary-foreground',\n index === currentStep &&\n 'border-primary bg-background text-primary',\n index > currentStep &&\n 'border-border bg-background text-muted-foreground',\n )}\n >\n {index < currentStep ? (\n <Check className=\"size-3.5\" />\n ) : (\n index + 1\n )}\n </div>\n <span\n className={cn(\n 'mt-1.5 hidden max-w-[6rem] text-center text-xs leading-tight sm:block',\n index === currentStep\n ? 'font-medium text-foreground'\n : index < currentStep\n ? 'text-primary'\n : 'text-muted-foreground',\n )}\n >\n {step.label}\n </span>\n </div>\n {/* Connector line between nodes */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n 'mx-2 mt-3.5 h-0.5 flex-1 transition-colors',\n index < currentStep ? 'bg-primary' : 'bg-border',\n )}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n {/* Mobile: compact \"Step N of M · Label\" summary */}\n <p className=\"mt-2 text-center text-xs text-muted-foreground sm:hidden\">\n {stepOfLabel}\n {currentStepDef.label ? ` · ${currentStepDef.label}` : ''}\n </p>\n </div>\n\n {/* ── Step description ────────────────────────────────────────── */}\n {currentStepDef.description && (\n <p className=\"px-6 pb-2 text-sm text-muted-foreground\">\n {currentStepDef.description}\n </p>\n )}\n\n {/* ── Fields ──────────────────────────────────────────────────── */}\n <div className=\"gap-4 px-6 pb-4 [column-fill:_balance] md:columns-2\">\n {currentProperties.map((property) => (\n <WizardConditionalField\n key={property.path}\n control={control}\n property={property}\n >\n <FormField\n control={control}\n name={property.path}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.error ? true : undefined}\n className=\"mb-8 break-inside-avoid\"\n >\n <FieldLabel htmlFor={field.name}>\n {property.label}\n {property.description ? (\n <InfoTooltip\n content={property.description}\n ariaLabel={property.description}\n />\n ) : null}\n {property.isRequired && (\n <span className=\"ml-1 text-destructive\">*</span>\n )}\n </FieldLabel>\n <PropertyEditor\n property={property}\n value={field.value}\n onChange={field.onChange}\n disabled={isSubmitting}\n resourceId={resourceId}\n />\n {fieldState.error?.message && (\n <FieldError>{fieldState.error.message}</FieldError>\n )}\n </Field>\n )}\n />\n </WizardConditionalField>\n ))}\n </div>\n\n {/* ── Navigation footer ───────────────────────────────────────── */}\n <div className=\"flex items-center justify-between border-t border-border px-6 py-4\">\n <div>\n {submitError && (\n <span className=\"text-sm text-destructive\">{submitError}</span>\n )}\n </div>\n <div className=\"flex gap-2\">\n {isFirst ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n disabled={isSubmitting}\n >\n <X className=\"size-4\" />\n {cancelLabel}\n </Button>\n ) : (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setCurrentStep((s) => s - 1)}\n disabled={isSubmitting}\n >\n <ChevronLeft className=\"size-4\" />\n {backLabel}\n </Button>\n )}\n {isLast ? (\n <Button type=\"button\" onClick={onSubmit} disabled={isSubmitting}>\n <Plus className=\"size-4\" />\n {submitLabel}\n </Button>\n ) : (\n <Button\n type=\"button\"\n onClick={() => void handleNext()}\n disabled={isSubmitting}\n >\n {nextLabel}\n <ChevronRight className=\"size-4\" />\n </Button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nWizardForm.displayName = 'WizardForm'\n\n// ── WizardConditionalField ────────────────────────────────────────────────────\n// Same showWhen evaluation as ConditionalField in edit-page, scoped here.\n\ninterface WizardConditionalFieldProps {\n control: Control<FormValues>\n property: PropertyJSON\n children: React.ReactNode\n}\n\nfunction WizardConditionalField({\n control,\n property,\n children,\n}: WizardConditionalFieldProps): React.ReactElement | null {\n const rule = property.showWhen\n const watched = useWatch({ control, name: rule?.field ?? property.path })\n if (!rule) return <>{children}</>\n return evaluateShowWhen(rule, { [rule.field]: watched }) ? <>{children}</> : null\n}\n","// ResourceWizardCreatePage — multi-step creation form for a resource.\n// Analogous to ResourceEditPage but splits the fields across declarative\n// `steps`, each validated independently before advancing. Submit on the final\n// step creates the record and navigates to its show page.\n\nimport * as React from 'react'\nimport { useForm, type SubmitHandler } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { Card, CardHeader, CardTitle, Form } from '@modern-admin/ui'\nimport { useCreateRecord, useResource } from '../hooks.js'\nimport { useNavigate } from '../router.js'\nimport { useI18n } from '../i18n.js'\nimport { useNotify } from '../notify.js'\nimport { PageBreadcrumbs, homeCrumb } from '../breadcrumbs.js'\nimport { buildValidationSchema, defaultValueFor } from '../validation.js'\nimport type { PropertyJSON } from '../types.js'\nimport { visibleRecordProperties } from '../relations.js'\nimport {\n WizardForm,\n type WizardStep,\n type WizardFormLabels,\n} from '../components/wizard-form.js'\n\nexport interface ResourceWizardCreatePageProps {\n resourceId: string\n /** Step definitions. Each step declares which property paths it shows. */\n steps: WizardStep[]\n /**\n * Override wizard button labels. Falls back to locale translations.\n * Useful when embedding the page with a custom i18n setup.\n */\n labels?: WizardFormLabels\n}\n\ntype FormValues = Record<string, unknown>\n\nexport function ResourceWizardCreatePage({\n resourceId,\n steps,\n labels: labelsProp,\n}: ResourceWizardCreatePageProps): React.ReactElement {\n const resource = useResource(resourceId)\n const create = useCreateRecord(resourceId)\n const navigate = useNavigate()\n const { t, locale } = useI18n()\n const notify = useNotify()\n\n const editable = React.useMemo<PropertyJSON[]>(\n () =>\n resource\n ? visibleRecordProperties(resource.properties, 'edit', resource.propertyOrder?.edit).filter(\n (p) => !p.isDisabled,\n )\n : [],\n [resource],\n )\n\n // Route live form values into the validation schema (same pattern as edit-page).\n const getValuesRef = React.useRef<() => FormValues>(() => ({}))\n\n const schema = React.useMemo(\n () => buildValidationSchema(editable, t, () => getValuesRef.current()),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [editable, locale],\n )\n\n const defaults = React.useMemo<FormValues>(() => {\n const out: FormValues = {}\n for (const p of editable) out[p.path] = defaultValueFor(p)\n return out\n }, [editable])\n\n const form = useForm<FormValues>({\n resolver: zodResolver(schema),\n defaultValues: defaults,\n })\n\n getValuesRef.current = form.getValues\n\n // Reset when the resource schema arrives (resource loaded after mount).\n React.useEffect(() => {\n form.reset(defaults)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaults])\n\n const [submitError, setSubmitError] = React.useState<string | null>(null)\n\n const onSubmit: SubmitHandler<FormValues> = async (values) => {\n setSubmitError(null)\n try {\n const result = await create.mutateAsync(values)\n const errors = result.record.errors as Record<\n string,\n { message?: string } | string\n >\n if (errors && Object.keys(errors).length > 0) {\n for (const [path, err] of Object.entries(errors)) {\n const message =\n typeof err === 'string' ? err : (err?.message ?? 'Invalid value')\n form.setError(path, { type: 'server', message })\n }\n if (result.record.baseError) setSubmitError(String(result.record.baseError))\n notify.error({ key: 'toast:validationFailed' })\n return\n }\n notify.success({ key: 'toast:created' })\n navigate({ name: 'show', resourceId, recordId: String(result.record.id) })\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n setSubmitError(message)\n notify.error({ key: 'toast:createFailed' }, { description: message })\n }\n }\n\n const handleSubmit = (): void => {\n void form.handleSubmit(onSubmit, () => {\n notify.error({ key: 'toast:validationFailed' })\n })()\n }\n\n if (!resource) return <div className=\"p-6\">{t('common:loading')}</div>\n\n const labels: WizardFormLabels = {\n back: t('common:back'),\n next: t('common:next'),\n submit: t('common:create'),\n cancel: t('common:cancel'),\n stepOf: t('wizard:stepOf'),\n ...labelsProp,\n }\n\n const crumbs = [\n homeCrumb(t('common:home')),\n { label: resource.name, to: { name: 'list' as const, resourceId } },\n { label: t('common:new') },\n ]\n\n return (\n <div className=\"flex min-h-full flex-col gap-4\">\n <PageBreadcrumbs items={crumbs} />\n <Card className=\"flex-1\">\n <CardHeader>\n <CardTitle className=\"truncate\">\n {t('common:newRecord', { name: resource.name })}\n </CardTitle>\n </CardHeader>\n <Form {...form}>\n <WizardForm\n steps={steps}\n properties={editable}\n resourceId={resourceId}\n control={form.control}\n trigger={form.trigger}\n onSubmit={handleSubmit}\n onCancel={() => navigate({ name: 'list', resourceId })}\n isSubmitting={form.formState.isSubmitting}\n submitError={submitError}\n labels={labels}\n />\n </Form>\n </Card>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wizard-create-page-D4a8FnmI.js","names":[],"sources":["../../../../react/src/components/wizard-form.tsx","../../../../react/src/pages/wizard-create-page.tsx"],"sourcesContent":["// WizardForm — multi-step create form. Each step shows a subset of the\n// resource's editable properties. Clicking \"Next\" validates only the current\n// step's fields before advancing; \"Back\" never re-validates. \"Create\" on the\n// final step triggers the caller-supplied submit handler.\n//\n// The component is i18n-unaware: all visible strings are passed via the\n// `labels` prop with English defaults. The ResourceWizardCreatePage calls\n// t() and wires the results in.\n\nimport * as React from 'react'\nimport { useWatch, type Control, type UseFormTrigger } from 'react-hook-form'\nimport {\n Button,\n Field,\n FieldError,\n FieldLabel,\n FormField,\n InfoTooltip,\n cn,\n} from '@modern-admin/ui'\nimport { Check, ChevronLeft, ChevronRight, Plus, X } from 'lucide-react'\nimport { PropertyEditor } from '../property-renderer.js'\nimport { evaluateShowWhen } from '../show-when.js'\nimport type { PropertyJSON } from '../types.js'\n\n// ── Public types ──────────────────────────────────────────────────────────────\n\nexport interface WizardStep {\n /** Short label shown in the step indicator circles */\n label: string\n /** Optional longer description rendered below the step indicator */\n description?: string\n /**\n * Property paths (from the resource) to show in this step.\n * If omitted on exactly one step, that step receives all properties not\n * claimed by the other steps (catch-all).\n */\n properties?: string[]\n}\n\nexport interface WizardFormLabels {\n back?: string\n next?: string\n submit?: string\n cancel?: string\n /** Template: 'Step {current} of {total}' — shown only on mobile */\n stepOf?: string\n}\n\ntype FormValues = Record<string, unknown>\n\nexport interface WizardFormProps {\n steps: WizardStep[]\n /** All editable properties of the resource. */\n properties: PropertyJSON[]\n resourceId: string\n control: Control<FormValues>\n trigger: UseFormTrigger<FormValues>\n onSubmit: () => void\n onCancel: () => void\n isSubmitting?: boolean\n submitError?: string | null\n labels?: WizardFormLabels\n}\n\n// ── WizardForm ────────────────────────────────────────────────────────────────\n\nexport function WizardForm({\n steps,\n properties,\n resourceId,\n control,\n trigger,\n onSubmit,\n onCancel,\n isSubmitting = false,\n submitError,\n labels = {},\n}: WizardFormProps): React.ReactElement {\n const backLabel = labels.back ?? 'Back'\n const nextLabel = labels.next ?? 'Next'\n const submitLabel = labels.submit ?? 'Create'\n const cancelLabel = labels.cancel ?? 'Cancel'\n const stepOfTemplate = labels.stepOf ?? 'Step {current} of {total}'\n\n const [currentStep, setCurrentStep] = React.useState(0)\n\n // ── Distribute properties across steps ───────────────────────────────────\n const stepProperties = React.useMemo<PropertyJSON[][]>(() => {\n const claimedPaths = new Set(steps.flatMap((s) => s.properties ?? []))\n const unclaimed = properties.filter((p) => !claimedPaths.has(p.path))\n return steps.map((step) => {\n if (step.properties) {\n return step.properties\n .map((path) => properties.find((p) => p.path === path))\n .filter((p): p is PropertyJSON => p != null)\n }\n return unclaimed\n })\n }, [steps, properties])\n\n const totalSteps = steps.length\n const isFirst = currentStep === 0\n const isLast = currentStep === totalSteps - 1\n\n const handleNext = async (): Promise<void> => {\n const paths = (stepProperties[currentStep] ?? []).map((p) => p.path)\n // When the step has no properties, advance without validation.\n const valid =\n paths.length === 0 ||\n (await trigger(paths as Parameters<typeof trigger>[0]))\n if (valid) setCurrentStep((s) => Math.min(s + 1, totalSteps - 1))\n }\n\n const currentStepDef = steps[currentStep]!\n const currentProperties = stepProperties[currentStep] ?? []\n\n const stepOfLabel = stepOfTemplate\n .replace('{current}', String(currentStep + 1))\n .replace('{total}', String(totalSteps))\n\n return (\n <div>\n {/* ── Step indicator ──────────────────────────────────────────── */}\n <div className=\"px-6 pt-6 pb-5\">\n <div className=\"flex w-full max-w-xl items-start mx-auto\">\n {steps.map((step, index) => (\n <React.Fragment key={index}>\n {/* Step node */}\n <div className=\"flex shrink-0 flex-col items-center\">\n <div\n className={cn(\n 'flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors',\n index < currentStep &&\n 'border-primary bg-primary text-primary-foreground',\n index === currentStep &&\n 'border-primary bg-background text-primary',\n index > currentStep &&\n 'border-border bg-background text-muted-foreground',\n )}\n >\n {index < currentStep ? (\n <Check className=\"size-3.5\" />\n ) : (\n index + 1\n )}\n </div>\n <span\n className={cn(\n 'mt-1.5 hidden max-w-[6rem] text-center text-xs leading-tight sm:block',\n index === currentStep\n ? 'font-medium text-foreground'\n : index < currentStep\n ? 'text-primary'\n : 'text-muted-foreground',\n )}\n >\n {step.label}\n </span>\n </div>\n {/* Connector line between nodes */}\n {index < steps.length - 1 && (\n <div\n className={cn(\n 'mx-2 mt-3.5 h-0.5 flex-1 transition-colors',\n index < currentStep ? 'bg-primary' : 'bg-border',\n )}\n />\n )}\n </React.Fragment>\n ))}\n </div>\n {/* Mobile: compact \"Step N of M · Label\" summary */}\n <p className=\"mt-2 text-center text-xs text-muted-foreground sm:hidden\">\n {stepOfLabel}\n {currentStepDef.label ? ` · ${currentStepDef.label}` : ''}\n </p>\n </div>\n\n {/* ── Step description ────────────────────────────────────────── */}\n {currentStepDef.description && (\n <p className=\"px-6 pb-2 text-sm text-muted-foreground\">\n {currentStepDef.description}\n </p>\n )}\n\n {/* ── Fields ──────────────────────────────────────────────────── */}\n <div className=\"gap-4 px-6 pb-4 [column-fill:_balance] md:columns-2\">\n {currentProperties.map((property) => (\n <WizardConditionalField\n key={property.path}\n control={control}\n property={property}\n >\n <FormField\n control={control}\n name={property.path}\n render={({ field, fieldState }) => (\n <Field\n data-invalid={fieldState.error ? true : undefined}\n className=\"mb-8 break-inside-avoid\"\n >\n <FieldLabel htmlFor={field.name}>\n {property.label}\n {property.description ? (\n <InfoTooltip\n content={property.description}\n ariaLabel={property.description}\n />\n ) : null}\n {property.isRequired && (\n <span className=\"ml-1 text-destructive\">*</span>\n )}\n </FieldLabel>\n <PropertyEditor\n property={property}\n value={field.value}\n onChange={field.onChange}\n disabled={isSubmitting}\n resourceId={resourceId}\n />\n {fieldState.error?.message && (\n <FieldError>{fieldState.error.message}</FieldError>\n )}\n </Field>\n )}\n />\n </WizardConditionalField>\n ))}\n </div>\n\n {/* ── Navigation footer ───────────────────────────────────────── */}\n <div className=\"flex items-center justify-between border-t border-border px-6 py-4\">\n <div>\n {submitError && (\n <span className=\"text-sm text-destructive\">{submitError}</span>\n )}\n </div>\n <div className=\"flex gap-2\">\n {isFirst ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onCancel}\n disabled={isSubmitting}\n >\n <X className=\"size-4\" />\n {cancelLabel}\n </Button>\n ) : (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setCurrentStep((s) => s - 1)}\n disabled={isSubmitting}\n >\n <ChevronLeft className=\"size-4\" />\n {backLabel}\n </Button>\n )}\n {isLast ? (\n <Button type=\"button\" onClick={onSubmit} disabled={isSubmitting}>\n <Plus className=\"size-4\" />\n {submitLabel}\n </Button>\n ) : (\n <Button\n type=\"button\"\n onClick={() => void handleNext()}\n disabled={isSubmitting}\n >\n {nextLabel}\n <ChevronRight className=\"size-4\" />\n </Button>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nWizardForm.displayName = 'WizardForm'\n\n// ── WizardConditionalField ────────────────────────────────────────────────────\n// Same showWhen evaluation as ConditionalField in edit-page, scoped here.\n\ninterface WizardConditionalFieldProps {\n control: Control<FormValues>\n property: PropertyJSON\n children: React.ReactNode\n}\n\nfunction WizardConditionalField({\n control,\n property,\n children,\n}: WizardConditionalFieldProps): React.ReactElement | null {\n const rule = property.showWhen\n const watched = useWatch({ control, name: rule?.field ?? property.path })\n if (!rule) return <>{children}</>\n return evaluateShowWhen(rule, { [rule.field]: watched }) ? <>{children}</> : null\n}\n","// ResourceWizardCreatePage — multi-step creation form for a resource.\n// Analogous to ResourceEditPage but splits the fields across declarative\n// `steps`, each validated independently before advancing. Submit on the final\n// step creates the record and navigates to its show page.\n\nimport * as React from 'react'\nimport { useForm, type SubmitHandler } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { Card, CardHeader, CardTitle, Form } from '@modern-admin/ui'\nimport { useCreateRecord, useResource } from '../hooks.js'\nimport { useNavigate } from '../router.js'\nimport { useI18n } from '../i18n.js'\nimport { useNotify } from '../notify.js'\nimport { PageBreadcrumbs, homeCrumb } from '../breadcrumbs.js'\nimport { buildValidationSchema, defaultValueFor } from '../validation.js'\nimport type { PropertyJSON } from '../types.js'\nimport { visibleRecordProperties } from '../relations.js'\nimport {\n WizardForm,\n type WizardStep,\n type WizardFormLabels,\n} from '../components/wizard-form.js'\n\nexport interface ResourceWizardCreatePageProps {\n resourceId: string\n /** Step definitions. Each step declares which property paths it shows. */\n steps: WizardStep[]\n /**\n * Override wizard button labels. Falls back to locale translations.\n * Useful when embedding the page with a custom i18n setup.\n */\n labels?: WizardFormLabels\n}\n\ntype FormValues = Record<string, unknown>\n\nexport function ResourceWizardCreatePage({\n resourceId,\n steps,\n labels: labelsProp,\n}: ResourceWizardCreatePageProps): React.ReactElement {\n const resource = useResource(resourceId)\n const create = useCreateRecord(resourceId)\n const navigate = useNavigate()\n const { t, locale } = useI18n()\n const notify = useNotify()\n\n const editable = React.useMemo<PropertyJSON[]>(\n () =>\n resource\n ? visibleRecordProperties(resource.properties, 'edit', resource.propertyOrder?.edit).filter(\n (p) => !p.isDisabled,\n )\n : [],\n [resource],\n )\n\n // Route live form values into the validation schema (same pattern as edit-page).\n const getValuesRef = React.useRef<() => FormValues>(() => ({}))\n\n const schema = React.useMemo(\n () => buildValidationSchema(editable, t, () => getValuesRef.current()),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [editable, locale],\n )\n\n const defaults = React.useMemo<FormValues>(() => {\n const out: FormValues = {}\n for (const p of editable) out[p.path] = defaultValueFor(p)\n return out\n }, [editable])\n\n const form = useForm<FormValues>({\n resolver: zodResolver(schema),\n defaultValues: defaults,\n })\n\n getValuesRef.current = form.getValues\n\n // Reset when the resource schema arrives (resource loaded after mount).\n React.useEffect(() => {\n form.reset(defaults)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [defaults])\n\n const [submitError, setSubmitError] = React.useState<string | null>(null)\n\n const onSubmit: SubmitHandler<FormValues> = async (values) => {\n setSubmitError(null)\n try {\n const result = await create.mutateAsync(values)\n const errors = result.record.errors as Record<\n string,\n { message?: string } | string\n >\n if (errors && Object.keys(errors).length > 0) {\n for (const [path, err] of Object.entries(errors)) {\n const message =\n typeof err === 'string' ? err : (err?.message ?? 'Invalid value')\n form.setError(path, { type: 'server', message })\n }\n if (result.record.baseError) setSubmitError(String(result.record.baseError))\n notify.error({ key: 'toast:validationFailed' })\n return\n }\n notify.success({ key: 'toast:created' })\n navigate({ name: 'show', resourceId, recordId: String(result.record.id) })\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n setSubmitError(message)\n notify.error({ key: 'toast:createFailed' }, { description: message })\n }\n }\n\n const handleSubmit = (): void => {\n void form.handleSubmit(onSubmit, () => {\n notify.error({ key: 'toast:validationFailed' })\n })()\n }\n\n if (!resource) return <div className=\"p-6\">{t('common:loading')}</div>\n\n const labels: WizardFormLabels = {\n back: t('common:back'),\n next: t('common:next'),\n submit: t('common:create'),\n cancel: t('common:cancel'),\n stepOf: t('wizard:stepOf'),\n ...labelsProp,\n }\n\n const crumbs = [\n homeCrumb(t('common:home')),\n { label: resource.name, to: { name: 'list' as const, resourceId } },\n { label: t('common:new') },\n ]\n\n return (\n <div className=\"flex min-h-full flex-col gap-4\">\n <PageBreadcrumbs items={crumbs} />\n <Card className=\"flex-1\">\n <CardHeader>\n <CardTitle className=\"truncate\">\n {t('common:newRecord', { name: resource.name })}\n </CardTitle>\n </CardHeader>\n <Form {...form}>\n <WizardForm\n steps={steps}\n properties={editable}\n resourceId={resourceId}\n control={form.control}\n trigger={form.trigger}\n onSubmit={handleSubmit}\n onCancel={() => navigate({ name: 'list', resourceId })}\n isSubmitting={form.formState.isSubmitting}\n submitError={submitError}\n labels={labels}\n />\n </Form>\n </Card>\n </div>\n )\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x-
|
|
1
|
+
{"version":3,"file":"x-c-gfVPJa.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/x.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.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 __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAaA,IAAM,EAAI,EAAiB,IAAK,CAH9B,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAS,CAAC,EAC3C,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAS,CAAC,CAEb,CAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./createLucideIcon-QE2kj6ru.js";var t=e(`zap`,[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]);export{t};
|
|
2
|
+
//# sourceMappingURL=zap-BxPAEPtJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zap-BxPAEPtJ.js","names":[],"sources":["../../../../../node_modules/.bun/lucide-react@1.31.0+0f58469d5b3bd39f/node_modules/lucide-react/dist/esm/icons/zap.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.31.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 __iconNode = [\n [\n \"path\",\n {\n d: \"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\",\n key: \"1v7up4\"\n }\n ]\n];\nconst Zap = createLucideIcon(\"zap\", __iconNode);\n\nexport { __iconNode, Zap as default };\n//# sourceMappingURL=zap.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAkBA,IAAM,EAAM,EAAiB,MAAO,CARlC,CACE,OACA,CACE,EAAG,yKACH,IAAK,QACP,CACF,CAEkC,CAAU"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as e,n as t}from"./createLucideIcon-QE2kj6ru.js";import{C as n,l as r,v as i}from"./floating-layer-BcTp2AMB.js";import{a,d as o,f as s,g as c,h as l,i as u,m as d,n as f,o as p,p as m,r as h,s as g,u as _}from"./schemas-ByMQmMCS.js";import{et as v}from"./index-CASCzvYu.js";var y=e(t(),1),b=e=>e.type===`checkbox`,x=e=>e.type===`file`,S=e=>e instanceof Date,C=e=>e==null,w=e=>typeof e==`object`,T=e=>!C(e)&&!Array.isArray(e)&&w(e)&&!S(e),E=e=>T(e)&&e.target?b(e.target)?e.target.checked:x(e.target)?e.target.files:e.target.value:e,ee=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),D=e=>{let t=e.constructor&&e.constructor.prototype;return T(t)&&t.hasOwnProperty(`isPrototypeOf`)},O=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function k(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(O&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(T(e)&&D(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=k(e[t]));return r}var A={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},j={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},M={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},te=`root`,ne=[`__proto__`,`constructor`,`prototype`],re=/^\w*$/,N=e=>re.test(e),P=e=>e===void 0,ie=/[.[\]'"]/,ae=e=>e.split(ie).filter(Boolean),F=(e,t,n)=>{if(!t||!T(e))return n;let r=N(t)?[t]:ae(t);if(r.some(e=>ne.includes(e)))return n;let i=r.reduce((e,t)=>C(e)?void 0:e[t],e);return P(i)||i===e?P(e[t])?n:e[t]:i},I=e=>typeof e==`boolean`,L=e=>typeof e==`function`,R=(e,t,n)=>{let r=-1,i=N(t)?[t]:ae(t),a=i.length,o=a-1;for(;++r<a;){let t=i[r],a=n;if(r!==o){let n=e[t];a=T(n)||Array.isArray(n)?n:isNaN(+i[r+1])?{}:[]}if(ne.includes(t))return;e[t]=a,e=e[t]}},oe=y.createContext(null);oe.displayName=`HookFormControlContext`;var se=()=>y.useContext(oe),ce=(e,t,n,r=!0)=>{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==j.all&&(t._proxyFormState[i]=!r||j.all),n&&(n[i]=!0),e[i]}});return i},le=O?y.useLayoutEffect:y.useEffect,ue=e=>C(e)||!w(e),de=(e,t)=>t.length===0&&!Array.isArray(e)&&!D(e);function z(e,t,n=new WeakMap){if(e===t)return!0;if(ue(e)||ue(t))return Object.is(e,t);if(S(e)&&S(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(de(e,r)||de(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(S(r)&&S(e)||(T(r)||Array.isArray(r))&&(T(e)||Array.isArray(e))?!z(r,e,n):!Object.is(r,e))return!1}}return!0}function B(){let e=y.useRef(!1),t=y.useRef(void 0);return{resyncIfNeeded:y.useCallback((n,r,i)=>{if(n&&e.current){let e=r();z(t.current,e)||i(e)}e.current=!0},[]),snapshot:y.useCallback((e,n)=>{e&&(t.current=k(n()))},[])}}function fe(e){let t=se(),{control:n=t,disabled:r,name:i,exact:a}=e||{},[o,s]=y.useState(()=>({...n._formState,defaultValues:n._defaultValues})),c=y.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1}),{resyncIfNeeded:l,snapshot:u}=B();return le(()=>{let e=()=>({...n._formState,defaultValues:n._defaultValues});l(!r,e,s);let t=n._subscribe({name:i,formState:c.current,exact:a,callback:e=>{!r&&s({...n._formState,...e,defaultValues:n._defaultValues})}});return()=>{t(),u(!r,e)}},[i,r,a,l,u]),y.useEffect(()=>{c.current.isValid&&n._setValid(!0)},[n]),y.useMemo(()=>ce(o,n,c.current,!1),[o,n])}var V=e=>typeof e==`string`,pe=(e,t,n,r,i)=>V(e)?(r&&t.watch.add(e),F(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),F(n,e))):(r&&(t.watchAll=!0),n);function me(e){let t=se(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:o,compute:s}=e||{},c=y.useRef(i),l=y.useRef(s),u=y.useRef(void 0),d=y.useRef(n),f=y.useRef(r);l.current=s;let[p,m]=y.useState(()=>{let e=n._getWatch(r,c.current);return l.current?l.current(e):e}),h=y.useCallback(e=>{let t=pe(r,n._names,e||n._formValues,!1,c.current);return l.current?l.current(t):t},[n._formValues,n._names,r]),g=y.useCallback(e=>{if(!a){let t=pe(r,n._names,e||n._formValues,!1,c.current);if(l.current){let e=l.current(t);z(e,u.current)||(m(e),u.current=e)}else m(t)}},[n._formValues,n._names,a,r]),{resyncIfNeeded:_,snapshot:v}=B(),b=y.useRef(g);b.current=g;let x=y.useRef(h);x.current=h,le(()=>{d.current!==n||!z(f.current,r)?(d.current=n,f.current=r,b.current()):_(!a,()=>x.current(),e=>{m(e),u.current=e});let e=n._subscribe({name:r,formState:{values:!0},exact:o,callback:e=>{b.current(e.values)}});return()=>{e(),v(!a,()=>x.current())}},[n,o,r,a,_,v]),y.useEffect(()=>n._removeUnmounted());let S=d.current!==n,C=f.current,w=y.useMemo(()=>{if(a)return null;let e=!S&&!z(C,r);return S||e?h():null},[a,S,r,C,h]);return w===null?p:w}function H(e){let t=se(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,c=ee(i._names.array,n),l=me({control:i,name:n,defaultValue:y.useMemo(()=>F(i._formValues,n,F(i._defaultValues,n,o)),[i,n,o]),exact:s}),u=fe({control:i,name:n,exact:s}),d=y.useRef(e),f=y.useRef(null),p=y.useRef(i.register(n,{...e.rules,value:l,...I(e.disabled)?{disabled:e.disabled}:{}}));d.current=e;let m=y.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!F(u.errors,n)},isDirty:{enumerable:!0,get:()=>!!F(u.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!F(u.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!F(u.validatingFields,n)},error:{enumerable:!0,get:()=>F(u.errors,n)}}),[u,n]),h=y.useCallback(e=>{let t=E(e);return F(i._fields,n)||(p.current=i.register(n,{...d.current.rules,value:t})),p.current.onChange({target:{value:E(e),name:n},type:A.CHANGE})},[n,i]),g=y.useCallback(()=>p.current.onBlur({target:{value:F(i._formValues,n),name:n},type:A.BLUR}),[n,i._formValues]),_=y.useCallback(e=>{e&&(f.current={focus:()=>L(e.focus)&&e.focus(),select:()=>L(e.select)&&e.select(),setCustomValidity:t=>L(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>L(e.reportValidity)&&e.reportValidity()});let t=F(i._fields,n);t&&t._f&&e&&(t._f.ref=f.current)},[i._fields,n]),v=y.useMemo(()=>({name:n,value:l,...I(r)||u.disabled?{disabled:u.disabled||r}:{},onChange:h,onBlur:g,ref:_}),[n,r,u.disabled,h,g,_,l]);return y.useEffect(()=>{let e=i._options.shouldUnregister||a;p.current=i.register(n,{...d.current.rules,...I(d.current.disabled)?{disabled:d.current.disabled}:{}});let t=(e,t)=>{let n=F(i._fields,e);n&&n._f&&(n._f.mount=t)};if(t(n,!0),e){let e=k(F(a?i._defaultValues:i._options.values||i._defaultValues,n,F(i._options.defaultValues,n,d.current.defaultValue)));R(i._defaultValues,n,e),P(F(i._formValues,n))&&R(i._formValues,n,e)}if(!c&&i.register(n),f.current){let e=F(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]),y.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),y.useMemo(()=>({field:v,formState:u,fieldState:m}),[v,u,m])}var he=e=>e.render(H(e)),ge=e=>({isOnSubmit:!e||e===j.onSubmit,isOnBlur:e===j.onBlur,isOnChange:e===j.onChange,isOnAll:e===j.all,isOnTouch:e===j.onTouched}),_e=(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},ve=(e,t,n,r)=>{for(let i of n||Object.keys(e)){if(i===`_f`)continue;let a=n?F(e,i):e[i];if(a){let{_f:e}=a;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],i)&&!r||e.ref&&t(e.ref,e.name)&&!r)return!0;if(ve(a,t))break}else if((T(a)||Array.isArray(a))&&ve(a,t))break}}},ye=(e,t,n)=>{let r=F(e,n),i=Array.isArray(r)?r:[];return R(i,te,t[n]),R(e,n,i),e},U=e=>T(e)&&!Object.keys(e).length,be=e=>{if(!O)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},W=e=>e.type===`radio`,G=e=>e instanceof RegExp,xe=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},Se={value:!1,isValid:!1},Ce={value:!0,isValid:!0},we=e=>{if(Array.isArray(e)){if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!P(e[0].attributes.value)?P(e[0].value)||e[0].value===``?Ce:{value:e[0].value,isValid:!0}:Ce:Se}return Se},K={isValid:!1,value:null},Te=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,K):K;function Ee(e,t,n=`validate`){if(V(e)||Array.isArray(e)&&e.every(V)||I(e)&&!e)return{type:n,message:V(e)?e:``,ref:t}}var q=e=>T(e)&&!G(e)?e:{value:e,message:``},De=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:m,name:h,valueAsNumber:g,mount:_}=e._f,v=F(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,w=e=>{if(i&&y.reportValidity){let t=I(e)?``:e||``;s?s.forEach(e=>e.setCustomValidity(t)):y.setCustomValidity(t),y.reportValidity()}},E={},ee=W(o),D=b(o),O=ee||D,k=(g||x(o))&&P(o.value)&&P(v)||be(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,A=xe.bind(null,h,r,E),j=(e,t,n,r=M.maxLength,i=M.minLength)=>{let a=e?t:n;E[h]={type:e?r:i,message:a,ref:o,...A(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!O&&(k||C(v))||I(v)&&!v||D&&!we(s).isValid||ee&&!Te(s).isValid)){let{value:e,message:t}=V(c)?{value:!!c,message:c}:q(c);if(e&&(E[h]={type:M.required,message:t,ref:y,...A(M.required,t)},!r))return w(t),E}if(!k&&(!C(d)||!C(f))){let e,t,n=q(f),i=q(d);if(!C(v)&&!S(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;C(n.value)||(e=r>n.value),C(i.value)||(t=r<i.value)}else{let r=o.valueAsDate||new Date(v),a=e=>new Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;V(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),V(i.value)&&v&&(t=s?a(v)<a(i.value):c?v<i.value:r<new Date(i.value))}if((e||t)&&(j(!!e,n.message,i.message,M.max,M.min),!r))return w(E[h].message),E}if((l||u)&&!k&&(V(v)||a&&Array.isArray(v))){let e=q(l),t=q(u),n=!C(e.value)&&v.length>+e.value,i=!C(t.value)&&v.length<+t.value;if((n||i)&&(j(n,e.message,t.message),!r))return w(E[h].message),E}if(p&&!k&&V(v)){let{value:e,message:t}=q(p);if(G(e)&&!v.match(e)&&(E[h]={type:M.pattern,message:t,ref:o,...A(M.pattern,t)},!r))return w(t),E}if(m){if(L(m)){let e=Ee(await m(v,n),y);if(e&&(E[h]={...e,...A(M.validate,e.message)},!r))return w(e.message),E}else if(T(m)){let e={};for(let t in m){if(!U(e)&&!r)break;let i=Ee(await m[t](v,n),y,t);i&&(e={...i,...A(t,i.message)},w(i.message),r&&(E[h]=e))}if(!U(e)&&(E[h]={ref:y,...e},!r))return E}}return w(!0),E},Oe=e=>Array.isArray(e)?e:[e],ke=e=>Array.isArray(e)?e.filter(Boolean):[];function Ae(e,t){let n=t.length-1,r=0;for(;r<n;){if(C(e)){e=void 0;break}e=e[t[r]],r++}return e}function je(e){for(let t in e)if(e.hasOwnProperty(t)&&!P(e[t]))return!1;return!0}function J(e,t){if(V(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;let n=Array.isArray(t)?t:N(t)?[t]:ae(t);if(n.some(e=>ne.includes(String(e))))return e;let r=n.length===1?e:Ae(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(T(r)&&U(r)||Array.isArray(r)&&je(r))&&J(e,n.slice(0,-1)),e}var Me=e=>{let t={};for(let n of Object.keys(e))if(w(e[n])&&e[n]!==null&&!S(e[n])){let r=Me(e[n]);for(let e of Object.keys(r))t[`${n}.${e}`]=r[e]}else t[n]=e[n];return t},Ne=y.createContext(null);Ne.displayName=`HookFormContext`;var Pe=()=>y.useContext(Ne),Fe=({children:e,watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:s,trigger:c,formState:l,resetField:u,reset:d,resetDefaultValues:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v})=>{let b=y.useMemo(()=>({watch:t,getValues:n,getFieldState:r,setError:i,clearErrors:a,setValue:o,setValues:s,trigger:c,formState:l,resetField:u,reset:d,resetDefaultValues:f,handleSubmit:p,unregister:m,control:h,register:g,setFocus:_,subscribe:v}),[a,h,l,r,n,p,g,d,f,u,i,_,o,s,v,c,m,t]);return y.createElement(Ne.Provider,{value:b},y.createElement(oe.Provider,{value:b.control},e))},Ie=()=>{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 Le(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&T(i)&&a){let e=Le(i,a);T(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Re=e=>e.type===`select-multiple`,ze=e=>W(e)||b(e),Be=e=>be(e)&&e.isConnected;function Ve(e){return Array.isArray(e)||T(e)}function He(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];Ve(o)&&Ve(F(t,a))?He(o,t,a,r):r.push(a)}return r}var Ue=e=>{for(let t in e)if(L(e[t]))return!0;return!1};function We(e){return Array.isArray(e)||T(e)&&!Ue(e)}function Ge(e){return!!(e&&`_f`in e)}function Ke(e){return Array.isArray(e)?!e.some(e=>!P(e)):!Object.keys(e).length}function Y(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function X(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];We(i)&&(!Array.isArray(i)||!Ge(a))?(t[r]=Array.isArray(i)?[]:{},X(i,t[r],a),Ke(t[r])&&Y(t,r)):P(i)||(t[r]=!0)}return t}function Z(e,t,n,r){n||=X(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];We(a)&&(!Array.isArray(a)||!Ge(o))?(P(t)||ue(n[i])?n[i]=X(a,Array.isArray(a)?[]:{},o):Z(a,C(t)?{}:t[i],n[i],o),Ke(n[i])&&Y(n,i)):z(a,t[i])?Y(n,i):n[i]=!0}return n}var qe=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>P(e)?e:t?e===``?NaN:e&&+e:n&&V(e)?new Date(e):r?r(e):e;function Je(e){let t=e.ref;return x(t)?t.files:W(t)?Te(e.refs).value:Re(t)?[...t.selectedOptions].map(({value:e})=>e):b(t)?we(e.refs).value:qe(t.value,e)}var Ye=(e,t,n,r)=>{let i={};for(let n of e){let e=F(t,n);e&&R(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},Xe=e=>P(e)?e:G(e)?e.source:T(e)?G(e.value)?e.value.source:e.value:e,Ze=`AsyncFunction`,Qe=e=>{if(!e||!e.validate)return!1;if(L(e.validate))return e.validate.constructor.name===Ze;if(T(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===Ze)return!0}return!1},$e=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function et(e,t,n){let r=F(e,n);if(r||N(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=F(t,r),o=F(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 tt=(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||j.all))},nt=(e,t,n)=>!e||!t||e===t||Oe(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),rt=(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,it=(e,t)=>{let n=F(e,t);!ke(n).length&&!n?.root&&J(e,t)},at={mode:j.onSubmit,reValidateMode:j.onChange,shouldFocusError:!0},ot=`form`,st=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},ct={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function lt(e={}){let t={...at,...e},n={...k(ct),isLoading:L(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(T(t.defaultValues)||T(t.values))&&k(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:k(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=ge(t.mode),f=ge(t.reValidateMode),p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={...p},h={...m},g={array:Ie(),state:Ie()},_=0,v=t.criteriaMode===j.all,y=(e,t)=>n=>{clearTimeout(l[e]),l[e]=setTimeout(t,n)},w=async e=>{if(!o.keepIsValid&&!t.disabled&&(m.isValid||h.isValid||e)){let e=++_,i;t.resolver?(i=U((await B()).errors),e===_&&D()):i=await H({fields:r,onlyCheckValid:!0,eventType:A.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},D=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?R(n.validatingFields,e,r):J(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!U(n.validatingFields)}))},ne=()=>{n.dirtyFields=Z(i,a,void 0,r)},re=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,!o.actionArrayLengths.has(e)){let t=F(r,e);o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0)}if(u&&Array.isArray(F(r,e))){let t=s(F(r,e),c.argA,c.argB);l&&R(r,e,t)}if(u&&Array.isArray(F(n.errors,e))){let t=F(n.errors,e),r=t.root,i=s(t,c.argA,c.argB)||t;r&&(i.root=r),l&&R(n.errors,e,i),it(n.errors,e)}if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(F(n.touchedFields,e))){let t=s(F(n.touchedFields,e),c.argA,c.argB);l&&R(n.touchedFields,e,t)}(m.dirtyFields||h.dirtyFields)&&ne(),g.state.next({name:e,isDirty:W(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else R(a,e,i)},ie=(e,t)=>{R(n.errors,e,t),n.errors={...n.errors},g.state.next({errors:n.errors})},oe=e=>{n.errors=e,g.state.next({errors:n.errors,isValid:!1})},se=e=>{let t=N(e)?[e]:ae(e),n=a,r=i;for(let e=0;e<t.length-1;e++){let i=t[e];if(n=C(n)?n:n[i],r=C(r)?r:r[i],n===null&&r!==null)return!0}return!1},ce=e=>{if(!o.actionArrayLengths.size)return!1;let t=N(e)?[e]:ae(e),n=a,r=``,i=-1,s=0;for(let e=0;e<t.length;e++){if(C(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;o.actionArrayLengths.has(r)&&(i=e+1,s=o.actionArrayLengths.get(r)),n=n[a]}return!1},le=(t,c,l,u)=>{let d=F(r,t);if(d){if(se(t)||ce(t))return;let r=P(F(a,t)),f=F(a,t,P(l)?F(i,t):l);P(f)||u&&u.defaultChecked||c?R(a,t,c?f:Je(d._f)):Se(t,f),o.mount&&!o.action&&(w(),r&&n.isDirty&&(m.isDirty||h.isDirty)&&(W()||(n.isDirty=!1,g.state.next({...n}))),e.shouldUnregister&&r&&!P(F(a,t))&&_e(t,s)&&(o.watch=!0))}},ue=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=z(F(i,e),o);(m.isDirty||h.isDirty)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||W(),u=d!==f.isDirty),d=!!F(n.dirtyFields,e),t===n.isDirty?t?J(n.dirtyFields,e):R(n.dirtyFields,e,!0):st(n.dirtyFields,Z(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=(m.dirtyFields||h.dirtyFields)&&d!==!t}if(s){let t=F(n.touchedFields,e);t||(R(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=(m.touchedFields||h.touchedFields)&&t!==s)}u&&l&&g.state.next(f)}return u?f:{}},de=(e,r,i,a)=>{let o=F(n.errors,e),s=(m.isValid||h.isValid)&&I(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=y(e,()=>ie(e,i)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e],i?R(n.errors,e,i):J(n.errors,e),n.errors={...n.errors}),(i?!z(o,i):o)||!U(a)||s){let t={...a,...s&&I(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},g.state.next(t)}},B=async e=>(D(e,!0),await t.resolver(a,t.context,Ye(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),fe=async e=>{let{errors:t}=await B(e);if(D(e),e){for(let r of e){let e=F(t,r);e?s.array.has(r)&&T(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?ye(n.errors,{[r]:e},r):R(n.errors,r,e):J(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},me=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(T(i))for(let e in i){let t=i[e];t&&Fe(`${ot}.${e}`,{message:V(t.message)?t.message:``,type:t.type||M.validate})}else V(i)||!i?Fe(ot,{message:i||``,type:M.validate}):Pe(ot);return i}return!0},H=async({fields:r,onlyCheckValid:i,name:o,eventType:c,context:l={valid:!0,runRootValidation:!1}})=>{if(e.validate&&(l.runRootValidation=!0,!await me({name:o,eventType:c})&&(l.valid=!1,i)))return l.valid;for(let o in r){let u=r[o];if(u){let{_f:r,...d}=u;if(r){let o=s.array.has(r.name),c=u._f&&Qe(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&D([r.name],!0);let f=await De(u,s.disabled,a,v,t.shouldUseNativeValidation&&!i,o);if(c&&d&&D([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(F(f,r.name)?o?ye(n.errors,f,r.name):R(n.errors,r.name,f[r.name]):J(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!U(d)&&await H({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},he=()=>{for(let e of s.unMount){let t=F(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Be(e)):!Be(t._f.ref))&&Ge(e)}s.unMount=new Set},W=(e,t)=>(e&&t&&R(a,e,t),!z(o.mount?a:i,i)),G=(e,t,n)=>pe(e,s,{...o.mount?a:P(t)||V(e)?i:t},n,t),xe=e=>ke(F(o.mount?a:i,e,t.shouldUnregister?F(i,e,[]):[])),Se=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=F(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&R(a,e,qe(t,n)),l=be(n.ref)&&C(t)?``:t,Re(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?b(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):x(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:k(a)})))}(n.shouldDirty||n.shouldTouch)&&ue(e,l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&Ae(e,{delayError:n.delayError})},Ce=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&g.array.next({name:e,values:i?a:k(a)});for(let a in t){if(!t.hasOwnProperty(a))return;let l=t[a],u=e+`.`+a,d=F(r,u);(s.array.has(e)||T(l)||d&&!d._f)&&!S(l)?Ce(u,l,n,i,o,c):Se(u,l,n,i,o,c)}},we=(e,t,i,c,l=!1)=>{let u=F(r,e),d=s.array.has(e),f=c?t:k(t),p=z(F(a,e),f);if(p||R(a,e,f),d)g.array.next({name:e,values:c?a:k(a)}),(m.isDirty||m.dirtyFields||h.isDirty||h.dirtyFields)&&i.shouldDirty&&(ne(),l||g.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:W(e,f)}));else{let t=Array.isArray(f)&&!f.length||U(f),n=!p&&!l;!u||u._f||C(f)||t?Se(e,f,i,c,l,n):Ce(e,f,i,c,l,n)}if(!p&&!l){let t=_e(e,s),r=c?a:k(a);g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},K=(e,t,n={})=>we(e,t,n,!1),Te=(e,t={})=>{let r=L(e)?e(a):e;if(!z(a,r)){a={...a,...r};let e=Me(r);for(let n of s.mount)n in e&&we(n,e[n],t,!0,!0);g.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&w()}},Ee=async i=>{o.mount=!0;let l=i.target,p=l.name,_=!0,y=F(r,p),b=e=>{_=Number.isNaN(e)||S(e)&&isNaN(e.getTime())||z(e,F(a,p,e))};if(y){let o,x,S=l.type?Je(y._f):E(i),C=i.type===A.BLUR||i.type===A.FOCUS_OUT,T=!$e(y._f)&&!e.validate&&!t.resolver&&!F(n.errors,p)&&!y._f.deps,ee=T||rt(C,F(n.touchedFields,p),n.isSubmitted,f,d),O=_e(p,s,C);if(R(a,p,S),C){if(!l||!l.readOnly){y._f.onBlur&&y._f.onBlur(i);let e=c[p];e&&e(0)}}else y._f.onChange&&y._f.onChange(i);let j=ue(p,S,C),M=!U(j)||O;if(!C&&g.state.next({name:p,type:i.type,...u?{values:k(a)}:{}}),ee)return(!T||!n.isValid)&&(m.isValid||h.isValid)&&(t.mode===`onBlur`?C&&w():C||w()),M&&g.state.next({name:p,...O?{}:j});if(!t.resolver&&e.validate&&await me({name:p,eventType:i.type}),!C&&O&&g.state.next({...n}),t.resolver){let{errors:e}=await B([p]);if(D([p]),b(S),!_){!U(j)&&g.state.next(j);return}let t=et(n.errors,r,p),i=et(e,r,t.name||p);o=i.error,p=i.name,x=U(e)}else D([p],!0),o=(await De(y,s.disabled,a,v,t.shouldUseNativeValidation))[p],D([p]),b(S),_&&(o?x=!1:(m.isValid||h.isValid)&&(x=await H({fields:r,onlyCheckValid:!0,name:p,eventType:i.type})));_&&(y._f.deps&&(!Array.isArray(y._f.deps)||y._f.deps.length>0)&&Ae(y._f.deps),de(p,x,o,j))}},q=(e,t)=>{if(F(n.errors,t)&&e.focus)return e.focus(),1},Ae=async(e,i={})=>{let a,o,u=Oe(e);if(t.resolver){let t=await fe(P(e)?e:u);a=U(t),o=e?!u.some(e=>F(t,e)):a}else e?(o=(await Promise.all(u.map(async e=>{let t=F(r,e);return await H({fields:t&&t._f?{[e]:t}:t,eventType:A.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&w()):o=a=await H({fields:r,name:e,eventType:A.TRIGGER});if(i.delayError&&t.delayError&&V(e)){let r=F(n.errors,e);r?(J(n.errors,e),c[e]=y(e,()=>ie(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}return g.state.next({...!V(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&ve(r,q,e?u:s.mount),o},je=(e,t)=>{let r={...o.mount?a:i};return t&&(r=Le(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),P(e)?r:V(e)?F(r,e):e.map(e=>F(r,e))},Ne=(e,t)=>({invalid:!!F((t||n).errors,e),isDirty:!!F((t||n).dirtyFields,e),error:F((t||n).errors,e),isValidating:!!F(n.validatingFields,e),isTouched:!!F((t||n).touchedFields,e)}),Pe=e=>{let t=e?Oe(e):void 0;t?.forEach(e=>J(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},Fe=(e,t,i)=>{let a=(F(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=F(n.errors,e)||{};R(n.errors,e,{...l,...t,ref:a}),g.state.next({name:e,errors:n.errors,isValid:!1}),i&&i.shouldFocus&&a&&a.focus&&a.focus()},Ve=(e,t)=>{if(L(e)){u++;let{unsubscribe:n}=g.state.subscribe({next:n=>`values`in n&&e(n.values||G(void 0,t),n)}),r=!1;return{unsubscribe:()=>{r||(r=!0,u--,n())}}}return G(e,t,!0)},Ue=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(nt(e.name,t.name,e.exact)&&tt(t,e.formState||m,pt,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())}},We=e=>(o.mount=!0,h={...h,...e.formState},Ue({...e,formState:{...p,...e.formState}})),Ge=(e,o={})=>{for(let c of e?Oe(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(J(r,c),J(a,c)),!o.keepError&&J(n.errors,c),!o.keepDirty&&J(n.dirtyFields,c),!o.keepTouched&&J(n.touchedFields,c),!o.keepIsValidating&&J(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&J(i,c);g.state.next({values:k(a)}),g.state.next({...n,...o.keepDirty?{isDirty:W()}:{}}),!o.keepIsValid&&w()},Ke=({disabled:e,name:t})=>{if(I(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&&w()}},Y=(e,n={})=>{let a=F(r,e),c=I(n.disabled)||I(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return R(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?Ke({disabled:I(n.disabled)?n.disabled:t.disabled,name:e}):le(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:Xe(n.min),max:Xe(n.max),minLength:Xe(n.minLength),maxLength:Xe(n.maxLength),pattern:Xe(n.pattern)}:{},name:e,onChange:Ee,onBlur:Ee,ref:c=>{if(c){s.registerName.add(e),Y(e,n),s.registerName.delete(e),a=F(r,e);let t=P(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=ze(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(Be),t,...Array.isArray(F(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),R(r,e,{_f:u}),le(e,!1,void 0,t)}else a=F(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(ee(s.array,e)&&o.action)&&s.unMount.add(e)}}},X=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&ve(r,q,s.mount),Ze=e=>{I(e)&&(g.state.next({disabled:e}),ve(r,(t,n)=>{let i=F(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,!1))},lt=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=k(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await B();D(),n.errors=e,u=k(t)}else await H({fields:r,eventType:A.SUBMIT});if(s.disabled.size)for(let e of s.disabled)J(u,e);if(J(n.errors,te),U(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),X(),setTimeout(X);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:U(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},ut=(e,t={})=>{F(r,e)&&(P(t.defaultValue)?K(e,k(F(i,e))):(K(e,t.defaultValue),R(i,e,k(t.defaultValue))),t.keepTouched||J(n.touchedFields,e),t.keepDirty||(J(n.dirtyFields,e),n.isDirty=t.defaultValue?W(e,k(F(i,e))):W()),t.keepError||(J(n.errors,e),m.isValid&&w()),g.state.next({...n}))},Q=(e,c={})=>{let l=e?k(e):i,u=k(l),d=U(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...He(Z(i,a,void 0,p),n.dirtyFields)]);for(let t of Array.from(e)){let e=F(n.dirtyFields,t),r=F(a,t),i=F(f,t);e&&!P(r)?R(f,t,r):!e&&!P(i)&&K(t,i)}}else{if(O&&P(e))for(let e of s.mount){let t=F(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(be(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)K(e,F(f,e));else r={}}if(t.shouldUnregister){if(a=c.keepDefaultValues?k(i):{},c.keepFieldsRef)for(let e of s.mount)R(a,e,F(f,e))}else a=k(f);g.array.next({values:{...f}}),g.state.next({name:void 0,type:void 0,values:{...f}})}s={mount:c.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=!m.isValid||!!c.keepIsValid||!!c.keepDirtyValues||!t.shouldUnregister&&!U(f),o.watch=!!t.shouldUnregister,o.keepIsValid=!!c.keepIsValid,o.action=!1,o.actionArrayLengths.clear(),c.keepErrors||(n.errors={}),g.state.next({submitCount:c.keepSubmitCount?n.submitCount:0,isDirty:d?!1:c.keepDirty?n.isDirty:c.keepValues?W():!!(c.keepDefaultValues&&!z(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?Z(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?Z(i,e,void 0,p):c.keepDirty?n.dirtyFields:{},touchedFields:c.keepTouched?n.touchedFields:{},errors:c.keepErrors?n.errors:{},isSubmitSuccessful:c.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:i})},dt=(e,n)=>Q(L(e)?e(a):e,{...t.resetOptions,...n}),ft=(e,t={})=>{let n=F(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&L(e.select)&&e.select()})}},pt=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:pt});let mt={control:{register:Y,unregister:Ge,getFieldState:Ne,handleSubmit:lt,setError:Fe,_subscribe:Ue,_runSchema:B,_updateIsValidating:D,_focusError:X,_getWatch:G,_getDirty:W,_setValid:w,_setFieldArray:re,_setDisabledField:Ke,_setErrors:oe,_getFieldArray:xe,_reset:Q,_resetDefaultValues:()=>L(t.defaultValues)&&t.defaultValues().then(e=>{dt(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:he,_disableForm:Ze,_subjects:g,_proxyFormState:m,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=ge(t.mode),f=ge(t.reValidateMode)}},subscribe:We,trigger:Ae,register:Y,handleSubmit:lt,watch:Ve,setValue:K,setValues:Te,getValues:je,reset:dt,resetField:ut,resetDefaultValues:(e,t={})=>{if(i=k(e),!t.keepDirty){let e=Z(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!U(e)}t.keepIsValid||w(),g.state.next({...n,defaultValues:i})},clearErrors:Pe,unregister:Ge,setError:Fe,setFocus:ft,getFieldState:Ne};return{...mt,formControl:mt}}function ut(e={}){let t=y.useRef(void 0),n=y.useRef(void 0),r=y.useRef(e.formControl),[i,a]=y.useState(()=>({...k(ct),isLoading:L(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:L(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:i},e.defaultValues&&!L(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=lt(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:s,snapshot:c}=B();return le(()=>{let e=()=>({...o._formState,defaultValues:o._defaultValues});s(!0,e,a);let t=o._subscribe({formState:o._proxyFormState,callback:()=>a({...o._formState,defaultValues:o._defaultValues}),reRenderRoot:!0});return a(e=>({...e,isReady:!0})),o._formState.isReady=!0,()=>{t(),c(!0,e)}},[o,s,c]),y.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),y.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),y.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),y.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),y.useEffect(()=>{if(o._proxyFormState.isDirty){let e=o._getDirty();e!==i.isDirty&&o._subjects.state.next({isDirty:e})}},[o,i.isDirty]),y.useEffect(()=>{e.values&&!z(e.values,n.current)?(o._reset(e.values,{keepFieldsRef:!0,...o._options.resetOptions}),o._options.resetOptions?.keepIsValid||o._setValid(),n.current=e.values,a(e=>({...e}))):o._resetDefaultValues()},[o,e.values]),y.useEffect(()=>{o._state.mount||(o._setValid(),o._state.mount=!0),o._state.watch&&(o._state.watch=!1,o._subjects.state.next({...o._formState})),o._removeUnmounted()}),t.current.formState=y.useMemo(()=>ce(i,o),[o,i]),t.current}var Q=n(),dt=Fe,ft=y.createContext(null),pt=({...e})=>(0,Q.jsx)(ft.Provider,{value:{name:e.name},children:(0,Q.jsx)(he,{...e})}),mt=y.createContext(null),ht=()=>{let e=y.useContext(ft),t=y.useContext(mt),{getFieldState:n,formState:r}=Pe();if(!e)throw Error(`useFormField must be used within <FormField>`);if(!t)throw Error(`useFormField must be used within <FormItem>`);let i=n(e.name,r),{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}},gt=y.forwardRef(({className:e,...t},n)=>{let i=y.useId();return(0,Q.jsx)(mt.Provider,{value:{id:i},children:(0,Q.jsx)(`div`,{ref:n,className:r(`space-y-2`,e),...t})})});gt.displayName=`FormItem`;var _t=y.forwardRef(({className:e,...t},n)=>{let{error:i,formItemId:a}=ht();return(0,Q.jsx)(v,{ref:n,className:r(i&&`text-destructive`,e),htmlFor:a,...t})});_t.displayName=`FormLabel`;var vt=y.forwardRef(({...e},t)=>{let{error:n,formItemId:r,formDescriptionId:a,formMessageId:o}=ht();return(0,Q.jsx)(i,{ref:t,id:r,"aria-describedby":n?`${a} ${o}`:`${a}`,"aria-invalid":!!n,...e})});vt.displayName=`FormControl`;var yt=y.forwardRef(({className:e,...t},n)=>{let{formDescriptionId:i}=ht();return(0,Q.jsx)(`p`,{ref:n,id:i,className:r(`text-sm text-muted-foreground`,e),...t})});yt.displayName=`FormDescription`;var bt=y.forwardRef(({className:e,children:t,...n},i)=>{let{error:a,formMessageId:o}=ht(),s=a?String(a.message??``):t;return s?(0,Q.jsx)(`p`,{ref:i,id:o,className:r(`text-sm font-medium text-destructive`,e),...n,children:s}):null});bt.displayName=`FormMessage`;var xt=e=>e==null||typeof e==`string`&&e.trim()===``,St=(e,t)=>e===t?!0:e==null||t==null?!1:e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():typeof e==`number`&&typeof t==`string`?String(e)===t:typeof e==`string`&&typeof t==`number`?e===String(t):typeof e==`boolean`&&typeof t==`string`&&String(e)===t;function Ct(e,t){if(!e)return!0;let n=t[e.field],r=xt(n);if(e.defaultWhenEmpty&&r)return!0;let i=!1;return`equals`in e&&e.equals!==void 0&&(i=!0,St(n,e.equals))||`notEquals`in e&&e.notEquals!==void 0&&(i=!0,!St(n,e.notEquals))||e.in&&e.in.length>0&&(i=!0,e.in.some(e=>St(n,e)))||e.notIn&&e.notIn.length>0&&(i=!0,!e.notIn.some(e=>St(n,e)))||e.isEmpty!==void 0&&(i=!0,e.isEmpty===r)?!0:!i}var wt=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Tt=/^https?:\/\/.+/i,Et=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,$=e=>e==null||typeof e==`string`&&e.trim()===``;function Dt(e,t,n){let r=e.label,i=e=>n===`email`?wt.test(e):n===`url`?Tt.test(e):n!==`uuid`||Et.test(e),a=n===`email`?`validation:invalidEmail`:n===`url`?`validation:invalidUrl`:n===`uuid`?`validation:invalidUuid`:null;return l([d(),f(),h()]).transform(e=>typeof e==`string`?e:e==null?``:String(e)).superRefine((n,o)=>{if(n.trim()===``){e.isRequired&&o.addIssue({code:`custom`,message:t(`validation:required`,{label:r})});return}a&&!i(n)&&o.addIssue({code:`custom`,message:t(a,{label:r})})}).transform(e=>e.trim()===``?null:e)}function Ot(e,t,n=!1){let r=e.label;return c().superRefine((i,a)=>{if($(i)){e.isRequired&&a.addIssue({code:`custom`,message:t(`validation:required`,{label:r})});return}let o=typeof i==`number`?i:Number(i);if(!Number.isFinite(o)){a.addIssue({code:`custom`,message:t(`validation:invalidNumber`,{label:r})});return}n&&!Number.isInteger(o)&&a.addIssue({code:`custom`,message:t(`validation:invalidInteger`,{label:r})})}).transform(e=>{if($(e))return null;let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:null})}function kt(e,t){return s(e=>typeof e==`boolean`?e:!!e,p())}function At(e,t){let n=e.label;return l([d(),g(),f(),h()]).superRefine((r,i)=>{if($(r)){e.isRequired&&i.addIssue({code:`custom`,message:t(`validation:required`,{label:n})});return}let a=r instanceof Date?r:new Date(String(r));Number.isNaN(a.getTime())&&i.addIssue({code:`custom`,message:t(`validation:invalidDate`,{label:n})})}).transform(e=>$(e)?null:e)}function jt(e,t){let n=e.label;return l([d(),_(),f(),h()]).superRefine((r,i)=>{$(r)&&e.isRequired&&i.addIssue({code:`custom`,message:t(`validation:required`,{label:n})})}).transform(e=>$(e)?null:e)}function Mt(e,t){let n=e.label;return s(e=>{if(e==null)return[];let t=Array.isArray(e)?e:[e],n=[];for(let e of t)if(Array.isArray(e))for(let t of e)t!=null&&t!==``&&n.push(t);else e!=null&&e!==``&&n.push(e);return n},a(l([d(),_()]))).superRefine((r,i)=>{e.isRequired&&r.length===0&&i.addIssue({code:`custom`,message:t(`validation:emptySelection`,{label:n})})})}function Nt(e,t){return e.isArray?Mt(e,t):Dt(e,t)}function Pt(e,t){let n=e.label,r=new Set((e.availableValues??[]).map(e=>e.value));return l([d(),f(),h()]).transform(e=>e==null?``:String(e)).superRefine((i,a)=>{if(i===``){e.isRequired&&a.addIssue({code:`custom`,message:t(`validation:required`,{label:n})});return}r.has(i)||a.addIssue({code:`custom`,message:t(`validation:notInList`,{label:n})})}).transform(e=>e===``?null:e)}function Ft(e,t){let n=e.label;return c().superRefine((r,i)=>{(r==null||r===``)&&e.isRequired&&i.addIssue({code:`custom`,message:t(`validation:required`,{label:n})})}).transform(e=>e===``?null:e)}function It(e,t){let n=e.label;return s(e=>{if(e==null)return[];let t=Array.isArray(e)?e:[e],n=[];for(let e of t)if(e!=null&&e!==``){if(typeof e==`string`||typeof e==`number`){n.push({id:String(e)});continue}if(typeof e==`object`){let t=e,r=t.id??t.value;if(r==null||r===``)continue;n.push({...t,id:String(r)})}}return n},a(m(d(),c()))).superRefine((r,i)=>{e.isRequired&&r.length===0&&i.addIssue({code:`custom`,message:t(`validation:emptySelection`,{label:n})})})}function Lt(e,t){if(e.type===`m2m`)return It(e,t);if(e.availableValues&&e.availableValues.length>0)return Pt(e,t);if(e.reference)return e.isArray?Mt(e,t):jt(e,t);switch(e.type){case`boolean`:return kt(e,t);case`number`:case`float`:case`currency`:case`money`:return Ot(e,t,!1);case`integer`:return Ot(e,t,!0);case`date`:case`datetime`:case`datetime-local`:return At(e,t);case`email`:return Dt(e,t,`email`);case`url`:return Dt(e,t,`url`);case`uuid`:return Dt(e,t,`uuid`);case`json`:return Ft(e,t);case`string`:case`text`:case`textarea`:case`password`:case`richtext`:case`color`:case`file`:return Nt(e,t);default:return Dt(e,t)}}function Rt(e,t,n){let r=Lt(e,t);return!e.showWhen||!n?r:u().superRefine((t,i)=>{if(!Ct(e.showWhen,n()))return;let a=r.safeParse(t);if(!a.success)for(let e of a.error.issues)i.addIssue({...e})}).transform(t=>{if(!Ct(e.showWhen,n()))return t;let i=r.safeParse(t);return i.success?i.data:t})}function zt(e,t,n){let r={};for(let i of e)r[i.path]=Rt(i,t,n);return o(r)}function Bt(e){return e.type===`boolean`?!1:e.type===`json`?null:e.isArray?[]:``}var Vt=(e,t,n)=>{if(e&&`reportValidity`in e){let r=F(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},Ht=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?Vt(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>Vt(t,n,e))}},Ut=(e,t)=>{t.shouldUseNativeValidation&&Ht(e,t);let n={};for(let r in e){let i=F(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(Wt(t.names||Object.keys(e),r)){let e=Object.assign({},F(n,r));R(e,`root`,a),R(n,r,e)}else R(n,r,a)}return n},Wt=(e,t)=>{let n=Gt(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>Gt(e).match(`^${n}\\.\\d+`))};function Gt(e){return e.replace(/\[(\d+)]/g,`.$1`).replace(/[[\]]/g,``)}function Kt(){return Kt=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},Kt.apply(null,arguments)}function qt(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}function Jt(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]=xe(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()}return n}function Yt(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(Kt({},t,{path:[].concat(r.path,t.path)}))})}),t){var c=n[o].types,l=c&&c[r.code];n[o]=xe(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()};e.length;)r();return n}function Xt(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(qt(function(){function i(e){return a.shouldUseNativeValidation&&Ht({},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:Ut(Yt(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(qt(function(){return Promise.resolve(e[n.mode===`sync`?`parse`:`parseAsync`](r,t)).then(function(e){return a.shouldUseNativeValidation&&Ht({},a),{errors:{},values:n.raw?Object.assign({},r):e}})},function(e){if(function(e){return Array.isArray(e?.issues)}(e))return{values:{},errors:Ut(Jt(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{dt as a,me as c,Ct as i,zt as n,pt as o,Bt as r,ut as s,Xt as t};
|
|
2
|
+
//# sourceMappingURL=zod-2-ubQvxh.js.map
|
|
Binary file
|
|
Binary file
|