@modern-admin/web 0.6.0 → 0.8.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/runtime-config.d.ts +31 -3
- package/dist/config/vite.d.ts +14 -0
- package/dist/config/vite.js +2 -2
- package/dist/lib/index.js +6 -2
- package/dist/lib/runtime-config.d.ts +31 -3
- package/dist/standalone/assets/{action-component-host-8DE4kuUJ.js → action-component-host-BhkBbvy5.js} +1 -2
- package/dist/standalone/assets/action-component-host-BhkBbvy5.js.br +0 -0
- package/dist/standalone/assets/action-component-host-BhkBbvy5.js.gz +0 -0
- package/dist/standalone/assets/{action-page-D6BbXzUo.js → action-page-cwWF8qzs.js} +1 -2
- package/dist/standalone/assets/action-page-cwWF8qzs.js.br +0 -0
- package/dist/standalone/assets/action-page-cwWF8qzs.js.gz +0 -0
- package/dist/standalone/assets/{ai-assistant-widget-BORa8_hT.js → ai-assistant-widget-DaFf7V1n.js} +1 -2
- package/dist/standalone/assets/ai-assistant-widget-DaFf7V1n.js.br +0 -0
- package/dist/standalone/assets/ai-assistant-widget-DaFf7V1n.js.gz +0 -0
- package/dist/standalone/assets/arrow-left-yVCaEJJu.js +1 -2
- package/dist/standalone/assets/audit-log-page-mc2OI-N8.js +1 -0
- package/dist/standalone/assets/audit-log-page-mc2OI-N8.js.br +0 -0
- package/dist/standalone/assets/audit-log-page-mc2OI-N8.js.gz +0 -0
- package/dist/standalone/assets/badge-CdW_Z0lB.js +1 -2
- package/dist/standalone/assets/bot-CuDPD_ZU.js +1 -2
- package/dist/standalone/assets/{cache-page-CBKj7WFq.js → cache-page-Ddt6pCFn.js} +1 -2
- package/dist/standalone/assets/cache-page-Ddt6pCFn.js.br +0 -0
- package/dist/standalone/assets/cache-page-Ddt6pCFn.js.gz +0 -0
- package/dist/standalone/assets/calendar-p3BEC7Ac.js +1 -0
- package/dist/standalone/assets/calendar-p3BEC7Ac.js.br +0 -0
- package/dist/standalone/assets/calendar-p3BEC7Ac.js.gz +0 -0
- package/dist/standalone/assets/card-BYbadRar.js +1 -2
- package/dist/standalone/assets/card-BYbadRar.js.br +0 -0
- package/dist/standalone/assets/card-BYbadRar.js.gz +0 -0
- package/dist/standalone/assets/chart-widget-DFq9o29S.js +1 -0
- package/dist/standalone/assets/chart-widget-DFq9o29S.js.br +0 -0
- package/dist/standalone/assets/chart-widget-DFq9o29S.js.gz +0 -0
- package/dist/standalone/assets/chevrons-up-down-y29_Sm-3.js +1 -2
- package/dist/standalone/assets/circle-alert-D1sKnXtO.js +1 -2
- package/dist/standalone/assets/clock-B9qbSr_k.js +1 -2
- package/dist/standalone/assets/{command-BAXXxf0P.js → command-Cv4kMka4.js} +1 -2
- package/dist/standalone/assets/command-Cv4kMka4.js.br +0 -0
- package/dist/standalone/assets/command-Cv4kMka4.js.gz +0 -0
- package/dist/standalone/assets/copy-5fb4qj-_.js +1 -2
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js +1 -2
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.br +0 -0
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.gz +0 -0
- package/dist/standalone/assets/date-picker-BfxB3e8W.js +1 -0
- package/dist/standalone/assets/date-picker-BfxB3e8W.js.br +0 -0
- package/dist/standalone/assets/date-picker-BfxB3e8W.js.gz +0 -0
- package/dist/standalone/assets/dist-CiXwD0ML.js +1 -2
- 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-DPxQeZn3.js +1 -2
- 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-COXu-_Zv.js → dist-DfV3IWyn.js} +1 -2
- package/dist/standalone/assets/dist-DfV3IWyn.js.br +0 -0
- package/dist/standalone/assets/dist-DfV3IWyn.js.gz +0 -0
- package/dist/standalone/assets/edit-page-VPFbqPNP.js +1 -0
- package/dist/standalone/assets/edit-page-VPFbqPNP.js.br +0 -0
- package/dist/standalone/assets/edit-page-VPFbqPNP.js.gz +0 -0
- package/dist/standalone/assets/ellipsis-BRmOlhsy.js +1 -2
- package/dist/standalone/assets/{empty-DMs98grx.js → empty-BR6YtCo2.js} +1 -2
- package/dist/standalone/assets/empty-BR6YtCo2.js.br +0 -0
- package/dist/standalone/assets/empty-BR6YtCo2.js.gz +0 -0
- package/dist/standalone/assets/file-text-MQF--yeB.js +1 -2
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js +1 -2
- 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/global-search-dialog-B3nZbtR3.js +1 -0
- package/dist/standalone/assets/global-search-dialog-B3nZbtR3.js.br +0 -0
- package/dist/standalone/assets/global-search-dialog-B3nZbtR3.js.gz +0 -0
- package/dist/standalone/assets/{heavy-fields-LnhreUPp.js → heavy-fields-i9EcYH8r.js} +26 -27
- package/dist/standalone/assets/heavy-fields-i9EcYH8r.js.br +0 -0
- package/dist/standalone/assets/heavy-fields-i9EcYH8r.js.gz +0 -0
- package/dist/standalone/assets/{home-page-DiDOzuic.js → home-page-9caZ0Yg1.js} +3 -4
- package/dist/standalone/assets/home-page-9caZ0Yg1.js.br +0 -0
- package/dist/standalone/assets/home-page-9caZ0Yg1.js.gz +0 -0
- package/dist/standalone/assets/hooks-Djo7VZHf.js +185 -0
- package/dist/standalone/assets/hooks-Djo7VZHf.js.br +0 -0
- package/dist/standalone/assets/hooks-Djo7VZHf.js.gz +0 -0
- package/dist/standalone/assets/{icon-registry-s31CNk7M.js → icon-registry-BCvzitKu.js} +1 -2
- package/dist/standalone/assets/icon-registry-BCvzitKu.js.br +0 -0
- package/dist/standalone/assets/icon-registry-BCvzitKu.js.gz +0 -0
- package/dist/standalone/assets/index-SG_6EpY3.js +14 -0
- package/dist/standalone/assets/index-SG_6EpY3.js.br +0 -0
- package/dist/standalone/assets/index-SG_6EpY3.js.gz +0 -0
- package/dist/standalone/assets/info-ChwYoM77.js +1 -2
- package/dist/standalone/assets/{json-editor-BD0UhGOT.js → json-editor-TAtTB6fV.js} +1 -2
- package/dist/standalone/assets/json-editor-TAtTB6fV.js.br +0 -0
- package/dist/standalone/assets/json-editor-TAtTB6fV.js.gz +0 -0
- package/dist/standalone/assets/key-BzJFbNbz.js +1 -2
- package/dist/standalone/assets/key-round-oSqmVdkQ.js +1 -2
- package/dist/standalone/assets/minimize-2-iWv98HjE.js +1 -2
- package/dist/standalone/assets/palette-jgTV28yN.js +1 -2
- package/dist/standalone/assets/pencil-kFOObGrY.js +1 -2
- package/dist/standalone/assets/pipette-roLBCmPv.js +1 -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/plus-D7PHzena.js +1 -2
- package/dist/standalone/assets/property-renderer-KXwrRQgq.js +3 -0
- package/dist/standalone/assets/property-renderer-KXwrRQgq.js.br +0 -0
- package/dist/standalone/assets/property-renderer-KXwrRQgq.js.gz +0 -0
- package/dist/standalone/assets/reference-BibBrgjx.js +1 -0
- package/dist/standalone/assets/reference-BibBrgjx.js.br +0 -0
- package/dist/standalone/assets/reference-BibBrgjx.js.gz +0 -0
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js +1 -2
- package/dist/standalone/assets/{revisions-button-Csueldv_.js → revisions-button-B6PmW0BY.js} +1 -2
- package/dist/standalone/assets/revisions-button-B6PmW0BY.js.br +0 -0
- package/dist/standalone/assets/revisions-button-B6PmW0BY.js.gz +0 -0
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js +1 -2
- 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/rotate-ccw-AB1VcvbK.js +1 -2
- package/dist/standalone/assets/save-BkkrgP5Q.js +1 -2
- package/dist/standalone/assets/schemas-ByMQmMCS.js +1 -2
- package/dist/standalone/assets/schemas-ByMQmMCS.js.br +0 -0
- package/dist/standalone/assets/schemas-ByMQmMCS.js.gz +0 -0
- package/dist/standalone/assets/{select-BOe2daO9.js → select-Bs49X1wg.js} +1 -2
- package/dist/standalone/assets/select-Bs49X1wg.js.br +0 -0
- package/dist/standalone/assets/select-Bs49X1wg.js.gz +0 -0
- package/dist/standalone/assets/send-Bzb_4uMT.js +1 -2
- package/dist/standalone/assets/settings-page-CSb9z_qM.js +1 -0
- package/dist/standalone/assets/settings-page-CSb9z_qM.js.br +0 -0
- package/dist/standalone/assets/settings-page-CSb9z_qM.js.gz +0 -0
- package/dist/standalone/assets/{show-page-CDgUXhsx.js → show-page-DsBH63Hr.js} +1 -2
- package/dist/standalone/assets/show-page-DsBH63Hr.js.br +0 -0
- package/dist/standalone/assets/show-page-DsBH63Hr.js.gz +0 -0
- package/dist/standalone/assets/sparkles-1tT0H4n4.js +1 -2
- package/dist/standalone/assets/square-pen-ZvVEwkzw.js +1 -2
- package/dist/standalone/assets/table-RI-lM4fw.js +1 -2
- package/dist/standalone/assets/table-RI-lM4fw.js.br +0 -0
- package/dist/standalone/assets/table-RI-lM4fw.js.gz +0 -0
- package/dist/standalone/assets/{tabs-Bj4gQaH2.js → tabs-XOuUmhl0.js} +1 -2
- package/dist/standalone/assets/tabs-XOuUmhl0.js.br +0 -0
- package/dist/standalone/assets/tabs-XOuUmhl0.js.gz +0 -0
- package/dist/standalone/assets/textarea-C2w7TG3h.js +1 -2
- package/dist/standalone/assets/trash-2-BIJVpWxv.js +1 -2
- package/dist/standalone/assets/triangle-alert-yljVpQCM.js +1 -2
- package/dist/standalone/assets/undo-2-CnH3ScKE.js +1 -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/upload-DrfB-4bU.js +1 -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/use-dashboard-charts-D7-ctwCE.js +1 -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/{useQueries-DNUnShBb.js → useQueries-BIIIiVKJ.js} +1 -2
- package/dist/standalone/assets/useQueries-BIIIiVKJ.js.br +0 -0
- package/dist/standalone/assets/useQueries-BIIIiVKJ.js.gz +0 -0
- package/dist/standalone/assets/{user-directory-BvmDzxsG.js → user-directory-Cs4iA6fu.js} +2 -3
- package/dist/standalone/assets/user-directory-Cs4iA6fu.js.br +0 -0
- package/dist/standalone/assets/user-directory-Cs4iA6fu.js.gz +0 -0
- package/dist/standalone/assets/uuid-DLSnbsz2.js +1 -2
- package/dist/standalone/assets/wand-sparkles-DwseTI5T.js +1 -2
- package/dist/standalone/assets/wizard-create-page-px1E35D5.js +1 -0
- package/dist/standalone/assets/wizard-create-page-px1E35D5.js.br +0 -0
- package/dist/standalone/assets/wizard-create-page-px1E35D5.js.gz +0 -0
- package/dist/standalone/assets/x-c-gfVPJa.js +1 -2
- package/dist/standalone/assets/zap-BxPAEPtJ.js +1 -2
- package/dist/standalone/assets/zod-CL5c4fuD.js +1 -0
- package/dist/standalone/assets/zod-CL5c4fuD.js.br +0 -0
- package/dist/standalone/assets/zod-CL5c4fuD.js.gz +0 -0
- package/dist/standalone/index.html +6 -6
- package/dist/standalone/index.html.br +0 -0
- package/dist/standalone/index.html.gz +0 -0
- package/package.json +6 -5
- package/src/app.tsx +4 -0
- package/src/runtime-config.ts +31 -3
- package/src/vite.ts +16 -1
- package/dist/lib/app.d.ts.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/mount.d.ts.map +0 -1
- package/dist/lib/runtime-config.d.ts.map +0 -1
- 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-8DE4kuUJ.js.map +0 -1
- 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-D6BbXzUo.js.map +0 -1
- 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-BORa8_hT.js.map +0 -1
- package/dist/standalone/assets/arrow-left-yVCaEJJu.js.map +0 -1
- package/dist/standalone/assets/audit-log-page-uHj9GWfi.js +0 -2
- 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-uHj9GWfi.js.map +0 -1
- package/dist/standalone/assets/badge-CdW_Z0lB.js.map +0 -1
- package/dist/standalone/assets/bot-CuDPD_ZU.js.map +0 -1
- 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-CBKj7WFq.js.map +0 -1
- package/dist/standalone/assets/calendar-BuLRvNBg.js +0 -2
- 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 +0 -1
- package/dist/standalone/assets/card-BYbadRar.js.map +0 -1
- package/dist/standalone/assets/chart-widget-Bfk_mvm2.js +0 -2
- 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-Bfk_mvm2.js.map +0 -1
- package/dist/standalone/assets/chevrons-up-down-y29_Sm-3.js.map +0 -1
- package/dist/standalone/assets/circle-alert-D1sKnXtO.js.map +0 -1
- package/dist/standalone/assets/clock-B9qbSr_k.js.map +0 -1
- 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 +0 -1
- package/dist/standalone/assets/copy-5fb4qj-_.js.map +0 -1
- package/dist/standalone/assets/createLucideIcon-QE2kj6ru.js.map +0 -1
- package/dist/standalone/assets/date-picker-Bxv-yrWf.js +0 -2
- 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-Bxv-yrWf.js.map +0 -1
- 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 +0 -1
- package/dist/standalone/assets/dist-CiXwD0ML.js.map +0 -1
- package/dist/standalone/assets/dist-DPxQeZn3.js.map +0 -1
- package/dist/standalone/assets/edit-page-Dm638D2J.js +0 -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-Dm638D2J.js.map +0 -1
- package/dist/standalone/assets/ellipsis-BRmOlhsy.js.map +0 -1
- 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 +0 -1
- package/dist/standalone/assets/file-text-MQF--yeB.js.map +0 -1
- package/dist/standalone/assets/floating-layer-BcTp2AMB.js.map +0 -1
- package/dist/standalone/assets/global-search-dialog-DxwxFDO5.js +0 -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-DxwxFDO5.js.map +0 -1
- 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 +0 -1
- 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 +0 -1
- package/dist/standalone/assets/hooks-BiOfAnEq.js +0 -186
- 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 +0 -1
- 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 +0 -1
- package/dist/standalone/assets/index-CASCzvYu.js +0 -15
- 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 +0 -1
- package/dist/standalone/assets/info-ChwYoM77.js.map +0 -1
- 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 +0 -1
- package/dist/standalone/assets/key-BzJFbNbz.js.map +0 -1
- package/dist/standalone/assets/key-round-oSqmVdkQ.js.map +0 -1
- package/dist/standalone/assets/minimize-2-iWv98HjE.js.map +0 -1
- package/dist/standalone/assets/palette-jgTV28yN.js.map +0 -1
- package/dist/standalone/assets/pencil-kFOObGrY.js.map +0 -1
- package/dist/standalone/assets/pipette-roLBCmPv.js.map +0 -1
- package/dist/standalone/assets/plus-D7PHzena.js.map +0 -1
- package/dist/standalone/assets/property-renderer-ClrVnSny.js +0 -4
- 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 +0 -1
- package/dist/standalone/assets/reference-BMbhUBHD.js +0 -2
- 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-BMbhUBHD.js.map +0 -1
- package/dist/standalone/assets/refresh-cw-Cm9YiHGV.js.map +0 -1
- 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-Csueldv_.js.map +0 -1
- package/dist/standalone/assets/richtext-render-DaiNQPjZ.js.map +0 -1
- package/dist/standalone/assets/rotate-ccw-AB1VcvbK.js.map +0 -1
- package/dist/standalone/assets/save-BkkrgP5Q.js.map +0 -1
- package/dist/standalone/assets/schemas-ByMQmMCS.js.map +0 -1
- 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 +0 -1
- package/dist/standalone/assets/send-Bzb_4uMT.js.map +0 -1
- package/dist/standalone/assets/settings-page-BmphreWj.js +0 -2
- 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-BmphreWj.js.map +0 -1
- 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-CDgUXhsx.js.map +0 -1
- package/dist/standalone/assets/sparkles-1tT0H4n4.js.map +0 -1
- package/dist/standalone/assets/square-pen-ZvVEwkzw.js.map +0 -1
- package/dist/standalone/assets/table-RI-lM4fw.js.map +0 -1
- 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 +0 -1
- package/dist/standalone/assets/textarea-C2w7TG3h.js.map +0 -1
- package/dist/standalone/assets/trash-2-BIJVpWxv.js.map +0 -1
- package/dist/standalone/assets/triangle-alert-yljVpQCM.js.map +0 -1
- package/dist/standalone/assets/undo-2-CnH3ScKE.js.map +0 -1
- package/dist/standalone/assets/upload-DrfB-4bU.js.map +0 -1
- package/dist/standalone/assets/use-dashboard-charts-D7-ctwCE.js.map +0 -1
- 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 +0 -1
- 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-BvmDzxsG.js.map +0 -1
- package/dist/standalone/assets/uuid-DLSnbsz2.js.map +0 -1
- package/dist/standalone/assets/wand-sparkles-DwseTI5T.js.map +0 -1
- package/dist/standalone/assets/wizard-create-page-D4a8FnmI.js +0 -2
- 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-D4a8FnmI.js.map +0 -1
- package/dist/standalone/assets/x-c-gfVPJa.js.map +0 -1
- package/dist/standalone/assets/zap-BxPAEPtJ.js.map +0 -1
- package/dist/standalone/assets/zod-2-ubQvxh.js +0 -2
- 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 +0 -1
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import{a as e,n as t}from"./createLucideIcon-QE2kj6ru.js";import{C as n,S as r,_ as i,a,d as o,f as s,h as c,i as l,l as u,o as d,p as f,r as p,x as m,y as h}from"./floating-layer-BcTp2AMB.js";import{i as g,n as _,r as v,t as y}from"./dist-DPxQeZn3.js";import{$ as b,B as ee,G as x,H as S,J as te,K as ne,Q as C,U as w,V as T,W as E,X as D,Y as O,Z as re,at as ie,et as ae,it as k,ot as A,q as j,rt as M}from"./hooks-
|
|
2
|
-
//# sourceMappingURL=useQueries-DNUnShBb.js.map
|
|
1
|
+
import{a as e,n as t}from"./createLucideIcon-QE2kj6ru.js";import{C as n,S as r,_ as i,a,d as o,f as s,h as c,i as l,l as u,o as d,p as f,r as p,x as m,y as h}from"./floating-layer-BcTp2AMB.js";import{i as g,n as _,r as v,t as y}from"./dist-DPxQeZn3.js";import{$ as b,B as ee,G as x,H as S,J as te,K as ne,Q as C,U as w,V as T,W as E,X as D,Y as O,Z as re,at as ie,et as ae,it as k,ot as A,q as j,rt as M}from"./hooks-Djo7VZHf.js";var N=e(t(),1),P=n(),F=Object.defineProperty,I=(e,t)=>F(e,`name`,{value:t,configurable:!0}),L=`Popover`,[R,oe]=r(L,[g]),z=g(),[B,V]=R(L),H=I(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:s=!1}=e,l=z(t),u=N.useRef(null),[d,f]=N.useState(!1),[p,m]=c({prop:r,defaultProp:i??!1,onChange:a,caller:L});return(0,P.jsx)(v,{...l,children:(0,P.jsx)(B,{scope:t,contentId:o(),triggerRef:u,open:p,onOpenChange:m,onOpenToggle:N.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:d,onCustomAnchorAdd:N.useCallback(()=>f(!0),[]),onCustomAnchorRemove:N.useCallback(()=>f(!1),[]),modal:s,children:n})})},`Popover`),U=`PopoverAnchor`,W=N.forwardRef(I(function(e,t){let{__scopePopover:n,...r}=e,i=V(U,n),a=z(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return N.useEffect(()=>(o(),()=>s()),[o,s]),(0,P.jsx)(y,{...a,...r,ref:t})},`PopoverAnchor`)),G=`PopoverTrigger`,K=N.forwardRef(I(function(e,t){let{__scopePopover:n,...r}=e,a=V(G,n),o=z(n),s=m(t,a.triggerRef),c=(0,P.jsx)(f.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":X(a.open),...r,ref:s,onClick:i(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?c:(0,P.jsx)(y,{asChild:!0,...o,children:c})},`PopoverTrigger`)),q=`PopoverPortal`,[se,ce]=R(q,{forceMount:void 0}),le=I(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,o=V(q,t);return(0,P.jsx)(se,{scope:t,forceMount:n,children:(0,P.jsx)(s,{present:n||o.open,children:(0,P.jsx)(a,{asChild:!0,container:i,children:r})})})},`PopoverPortal`),J=`PopoverContent`,ue=N.forwardRef(I(function(e,t){let n=ce(J,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=V(J,e.__scopePopover);return(0,P.jsx)(s,{present:r||a.open,children:a.modal?(0,P.jsx)(fe,{...i,ref:t}):(0,P.jsx)(pe,{...i,ref:t})})},`PopoverContent`)),de=h(`PopoverContent.RemoveScroll`),fe=N.forwardRef(I(function(e,t){let n=V(J,e.__scopePopover),r=N.useRef(null),a=m(t,r),o=N.useRef(!1);return N.useEffect(()=>{let e=r.current;if(e)return k(e)},[]),(0,P.jsx)(M,{as:de,allowPinchZoom:!0,children:(0,P.jsx)(Y,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:i(e.onCloseAutoFocus,e=>{e.preventDefault(),o.current||n.triggerRef.current?.focus()}),onPointerDownOutside:i(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;o.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:i(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})},`PopoverContentModal`)),pe=N.forwardRef(I(function(e,t){let n=V(J,e.__scopePopover),r=N.useRef(!1),i=N.useRef(!1);return(0,P.jsx)(Y,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`PopoverContentNonModal`)),Y=N.forwardRef(I(function(e,t){let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...f}=e,p=V(J,n),m=z(n);return A(),(0,P.jsx)(ie,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,P.jsx)(d,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>p.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,P.jsx)(_,{"data-state":X(p.open),role:`dialog`,id:p.contentId,...m,...f,ref:t,style:{...f.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})},`PopoverContentImpl`));function X(e){return e?`open`:`closed`}I(X,`getState`);var me=H,he=W,ge=K,_e=le,Z=ue,ve=me,ye=ge,be=he,Q=N.forwardRef(({className:e,align:t=`center`,sideOffset:n=4,collisionPadding:r,container:i,...a},o)=>{let s=p(),c=l();return(0,P.jsx)(_e,{container:i??s,children:(0,P.jsx)(Z,{ref:o,align:t,sideOffset:n,collisionPadding:r??c,className:u(`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`,e),...a})})});Q.displayName=Z.displayName;function $(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function xe(e,t,n){let r=e.slice(0);return r[t]=n,r}var Se=class extends ae{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,D.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!b(e,n)});!o&&!s||(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&($(e,n).forEach(e=>{e.destroy()}),$(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){return t.map((n,r)=>{let i=e[r];return n.defaultedQueryOptions.notifyOnChangeProps?i:n.observer.trackResult(i,e=>{t.forEach(t=>{t.observer.trackProp(e)})})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(!this.#a||this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=C(this.#a,t(e))),this.#a}return e}#f(){return this.#r?.combine!==void 0&&this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new O(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=xe(this.#t,n,t),this.#h())}#h(){if(this.hasListeners()){let e=this.#u(this.#t,this.#l),t=this.#f(),n=this.#a,r=t?n:this.#d(e,this.#r?.combine);(t||n!==r)&&D.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}};function Ce({queries:e,...t},n){let r=te(n),i=j(),a=ne(),o=N.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:`optimistic`,t}),[e,r,i]);o.forEach(e=>{ee(e);let t=r.getQueryCache().get(e.queryHash);w(e,a,t)}),x(a);let[s]=N.useState(()=>new Se(r,o,t)),[c,l,u]=s.getOptimisticResult(o,t.combine),d=!i&&t.subscribed!==!1;N.useSyncExternalStore(N.useCallback(e=>d?s.subscribe(D.batchCalls(e)):re,[s,d]),()=>s.getCurrentResult(),()=>s.getCurrentResult()),N.useEffect(()=>{s.setQueries(o,t)},[o,t,s]);let f=c.some((e,t)=>S(o[t],e))?c.flatMap((e,t)=>{let n=o[t];if(n&&S(n,e)){let e=new O(r,n);return T(n,e,a)}return[]}):[];if(f.length>0)throw Promise.all(f);let p=c.find((e,t)=>{let n=o[t];return n&&E({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(p?.error)throw p.error;return l(u())}export{ye as a,Q as i,ve as n,be as r,Ce as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,5 +1,4 @@
|
|
|
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-
|
|
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-Djo7VZHf.js";import{t as i}from"./useQueries-BIIIiVKJ.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
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
|
-
`),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-BvmDzxsG.js.map
|
|
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};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
function e(){let e=Date.now(),t=globalThis.crypto.getRandomValues(new Uint8Array(10)),n=new Uint8Array(16);n[0]=e/1099511627776&255,n[1]=e/4294967296&255,n[2]=e>>>24&255,n[3]=e>>>16&255,n[4]=e>>>8&255,n[5]=e&255,n.set(t,6),n[6]=n[6]&15|112,n[8]=n[8]&63|128;let r=[];for(let e=0;e<16;e++)r.push(n[e].toString(16).padStart(2,`0`));let i=r.join(``);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}export{e as t};
|
|
2
|
-
//# sourceMappingURL=uuid-DLSnbsz2.js.map
|
|
1
|
+
function e(){let e=Date.now(),t=globalThis.crypto.getRandomValues(new Uint8Array(10)),n=new Uint8Array(16);n[0]=e/1099511627776&255,n[1]=e/4294967296&255,n[2]=e>>>24&255,n[3]=e>>>16&255,n[4]=e>>>8&255,n[5]=e&255,n.set(t,6),n[6]=n[6]&15|112,n[8]=n[8]&63|128;let r=[];for(let e=0;e<16;e++)r.push(n[e].toString(16).padStart(2,`0`));let i=r.join(``);return`${i.slice(0,8)}-${i.slice(8,12)}-${i.slice(12,16)}-${i.slice(16,20)}-${i.slice(20)}`}export{e as t};
|
|
@@ -1,2 +1 @@
|
|
|
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
|
|
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};
|
|
@@ -0,0 +1 @@
|
|
|
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{N as s,T as c,s as l}from"./hooks-Djo7VZHf.js";import{c as u,l as d}from"./action-component-host-BhkBbvy5.js";import{a as f,i as p,t as m}from"./card-BYbadRar.js";import{a as h,c as g,i as _,n as v,o as y,r as b,s as x,t as S}from"./zod-CL5c4fuD.js";import{u as C}from"./property-renderer-KXwrRQgq.js";import{Dt as w,Tt as T,l as E,o as D,wt as O}from"./index-SG_6EpY3.js";var k=e(t(),1),A=n();function j({steps:e,properties:t,resourceId:n,control:s,trigger:c,onSubmit:l,onCancel:u,isSubmitting:d=!1,submitError:f,labels:p={}}){let m=p.back??`Back`,g=p.next??`Next`,_=p.submit??`Create`,v=p.cancel??`Cancel`,y=p.stepOf??`Step {current} of {total}`,[b,x]=k.useState(0),S=k.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]),C=e.length,E=b===0,D=b===C-1,j=async()=>{let e=(S[b]??[]).map(e=>e.path);(e.length===0||await c(e))&&x(e=>Math.min(e+1,C-1))},N=e[b],P=S[b]??[],F=y.replace(`{current}`,String(b+1)).replace(`{total}`,String(C));return(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`div`,{className:`px-6 pt-6 pb-5`,children:[(0,A.jsx)(`div`,{className:`flex w-full max-w-xl items-start mx-auto`,children:e.map((t,n)=>(0,A.jsxs)(k.Fragment,{children:[(0,A.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center`,children:[(0,A.jsx)(`div`,{className:r(`flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors`,n<b&&`border-primary bg-primary text-primary-foreground`,n===b&&`border-primary bg-background text-primary`,n>b&&`border-border bg-background text-muted-foreground`),children:n<b?(0,A.jsx)(w,{className:`size-3.5`}):n+1}),(0,A.jsx)(`span`,{className:r(`mt-1.5 hidden max-w-[6rem] text-center text-xs leading-tight sm:block`,n===b?`font-medium text-foreground`:n<b?`text-primary`:`text-muted-foreground`),children:t.label})]}),n<e.length-1&&(0,A.jsx)(`div`,{className:r(`mx-2 mt-3.5 h-0.5 flex-1 transition-colors`,n<b?`bg-primary`:`bg-border`)})]},n))}),(0,A.jsxs)(`p`,{className:`mt-2 text-center text-xs text-muted-foreground sm:hidden`,children:[F,N.label?` · ${N.label}`:``]})]}),N.description&&(0,A.jsx)(`p`,{className:`px-6 pb-2 text-sm text-muted-foreground`,children:N.description}),(0,A.jsx)(`div`,{className:`gap-4 px-6 pb-4 [column-fill:_balance] md:columns-2`,children:P.map(e=>(0,A.jsx)(M,{control:s,property:e,children:(0,A.jsx)(h,{control:s,property:e,disabled:d,resourceId:n,idPrefix:`wizard-field`})},e.path))}),(0,A.jsxs)(`div`,{className:`flex items-center justify-between border-t border-border px-6 py-4`,children:[(0,A.jsx)(`div`,{children:f&&(0,A.jsx)(`span`,{className:`text-sm text-destructive`,children:f})}),(0,A.jsxs)(`div`,{className:`flex gap-2`,children:[E?(0,A.jsxs)(o,{type:`button`,variant:`ghost`,onClick:u,disabled:d,children:[(0,A.jsx)(a,{className:`size-4`}),v]}):(0,A.jsxs)(o,{type:`button`,variant:`outline`,onClick:()=>x(e=>e-1),disabled:d,children:[(0,A.jsx)(T,{className:`size-4`}),m]}),D?(0,A.jsxs)(o,{type:`button`,onClick:l,disabled:d,children:[(0,A.jsx)(i,{className:`size-4`}),_]}):(0,A.jsxs)(o,{type:`button`,onClick:()=>void j(),disabled:d,children:[g,(0,A.jsx)(O,{className:`size-4`})]})]})]})]})}j.displayName=`WizardForm`;function M({control:e,property:t,children:n}){let r=t.showWhen,i=g({control:e,name:r?.field??t.path});return r?_(r,{[r.field]:i})?(0,A.jsx)(A.Fragment,{children:n}):null:(0,A.jsx)(A.Fragment,{children:n})}function N({resourceId:e,steps:t,labels:n}){let r=c(e),i=l(e),a=D(),{t:o,locale:h}=s(),g=E(),_=k.useMemo(()=>r?C(r.properties,`edit`,r.propertyOrder?.edit).filter(e=>!e.isDisabled):[],[r]),w=k.useRef(()=>({})),T=k.useMemo(()=>v(_,o,()=>w.current()),[_,h]),O=k.useMemo(()=>{let e={};for(let t of _)e[t.path]=b(t);return e},[_]),M=x({resolver:S(T),defaultValues:O});w.current=M.getValues,k.useEffect(()=>{M.reset(O)},[O]);let[N,P]=k.useState(null),F=async t=>{P(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`;M.setError(e,{type:`server`,message:n})}n.record.baseError&&P(String(n.record.baseError)),g.error({key:`toast:validationFailed`});return}g.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);P(t),g.error({key:`toast:createFailed`},{description:t})}},I=()=>{M.handleSubmit(F,()=>{g.error({key:`toast:validationFailed`})})()};if(!r)return(0,A.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=[d(o(`common:home`)),{label:r.name,to:{name:`list`,resourceId:e}},{label:o(`common:new`)}];return(0,A.jsxs)(`div`,{className:`flex min-h-full flex-col gap-4`,children:[(0,A.jsx)(u,{items:R}),(0,A.jsxs)(m,{className:`flex-1`,children:[(0,A.jsx)(p,{children:(0,A.jsx)(f,{className:`truncate`,children:o(`common:newRecord`,{name:r.name})})}),(0,A.jsx)(y,{...M,children:(0,A.jsx)(j,{steps:t,properties:_,resourceId:e,control:M.control,trigger:M.trigger,onSubmit:I,onCancel:()=>a({name:`list`,resourceId:e}),isSubmitting:M.formState.isSubmitting,submitError:N,labels:L})})]})]})}export{N as ResourceWizardCreatePage};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-QE2kj6ru.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
|
|
2
|
-
//# sourceMappingURL=x-c-gfVPJa.js.map
|
|
1
|
+
import{t as e}from"./createLucideIcon-QE2kj6ru.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
|
|
@@ -1,2 +1 @@
|
|
|
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
|
|
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};
|
|
@@ -0,0 +1 @@
|
|
|
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{s as a}from"./empty-BR6YtCo2.js";import{n as o,r as s}from"./property-renderer-KXwrRQgq.js";import{a as c,d as l,f as u,g as d,h as f,i as p,m,n as h,o as g,p as _,r as v,s as y,u as b}from"./schemas-ByMQmMCS.js";import{C as x,S,et as C,x as w}from"./index-SG_6EpY3.js";var T=e(t(),1),E=e=>e.type===`checkbox`,ee=e=>e.type===`file`,D=e=>e instanceof Date,O=e=>e==null,k=e=>typeof e==`object`,A=e=>!O(e)&&!Array.isArray(e)&&k(e)&&!D(e),te=e=>A(e)&&e.target?E(e.target)?e.target.checked:ee(e.target)?e.target.files:e.target.value:e,ne=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),re=e=>{let t=e.constructor&&e.constructor.prototype;return A(t)&&t.hasOwnProperty(`isPrototypeOf`)},ie=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function j(e){if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(ie&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&!(A(e)&&re(e)))return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=j(e[t]));return r}var M={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},N={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},P={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},ae=`root`,oe=[`__proto__`,`constructor`,`prototype`],se=/^\w*$/,F=e=>se.test(e),I=e=>e===void 0,ce=/[.[\]'"]/,le=e=>e.split(ce).filter(Boolean),L=(e,t,n)=>{if(!t||!A(e))return n;let r=F(t)?[t]:le(t);if(r.some(e=>oe.includes(e)))return n;let i=r.reduce((e,t)=>O(e)?void 0:e[t],e);return I(i)||i===e?I(e[t])?n:e[t]:i},R=e=>typeof e==`boolean`,z=e=>typeof e==`function`,B=(e,t,n)=>{let r=-1,i=F(t)?[t]:le(t),a=i.length,o=a-1;for(;++r<a;){let t=i[r],a=n;if(r!==o){let n=e[t];a=A(n)||Array.isArray(n)?n:isNaN(+i[r+1])?{}:[]}if(oe.includes(t))return;e[t]=a,e=e[t]}},V=T.createContext(null);V.displayName=`HookFormControlContext`;var ue=()=>T.useContext(V),de=(e,t,n,r=!0)=>{let i={};for(let a in e)Object.defineProperty(i,a,{get:()=>{let i=a;return t._proxyFormState[i]!==N.all&&(t._proxyFormState[i]=!r||N.all),n&&(n[i]=!0),e[i]}});return i},H=ie?T.useLayoutEffect:T.useEffect,fe=e=>O(e)||!k(e),U=(e,t)=>t.length===0&&!Array.isArray(e)&&!re(e);function W(e,t,n=new WeakMap){if(e===t)return!0;if(fe(e)||fe(t))return Object.is(e,t);if(D(e)&&D(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(U(e,r)||U(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(D(r)&&D(e)||(A(r)||Array.isArray(r))&&(A(e)||Array.isArray(e))?!W(r,e,n):!Object.is(r,e))return!1}}return!0}function G(){let e=T.useRef(!1),t=T.useRef(void 0);return{resyncIfNeeded:T.useCallback((n,r,i)=>{if(n&&e.current){let e=r();W(t.current,e)||i(e)}e.current=!0},[]),snapshot:T.useCallback((e,n)=>{e&&(t.current=j(n()))},[])}}function pe(e){let t=ue(),{control:n=t,disabled:r,name:i,exact:a}=e||{},[o,s]=T.useState(()=>({...n._formState,defaultValues:n._defaultValues})),c=T.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1}),{resyncIfNeeded:l,snapshot:u}=G();return H(()=>{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]),T.useEffect(()=>{c.current.isValid&&n._setValid(!0)},[n]),T.useMemo(()=>de(o,n,c.current,!1),[o,n])}var K=e=>typeof e==`string`,me=(e,t,n,r,i)=>K(e)?(r&&t.watch.add(e),L(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),L(n,e))):(r&&(t.watchAll=!0),n);function he(e){let t=ue(),{control:n=t,name:r,defaultValue:i,disabled:a,exact:o,compute:s}=e||{},c=T.useRef(i),l=T.useRef(s),u=T.useRef(void 0),d=T.useRef(n),f=T.useRef(r);l.current=s;let[p,m]=T.useState(()=>{let e=n._getWatch(r,c.current);return l.current?l.current(e):e}),h=T.useCallback(e=>{let t=me(r,n._names,e||n._formValues,!1,c.current);return l.current?l.current(t):t},[n._formValues,n._names,r]),g=T.useCallback(e=>{if(!a){let t=me(r,n._names,e||n._formValues,!1,c.current);if(l.current){let e=l.current(t);W(e,u.current)||(m(e),u.current=e)}else m(t)}},[n._formValues,n._names,a,r]),{resyncIfNeeded:_,snapshot:v}=G(),y=T.useRef(g);y.current=g;let b=T.useRef(h);b.current=h,H(()=>{d.current!==n||!W(f.current,r)?(d.current=n,f.current=r,y.current()):_(!a,()=>b.current(),e=>{m(e),u.current=e});let e=n._subscribe({name:r,formState:{values:!0},exact:o,callback:e=>{y.current(e.values)}});return()=>{e(),v(!a,()=>b.current())}},[n,o,r,a,_,v]),T.useEffect(()=>n._removeUnmounted());let x=d.current!==n,S=f.current,C=T.useMemo(()=>{if(a)return null;let e=!x&&!W(S,r);return x||e?h():null},[a,x,r,S,h]);return C===null?p:C}function ge(e){let t=ue(),{name:n,disabled:r,control:i=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,c=ne(i._names.array,n),l=he({control:i,name:n,defaultValue:T.useMemo(()=>L(i._formValues,n,L(i._defaultValues,n,o)),[i,n,o]),exact:s}),u=pe({control:i,name:n,exact:s}),d=T.useRef(e),f=T.useRef(null),p=T.useRef(i.register(n,{...e.rules,value:l,...R(e.disabled)?{disabled:e.disabled}:{}}));d.current=e;let m=T.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!L(u.errors,n)},isDirty:{enumerable:!0,get:()=>!!L(u.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!L(u.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!L(u.validatingFields,n)},error:{enumerable:!0,get:()=>L(u.errors,n)}}),[u,n]),h=T.useCallback(e=>{let t=te(e);return L(i._fields,n)||(p.current=i.register(n,{...d.current.rules,value:t})),p.current.onChange({target:{value:te(e),name:n},type:M.CHANGE})},[n,i]),g=T.useCallback(()=>p.current.onBlur({target:{value:L(i._formValues,n),name:n},type:M.BLUR}),[n,i._formValues]),_=T.useCallback(e=>{e&&(f.current={focus:()=>z(e.focus)&&e.focus(),select:()=>z(e.select)&&e.select(),setCustomValidity:t=>z(e.setCustomValidity)&&e.setCustomValidity(t),reportValidity:()=>z(e.reportValidity)&&e.reportValidity()});let t=L(i._fields,n);t&&t._f&&e&&(t._f.ref=f.current)},[i._fields,n]),v=T.useMemo(()=>({name:n,value:l,...R(r)||u.disabled?{disabled:u.disabled||r}:{},onChange:h,onBlur:g,ref:_}),[n,r,u.disabled,h,g,_,l]);return T.useEffect(()=>{let e=i._options.shouldUnregister||a;p.current=i.register(n,{...d.current.rules,...R(d.current.disabled)?{disabled:d.current.disabled}:{}});let t=(e,t)=>{let n=L(i._fields,e);n&&n._f&&(n._f.mount=t)};if(t(n,!0),e){let e=j(L(a?i._defaultValues:i._options.values||i._defaultValues,n,L(i._options.defaultValues,n,d.current.defaultValue)));B(i._defaultValues,n,e),I(L(i._formValues,n))&&B(i._formValues,n,e)}if(!c&&i.register(n),f.current){let e=L(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]),T.useEffect(()=>{i._setDisabledField({disabled:r,name:n})},[r,n,i]),T.useMemo(()=>({field:v,formState:u,fieldState:m}),[v,u,m])}var _e=e=>e.render(ge(e)),ve=e=>({isOnSubmit:!e||e===N.onSubmit,isOnBlur:e===N.onBlur,isOnChange:e===N.onChange,isOnAll:e===N.all,isOnTouch:e===N.onTouched}),ye=(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},be=(e,t,n,r)=>{for(let i of n||Object.keys(e)){if(i===`_f`)continue;let a=n?L(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(be(a,t))break}else if((A(a)||Array.isArray(a))&&be(a,t))break}}},xe=(e,t,n)=>{let r=L(e,n),i=Array.isArray(r)?r:[];return B(i,ae,t[n]),B(e,n,i),e},q=e=>A(e)&&!Object.keys(e).length,Se=e=>{if(!ie)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},J=e=>e.type===`radio`,Ce=e=>e instanceof RegExp,we=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},Te={value:!1,isValid:!1},Ee={value:!0,isValid:!0},De=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&&!I(e[0].attributes.value)?I(e[0].value)||e[0].value===``?Ee:{value:e[0].value,isValid:!0}:Ee:Te}return Te},Oe={isValid:!1,value:null},ke=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Oe):Oe;function Ae(e,t,n=`validate`){if(K(e)||Array.isArray(e)&&e.every(K)||R(e)&&!e)return{type:n,message:K(e)?e:``,ref:t}}var Y=e=>A(e)&&!Ce(e)?e:{value:e,message:``},je=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=L(n,h);if(!_||t.has(h))return{};let y=s?s[0]:o,b=e=>{if(i&&y.reportValidity){let t=R(e)?``:e||``;s?s.forEach(e=>e.setCustomValidity(t)):y.setCustomValidity(t),y.reportValidity()}},x={},S=J(o),C=E(o),w=S||C,T=(g||ee(o))&&I(o.value)&&I(v)||Se(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,k=we.bind(null,h,r,x),te=(e,t,n,r=P.maxLength,i=P.minLength)=>{let a=e?t:n;x[h]={type:e?r:i,message:a,ref:o,...k(e?r:i,a)}};if(a?!Array.isArray(v)||!v.length:c&&(!w&&(T||O(v))||R(v)&&!v||C&&!De(s).isValid||S&&!ke(s).isValid)){let{value:e,message:t}=K(c)?{value:!!c,message:c}:Y(c);if(e&&(x[h]={type:P.required,message:t,ref:y,...k(P.required,t)},!r))return b(t),x}if(!T&&(!O(d)||!O(f))){let e,t,n=Y(f),i=Y(d);if(!O(v)&&!D(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;O(n.value)||(e=r>n.value),O(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`;K(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),K(i.value)&&v&&(t=s?a(v)<a(i.value):c?v<i.value:r<new Date(i.value))}if((e||t)&&(te(!!e,n.message,i.message,P.max,P.min),!r))return b(x[h].message),x}if((l||u)&&!T&&(K(v)||a&&Array.isArray(v))){let e=Y(l),t=Y(u),n=!O(e.value)&&v.length>+e.value,i=!O(t.value)&&v.length<+t.value;if((n||i)&&(te(n,e.message,t.message),!r))return b(x[h].message),x}if(p&&!T&&K(v)){let{value:e,message:t}=Y(p);if(Ce(e)&&!v.match(e)&&(x[h]={type:P.pattern,message:t,ref:o,...k(P.pattern,t)},!r))return b(t),x}if(m){if(z(m)){let e=Ae(await m(v,n),y);if(e&&(x[h]={...e,...k(P.validate,e.message)},!r))return b(e.message),x}else if(A(m)){let e={};for(let t in m){if(!q(e)&&!r)break;let i=Ae(await m[t](v,n),y,t);i&&(e={...i,...k(t,i.message)},b(i.message),r&&(x[h]=e))}if(!q(e)&&(x[h]={ref:y,...e},!r))return x}}return b(!0),x},Me=e=>Array.isArray(e)?e:[e],Ne=e=>Array.isArray(e)?e.filter(Boolean):[];function Pe(e,t){let n=t.length-1,r=0;for(;r<n;){if(O(e)){e=void 0;break}e=e[t[r]],r++}return e}function Fe(e){for(let t in e)if(e.hasOwnProperty(t)&&!I(e[t]))return!1;return!0}function X(e,t){if(K(t)&&Object.prototype.hasOwnProperty.call(e,t))return delete e[t],e;let n=Array.isArray(t)?t:F(t)?[t]:le(t);if(n.some(e=>oe.includes(String(e))))return e;let r=n.length===1?e:Pe(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(A(r)&&q(r)||Array.isArray(r)&&Fe(r))&&X(e,n.slice(0,-1)),e}var Ie=e=>{let t={};for(let n of Object.keys(e))if(k(e[n])&&e[n]!==null&&!D(e[n])){let r=Ie(e[n]);for(let e of Object.keys(r))t[`${n}.${e}`]=r[e]}else t[n]=e[n];return t},Z=T.createContext(null);Z.displayName=`HookFormContext`;var Le=()=>T.useContext(Z),Re=({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 y=T.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 T.createElement(Z.Provider,{value:y},T.createElement(V.Provider,{value:y.control},e))},ze=()=>{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 Be(e,t){let n={};for(let r in e)if(e.hasOwnProperty(r)){let i=e[r],a=t[r];if(i&&A(i)&&a){let e=Be(i,a);A(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Ve=e=>e.type===`select-multiple`,He=e=>J(e)||E(e),Ue=e=>Se(e)&&e.isConnected;function We(e){return Array.isArray(e)||A(e)}function Ge(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];We(o)&&We(L(t,a))?Ge(o,t,a,r):r.push(a)}return r}var Ke=e=>{for(let t in e)if(z(e[t]))return!0;return!1};function qe(e){return Array.isArray(e)||A(e)&&!Ke(e)}function Je(e){return!!(e&&`_f`in e)}function Ye(e){return Array.isArray(e)?!e.some(e=>!I(e)):!Object.keys(e).length}function Xe(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function Ze(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];qe(i)&&(!Array.isArray(i)||!Je(a))?(t[r]=Array.isArray(i)?[]:{},Ze(i,t[r],a),Ye(t[r])&&Xe(t,r)):I(i)||(t[r]=!0)}return t}function Q(e,t,n,r){n||=Ze(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];qe(a)&&(!Array.isArray(a)||!Je(o))?(I(t)||fe(n[i])?n[i]=Ze(a,Array.isArray(a)?[]:{},o):Q(a,O(t)?{}:t[i],n[i],o),Ye(n[i])&&Xe(n,i)):W(a,t[i])?Xe(n,i):n[i]=!0}return n}var Qe=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>I(e)?e:t?e===``?NaN:e&&+e:n&&K(e)?new Date(e):r?r(e):e;function $e(e){let t=e.ref;return ee(t)?t.files:J(t)?ke(e.refs).value:Ve(t)?[...t.selectedOptions].map(({value:e})=>e):E(t)?De(e.refs).value:Qe(t.value,e)}var et=(e,t,n,r)=>{let i={};for(let n of e){let e=L(t,n);e&&B(i,n,e._f)}return{criteriaMode:n,names:[...e],fields:i,shouldUseNativeValidation:r}},tt=e=>I(e)?e:Ce(e)?e.source:A(e)?Ce(e.value)?e.value.source:e.value:e,nt=`AsyncFunction`,rt=e=>{if(!e||!e.validate)return!1;if(z(e.validate))return e.validate.constructor.name===nt;if(A(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===nt)return!0}return!1},it=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function at(e,t,n){let r=L(e,n);if(r||F(n))return{error:r,name:n};let i=n.split(`.`);for(;i.length;){let r=i.join(`.`),a=L(t,r),o=L(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 ot=(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||N.all))},st=(e,t,n)=>!e||!t||e===t||Me(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),ct=(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,lt=(e,t)=>{let n=L(e,t);!Ne(n).length&&!n?.root&&X(e,t)},ut={mode:N.onSubmit,reValidateMode:N.onChange,shouldFocusError:!0},dt=`form`,ft=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},pt={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function mt(e={}){let t={...ut,...e},n={...j(pt),isLoading:z(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(A(t.defaultValues)||A(t.values))&&j(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:j(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=ve(t.mode),f=ve(t.reValidateMode),p={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},m={...p},h={...m},g={array:ze(),state:ze()},_=0,v=t.criteriaMode===N.all,y=(e,t)=>n=>{clearTimeout(l[e]),l[e]=setTimeout(t,n)},b=async e=>{if(!o.keepIsValid&&!t.disabled&&(m.isValid||h.isValid||e)){let e=++_,i;t.resolver?(i=q((await V()).errors),e===_&&x()):i=await H({fields:r,onlyCheckValid:!0,eventType:M.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},x=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||Array.from(s.mount)).forEach(e=>{e&&(r?B(n.validatingFields,e,r):X(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!q(n.validatingFields)}))},S=()=>{n.dirtyFields=Q(i,a,void 0,r)},C=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){if(o.action=!0,!o.actionArrayLengths.has(e)){let t=L(r,e);o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0)}if(u&&Array.isArray(L(r,e))){let t=s(L(r,e),c.argA,c.argB);l&&B(r,e,t)}if(u&&Array.isArray(L(n.errors,e))){let t=L(n.errors,e),r=t.root,i=s(t,c.argA,c.argB)||t;r&&(i.root=r),l&&B(n.errors,e,i),lt(n.errors,e)}if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(L(n.touchedFields,e))){let t=s(L(n.touchedFields,e),c.argA,c.argB);l&&B(n.touchedFields,e,t)}(m.dirtyFields||h.dirtyFields)&&S(),g.state.next({name:e,isDirty:U(e,i),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else B(a,e,i)},w=(e,t)=>{B(n.errors,e,t),n.errors={...n.errors},g.state.next({errors:n.errors})},T=e=>{n.errors=e,g.state.next({errors:n.errors,isValid:!1})},k=e=>{let t=F(e)?[e]:le(e),n=a,r=i;for(let e=0;e<t.length-1;e++){let i=t[e];if(n=O(n)?n:n[i],r=O(r)?r:r[i],n===null&&r!==null)return!0}return!1},re=e=>{if(!o.actionArrayLengths.size)return!1;let t=F(e)?[e]:le(e),n=a,r=``,i=-1,s=0;for(let e=0;e<t.length;e++){if(O(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},oe=(t,c,l,u)=>{let d=L(r,t);if(d){if(k(t)||re(t))return;let r=I(L(a,t)),f=L(a,t,I(l)?L(i,t):l);I(f)||u&&u.defaultChecked||c?B(a,t,c?f:$e(d._f)):he(t,f),o.mount&&!o.action&&(b(),r&&n.isDirty&&(m.isDirty||h.isDirty)&&(U()||(n.isDirty=!1,g.state.next({...n}))),e.shouldUnregister&&r&&!I(L(a,t))&&ye(t,s)&&(o.watch=!0))}},se=(e,o,s,c,l)=>{let u=!1,d=!1,f={name:e};if(!t.disabled||c===!0){if(!s||c){let t=W(L(i,e),o);(m.isDirty||h.isDirty)&&(d=n.isDirty,n.isDirty=f.isDirty=!t||U(),u=d!==f.isDirty),d=!!L(n.dirtyFields,e),t===n.isDirty?t?X(n.dirtyFields,e):B(n.dirtyFields,e,!0):ft(n.dirtyFields,Q(i,a,void 0,r)),f.dirtyFields=n.dirtyFields,u||=(m.dirtyFields||h.dirtyFields)&&d!==!t}if(s){let t=L(n.touchedFields,e);t||(B(n.touchedFields,e,s),f.touchedFields=n.touchedFields,u||=(m.touchedFields||h.touchedFields)&&t!==s)}u&&l&&g.state.next(f)}return u?f:{}},ce=(e,r,i,a)=>{let o=L(n.errors,e),s=(m.isValid||h.isValid)&&R(r)&&n.isValid!==r;if(t.delayError&&i?(c[e]=y(e,()=>w(e,i)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e],i?B(n.errors,e,i):X(n.errors,e),n.errors={...n.errors}),(i?!W(o,i):o)||!q(a)||s){let t={...a,...s&&R(r)?{isValid:r}:{},errors:n.errors,name:e};n={...n,...t},g.state.next(t)}},V=async e=>(x(e,!0),await t.resolver(a,t.context,et(e||s.mount,r,t.criteriaMode,t.shouldUseNativeValidation))),ue=async e=>{let{errors:t}=await V(e);if(x(e),e){for(let r of e){let e=L(t,r);e?s.array.has(r)&&A(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?xe(n.errors,{[r]:e},r):B(n.errors,r,e):X(n.errors,r)}n.errors={...n.errors}}else n.errors=t;return t},de=async({name:t,eventType:r})=>{if(e.validate){let i=await e.validate({formValues:a,formState:n,name:t,eventType:r});if(A(i))for(let e in i){let t=i[e];t&&Ae(`${dt}.${e}`,{message:K(t.message)?t.message:``,type:t.type||P.validate})}else K(i)||!i?Ae(dt,{message:i||``,type:P.validate}):ke(dt);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 de({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&&rt(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await je(u,s.disabled,a,v,t.shouldUseNativeValidation&&!i,o);if(c&&d&&x([r.name]),f[r.name]&&(l.valid=!1,i)||(!i&&(L(f,r.name)?o?xe(n.errors,f,r.name):B(n.errors,r.name,f[r.name]):X(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!q(d)&&await H({context:l,onlyCheckValid:i,fields:d,name:o,eventType:c})}}return l.valid},fe=()=>{for(let e of s.unMount){let t=L(r,e);t&&(t._f.refs?t._f.refs.every(e=>!Ue(e)):!Ue(t._f.ref))&&Z(e)}s.unMount=new Set},U=(e,t)=>(e&&t&&B(a,e,t),!W(o.mount?a:i,i)),G=(e,t,n)=>me(e,s,{...o.mount?a:I(t)||K(e)?i:t},n,t),pe=e=>Ne(L(o.mount?a:i,e,t.shouldUnregister?L(i,e,[]):[])),he=(e,t,n={},i=!1,o=!1,s=!1)=>{let c=L(r,e),l=t;if(c){let n=c._f;n&&(!n.disabled&&B(a,e,Qe(t,n)),l=Se(n.ref)&&O(t)?``:t,Ve(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?E(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):ee(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:j(a)})))}(n.shouldDirty||n.shouldTouch)&&se(e,l,n.shouldTouch,n.shouldDirty,!o),n.shouldValidate&&Ee(e,{delayError:n.delayError})},ge=(e,t,n,i=!1,o=!1,c=!1)=>{s.array.has(e)&&g.array.next({name:e,values:i?a:j(a)});for(let a in t){if(!t.hasOwnProperty(a))return;let l=t[a],u=e+`.`+a,d=L(r,u);(s.array.has(e)||A(l)||d&&!d._f)&&!D(l)?ge(u,l,n,i,o,c):he(u,l,n,i,o,c)}},_e=(e,t,i,c,l=!1)=>{let u=L(r,e),d=s.array.has(e),f=c?t:j(t),p=W(L(a,e),f);if(p||B(a,e,f),d)g.array.next({name:e,values:c?a:j(a)}),(m.isDirty||m.dirtyFields||h.isDirty||h.dirtyFields)&&i.shouldDirty&&(S(),l||g.state.next({name:e,dirtyFields:n.dirtyFields,isDirty:U(e,f)}));else{let t=Array.isArray(f)&&!f.length||q(f),n=!p&&!l;!u||u._f||O(f)||t?he(e,f,i,c,l,n):ge(e,f,i,c,l,n)}if(!p&&!l){let t=ye(e,s),r=c?a:j(a);g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r})}},J=(e,t,n={})=>_e(e,t,n,!1),Ce=(e,t={})=>{let r=z(e)?e(a):e;if(!W(a,r)){a={...a,...r};let e=Ie(r);for(let n of s.mount)n in e&&_e(n,e[n],t,!0,!0);g.state.next({...n,name:void 0,type:void 0,...u?{values:a}:{}}),t.shouldValidate&&b()}},we=async i=>{o.mount=!0;let l=i.target,p=l.name,_=!0,y=L(r,p),S=e=>{_=Number.isNaN(e)||D(e)&&isNaN(e.getTime())||W(e,L(a,p,e))};if(y){let o,C,w=l.type?$e(y._f):te(i),T=i.type===M.BLUR||i.type===M.FOCUS_OUT,E=!it(y._f)&&!e.validate&&!t.resolver&&!L(n.errors,p)&&!y._f.deps,ee=E||ct(T,L(n.touchedFields,p),n.isSubmitted,f,d),D=ye(p,s,T);if(B(a,p,w),T){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 O=se(p,w,T),k=!q(O)||D;if(!T&&g.state.next({name:p,type:i.type,...u?{values:j(a)}:{}}),ee)return(!E||!n.isValid)&&(m.isValid||h.isValid)&&(t.mode===`onBlur`?T&&b():T||b()),k&&g.state.next({name:p,...D?{}:O});if(!t.resolver&&e.validate&&await de({name:p,eventType:i.type}),!T&&D&&g.state.next({...n}),t.resolver){let{errors:e}=await V([p]);if(x([p]),S(w),!_){!q(O)&&g.state.next(O);return}let t=at(n.errors,r,p),i=at(e,r,t.name||p);o=i.error,p=i.name,C=q(e)}else x([p],!0),o=(await je(y,s.disabled,a,v,t.shouldUseNativeValidation))[p],x([p]),S(w),_&&(o?C=!1:(m.isValid||h.isValid)&&(C=await H({fields:r,onlyCheckValid:!0,name:p,eventType:i.type})));_&&(y._f.deps&&(!Array.isArray(y._f.deps)||y._f.deps.length>0)&&Ee(y._f.deps),ce(p,C,o,O))}},Te=(e,t)=>{if(L(n.errors,t)&&e.focus)return e.focus(),1},Ee=async(e,i={})=>{let a,o,u=Me(e);if(t.resolver){let t=await ue(I(e)?e:u);a=q(t),o=e?!u.some(e=>L(t,e)):a}else e?(o=(await Promise.all(u.map(async e=>{let t=L(r,e);return await H({fields:t&&t._f?{[e]:t}:t,eventType:M.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await H({fields:r,name:e,eventType:M.TRIGGER});if(i.delayError&&t.delayError&&K(e)){let r=L(n.errors,e);r?(X(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}return g.state.next({...!K(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},errors:n.errors}),i.shouldFocus&&!o&&be(r,Te,e?u:s.mount),o},De=(e,t)=>{let r={...o.mount?a:i};return t&&(r=Be(t.dirtyFields?n.dirtyFields:n.touchedFields,r)),I(e)?r:K(e)?L(r,e):e.map(e=>L(r,e))},Oe=(e,t)=>({invalid:!!L((t||n).errors,e),isDirty:!!L((t||n).dirtyFields,e),error:L((t||n).errors,e),isValidating:!!L(n.validatingFields,e),isTouched:!!L((t||n).touchedFields,e)}),ke=e=>{let t=e?Me(e):void 0;t?.forEach(e=>X(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},Ae=(e,t,i)=>{let a=(L(r,e,{_f:{}})._f||{}).ref,{ref:o,message:s,type:c,...l}=L(n.errors,e)||{};B(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()},Y=(e,t)=>{if(z(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)},Pe=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(st(e.name,t.name,e.exact)&&ot(t,e.formState||m,nt,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())}},Fe=e=>(o.mount=!0,h={...h,...e.formState},Pe({...e,formState:{...p,...e.formState}})),Z=(e,o={})=>{for(let c of e?Me(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(X(r,c),X(a,c)),!o.keepError&&X(n.errors,c),!o.keepDirty&&X(n.dirtyFields,c),!o.keepTouched&&X(n.touchedFields,c),!o.keepIsValidating&&X(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&X(i,c);g.state.next({values:j(a)}),g.state.next({...n,...o.keepDirty?{isDirty:U()}:{}}),!o.keepIsValid&&b()},Le=({disabled:e,name:t})=>{if(R(e)&&o.mount||e||s.disabled.has(t)){let n=s.disabled.has(t)!==!!e;e?s.disabled.add(t):s.disabled.delete(t),n&&o.mount&&!o.action&&b()}},Re=(e,n={})=>{let a=L(r,e),c=R(n.disabled)||R(t.disabled),l=!s.registerName.has(e)&&a&&a._f&&!a._f.mount;return B(r,e,{...a||{},_f:{...a&&a._f?a._f:{ref:{name:e}},name:e,mount:!0,...n}}),s.mount.add(e),a&&!l?Le({disabled:R(n.disabled)?n.disabled:t.disabled,name:e}):oe(e,!0,n.value),{...c?{disabled:n.disabled||t.disabled}:{},...t.progressive?{required:!!n.required,min:tt(n.min),max:tt(n.max),minLength:tt(n.minLength),maxLength:tt(n.maxLength),pattern:tt(n.pattern)}:{},name:e,onChange:we,onBlur:we,ref:c=>{if(c){s.registerName.add(e),Re(e,n),s.registerName.delete(e),a=L(r,e);let t=I(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=He(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(Ue),t,...Array.isArray(L(i,e))?[{}]:[]],u.ref={type:t.type,name:e}):(u.ref=t,delete u.refs),B(r,e,{_f:u}),oe(e,!1,void 0,t)}else a=L(r,e,{}),a._f&&(a._f.mount=!1),(t.shouldUnregister||n.shouldUnregister)&&!(ne(s.array,e)&&o.action)&&s.unMount.add(e)}}},We=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&be(r,Te,s.mount),Ke=e=>{R(e)&&(g.state.next({disabled:e}),be(r,(t,n)=>{let i=L(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))},qe=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=j(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await V();x(),n.errors=e,u=j(t)}else await H({fields:r,eventType:M.SUBMIT});if(s.disabled.size)for(let e of s.disabled)X(u,e);if(X(n.errors,ae),q(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),We(),setTimeout(We);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:q(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},Je=(e,t={})=>{L(r,e)&&(I(t.defaultValue)?J(e,j(L(i,e))):(J(e,t.defaultValue),B(i,e,j(t.defaultValue))),t.keepTouched||X(n.touchedFields,e),t.keepDirty||(X(n.dirtyFields,e),n.isDirty=t.defaultValue?U(e,j(L(i,e))):U()),t.keepError||(X(n.errors,e),m.isValid&&b()),g.state.next({...n}))},Ye=(e,c={})=>{let l=e?j(e):i,u=j(l),d=q(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Ge(Q(i,a,void 0,p),n.dirtyFields)]);for(let t of Array.from(e)){let e=L(n.dirtyFields,t),r=L(a,t),i=L(f,t);e&&!I(r)?B(f,t,r):!e&&!I(i)&&J(t,i)}}else{if(ie&&I(e))for(let e of s.mount){let t=L(r,e);if(t&&t._f){let e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(Se(e)){let t=e.closest(`form`);if(t){t.reset();break}}}}if(c.keepFieldsRef)for(let e of s.mount)J(e,L(f,e));else r={}}if(t.shouldUnregister){if(a=c.keepDefaultValues?j(i):{},c.keepFieldsRef)for(let e of s.mount)B(a,e,L(f,e))}else a=j(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&&!q(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?U():!!(c.keepDefaultValues&&!W(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?Q(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?Q(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})},Xe=(e,n)=>Ye(z(e)?e(a):e,{...t.resetOptions,...n}),Ze=(e,t={})=>{let n=L(r,e),i=n&&n._f;if(i){let e=i.refs?i.refs[0]:i.ref;e.focus&&setTimeout(()=>{e.focus(),t.shouldSelect&&z(e.select)&&e.select()})}},nt=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:nt});let mt={control:{register:Re,unregister:Z,getFieldState:Oe,handleSubmit:qe,setError:Ae,_subscribe:Pe,_runSchema:V,_updateIsValidating:x,_focusError:We,_getWatch:G,_getDirty:U,_setValid:b,_setFieldArray:C,_setDisabledField:Le,_setErrors:T,_getFieldArray:pe,_reset:Ye,_resetDefaultValues:()=>z(t.defaultValues)&&t.defaultValues().then(e=>{Xe(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:fe,_disableForm:Ke,_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=ve(t.mode),f=ve(t.reValidateMode)}},subscribe:Fe,trigger:Ee,register:Re,handleSubmit:qe,watch:Y,setValue:J,setValues:Ce,getValues:De,reset:Xe,resetField:Je,resetDefaultValues:(e,t={})=>{if(i=j(e),!t.keepDirty){let e=Q(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!q(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:ke,unregister:Z,setError:Ae,setFocus:Ze,getFieldState:Oe};return{...mt,formControl:mt}}function ht(e={}){let t=T.useRef(void 0),n=T.useRef(void 0),r=T.useRef(e.formControl),[i,a]=T.useState(()=>({...j(pt),isLoading:z(e.defaultValues),errors:e.errors||{},disabled:e.disabled||!1,defaultValues:z(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&&!z(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{let{formControl:n,...r}=mt(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:s,snapshot:c}=G();return H(()=>{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]),T.useEffect(()=>o._disableForm(e.disabled),[o,e.disabled]),T.useEffect(()=>{e.mode&&(o._options.mode=e.mode),e.reValidateMode&&(o._options.reValidateMode=e.reValidateMode)},[o,e.mode,e.reValidateMode]),T.useEffect(()=>{e.errors&&(o._setErrors(e.errors),o._focusError())},[o,e.errors]),T.useEffect(()=>{e.shouldUnregister&&o._subjects.state.next({values:o._getWatch()})},[o,e.shouldUnregister]),T.useEffect(()=>{if(o._proxyFormState.isDirty){let e=o._getDirty();e!==i.isDirty&&o._subjects.state.next({isDirty:e})}},[o,i.isDirty]),T.useEffect(()=>{e.values&&!W(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]),T.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=T.useMemo(()=>de(i,o),[o,i]),t.current}var $=n(),gt=Re,_t=T.createContext(null),vt=({...e})=>(0,$.jsx)(_t.Provider,{value:{name:e.name},children:(0,$.jsx)(_e,{...e})}),yt=T.createContext(null),bt=()=>{let e=T.useContext(_t),t=T.useContext(yt),{getFieldState:n,formState:r}=Le();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}},xt=T.forwardRef(({className:e,...t},n)=>{let i=T.useId();return(0,$.jsx)(yt.Provider,{value:{id:i},children:(0,$.jsx)(`div`,{ref:n,className:r(`space-y-2`,e),...t})})});xt.displayName=`FormItem`;var St=T.forwardRef(({className:e,...t},n)=>{let{error:i,formItemId:a}=bt();return(0,$.jsx)(C,{ref:n,className:r(i&&`text-destructive`,e),htmlFor:a,...t})});St.displayName=`FormLabel`;var Ct=T.forwardRef(({...e},t)=>{let{error:n,formItemId:r,formDescriptionId:a,formMessageId:o}=bt();return(0,$.jsx)(i,{ref:t,id:r,"aria-describedby":n?`${a} ${o}`:`${a}`,"aria-invalid":!!n,...e})});Ct.displayName=`FormControl`;var wt=T.forwardRef(({className:e,...t},n)=>{let{formDescriptionId:i}=bt();return(0,$.jsx)(`p`,{ref:n,id:i,className:r(`text-sm text-muted-foreground`,e),...t})});wt.displayName=`FormDescription`;var Tt=T.forwardRef(({className:e,children:t,...n},i)=>{let{error:a,formMessageId:o}=bt(),s=a?String(a.message??``):t;return s?(0,$.jsx)(`p`,{ref:i,id:o,className:r(`text-sm font-medium text-destructive`,e),...n,children:s}):null});Tt.displayName=`FormMessage`;function Et({control:e,property:t,disabled:n,resourceId:r,idPrefix:i=`field`}){let c=`${i}-${t.path}`,l=c,u=`${c}-label`,d=`${c}-error`,f=s(t);return(0,$.jsx)(vt,{control:e,name:t.path,render:({field:e,fieldState:i})=>{let s=i.error?.message;return(0,$.jsxs)(w,{"data-invalid":s?!0:void 0,className:`mb-8 break-inside-avoid`,...f?{role:`group`,"aria-labelledby":u}:{},children:[(0,$.jsxs)(x,{id:u,htmlFor:f?void 0:l,children:[t.label,t.description?(0,$.jsx)(a,{content:t.description,ariaLabel:t.description}):null,t.isRequired&&(0,$.jsx)(`span`,{className:`ml-1 text-destructive`,"aria-hidden":`true`,children:`*`})]}),(0,$.jsx)(o,{property:t,value:e.value,onChange:e.onChange,disabled:n,resourceId:r,id:l,describedBy:d,invalid:!!s,required:t.isRequired}),s&&(0,$.jsx)(S,{id:d,role:`alert`,children:s})]})}})}var Dt=e=>e==null||typeof e==`string`&&e.trim()===``,Ot=(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 kt(e,t){if(!e)return!0;let n=t[e.field],r=Dt(n);if(e.defaultWhenEmpty&&r)return!0;let i=!1;return`equals`in e&&e.equals!==void 0&&(i=!0,Ot(n,e.equals))||`notEquals`in e&&e.notEquals!==void 0&&(i=!0,!Ot(n,e.notEquals))||e.in&&e.in.length>0&&(i=!0,e.in.some(e=>Ot(n,e)))||e.notIn&&e.notIn.length>0&&(i=!0,!e.notIn.some(e=>Ot(n,e)))||e.isEmpty!==void 0&&(i=!0,e.isEmpty===r)?!0:!i}var At=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,jt=/^https?:\/\/.+/i,Mt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Nt=e=>e==null||typeof e==`string`&&e.trim()===``;function Pt(e,t,n){let r=e.label,i=e=>n===`email`?At.test(e):n===`url`?jt.test(e):n!==`uuid`||Mt.test(e),a=n===`email`?`validation:invalidEmail`:n===`url`?`validation:invalidUrl`:n===`uuid`?`validation:invalidUuid`:null;return f([m(),h(),v()]).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 Ft(e,t,n=!1){let r=e.label;return d().superRefine((i,a)=>{if(Nt(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(Nt(e))return null;let t=typeof e==`number`?e:Number(e);return Number.isFinite(t)?t:null})}function It(e,t){return u(e=>typeof e==`boolean`?e:!!e,g())}function Lt(e,t){let n=e.label;return f([m(),y(),h(),v()]).superRefine((r,i)=>{if(Nt(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=>Nt(e)?null:e)}function Rt(e,t){let n=e.label;return f([m(),b(),h(),v()]).superRefine((r,i)=>{Nt(r)&&e.isRequired&&i.addIssue({code:`custom`,message:t(`validation:required`,{label:n})})}).transform(e=>Nt(e)?null:e)}function zt(e,t){let n=e.label;return u(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},c(f([m(),b()]))).superRefine((r,i)=>{e.isRequired&&r.length===0&&i.addIssue({code:`custom`,message:t(`validation:emptySelection`,{label:n})})})}function Bt(e,t){return e.isArray?zt(e,t):Pt(e,t)}function Vt(e,t){let n=e.label,r=new Set((e.availableValues??[]).map(e=>e.value));return f([m(),h(),v()]).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 Ht(e,t){let n=e.label;return d().superRefine((r,i)=>{(r==null||r===``)&&e.isRequired&&i.addIssue({code:`custom`,message:t(`validation:required`,{label:n})})}).transform(e=>e===``?null:e)}function Ut(e,t){let n=e.label;return u(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},c(_(m(),d()))).superRefine((r,i)=>{e.isRequired&&r.length===0&&i.addIssue({code:`custom`,message:t(`validation:emptySelection`,{label:n})})})}function Wt(e,t){if(e.type===`m2m`)return Ut(e,t);if(e.availableValues&&e.availableValues.length>0)return Vt(e,t);if(e.reference)return e.isArray?zt(e,t):Rt(e,t);switch(e.type){case`boolean`:return It(e,t);case`number`:case`float`:case`currency`:case`money`:return Ft(e,t,!1);case`integer`:return Ft(e,t,!0);case`date`:case`datetime`:case`datetime-local`:return Lt(e,t);case`email`:return Pt(e,t,`email`);case`url`:return Pt(e,t,`url`);case`uuid`:return Pt(e,t,`uuid`);case`json`:return Ht(e,t);case`string`:case`text`:case`textarea`:case`password`:case`richtext`:case`color`:case`file`:return Bt(e,t);default:return Pt(e,t)}}function Gt(e,t,n){let r=Wt(e,t);return!e.showWhen||!n?r:p().superRefine((t,i)=>{if(!kt(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(!kt(e.showWhen,n()))return t;let i=r.safeParse(t);return i.success?i.data:t})}function Kt(e,t,n){let r={};for(let i of e)r[i.path]=Gt(i,t,n);return l(r)}function qt(e){return e.type===`boolean`?!1:e.type===`json`?null:e.isArray?[]:``}var Jt=(e,t,n)=>{if(e&&`reportValidity`in e){let r=L(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},Yt=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?Jt(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>Jt(t,n,e))}},Xt=(e,t)=>{t.shouldUseNativeValidation&&Yt(e,t);let n={};for(let r in e){let i=L(t.fields,r),a=Object.assign(e[r]||{},{ref:i&&i.refs?i.refs[0]:i&&i.ref});if(Zt(t.names||Object.keys(e),r)){let e=Object.assign({},L(n,r));B(e,`root`,a),B(n,r,e)}else B(n,r,a)}return n},Zt=(e,t)=>{let n=Qt(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>Qt(e).match(`^${n}\\.\\d+`))};function Qt(e){return e.replace(/\[(\d+)]/g,`.$1`).replace(/[[\]]/g,``)}function $t(){return $t=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},$t.apply(null,arguments)}function en(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}function tn(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]=we(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()}return n}function nn(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($t({},t,{path:[].concat(r.path,t.path)}))})}),t){var c=n[o].types,l=c&&c[r.code];n[o]=we(o,t,n,i,l?[].concat(l,r.message):r.message)}e.shift()};e.length;)r();return n}function rn(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(en(function(){function i(e){return a.shouldUseNativeValidation&&Yt({},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:Xt(nn(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(en(function(){return Promise.resolve(e[n.mode===`sync`?`parse`:`parseAsync`](r,t)).then(function(e){return a.shouldUseNativeValidation&&Yt({},a),{errors:{},values:n.raw?Object.assign({},r):e}})},function(e){if(function(e){return Array.isArray(e?.issues)}(e))return{values:{},errors:Xt(tn(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{Et as a,he as c,kt as i,Kt as n,gt as o,qt as r,ht as s,rn as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -12,18 +12,18 @@
|
|
|
12
12
|
smoke tests), the standalone entry falls back to same-origin defaults.
|
|
13
13
|
-->
|
|
14
14
|
<!--MODERN_ADMIN_CONFIG-->
|
|
15
|
-
<script type="module" crossorigin src="./assets/index-
|
|
15
|
+
<script type="module" crossorigin src="./assets/index-SG_6EpY3.js"></script>
|
|
16
16
|
<link rel="modulepreload" crossorigin href="./assets/createLucideIcon-QE2kj6ru.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="./assets/floating-layer-BcTp2AMB.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="./assets/dist-CiXwD0ML.js">
|
|
19
19
|
<link rel="modulepreload" crossorigin href="./assets/x-c-gfVPJa.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="./assets/dist-DPxQeZn3.js">
|
|
21
|
-
<link rel="modulepreload" crossorigin href="./assets/hooks-
|
|
22
|
-
<link rel="modulepreload" crossorigin href="./assets/dist-
|
|
21
|
+
<link rel="modulepreload" crossorigin href="./assets/hooks-Djo7VZHf.js">
|
|
22
|
+
<link rel="modulepreload" crossorigin href="./assets/dist-DfV3IWyn.js">
|
|
23
23
|
<link rel="stylesheet" crossorigin href="./assets/index-Cz5ntgJ_.css">
|
|
24
|
-
<link rel="prefetch" as="script" href="./assets/home-page-
|
|
25
|
-
<link rel="prefetch" as="script" href="./assets/icon-registry-
|
|
26
|
-
<link rel="prefetch" as="script" href="./assets/property-renderer-
|
|
24
|
+
<link rel="prefetch" as="script" href="./assets/home-page-9caZ0Yg1.js">
|
|
25
|
+
<link rel="prefetch" as="script" href="./assets/icon-registry-BCvzitKu.js">
|
|
26
|
+
<link rel="prefetch" as="script" href="./assets/property-renderer-KXwrRQgq.js">
|
|
27
27
|
</head>
|
|
28
28
|
<body>
|
|
29
29
|
<div id="root"></div>
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modern-admin/web",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "Pre-built React admin SPA. Mount it into a host page or let @modern-admin/nest serve the standalone bundle.",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
|
+
"!dist/**/*.map",
|
|
26
27
|
"src",
|
|
27
28
|
"index.html",
|
|
28
29
|
"vite.config.ts",
|
|
@@ -68,10 +69,10 @@
|
|
|
68
69
|
"vite": "^8.2.1"
|
|
69
70
|
},
|
|
70
71
|
"dependencies": {
|
|
71
|
-
"@modern-admin/core": "^0.
|
|
72
|
-
"@modern-admin/i18n": "^0.
|
|
73
|
-
"@modern-admin/react": "^0.
|
|
74
|
-
"@modern-admin/ui": "^0.
|
|
72
|
+
"@modern-admin/core": "^0.8.0",
|
|
73
|
+
"@modern-admin/i18n": "^0.8.0",
|
|
74
|
+
"@modern-admin/react": "^0.8.0",
|
|
75
|
+
"@modern-admin/ui": "^0.7.0",
|
|
75
76
|
"@tanstack/react-query": "^5.101.4"
|
|
76
77
|
},
|
|
77
78
|
"devDependencies": {
|
package/src/app.tsx
CHANGED
|
@@ -40,8 +40,10 @@ export function App({ config, components }: AppProps): ReactElement {
|
|
|
40
40
|
<I18nProvider
|
|
41
41
|
locales={enabledLocales}
|
|
42
42
|
defaultLocale={config.defaultLocale}
|
|
43
|
+
forceLocale={config.forceLocale}
|
|
43
44
|
fallbackLocale={config.fallbackLocale}
|
|
44
45
|
metadataTranslations={config.metadataTranslations}
|
|
46
|
+
translations={config.translations}
|
|
45
47
|
>
|
|
46
48
|
<ModernAdminProvider
|
|
47
49
|
components={components}
|
|
@@ -51,12 +53,14 @@ export function App({ config, components }: AppProps): ReactElement {
|
|
|
51
53
|
headers: config.headers,
|
|
52
54
|
persistDemoSession: config.persistDemoSession,
|
|
53
55
|
authBasePath: config.authBasePath,
|
|
56
|
+
authPaths: config.authPaths,
|
|
54
57
|
}}
|
|
55
58
|
>
|
|
56
59
|
<AdminApp
|
|
57
60
|
loginHint={config.loginHint}
|
|
58
61
|
basePath={config.basePath}
|
|
59
62
|
showSidebarResourceIds={config.showSidebarResourceIds}
|
|
63
|
+
brand={config.brand}
|
|
60
64
|
/>
|
|
61
65
|
</ModernAdminProvider>
|
|
62
66
|
</I18nProvider>
|
package/src/runtime-config.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* No build-time env vars: one bundle serves any deployment.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import type { MetadataTranslations } from '@modern-admin/react'
|
|
12
|
+
import type { AdminAuthPaths, MetadataTranslations } from '@modern-admin/react'
|
|
13
13
|
|
|
14
14
|
export interface ModernAdminBrand {
|
|
15
15
|
/** Shown in the sidebar header and login screen. */
|
|
@@ -31,8 +31,18 @@ export interface ModernAdminRuntimeConfig {
|
|
|
31
31
|
headers?: Record<string, string>
|
|
32
32
|
/** Helper line shown on the login screen — e.g. demo credentials. */
|
|
33
33
|
loginHint?: string
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Locale the UI starts in when the visitor has no persisted choice, or
|
|
36
|
+
* when their persisted choice is not in `locales`. A previous, still-valid
|
|
37
|
+
* choice wins — use `forceLocale` to override that too.
|
|
38
|
+
*/
|
|
35
39
|
defaultLocale?: string
|
|
40
|
+
/**
|
|
41
|
+
* Pin the UI to one locale: the persisted choice is ignored and the header
|
|
42
|
+
* switcher collapses. Unlike `locales: ['ru']`, the other bundles stay
|
|
43
|
+
* loaded and keep serving `fallbackLocale` for any missing key.
|
|
44
|
+
*/
|
|
45
|
+
forceLocale?: string
|
|
36
46
|
/** Locale used when a translation is missing. Defaults to 'en'. */
|
|
37
47
|
fallbackLocale?: string
|
|
38
48
|
/**
|
|
@@ -46,7 +56,23 @@ export interface ModernAdminRuntimeConfig {
|
|
|
46
56
|
locales?: string[]
|
|
47
57
|
/** Optional per-resource / per-property metadata translations. */
|
|
48
58
|
metadataTranslations?: MetadataTranslations
|
|
49
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Overrides for the framework's own UI strings, merged over the built-in
|
|
61
|
+
* dictionaries per locale. This is the supported way to rename the product,
|
|
62
|
+
* reword a built-in label, or ship a translation fix without a release:
|
|
63
|
+
*
|
|
64
|
+
* ```json
|
|
65
|
+
* { "ru": { "common:appName": "Acme", "auth:tagline": "…" } }
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* Keys use the flat `namespace:key` form of the bundled locales.
|
|
69
|
+
* `metadataTranslations` is the separate, resource-metadata equivalent.
|
|
70
|
+
*/
|
|
71
|
+
translations?: Record<string, Record<string, string>>
|
|
72
|
+
/**
|
|
73
|
+
* Branding overrides applied to the sidebar header, the loading splash,
|
|
74
|
+
* and both marks on the login screen.
|
|
75
|
+
*/
|
|
50
76
|
brand?: ModernAdminBrand
|
|
51
77
|
/** Persist the demo session credentials in localStorage. */
|
|
52
78
|
persistDemoSession?: boolean
|
|
@@ -58,6 +84,8 @@ export interface ModernAdminRuntimeConfig {
|
|
|
58
84
|
* elsewhere; pass *without* a trailing slash.
|
|
59
85
|
*/
|
|
60
86
|
authBasePath?: string
|
|
87
|
+
/** Per-route auth overrides for backends whose provider uses different URLs. */
|
|
88
|
+
authPaths?: Partial<AdminAuthPaths>
|
|
61
89
|
/**
|
|
62
90
|
* URL prefix where the SPA is mounted (e.g. `/admin`). Injected
|
|
63
91
|
* automatically by `ModernAdminStaticUiMiddleware` from its `path` option
|
package/src/vite.ts
CHANGED
|
@@ -81,6 +81,20 @@ export interface AdminAppConfigOptions {
|
|
|
81
81
|
devConfig?: ModernAdminRuntimeConfig
|
|
82
82
|
/** Directory the standalone build writes to. Rarely worth changing. */
|
|
83
83
|
outDir?: string
|
|
84
|
+
/**
|
|
85
|
+
* Production source maps. Defaults to `false`.
|
|
86
|
+
*
|
|
87
|
+
* `true` emits `.map` files next to every chunk. The static-UI middleware
|
|
88
|
+
* serves them publicly with `immutable` caching, so anything in them —
|
|
89
|
+
* including the full source of proprietary components in a custom bundle —
|
|
90
|
+
* is readable by anyone who can reach the panel. They also dominate the
|
|
91
|
+
* tarball: the stock standalone build is ~17MB, of which ~13MB is maps.
|
|
92
|
+
*
|
|
93
|
+
* `'hidden'` writes the maps but omits the `//# sourceMappingURL` comment,
|
|
94
|
+
* which is the right setting for uploading them to an error tracker
|
|
95
|
+
* without exposing them to browsers.
|
|
96
|
+
*/
|
|
97
|
+
sourcemap?: boolean | 'hidden'
|
|
84
98
|
/** Extra plugins, appended after the built-in ones. */
|
|
85
99
|
plugins?: PluginOption[]
|
|
86
100
|
}
|
|
@@ -205,6 +219,7 @@ export function defineAdminAppConfig(
|
|
|
205
219
|
apiProxyPath = ['/admin/api', '/socket.io'],
|
|
206
220
|
devConfig,
|
|
207
221
|
outDir = STANDALONE_OUT_DIR,
|
|
222
|
+
sourcemap = false,
|
|
208
223
|
plugins: extraPlugins = [],
|
|
209
224
|
} = options
|
|
210
225
|
return ({ command }) => {
|
|
@@ -219,7 +234,7 @@ export function defineAdminAppConfig(
|
|
|
219
234
|
build: {
|
|
220
235
|
outDir,
|
|
221
236
|
emptyOutDir: true,
|
|
222
|
-
sourcemap
|
|
237
|
+
sourcemap,
|
|
223
238
|
},
|
|
224
239
|
}
|
|
225
240
|
}
|
package/dist/lib/app.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,OAAO,CAAA;AAClD,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,wBAAwB,CAAA;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B;AAED,wBAAgB,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,GAAG,YAAY,CAmClE"}
|
package/dist/lib/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EACL,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAA"}
|
package/dist/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/app.tsx","../../src/mount.tsx","../../src/runtime-config.ts"],"sourcesContent":["/**\n * Root <App> for the admin SPA. Wraps the AdminApp shell with i18n and the\n * ModernAdmin provider, wiring everything from a single runtime config.\n *\n * Used by both the standalone bundle (window.__MODERN_ADMIN__) and the\n * library `mount()` entry point — hosts compose it the same way.\n */\n\nimport { type ReactElement, useMemo } from 'react'\nimport {\n AdminApp,\n type ComponentLoader,\n I18nProvider,\n ModernAdminProvider,\n} from '@modern-admin/react'\nimport { builtinLocales } from '@modern-admin/i18n'\nimport type { ModernAdminRuntimeConfig } from './runtime-config.js'\n\nexport interface AppProps {\n config: ModernAdminRuntimeConfig\n /**\n * Optional custom property-type components. The standalone bundle leaves\n * this unset; the library `mount()` lets callers pass demo / project-\n * specific components.\n */\n components?: ComponentLoader\n}\n\nexport function App({ config, components }: AppProps): ReactElement {\n // Filter the built-in 9-locale bundle by the host's whitelist. Empty /\n // omitted → expose everything; the language switcher in the header\n // collapses itself when only one locale survives the filter.\n const enabledLocales = useMemo(() => {\n if (!config.locales || config.locales.length === 0) return builtinLocales\n const codes = new Set(config.locales)\n const filtered = builtinLocales.filter((l) => codes.has(l.code))\n return filtered.length > 0 ? filtered : builtinLocales\n }, [config.locales])\n return (\n <I18nProvider\n locales={enabledLocales}\n defaultLocale={config.defaultLocale}\n fallbackLocale={config.fallbackLocale}\n metadataTranslations={config.metadataTranslations}\n >\n <ModernAdminProvider\n components={components}\n clientOptions={{\n baseUrl: config.apiUrl,\n credentials: config.credentials ?? 'include',\n headers: config.headers,\n persistDemoSession: config.persistDemoSession,\n authBasePath: config.authBasePath,\n }}\n >\n <AdminApp\n loginHint={config.loginHint}\n basePath={config.basePath}\n showSidebarResourceIds={config.showSidebarResourceIds}\n />\n </ModernAdminProvider>\n </I18nProvider>\n )\n}\n","/**\n * Imperative mounting API for embedding the admin SPA inside another React\n * tree or vanilla HTML page. Consumers call once at startup:\n *\n * import { mount } from '@modern-admin/web'\n * mount(document.getElementById('root')!, { apiUrl: 'https://api.example.com' })\n *\n * This module deliberately does **not** import the stylesheet: an app that\n * registers its own components needs to own the Tailwind root so its classes\n * get scanned, and a second root here would compile Tailwind twice. Import it\n * yourself, either directly or from your own CSS:\n *\n * import '@modern-admin/react/styles.css'\n *\n * For the prebuilt standalone bundle, `src/standalone.tsx` calls this for\n * you using `window.__MODERN_ADMIN__` and pulls in the stylesheet.\n */\n\nimport { StrictMode } from 'react'\nimport { createRoot, type Root } from 'react-dom/client'\nimport { type ComponentLoader } from '@modern-admin/react'\nimport { initTheme } from '@modern-admin/ui'\nimport { App } from './app.js'\nimport type { ModernAdminRuntimeConfig } from './runtime-config.js'\n\nexport interface MountOptions {\n config: ModernAdminRuntimeConfig\n /** Optional ComponentLoader with custom property-type components. */\n components?: ComponentLoader\n}\n\nexport interface MountedAdmin {\n /** Unmounts the admin SPA from its container. */\n unmount(): void\n}\n\n/**\n * Renders the admin SPA into `container`. Returns a handle with `unmount()`\n * for hosts that need to tear it down dynamically (rare — most users mount\n * once and never unmount).\n */\nexport function mount(container: Element, options: MountOptions): MountedAdmin {\n initTheme()\n const root: Root = createRoot(container)\n root.render(\n <StrictMode>\n <App config={options.config} components={options.components} />\n </StrictMode>,\n )\n return {\n unmount: () => root.unmount(),\n }\n}\n","/**\n * Runtime configuration for the prebuilt admin SPA.\n *\n * The standalone bundle reads this from `window.__MODERN_ADMIN__`; the\n * library `mount()` API takes it as an argument. Either way it is the\n * single source of truth for \"where is the API\", \"which translations to\n * apply\", and how the admin client should behave at runtime.\n *\n * No build-time env vars: one bundle serves any deployment.\n */\n\nimport type { MetadataTranslations } from '@modern-admin/react'\n\nexport interface ModernAdminBrand {\n /** Shown in the sidebar header and login screen. */\n title?: string\n /** Optional logo image URL. */\n logoUrl?: string\n}\n\nexport interface ModernAdminRuntimeConfig {\n /**\n * Absolute base URL of the admin API (the @modern-admin/nest backend).\n * Leave undefined to use same-origin — recommended when the SPA is served\n * by the same NestJS process that exposes the admin API.\n */\n apiUrl?: string\n /** RequestCredentials forwarded to every fetch. Defaults to 'include'. */\n credentials?: RequestCredentials\n /** Extra headers attached to every request (e.g. CSRF, custom auth). */\n headers?: Record<string, string>\n /** Helper line shown on the login screen — e.g. demo credentials. */\n loginHint?: string\n /** Initial UI locale code. Falls back to the persisted choice / 'en'. */\n defaultLocale?: string\n /** Locale used when a translation is missing. Defaults to 'en'. */\n fallbackLocale?: string\n /**\n * Whitelist of locale codes to expose in the header switcher (filters\n * the built-in 9-locale bundle: `en`, `ru`, `de`, `es`, `fr`, `it`, `ja`,\n * `pl`, `pt-BR`). Behaviour:\n * - omitted / empty array → all built-in locales available\n * - single code → switcher hides, that locale is forced\n * - multiple codes → switcher lists only those locales\n */\n locales?: string[]\n /** Optional per-resource / per-property metadata translations. */\n metadataTranslations?: MetadataTranslations\n /** Branding overrides (title, logo). */\n brand?: ModernAdminBrand\n /** Persist the demo session credentials in localStorage. */\n persistDemoSession?: boolean\n /**\n * Path under which the host mounts Better Auth's Node handler. Drives\n * the sign-in / sign-out endpoints — defaults to `/admin/api/auth`,\n * matching the canonical CLI scaffold (and `ModernAdminStaticUiModule`\n * mounted at `/admin`). Override only when the host mounts Better Auth\n * elsewhere; pass *without* a trailing slash.\n */\n authBasePath?: string\n /**\n * URL prefix where the SPA is mounted (e.g. `/admin`). Injected\n * automatically by `ModernAdminStaticUiMiddleware` from its `path` option\n * so you normally do not need to set this. The router uses it as its\n * basepath so all internal navigation and deep-link refreshes stay under\n * the correct prefix. Pass without a trailing slash.\n */\n basePath?: string\n /**\n * When true, the sidebar resource list shows the raw resource id next\n * to the localized label (e.g. \"Posts (posts)\") whenever the label\n * differs from the id. Defaults to `false` — keeping the sidebar tidy.\n * The home page tile and selector dropdowns (chart builder, etc.)\n * always show both regardless of this flag.\n */\n showSidebarResourceIds?: boolean\n}\n\ndeclare global {\n interface Window {\n __MODERN_ADMIN__?: ModernAdminRuntimeConfig\n }\n}\n\n/**\n * Reads runtime config from `window.__MODERN_ADMIN__`. Returns an empty\n * object (same-origin defaults) when nothing is injected.\n */\nexport function readWindowConfig(): ModernAdminRuntimeConfig {\n if (typeof window === 'undefined') return {}\n return window.__MODERN_ADMIN__ ?? {}\n}\n"],"mappings":";;;;;;;AA4BA,SAAgB,EAAI,EAAE,WAAQ,iBAAsC;CAIlE,IAAM,IAAiB,QAAc;EACnC,IAAI,CAAC,EAAO,WAAW,EAAO,QAAQ,WAAW,GAAG,OAAO;EAC3D,IAAM,IAAQ,IAAI,IAAI,EAAO,OAAO,GAC9B,IAAW,EAAe,QAAQ,MAAM,EAAM,IAAI,EAAE,IAAI,CAAC;EAC/D,OAAO,EAAS,SAAS,IAAI,IAAW;CAC1C,GAAG,CAAC,EAAO,OAAO,CAAC;CACnB,OACE,kBAAC,GAAD;EACE,SAAS;EACT,eAAe,EAAO;EACtB,gBAAgB,EAAO;EACvB,sBAAsB,EAAO;EAE7B,UAAA,kBAAC,GAAD;GACc;GACZ,eAAe;IACb,SAAS,EAAO;IAChB,aAAa,EAAO,eAAe;IACnC,SAAS,EAAO;IAChB,oBAAoB,EAAO;IAC3B,cAAc,EAAO;GACvB;GAEA,UAAA,kBAAC,GAAD;IACE,WAAW,EAAO;IAClB,UAAU,EAAO;IACjB,wBAAwB,EAAO;GAChC,CAAA;EACkB,CAAA;CACT,CAAA;AAElB;;;ACtBA,SAAgB,EAAM,GAAoB,GAAqC;CAC7E,EAAU;CACV,IAAM,IAAa,EAAW,CAAS;CAMvC,OALA,EAAK,OACH,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAK,QAAQ,EAAQ;EAAQ,YAAY,EAAQ;CAAa,CAAA,EACpD,CAAA,CACd,GACO,EACL,eAAe,EAAK,QAAQ,EAC9B;AACF;;;ACoCA,SAAgB,IAA6C;CAE3D,OADI,OAAO,SAAW,MAAoB,CAAC,IACpC,OAAO,oBAAoB,CAAC;AACrC"}
|
package/dist/lib/mount.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/mount.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,wBAAwB,CAAA;IAChC,qEAAqE;IACrE,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CAW7E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IAC3C,wCAAwC;IACxC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;KAC5C;CACF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,wBAAwB,CAG3D"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-component-host-8DE4kuUJ.js","names":[],"sources":["../../../../ui/src/components/breadcrumb.tsx","../../../../react/src/breadcrumbs.tsx","../../../../react/src/action-menu.tsx","../../../../react/src/action-notice.ts","../../../../react/src/components/action-component-host.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { cn } from '../lib/utils.js'\n\nexport const Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<'nav'>\n>((props, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = 'Breadcrumb'\n\nexport const BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<'ol'>\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n 'flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5',\n className,\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = 'BreadcrumbList'\n\nexport const BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<'li'>\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn('inline-flex items-center gap-1.5', className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = 'BreadcrumbItem'\n\nexport const BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<'a'> & { asChild?: boolean }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n return (\n <Comp\n ref={ref}\n className={cn('transition-colors hover:text-foreground', className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = 'BreadcrumbLink'\n\nexport const BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<'span'>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('font-normal text-foreground', className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = 'BreadcrumbPage'\n\nexport const BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentPropsWithoutRef<'li'>): React.ReactElement => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n)\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator'\n\nexport const BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<'span'>): React.ReactElement => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('flex size-9 items-center justify-center', className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis'\n","// Page breadcrumb helper. Each page builds its own crumb chain (home →\n// resource → record → action) and hands it to <PageBreadcrumbs />, which\n// renders the shadcn primitives with separators, hash-router-aware Links\n// and a Home icon on the root crumb.\n\nimport * as React from 'react'\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '@modern-admin/ui'\nimport { Home } from 'lucide-react'\nimport { Link } from './router.js'\nimport type { Route } from './router.js'\n\nexport interface BreadcrumbItemSpec {\n label: string\n /** When set, renders a hash-router link; otherwise the crumb is plain text. */\n to?: Route\n /** Optional leading icon. The home crumb gets one by default. */\n icon?: React.ReactNode\n}\n\nexport interface PageBreadcrumbsProps {\n items: BreadcrumbItemSpec[]\n className?: string\n}\n\nexport function PageBreadcrumbs({\n items,\n className,\n}: PageBreadcrumbsProps): React.ReactElement | null {\n if (items.length === 0) return null\n return (\n <Breadcrumb className={className}>\n <BreadcrumbList>\n {items.map((item, i) => {\n const isLast = i === items.length - 1\n const content = (\n <span className=\"inline-flex items-center gap-1.5\">\n {item.icon}\n <span className=\"truncate max-w-[8rem] sm:max-w-[16rem]\">{item.label}</span>\n </span>\n )\n return (\n <React.Fragment key={`${i}-${item.label}`}>\n <BreadcrumbItem>\n {isLast || !item.to ? (\n <BreadcrumbPage>{content}</BreadcrumbPage>\n ) : (\n <BreadcrumbLink asChild>\n <Link to={item.to}>{content}</Link>\n </BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {!isLast && <BreadcrumbSeparator />}\n </React.Fragment>\n )\n })}\n </BreadcrumbList>\n </Breadcrumb>\n )\n}\n\n/** Default home crumb — used by every page; pass `homeLabel` to localize. */\nexport function homeCrumb(label: string): BreadcrumbItemSpec {\n return {\n label,\n to: { name: 'home' },\n icon: <Home className=\"size-3.5\" />,\n }\n}\n","import * as React from 'react'\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '@modern-admin/ui'\nimport { MoreHorizontal, Zap } from 'lucide-react'\nimport type { ActionDescriptor, ActionGroup, RecordJSON } from './types.js'\n\ninterface ActionMenuGroupNode {\n key: string\n group: ActionGroup\n items: ActionMenuNode[]\n}\n\ntype ActionMenuNode =\n | { kind: 'action'; action: ActionDescriptor }\n | { kind: 'group'; group: ActionMenuGroupNode }\n\nexport interface ActionMenuProps {\n actions: ActionDescriptor[]\n onAction(action: ActionDescriptor): void\n t: (key: string, params?: Record<string, string | number>) => string\n trigger?: React.ReactElement\n menuLabel?: string\n align?: 'start' | 'center' | 'end'\n}\n\n/**\n * Whether a record-scoped action should be offered for a specific record.\n *\n * The server resolves `isVisible`/`isAccessible` per record and reports the\n * survivors in `RecordJSON.recordActions`. A record without that field made\n * it here outside the action pipeline (or from an older server) — that is\n * \"no opinion\", so everything stays visible rather than everything vanishing.\n */\nexport const isActionAllowedForRecord = (\n actionName: string,\n record: Pick<RecordJSON, 'recordActions'> | undefined,\n): boolean => !record?.recordActions || record.recordActions.includes(actionName)\n\n/** Narrow a resource's record actions down to the ones this record offers. */\nexport const visibleRecordActions = (\n actions: ActionDescriptor[],\n record: Pick<RecordJSON, 'recordActions'> | undefined,\n): ActionDescriptor[] => {\n if (!record?.recordActions) return actions\n const allowed = new Set(record.recordActions)\n return actions.filter((a) => allowed.has(a.name))\n}\n\n/** Display label for an action: the (already localized) `custom.label` set\n * by the metadata translator, falling back to the raw action name. */\nexport const getActionLabel = (action: ActionDescriptor): string =>\n typeof action.custom?.label === 'string' ? action.custom.label : action.name\n\nconst buildActionMenuTree = (actions: ActionDescriptor[]): ActionMenuNode[] => {\n const root: ActionMenuNode[] = []\n const groups = new Map<string, ActionMenuGroupNode>()\n\n const ensureGroup = (target: ActionMenuNode[], path: ActionGroup[], depth: number): ActionMenuNode[] => {\n if (depth >= path.length) return target\n const segment = path[depth]!\n const key = path\n .slice(0, depth + 1)\n .map((item) => item.name)\n .join('>')\n let group = groups.get(key)\n if (!group) {\n group = { key, group: segment, items: [] }\n groups.set(key, group)\n target.push({ kind: 'group', group })\n }\n return ensureGroup(group.items, path, depth + 1)\n }\n\n for (const action of actions) {\n const nesting = action.nesting ?? []\n const target = nesting.length > 0 ? ensureGroup(root, nesting, 0) : root\n target.push({ kind: 'action', action })\n }\n\n return root\n}\n\nconst renderNodes = (\n nodes: ActionMenuNode[],\n onAction: (action: ActionDescriptor) => void,\n): React.ReactNode =>\n nodes.map((node) => {\n if (node.kind === 'action') {\n return (\n <DropdownMenuItem\n key={node.action.name}\n onSelect={() => onAction(node.action)}\n >\n <Zap className=\"size-4\" /> {getActionLabel(node.action)}\n </DropdownMenuItem>\n )\n }\n return (\n <DropdownMenuSub key={node.group.key}>\n <DropdownMenuSubTrigger>\n {node.group.group.name}\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n {renderNodes(node.group.items, onAction)}\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n )\n })\n\nexport function ActionMenuItems({\n actions,\n onAction,\n}: {\n actions: ActionDescriptor[]\n onAction(action: ActionDescriptor): void\n}): React.ReactElement | null {\n const nodes = React.useMemo(() => buildActionMenuTree(actions), [actions])\n if (nodes.length === 0) return null\n return <>{renderNodes(nodes, onAction)}</>\n}\n\nexport function ActionMenu({\n actions,\n onAction,\n t,\n trigger,\n menuLabel,\n align = 'end',\n}: ActionMenuProps): React.ReactElement | null {\n const nodes = React.useMemo(() => buildActionMenuTree(actions), [actions])\n if (nodes.length === 0) return null\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n {trigger ?? (\n <Button variant=\"outline\" size=\"sm\">\n <Zap className=\"size-4\" />\n {t('common:actions')}\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent align={align}>\n <DropdownMenuLabel>{menuLabel ?? t('common:actions')}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <ActionMenuItems actions={actions} onAction={onAction} />\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport function MoreActionsMenu({\n actions,\n onAction,\n t,\n menuLabel,\n}: Omit<ActionMenuProps, 'trigger' | 'align'>): React.ReactElement | null {\n if (actions.length === 0) return null\n return (\n <ActionMenu\n actions={actions}\n onAction={onAction}\n t={t}\n menuLabel={menuLabel}\n trigger={(\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">{t('common:openMenu')}</span>\n </Button>\n )}\n />\n )\n}\n","// Shared `notice` → toast plumbing for custom-action invocations.\n//\n// Every surface that fires a custom action (list toolbar, row menu, bulk\n// toolbar, show page, action component host) gets back the same\n// `CustomActionResponse` shape, so the mapping lives here rather than being\n// re-derived at each call site.\n\nimport type { useNotify } from './notify.js'\nimport type { CustomActionResponse } from './types.js'\n\ntype NotifyApi = ReturnType<typeof useNotify>\n\n/** Show a custom action's `notice` as the matching toast. Unrecognised\n * types fall back to a success toast; a missing notice is a no-op. */\nexport function showActionNotice(\n notify: NotifyApi,\n notice: CustomActionResponse['notice'],\n): void {\n if (!notice) return\n const type = notice.type === 'error' ? 'error'\n : notice.type === 'warning' ? 'warning'\n : notice.type === 'info' ? 'info'\n : 'success'\n notify[type]({ message: notice.message })\n}\n","// Runtime host for a custom action's UI component.\n//\n// An action declaring `component: 'MyForm'` (see `Action.component` in\n// @modern-admin/core) does not fire on click. Instead the operator lands\n// here: the named component is looked up on the ComponentLoader and rendered\n// with everything it needs to run the action — the priming `GET` response,\n// the record for record-scoped actions, and an `invoke(payload)` callback\n// that POSTs and surfaces the resulting `notice`.\n//\n// The host is presentation-neutral so the same code backs both surfaces:\n// the full `/resources/:id/actions/:name` page and the modal opened for\n// actions declaring `custom.showAs: 'dialog'`.\n\nimport * as React from 'react'\nimport { AlertCircle } from 'lucide-react'\nimport {\n useActionData,\n useInvokeBulkAction,\n useInvokeRecordAction,\n useInvokeResourceAction,\n useRecord,\n useResource,\n} from '../hooks.js'\nimport { useAdminContext } from '../provider.js'\nimport { useI18n } from '../i18n.js'\nimport { useNotify } from '../notify.js'\nimport { showActionNotice } from '../action-notice.js'\nimport type { ActionComponentProps, CustomActionResponse } from '../types.js'\n\nexport interface ActionComponentHostProps {\n resourceId: string\n actionName: string\n /** Set for record-scoped actions (`actionType: 'record'`). */\n recordId?: string\n /** Set for bulk-scoped actions (`actionType: 'bulk'`) — the selection. */\n recordIds?: string[]\n /** Dismiss the action — pop the page or close the dialog. */\n onClose(): void\n /** Fired after each successful `invoke()`. The bulk toolbar uses it to\n * clear its selection; in page mode the list has already unmounted, so\n * only dialog callers see it. */\n onSuccess?(): void\n}\n\nfunction HostError({ title, hint }: { title: string; hint?: string }): React.ReactElement {\n return (\n <div\n role=\"alert\"\n className=\"flex items-start gap-3 rounded-lg border border-destructive/50 bg-destructive/10 p-4 dark:bg-destructive/15\"\n >\n <AlertCircle className=\"mt-0.5 size-5 shrink-0 text-destructive\" />\n <div className=\"space-y-1 text-sm\">\n <p className=\"font-semibold text-destructive\">{title}</p>\n {hint && <p className=\"text-destructive/90\">{hint}</p>}\n </div>\n </div>\n )\n}\n\nexport function ActionComponentHost({\n resourceId,\n actionName,\n recordId,\n recordIds,\n onClose,\n onSuccess,\n}: ActionComponentHostProps): React.ReactElement {\n const resource = useResource(resourceId)\n const { components } = useAdminContext()\n const { t } = useI18n()\n const notify = useNotify()\n\n const action = resource?.actions?.find((a) => a.name === actionName)\n const componentName = action?.component ?? null\n const Custom = componentName ? components?.get(componentName) : undefined\n\n // Only prime once we know the action exists and its component resolved —\n // otherwise the page renders an error and the handler must not run.\n const primed = useActionData(resourceId, actionName, {\n ...(recordId !== undefined ? { recordId } : {}),\n ...(recordIds !== undefined ? { recordIds } : {}),\n enabled: Boolean(action) && Boolean(Custom),\n })\n const record = useRecord(resourceId, recordId)\n const invokeRecord = useInvokeRecordAction(resourceId)\n const invokeResource = useInvokeResourceAction(resourceId)\n const invokeBulk = useInvokeBulkAction(resourceId)\n\n const submitting = invokeRecord.isPending || invokeResource.isPending || invokeBulk.isPending\n const invoke = React.useCallback(\n async (payload: Record<string, unknown> = {}): Promise<CustomActionResponse> => {\n // Scope is decided by what the host was mounted with, not by the\n // action's declared `actionType` — a mismatch would build a request\n // the server can't route.\n const res = recordId\n ? await invokeRecord.mutateAsync({ recordId, actionName, payload })\n : recordIds?.length\n ? await invokeBulk.mutateAsync({ actionName, ids: recordIds, payload })\n : await invokeResource.mutateAsync({ actionName, payload })\n showActionNotice(notify, res.notice)\n onSuccess?.()\n return res\n },\n [recordId, recordIds, actionName, invokeRecord, invokeBulk, invokeResource, notify, onSuccess],\n )\n\n if (!resource) return <p className=\"text-muted-foreground\">{t('common:loading')}</p>\n if (!action) {\n return <HostError title={t('action:notFound', { action: actionName })} />\n }\n if (!componentName || !Custom) {\n return (\n <HostError\n title={t('action:componentMissing', { component: componentName ?? actionName })}\n hint={t('action:componentMissingHint')}\n />\n )\n }\n if (primed.isError) {\n return (\n <HostError\n title={t('action:loadFailed')}\n hint={primed.error instanceof Error ? primed.error.message : undefined}\n />\n )\n }\n\n const props: ActionComponentProps = {\n action,\n resource,\n resourceId,\n ...(recordId !== undefined ? { recordId } : {}),\n ...(recordIds !== undefined ? { recordIds } : {}),\n ...(record.data?.record ? { record: record.data.record } : {}),\n ...(primed.data?.records ? { records: primed.data.records } : {}),\n ...(primed.data ? { data: primed.data } : {}),\n loading: primed.isLoading || (Boolean(recordId) && record.isLoading),\n invoke,\n submitting,\n close: onClose,\n }\n return <Custom {...props} />\n}\n"],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-page-D6BbXzUo.js","names":[],"sources":["../../../../react/src/pages/action-page.tsx"],"sourcesContent":["// Full-page surface for a custom action that declares a `component`.\n//\n// Routed at `/resources/:resourceId/actions/:actionName` (resource-scoped)\n// and `/resources/:resourceId/:recordId/actions/:actionName` (record-scoped).\n// The page owns the chrome — breadcrumbs, title, back button — and delegates\n// the action itself to `<ActionComponentHost/>`, which is also what the\n// dialog presentation (`custom.showAs: 'dialog'`) renders.\n\nimport * as React from 'react'\nimport { Button, Card, CardContent, CardHeader, CardTitle } from '@modern-admin/ui'\nimport { ArrowLeft } from 'lucide-react'\nimport { useRecord, useResource } from '../hooks.js'\nimport { useI18n } from '../i18n.js'\nimport { useNavigate } from '../router.js'\nimport { PageBreadcrumbs, homeCrumb } from '../breadcrumbs.js'\nimport { getActionLabel } from '../action-menu.js'\nimport { ActionComponentHost } from '../components/action-component-host.js'\n\nexport interface ResourceActionPageProps {\n resourceId: string\n actionName: string\n /** Present for record-scoped actions. */\n recordId?: string\n /** Present for bulk-scoped actions — read from `?recordIds=a,b,c`. */\n recordIds?: string[]\n}\n\nexport function ResourceActionPage({\n resourceId,\n actionName,\n recordId,\n recordIds,\n}: ResourceActionPageProps): React.ReactElement {\n const resource = useResource(resourceId)\n const record = useRecord(resourceId, recordId)\n const { t } = useI18n()\n const navigate = useNavigate()\n\n const action = resource?.actions?.find((a) => a.name === actionName)\n const title = action ? getActionLabel(action) : actionName\n\n // Dismissing returns to wherever the action was launched from: the record\n // for record-scoped actions, the list for resource-scoped ones.\n const close = React.useCallback(() => {\n if (recordId) navigate({ name: 'show', resourceId, recordId })\n else navigate({ name: 'list', resourceId })\n }, [navigate, resourceId, recordId])\n\n const recordLabel = record.data?.record?.title || recordId\n\n return (\n <div className=\"space-y-2 sm:space-y-4\">\n <PageBreadcrumbs\n items={[\n homeCrumb(t('common:home')),\n { label: resource?.name ?? resourceId, to: { name: 'list', resourceId } },\n ...(recordId\n ? [{ label: recordLabel ?? recordId, to: { name: 'show' as const, resourceId, recordId } }]\n : []),\n { label: title },\n ]}\n />\n <Card>\n <CardHeader className=\"flex flex-row items-center justify-between gap-3\">\n <CardTitle className=\"truncate\">{title}</CardTitle>\n <Button variant=\"outline\" size=\"sm\" onClick={close} className=\"shrink-0\">\n <ArrowLeft className=\"size-4\" />\n <span className=\"hidden sm:inline\">{t('common:back')}</span>\n </Button>\n </CardHeader>\n <CardContent>\n <ActionComponentHost\n resourceId={resourceId}\n actionName={actionName}\n {...(recordId !== undefined ? { recordId } : {})}\n {...(recordIds !== undefined ? { recordIds } : {})}\n onClose={close}\n />\n </CardContent>\n </Card>\n </div>\n )\n}\n"],"mappings":"2bA2BA,SAAgB,EAAmB,CACjC,aACA,aACA,WACA,aAC8C,CAC9C,IAAM,EAAW,EAAY,CAAU,EACjC,EAAS,EAAU,EAAY,CAAQ,EACvC,CAAE,KAAM,EAAQ,EAChB,EAAW,EAAY,EAEvB,EAAS,GAAU,SAAS,KAAM,GAAM,EAAE,OAAS,CAAU,EAC7D,EAAQ,EAAS,EAAe,CAAM,EAAI,EAI1C,EAAA,EAAc,gBAAkB,CACtB,EAAV,EAAmB,CAAE,KAAM,OAAQ,aAAY,UAAS,EAC9C,CAAE,KAAM,OAAQ,YAAW,CAAC,CAC5C,EAAG,CAAC,EAAU,EAAY,CAAQ,CAAC,EAE7B,EAAc,EAAO,MAAM,QAAQ,OAAS,EAElD,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,yBAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAO,CACL,EAAU,EAAE,aAAa,CAAC,EAC1B,CAAE,MAAO,GAAU,MAAQ,EAAY,GAAI,CAAE,KAAM,OAAQ,YAAW,CAAE,EACxE,GAAI,EACA,CAAC,CAAE,MAAO,GAAe,EAAU,GAAI,CAAE,KAAM,OAAiB,aAAY,UAAS,CAAE,CAAC,EACxF,CAAC,EACL,CAAE,MAAO,CAAM,CACjB,CACD,CAAA,GACD,EAAA,EAAA,KAAA,CAAC,EAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,EAAD,CAAY,UAAU,mDAAtB,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,UAAU,WAAY,SAAA,CAAiB,CAAA,GAClD,EAAA,EAAA,KAAA,CAAC,EAAD,CAAQ,QAAQ,UAAU,KAAK,KAAK,QAAS,EAAO,UAAU,WAA9D,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,UAAU,QAAU,CAAA,GAC/B,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,mBAAoB,SAAA,EAAE,aAAa,CAAQ,CAAA,CACrD,CACE,CAAA,CAAA,CACZ,CAAA,GAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACc,aACA,aACZ,GAAK,IAAa,IAAA,GAA2B,CAAC,EAAhB,CAAE,UAAS,EACzC,GAAK,IAAc,IAAA,GAA4B,CAAC,EAAjB,CAAE,WAAU,EAC3C,QAAS,CACV,CAAA,CACU,CAAA,CACT,CAAA,CAAA,CACH,GAET"}
|
|
Binary file
|
|
Binary file
|