@baseplate-dev/project-builder-web 0.2.2 → 0.2.4
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/assets/-constants-BC9esibq.js +4 -0
- package/dist/assets/-constants-BC9esibq.js.map +1 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-BEiksgOM.js → web-BaAZd6c4.js} +2 -2
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-BEiksgOM.js.map → web-BaAZd6c4.js.map} +1 -1
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-C7fVVw7M.js +5 -0
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-C7fVVw7M.js.map +1 -0
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-CbLT5eCP.js +46 -0
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-CbLT5eCP.js.map +1 -0
- package/dist/assets/{_virtual___federation_fn_import-BllbkH3T.js → _virtual___federation_fn_import-CzwHXTRo.js} +2 -2
- package/dist/assets/{_virtual___federation_fn_import-BllbkH3T.js.map → _virtual___federation_fn_import-CzwHXTRo.js.map} +1 -1
- package/dist/assets/{backend-CoTpyUcx.js → backend-B3MDDop9.js} +2 -2
- package/dist/assets/{backend-CoTpyUcx.js.map → backend-B3MDDop9.js.map} +1 -1
- package/dist/assets/{badge-with-type-label-BTWMyfcL.js → badge-with-type-label-CNVJUqNt.js} +2 -2
- package/dist/assets/{badge-with-type-label-BTWMyfcL.js.map → badge-with-type-label-CNVJUqNt.js.map} +1 -1
- package/dist/assets/{edit._id-BzfH4jc0.js → edit._id-Ce2Ymc-o.js} +2 -2
- package/dist/assets/{edit._id-BzfH4jc0.js.map → edit._id-Ce2Ymc-o.js.map} +1 -1
- package/dist/assets/{enum-info-form-EeSfFY6Y.js → enum-info-form-CVHvQqYN.js} +2 -2
- package/dist/assets/{enum-info-form-EeSfFY6Y.js.map → enum-info-form-CVHvQqYN.js.map} +1 -1
- package/dist/assets/{graphql-D5k81FHL.js → graphql-BlURtGp8.js} +2 -2
- package/dist/assets/{graphql-D5k81FHL.js.map → graphql-BlURtGp8.js.map} +1 -1
- package/dist/assets/{hierarchy-CDgBahPq.js → hierarchy-B1V1qwhL.js} +2 -2
- package/dist/assets/{hierarchy-CDgBahPq.js.map → hierarchy-B1V1qwhL.js.map} +1 -1
- package/dist/assets/{index-CJO9KLcs.js → index-1DYdEncJ.js} +2 -2
- package/dist/assets/{index-CJO9KLcs.js.map → index-1DYdEncJ.js.map} +1 -1
- package/dist/assets/{index-ghp0h4jr.js → index-1rH5AIf1.js} +2 -2
- package/dist/assets/{index-ghp0h4jr.js.map → index-1rH5AIf1.js.map} +1 -1
- package/dist/assets/index-B9Di1LKs.css +1 -0
- package/dist/assets/{index-CJK2iGtK.js → index-BEMXZzJT.js} +2 -2
- package/dist/assets/{index-CJK2iGtK.js.map → index-BEMXZzJT.js.map} +1 -1
- package/dist/assets/{index-VsI1zxbc.js → index-BMCloLL3.js} +5 -5
- package/dist/assets/index-BMCloLL3.js.map +1 -0
- package/dist/assets/{index-Lx-c3w3C.js → index-BRdI-lNh.js} +2 -2
- package/dist/assets/{index-Lx-c3w3C.js.map → index-BRdI-lNh.js.map} +1 -1
- package/dist/assets/{index-BYcSgAsc.js → index-BazMYfmA.js} +2 -2
- package/dist/assets/{index-BYcSgAsc.js.map → index-BazMYfmA.js.map} +1 -1
- package/dist/assets/index-Bw18F51O.js +2 -0
- package/dist/assets/index-Bw18F51O.js.map +1 -0
- package/dist/assets/{index-MPyZaAGd.js → index-BxN9iLEr.js} +2 -2
- package/dist/assets/{index-MPyZaAGd.js.map → index-BxN9iLEr.js.map} +1 -1
- package/dist/assets/{index-B5VAZnNv.js → index-D9m5kBYP.js} +2 -2
- package/dist/assets/{index-B5VAZnNv.js.map → index-D9m5kBYP.js.map} +1 -1
- package/dist/assets/{index-DbPo0KMc.js → index-DJrwWHdu.js} +2 -2
- package/dist/assets/{index-DbPo0KMc.js.map → index-DJrwWHdu.js.map} +1 -1
- package/dist/assets/{index-HA6UU1kS.js → index-DlrvL7L-.js} +2 -2
- package/dist/assets/{index-HA6UU1kS.js.map → index-DlrvL7L-.js.map} +1 -1
- package/dist/assets/index.esm-C6ngV5UE.js +10 -0
- package/dist/assets/index.esm-C6ngV5UE.js.map +1 -0
- package/dist/assets/{model-info-form-DWYyoR9g.js → model-info-form-B3UWaCuz.js} +2 -2
- package/dist/assets/{model-info-form-DWYyoR9g.js.map → model-info-form-B3UWaCuz.js.map} +1 -1
- package/dist/assets/model-merger-BoPVsTMR.js +2 -0
- package/dist/assets/model-merger-BoPVsTMR.js.map +1 -0
- package/dist/assets/new-app-dialog-DmiiaAcy.js +2 -0
- package/dist/assets/new-app-dialog-DmiiaAcy.js.map +1 -0
- package/dist/assets/{new-enum-dialog-DQxXV11c.js → new-enum-dialog-eE-ABw-k.js} +2 -2
- package/dist/assets/{new-enum-dialog-DQxXV11c.js.map → new-enum-dialog-eE-ABw-k.js.map} +1 -1
- package/dist/assets/new-model-dialog-DsUABBKe.js +2 -0
- package/dist/assets/new-model-dialog-DsUABBKe.js.map +1 -0
- package/dist/assets/{route-DzDATEIF.js → route-BcszKLdV.js} +2 -2
- package/dist/assets/{route-DzDATEIF.js.map → route-BcszKLdV.js.map} +1 -1
- package/dist/assets/{route-DwYLJh1Z.js → route-CBp4D5qe.js} +2 -2
- package/dist/assets/{route-DwYLJh1Z.js.map → route-CBp4D5qe.js.map} +1 -1
- package/dist/assets/{route-Ofm_Xk4Q.js → route-Cey_4lZX.js} +2 -2
- package/dist/assets/{route-Ofm_Xk4Q.js.map → route-Cey_4lZX.js.map} +1 -1
- package/dist/assets/route-CqtFDOsk.js +2 -0
- package/dist/assets/{route-cP4l-WDl.js.map → route-CqtFDOsk.js.map} +1 -1
- package/dist/assets/{route-De01FR6I.js → route-DioBcaFQ.js} +2 -2
- package/dist/assets/{route-De01FR6I.js.map → route-DioBcaFQ.js.map} +1 -1
- package/dist/assets/{route-CmgYcJT_.js → route-MODh5ysn.js} +2 -2
- package/dist/assets/{route-CmgYcJT_.js.map → route-MODh5ysn.js.map} +1 -1
- package/dist/assets/{route-xrfcRWC7.js → route-VW3n5-PC.js} +2 -2
- package/dist/assets/{route-xrfcRWC7.js.map → route-VW3n5-PC.js.map} +1 -1
- package/dist/assets/{route-D9aGR6_H.js → route-rX4E9J5V.js} +2 -2
- package/dist/assets/{route-D9aGR6_H.js.map → route-rX4E9J5V.js.map} +1 -1
- package/dist/assets/{route-C0DpSC86.js → route-sqtj7nCf.js} +2 -2
- package/dist/assets/{route-C0DpSC86.js.map → route-sqtj7nCf.js.map} +1 -1
- package/dist/assets/{sections-Bl6CBMqu.js → sections-D48VzvlO.js} +2 -2
- package/dist/assets/{sections-Bl6CBMqu.js.map → sections-D48VzvlO.js.map} +1 -1
- package/dist/assets/{sections._sectionKey-lnWxksec.js → sections._sectionKey-Cojmxr6C.js} +2 -2
- package/dist/assets/{sections._sectionKey-lnWxksec.js.map → sections._sectionKey-Cojmxr6C.js.map} +1 -1
- package/dist/assets/{service-CH1p5s9d.js → service-CuzPG1Yl.js} +2 -2
- package/dist/assets/{service-CH1p5s9d.js.map → service-CuzPG1Yl.js.map} +1 -1
- package/dist/assets/template-extractor-B9fEhgo_.js +2 -0
- package/dist/assets/template-extractor-B9fEhgo_.js.map +1 -0
- package/dist/assets/{theme-builder-LEW3UAWc.js → theme-builder-Bw8c01EE.js} +2 -2
- package/dist/assets/{theme-builder-LEW3UAWc.js.map → theme-builder-Bw8c01EE.js.map} +1 -1
- package/dist/assets/{use-definition-schema-BB2JVpWG.js → use-definition-schema-DANa9pch.js} +2 -2
- package/dist/assets/{use-definition-schema-BB2JVpWG.js.map → use-definition-schema-DANa9pch.js.map} +1 -1
- package/dist/assets/{use-enum-form-CMIHUOLu.js → use-enum-form-Dz-Wnbxj.js} +2 -2
- package/dist/assets/{use-enum-form-CMIHUOLu.js.map → use-enum-form-Dz-Wnbxj.js.map} +1 -1
- package/dist/assets/use-model-form-DMG7DdSK.js +2 -0
- package/dist/assets/use-model-form-DMG7DdSK.js.map +1 -0
- package/dist/assets/{utils-BMK0C56t.js → utils-95Eli4qP.js} +2 -2
- package/dist/assets/{utils-BMK0C56t.js.map → utils-95Eli4qP.js.map} +1 -1
- package/dist/assets/{web-BRltYNcY.js → web-B6BjTv_c.js} +2 -2
- package/dist/assets/{web-BRltYNcY.js.map → web-B6BjTv_c.js.map} +1 -1
- package/dist/index.html +5 -5
- package/package.json +7 -7
- package/dist/assets/-constants-DdiaSxL9.js +0 -4
- package/dist/assets/-constants-DdiaSxL9.js.map +0 -1
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-ByoEPRxY.js +0 -5
- package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-ByoEPRxY.js.map +0 -1
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-2ByEN20H.js +0 -46
- package/dist/assets/__federation_shared_@baseplate-dev/ui-components-2ByEN20H.js.map +0 -1
- package/dist/assets/index-BDJ79UQH.css +0 -1
- package/dist/assets/index-VsI1zxbc.js.map +0 -1
- package/dist/assets/index-y6w6FRv9.js +0 -2
- package/dist/assets/index-y6w6FRv9.js.map +0 -1
- package/dist/assets/index.esm-CGbP6mNa.js +0 -10
- package/dist/assets/index.esm-CGbP6mNa.js.map +0 -1
- package/dist/assets/model-merger-s86W4xg2.js +0 -2
- package/dist/assets/model-merger-s86W4xg2.js.map +0 -1
- package/dist/assets/new-app-dialog-CGp0nciM.js +0 -2
- package/dist/assets/new-app-dialog-CGp0nciM.js.map +0 -1
- package/dist/assets/new-model-dialog-Ta_YghmL.js +0 -2
- package/dist/assets/new-model-dialog-Ta_YghmL.js.map +0 -1
- package/dist/assets/route-cP4l-WDl.js +0 -2
- package/dist/assets/template-extractor-_5pq8PSE.js +0 -2
- package/dist/assets/template-extractor-_5pq8PSE.js.map +0 -1
- package/dist/assets/use-model-form-hncL1MN2.js +0 -2
- package/dist/assets/use-model-form-hncL1MN2.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as r}from"./_virtual___federation_fn_import-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{i as r}from"./_virtual___federation_fn_import-CzwHXTRo.js";import{j as e}from"./index.esm-C6ngV5UE.js";import{b as N,c as y,L as k,l as E,I as S,t as I}from"./index-BMCloLL3.js";import{D}from"./index-BxN9iLEr.js";import{l as $}from"./utils-95Eli4qP.js";function A(c,n,a){return`/api/plugins/${c}/${n}/static/${a}`}const{pluginEntityType:b,webConfigSpec:v}=await r("@baseplate-dev/project-builder-lib"),{useProjectDefinition:F}=await r("@baseplate-dev/project-builder-lib/web"),{Button:f,Card:W,CardContent:M,CardDescription:L,CardHeader:T,CardTitle:z}=await r("@baseplate-dev/ui-components");function C({className:c,plugin:n,isActive:a}){const{currentProjectId:s}=N(),{saveDefinitionWithFeedbackSync:d,schemaParserContext:u,definitionContainer:p,pluginContainer:m,isSavingDefinition:o}=F(),l=y();function i(){if($(u.pluginStore,n,p.definition).getPluginSpec(v).getWebConfigComponent(n.id)){l({to:`/plugins/edit/${n.id}`}).catch(E);return}d(j=>{j.plugins=[...(j.plugins??[]).filter(x=>x.packageName!==n.packageName||x.name!==n.name),{id:b.idFromKey(n.id),packageName:n.packageName,name:n.name,version:n.version,config:{}}]},{successMessage:`Enabled ${n.displayName}!`})}function t(){d(g=>{g.plugins=(g.plugins??[]).filter(h=>h.id!==b.idFromKey(n.id))},{successMessage:`Disabled ${n.displayName}!`})}const w=m.getPluginSpec(v).getWebConfigComponent(n.id);return e.jsxs(W,{className:c,children:[e.jsx(T,{children:e.jsxs("div",{className:"flex items-center justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx("div",{className:"rounded-xl border",children:n.icon&&s?e.jsx("img",{src:A(s,n.id,n.icon),className:"size-12 rounded-xl bg-muted",alt:`${n.displayName} logo`}):e.jsx(D,{className:"size-12 bg-muted p-2"})}),e.jsxs("div",{children:[e.jsx(z,{children:n.displayName}),e.jsx(L,{children:n.packageName})]})]}),e.jsx("div",{children:a?w?e.jsx(k,{to:"/plugins/edit/$id",from:"/",params:{id:n.id},children:e.jsx(f,{variant:"secondary",children:"Configure"})}):e.jsx(f,{variant:"secondary",onClick:t,disabled:o,children:"Disable"}):e.jsx(f,{variant:"secondary",onClick:i,disabled:o,children:"Enable"})})]})}),e.jsx(M,{children:e.jsx("div",{className:"text-sm",children:e.jsx("p",{children:n.description})})})]})}const{useProjectDefinition:H}=await r("@baseplate-dev/project-builder-lib/web"),{EmptyDisplay:K,ErrorableLoader:R}=await r("@baseplate-dev/ui-components"),{useEffect:B,useState:P}=await r("react"),O=function(){const{currentProjectId:n}=N(),[a,s]=P(null),{definition:d}=H(),[u,p]=P(null);if(B(()=>{if(s(null),!!n){if(S){s([]);return}I.plugins.getAvailablePlugins.mutate({projectId:n}).then(s).catch(p)}},[n]),!a)return e.jsx(R,{error:u});if(a.length===0)return e.jsx(K,{header:"No plugins available.",subtitle:"Please install plugins via package.json."});const m=d.plugins??[],o=a.filter(i=>m.some(t=>t.packageName===i.packageName&&t.name===i.name)),l=a.filter(i=>!i.hidden&&!m.some(t=>t.packageName===i.packageName&&t.name===i.name));return e.jsxs("div",{className:"max-w-2xl space-y-4 p-4",children:[e.jsx("h1",{children:"Manage Plugins"}),e.jsx("p",{children:"Plugins are a way to extend the functionality of your project, such as adding authentication. You can enable, disable, and manage plugins from this page."}),e.jsxs("p",{children:["To add additional plugins, you can install them to your root package with ",e.jsx("strong",{children:"pnpm"}),"."]}),o.length===0?null:e.jsxs(e.Fragment,{children:[e.jsxs("h3",{children:["Active Plugins (",o.length,")"]}),o.map(i=>e.jsx(C,{plugin:i,isActive:!0},i.id))]}),l.length===0?null:e.jsxs(e.Fragment,{children:[e.jsxs("h3",{children:["Available Plugins (",l.length,")"]}),l.map(i=>e.jsx(C,{plugin:i,isActive:!1},i.id))]})]})};export{O as component};
|
|
2
|
+
//# sourceMappingURL=index-D9m5kBYP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-B5VAZnNv.js","sources":["../../src/services/plugins.ts","../../src/routes/plugins/-components/plugin-card.tsx","../../src/routes/plugins/index.tsx?tsr-split=component"],"sourcesContent":["export function getPluginStaticUrl(\n projectId: string,\n pluginId: string,\n path: string,\n): string {\n return `/api/plugins/${projectId}/${pluginId}/static/${path}`;\n}\n","import type { PluginMetadataWithPaths } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\n\nimport {\n pluginEntityType,\n webConfigSpec,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@baseplate-dev/ui-components';\nimport { Link, useNavigate } from '@tanstack/react-router';\nimport { MdExtension } from 'react-icons/md';\n\nimport { useProjects } from '#src/hooks/use-projects.js';\nimport { logAndFormatError } from '#src/services/error-formatter.js';\nimport { getPluginStaticUrl } from '#src/services/plugins.js';\n\nimport { loadPluginImplementationStoreWithNewPlugin } from './utils.js';\n\ninterface PluginCardProps {\n className?: string;\n plugin: PluginMetadataWithPaths;\n isActive: boolean;\n}\n\nexport function PluginCard({\n className,\n plugin,\n isActive,\n}: PluginCardProps): React.JSX.Element {\n const { currentProjectId } = useProjects();\n const {\n saveDefinitionWithFeedbackSync,\n schemaParserContext,\n definitionContainer,\n pluginContainer,\n isSavingDefinition,\n } = useProjectDefinition();\n const navigate = useNavigate();\n\n function enablePlugin(): void {\n const implementations = loadPluginImplementationStoreWithNewPlugin(\n schemaParserContext.pluginStore,\n plugin,\n definitionContainer.definition,\n );\n const webConfigImplementation =\n implementations.getPluginSpec(webConfigSpec);\n const webConfig = webConfigImplementation.getWebConfigComponent(plugin.id);\n if (webConfig) {\n // redirect to plugin config page\n navigate({ to: `/plugins/edit/${plugin.id}` }).catch(logAndFormatError);\n return;\n }\n saveDefinitionWithFeedbackSync(\n (draft) => {\n draft.plugins = [\n ...(draft.plugins ?? []).filter(\n (p) =>\n p.packageName !== plugin.packageName || p.name !== plugin.name,\n ),\n {\n id: pluginEntityType.idFromKey(plugin.id),\n packageName: plugin.packageName,\n name: plugin.name,\n version: plugin.version,\n config: {},\n },\n ];\n },\n {\n successMessage: `Enabled ${plugin.displayName}!`,\n },\n );\n }\n\n function disablePlugin(): void {\n saveDefinitionWithFeedbackSync(\n (draft) => {\n draft.plugins = (draft.plugins ?? []).filter(\n (p) => p.id !== pluginEntityType.idFromKey(plugin.id),\n );\n },\n {\n successMessage: `Disabled ${plugin.displayName}!`,\n },\n );\n }\n\n const webConfigImplementation = pluginContainer.getPluginSpec(webConfigSpec);\n const webConfig = webConfigImplementation.getWebConfigComponent(plugin.id);\n\n return (\n <Card className={className}>\n <CardHeader>\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"flex items-center space-x-4\">\n <div className=\"rounded-xl border\">\n {plugin.icon && currentProjectId ? (\n <img\n src={getPluginStaticUrl(\n currentProjectId,\n plugin.id,\n plugin.icon,\n )}\n className=\"size-12 rounded-xl bg-muted\"\n alt={`${plugin.displayName} logo`}\n />\n ) : (\n <MdExtension className=\"size-12 bg-muted p-2\" />\n )}\n </div>\n <div>\n <CardTitle>{plugin.displayName}</CardTitle>\n <CardDescription>{plugin.packageName}</CardDescription>\n </div>\n </div>\n <div>\n {(() => {\n if (!isActive) {\n return (\n <Button\n variant=\"secondary\"\n onClick={enablePlugin}\n disabled={isSavingDefinition}\n >\n Enable\n </Button>\n );\n } else if (webConfig) {\n return (\n <Link\n to={`/plugins/edit/$id`}\n from=\"/\"\n params={{ id: plugin.id }}\n >\n <Button variant=\"secondary\">Configure</Button>\n </Link>\n );\n } else {\n return (\n <Button\n variant=\"secondary\"\n onClick={disablePlugin}\n disabled={isSavingDefinition}\n >\n Disable\n </Button>\n );\n }\n })()}\n </div>\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"text-sm\">\n <p>{plugin.description}</p>\n </div>\n </CardContent>\n </Card>\n );\n}\n","import type { PluginMetadataWithPaths } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\n\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport { EmptyDisplay, ErrorableLoader } from '@baseplate-dev/ui-components';\nimport { createFileRoute } from '@tanstack/react-router';\nimport { useEffect, useState } from 'react';\n\nimport { useProjects } from '#src/hooks/use-projects.js';\nimport { IS_PREVIEW } from '#src/services/config.js';\nimport { trpc } from '#src/services/trpc.js';\n\nimport { PluginCard } from './-components/plugin-card.js';\n\nexport const Route = createFileRoute('/plugins/')({\n component: PluginsHomePage,\n});\n\nfunction PluginsHomePage(): React.JSX.Element {\n const { currentProjectId } = useProjects();\n const [plugins, setPlugins] = useState<PluginMetadataWithPaths[] | null>(\n null,\n );\n const { definition } = useProjectDefinition();\n const [error, setError] = useState<unknown>(null);\n\n useEffect(() => {\n setPlugins(null);\n if (!currentProjectId) {\n return;\n }\n if (IS_PREVIEW) {\n setPlugins([]);\n return;\n }\n trpc.plugins.getAvailablePlugins\n .mutate({ projectId: currentProjectId })\n .then(setPlugins)\n .catch(setError);\n }, [currentProjectId]);\n\n if (!plugins) {\n return <ErrorableLoader error={error} />;\n }\n\n if (plugins.length === 0) {\n return (\n <EmptyDisplay\n header=\"No plugins available.\"\n subtitle=\"Please install plugins via package.json.\"\n />\n );\n }\n\n const pluginConfig = definition.plugins ?? [];\n const installedPlugins = plugins.filter((plugin) =>\n pluginConfig.some(\n (config) =>\n config.packageName === plugin.packageName &&\n config.name === plugin.name,\n ),\n );\n const uninstalledPlugins = plugins.filter(\n (plugin) =>\n !pluginConfig.some(\n (config) =>\n config.packageName === plugin.packageName &&\n config.name === plugin.name,\n ),\n );\n\n return (\n <div className=\"max-w-2xl space-y-4 p-4\">\n <h1>Manage Plugins</h1>\n <p>\n Plugins are a way to extend the functionality of your project, such as\n adding authentication. You can enable, disable, and manage plugins from\n this page.\n </p>\n <p>\n To add additional plugins, you can install them to your root package\n with <strong>pnpm</strong>.\n </p>\n {installedPlugins.length === 0 ? null : (\n <>\n <h3>Active Plugins ({installedPlugins.length})</h3>\n {installedPlugins.map((plugin) => (\n <PluginCard key={plugin.id} plugin={plugin} isActive />\n ))}\n </>\n )}\n {uninstalledPlugins.length === 0 ? null : (\n <>\n <h3>Available Plugins ({uninstalledPlugins.length})</h3>\n {uninstalledPlugins.map((plugin) => (\n <PluginCard key={plugin.id} plugin={plugin} isActive={false} />\n ))}\n </>\n )}\n </div>\n );\n}\n"],"names":["getPluginStaticUrl","projectId","pluginId","path","pluginEntityType","webConfigSpec","importShared","useProjectDefinition","Button","Card","CardContent","CardDescription","CardHeader","CardTitle","PluginCard","className","plugin","isActive","currentProjectId","useProjects","saveDefinitionWithFeedbackSync","schemaParserContext","definitionContainer","pluginContainer","isSavingDefinition","navigate","useNavigate","enablePlugin","loadPluginImplementationStoreWithNewPlugin","logAndFormatError","draft","p","disablePlugin","webConfig","jsxs","jsx","MdExtension","Link","EmptyDisplay","ErrorableLoader","useEffect","useState","SplitComponent","plugins","setPlugins","definition","error","setError","IS_PREVIEW","getAvailablePlugins","mutate","then","catch","length","pluginConfig","installedPlugins","filter","some","config","packageName","name","uninstalledPlugins","Fragment","map","id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-D9m5kBYP.js","sources":["../../src/services/plugins.ts","../../src/routes/plugins/-components/plugin-card.tsx","../../src/routes/plugins/index.tsx?tsr-split=component"],"sourcesContent":["export function getPluginStaticUrl(\n projectId: string,\n pluginId: string,\n path: string,\n): string {\n return `/api/plugins/${projectId}/${pluginId}/static/${path}`;\n}\n","import type { PluginMetadataWithPaths } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\n\nimport {\n pluginEntityType,\n webConfigSpec,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@baseplate-dev/ui-components';\nimport { Link, useNavigate } from '@tanstack/react-router';\nimport { MdExtension } from 'react-icons/md';\n\nimport { useProjects } from '#src/hooks/use-projects.js';\nimport { logAndFormatError } from '#src/services/error-formatter.js';\nimport { getPluginStaticUrl } from '#src/services/plugins.js';\n\nimport { loadPluginImplementationStoreWithNewPlugin } from './utils.js';\n\ninterface PluginCardProps {\n className?: string;\n plugin: PluginMetadataWithPaths;\n isActive: boolean;\n}\n\nexport function PluginCard({\n className,\n plugin,\n isActive,\n}: PluginCardProps): React.JSX.Element {\n const { currentProjectId } = useProjects();\n const {\n saveDefinitionWithFeedbackSync,\n schemaParserContext,\n definitionContainer,\n pluginContainer,\n isSavingDefinition,\n } = useProjectDefinition();\n const navigate = useNavigate();\n\n function enablePlugin(): void {\n const implementations = loadPluginImplementationStoreWithNewPlugin(\n schemaParserContext.pluginStore,\n plugin,\n definitionContainer.definition,\n );\n const webConfigImplementation =\n implementations.getPluginSpec(webConfigSpec);\n const webConfig = webConfigImplementation.getWebConfigComponent(plugin.id);\n if (webConfig) {\n // redirect to plugin config page\n navigate({ to: `/plugins/edit/${plugin.id}` }).catch(logAndFormatError);\n return;\n }\n saveDefinitionWithFeedbackSync(\n (draft) => {\n draft.plugins = [\n ...(draft.plugins ?? []).filter(\n (p) =>\n p.packageName !== plugin.packageName || p.name !== plugin.name,\n ),\n {\n id: pluginEntityType.idFromKey(plugin.id),\n packageName: plugin.packageName,\n name: plugin.name,\n version: plugin.version,\n config: {},\n },\n ];\n },\n {\n successMessage: `Enabled ${plugin.displayName}!`,\n },\n );\n }\n\n function disablePlugin(): void {\n saveDefinitionWithFeedbackSync(\n (draft) => {\n draft.plugins = (draft.plugins ?? []).filter(\n (p) => p.id !== pluginEntityType.idFromKey(plugin.id),\n );\n },\n {\n successMessage: `Disabled ${plugin.displayName}!`,\n },\n );\n }\n\n const webConfigImplementation = pluginContainer.getPluginSpec(webConfigSpec);\n const webConfig = webConfigImplementation.getWebConfigComponent(plugin.id);\n\n return (\n <Card className={className}>\n <CardHeader>\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"flex items-center space-x-4\">\n <div className=\"rounded-xl border\">\n {plugin.icon && currentProjectId ? (\n <img\n src={getPluginStaticUrl(\n currentProjectId,\n plugin.id,\n plugin.icon,\n )}\n className=\"size-12 rounded-xl bg-muted\"\n alt={`${plugin.displayName} logo`}\n />\n ) : (\n <MdExtension className=\"size-12 bg-muted p-2\" />\n )}\n </div>\n <div>\n <CardTitle>{plugin.displayName}</CardTitle>\n <CardDescription>{plugin.packageName}</CardDescription>\n </div>\n </div>\n <div>\n {(() => {\n if (!isActive) {\n return (\n <Button\n variant=\"secondary\"\n onClick={enablePlugin}\n disabled={isSavingDefinition}\n >\n Enable\n </Button>\n );\n } else if (webConfig) {\n return (\n <Link\n to={`/plugins/edit/$id`}\n from=\"/\"\n params={{ id: plugin.id }}\n >\n <Button variant=\"secondary\">Configure</Button>\n </Link>\n );\n } else {\n return (\n <Button\n variant=\"secondary\"\n onClick={disablePlugin}\n disabled={isSavingDefinition}\n >\n Disable\n </Button>\n );\n }\n })()}\n </div>\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"text-sm\">\n <p>{plugin.description}</p>\n </div>\n </CardContent>\n </Card>\n );\n}\n","import type { PluginMetadataWithPaths } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\n\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport { EmptyDisplay, ErrorableLoader } from '@baseplate-dev/ui-components';\nimport { createFileRoute } from '@tanstack/react-router';\nimport { useEffect, useState } from 'react';\n\nimport { useProjects } from '#src/hooks/use-projects.js';\nimport { IS_PREVIEW } from '#src/services/config.js';\nimport { trpc } from '#src/services/trpc.js';\n\nimport { PluginCard } from './-components/plugin-card.js';\n\nexport const Route = createFileRoute('/plugins/')({\n component: PluginsHomePage,\n});\n\nfunction PluginsHomePage(): React.JSX.Element {\n const { currentProjectId } = useProjects();\n const [plugins, setPlugins] = useState<PluginMetadataWithPaths[] | null>(\n null,\n );\n const { definition } = useProjectDefinition();\n const [error, setError] = useState<unknown>(null);\n\n useEffect(() => {\n setPlugins(null);\n if (!currentProjectId) {\n return;\n }\n if (IS_PREVIEW) {\n setPlugins([]);\n return;\n }\n trpc.plugins.getAvailablePlugins\n .mutate({ projectId: currentProjectId })\n .then(setPlugins)\n .catch(setError);\n }, [currentProjectId]);\n\n if (!plugins) {\n return <ErrorableLoader error={error} />;\n }\n\n if (plugins.length === 0) {\n return (\n <EmptyDisplay\n header=\"No plugins available.\"\n subtitle=\"Please install plugins via package.json.\"\n />\n );\n }\n\n const pluginConfig = definition.plugins ?? [];\n const installedPlugins = plugins.filter((plugin) =>\n pluginConfig.some(\n (config) =>\n config.packageName === plugin.packageName &&\n config.name === plugin.name,\n ),\n );\n const uninstalledPlugins = plugins.filter(\n (plugin) =>\n !plugin.hidden &&\n !pluginConfig.some(\n (config) =>\n config.packageName === plugin.packageName &&\n config.name === plugin.name,\n ),\n );\n\n return (\n <div className=\"max-w-2xl space-y-4 p-4\">\n <h1>Manage Plugins</h1>\n <p>\n Plugins are a way to extend the functionality of your project, such as\n adding authentication. You can enable, disable, and manage plugins from\n this page.\n </p>\n <p>\n To add additional plugins, you can install them to your root package\n with <strong>pnpm</strong>.\n </p>\n {installedPlugins.length === 0 ? null : (\n <>\n <h3>Active Plugins ({installedPlugins.length})</h3>\n {installedPlugins.map((plugin) => (\n <PluginCard key={plugin.id} plugin={plugin} isActive />\n ))}\n </>\n )}\n {uninstalledPlugins.length === 0 ? null : (\n <>\n <h3>Available Plugins ({uninstalledPlugins.length})</h3>\n {uninstalledPlugins.map((plugin) => (\n <PluginCard key={plugin.id} plugin={plugin} isActive={false} />\n ))}\n </>\n )}\n </div>\n );\n}\n"],"names":["getPluginStaticUrl","projectId","pluginId","path","pluginEntityType","webConfigSpec","importShared","useProjectDefinition","Button","Card","CardContent","CardDescription","CardHeader","CardTitle","PluginCard","className","plugin","isActive","currentProjectId","useProjects","saveDefinitionWithFeedbackSync","schemaParserContext","definitionContainer","pluginContainer","isSavingDefinition","navigate","useNavigate","enablePlugin","loadPluginImplementationStoreWithNewPlugin","logAndFormatError","draft","p","disablePlugin","webConfig","jsxs","jsx","MdExtension","Link","EmptyDisplay","ErrorableLoader","useEffect","useState","SplitComponent","plugins","setPlugins","definition","error","setError","IS_PREVIEW","getAvailablePlugins","mutate","then","catch","length","pluginConfig","installedPlugins","filter","some","config","packageName","name","uninstalledPlugins","hidden","Fragment","map","id"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as c}from"./_virtual___federation_fn_import-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{i as c}from"./_virtual___federation_fn_import-CzwHXTRo.js";import{j as e}from"./index.esm-C6ngV5UE.js";import{L as s}from"./index-BMCloLL3.js";const{Button:n,Card:i,CardDescription:r,CardFooter:a,CardHeader:o,CardTitle:t}=await c("@baseplate-dev/ui-components"),x=function(){return e.jsx("div",{className:"flex-1 bg-white",children:e.jsxs("div",{className:"mx-auto w-160 space-y-4 p-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h1",{children:"Baseplate Project Builder"}),e.jsxs("p",{children:["When you've set everything up, just click the"," ",e.jsx("strong",{children:"Sync"})," button and Baseplate will sync the project configuration to your codebase."]})]}),e.jsxs("div",{className:"grid gap-4 md:grid-cols-1",children:[e.jsxs(i,{children:[e.jsxs(o,{children:[e.jsx(t,{children:"Models"}),e.jsx(r,{children:"Models are the core of your app. They define the data that your app will store and manipulate."})]}),e.jsx(a,{children:e.jsx(s,{to:"/data",from:"/",children:e.jsx(n,{children:"Configure Models"})})})]}),e.jsxs(i,{children:[e.jsxs(o,{children:[e.jsx(t,{children:"Plugins"}),e.jsx(r,{children:"Baseplate comes with a number of plugins that you can enable or disable, such as email and authentication."})]}),e.jsx(a,{children:e.jsx(s,{to:"/plugins",from:"/",children:e.jsx(n,{children:"Configure Plugins"})})})]}),e.jsxs(i,{children:[e.jsxs(o,{children:[e.jsx(t,{children:"Apps & Repositories"}),e.jsx(r,{children:"Each app represents a separate application that can be run, e.g. backend, frontend, mobile app, etc. You can also configure how the apps are organized into repositories, e.g. monorepos."})]}),e.jsx(a,{children:e.jsx(s,{className:"inline-block",to:"/apps",from:"/",children:e.jsx(n,{children:"Configure Apps"})})})]})]})]})})};export{x as component};
|
|
2
|
+
//# sourceMappingURL=index-DJrwWHdu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DJrwWHdu.js","sources":["../../src/routes/index.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n Button,\n Card,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute, Link } from '@tanstack/react-router';\n\nexport const Route = createFileRoute('/')({\n component: Index,\n});\n\nfunction Index(): React.JSX.Element {\n return (\n <div className=\"flex-1 bg-white\">\n <div className=\"mx-auto w-160 space-y-4 p-4\">\n <div className=\"space-y-2\">\n <h1>Baseplate Project Builder</h1>\n <p>\n When you've set everything up, just click the{' '}\n <strong>Sync</strong> button and Baseplate will sync the project\n configuration to your codebase.\n </p>\n </div>\n <div className=\"grid gap-4 md:grid-cols-1\">\n <Card>\n <CardHeader>\n <CardTitle>Models</CardTitle>\n <CardDescription>\n Models are the core of your app. They define the data that your\n app will store and manipulate.\n </CardDescription>\n </CardHeader>\n <CardFooter>\n <Link to=\"/data\" from=\"/\">\n <Button>Configure Models</Button>\n </Link>\n </CardFooter>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Plugins</CardTitle>\n <CardDescription>\n Baseplate comes with a number of plugins that you can enable or\n disable, such as email and authentication.\n </CardDescription>\n </CardHeader>\n <CardFooter>\n <Link to=\"/plugins\" from=\"/\">\n <Button>Configure Plugins</Button>\n </Link>\n </CardFooter>\n </Card>\n <Card>\n <CardHeader>\n <CardTitle>Apps & Repositories</CardTitle>\n <CardDescription>\n Each app represents a separate application that can be run, e.g.\n backend, frontend, mobile app, etc. You can also configure how\n the apps are organized into repositories, e.g. monorepos.\n </CardDescription>\n </CardHeader>\n <CardFooter>\n <Link className=\"inline-block\" to=\"/apps\" from=\"/\">\n <Button>Configure Apps</Button>\n </Link>\n </CardFooter>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Button","Card","CardDescription","CardFooter","CardHeader","CardTitle","importShared","SplitComponent","jsxs","jsx","Link"],"mappings":"sJAEA,KAAA,CAAA,OAAAA,EAAA,KAAAC,EAAA,gBAAAC,EAAA,WAAAC,EAAA,WAAAC,EAAA,UAAAC,CAAA,EAAA,MAAAC,EAAA,8BAAA,EAQ+DC,EAAA,UAM3B,CAClC,aACG,MAAI,CAAA,UAAU,kBACb,SAACC,EAAA,KAAA,MAAA,CAAI,UAAU,8BACb,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,YACb,SAAA,CAAAC,EAAAA,IAAC,MAAG,SAAyB,2BAAA,CAAA,SAC5B,IAAC,CAAA,SAAA,CAAA,gDACmD,IACnDA,EAAAA,IAAC,UAAO,SAAI,MAAA,CAAA,EAAS,6EAAA,CAEvB,CAAA,CAAA,EACF,EACAD,EAAAA,KAAC,MAAI,CAAA,UAAU,4BACb,SAAA,CAAAA,OAACP,EACC,CAAA,SAAA,CAAAO,OAACJ,EACC,CAAA,SAAA,CAAAK,EAAAA,IAACJ,GAAU,SAAM,QAAA,CAAA,EACjBI,EAAAA,IAACP,GAAe,SAGhB,gGAAA,CAAA,CAAA,EACF,EACCO,EAAA,IAAAN,EAAA,CACC,SAACM,EAAA,IAAAC,EAAA,CAAK,GAAG,QAAQ,KAAK,IACpB,SAACD,EAAAA,IAAAT,EAAA,CAAO,SAAgB,kBAAA,CAAA,CAAA,CAC1B,CACF,CAAA,CAAA,EACF,SACCC,EACC,CAAA,SAAA,CAAAO,OAACJ,EACC,CAAA,SAAA,CAAAK,EAAAA,IAACJ,GAAU,SAAO,SAAA,CAAA,EAClBI,EAAAA,IAACP,GAAe,SAGhB,4GAAA,CAAA,CAAA,EACF,EACCO,EAAA,IAAAN,EAAA,CACC,SAACM,EAAA,IAAAC,EAAA,CAAK,GAAG,WAAW,KAAK,IACvB,SAACD,EAAAA,IAAAT,EAAA,CAAO,SAAiB,mBAAA,CAAA,CAAA,CAC3B,CACF,CAAA,CAAA,EACF,SACCC,EACC,CAAA,SAAA,CAAAO,OAACJ,EACC,CAAA,SAAA,CAAAK,EAAAA,IAACJ,GAAU,SAAmB,qBAAA,CAAA,EAC9BI,EAAAA,IAACP,GAAe,SAIhB,2LAAA,CAAA,CAAA,EACF,EACCO,MAAAN,EAAA,CACC,SAACM,EAAAA,IAAAC,EAAA,CAAK,UAAU,eAAe,GAAG,QAAQ,KAAK,IAC7C,SAAAD,MAACT,EAAO,CAAA,SAAA,iBAAc,EACxB,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAEJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as n}from"./_virtual___federation_fn_import-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import{i as n}from"./_virtual___federation_fn_import-CzwHXTRo.js";import{j as e}from"./index.esm-C6ngV5UE.js";import{N as s}from"./new-enum-dialog-eE-ABw-k.js";const{Button:a}=await n("@baseplate-dev/ui-components"),c=function(){return e.jsxs("div",{className:"max-w-4xl space-y-4 p-4 text-style-prose",children:[e.jsx("h1",{children:"Enums"}),e.jsxs("p",{children:["Enums are a way to define a set of named values. They can be used to define a type that can only have a certain set of values. For example, you might have an enum called ",e.jsx("strong",{children:"Color"})," with values"," ",e.jsx("code",{children:"RED"}),", ",e.jsx("code",{children:"GREEN"}),", and ",e.jsx("code",{children:"BLUE"}),"."]}),e.jsxs("p",{children:["Choose an enum to edit from the sidebar or"," ",e.jsx(s,{children:e.jsx(a,{variant:"link",size:"none",children:"create a new enum"})}),"."]})]})};export{c as component};
|
|
2
|
+
//# sourceMappingURL=index-DlrvL7L-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-DlrvL7L-.js","sources":["../../src/routes/data/enums/index.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { Button } from '@baseplate-dev/ui-components';\nimport { createFileRoute } from '@tanstack/react-router';\n\nimport { NewEnumDialog } from './-components/new-enum-dialog.js';\n\nexport const Route = createFileRoute('/data/enums/')({\n component: EnumsListPage,\n});\n\nfunction EnumsListPage(): React.JSX.Element {\n return (\n <div className=\"max-w-4xl space-y-4 p-4 text-style-prose\">\n <h1>Enums</h1>\n <p>\n Enums are a way to define a set of named values. They can be used to\n define a type that can only have a certain set of values. For example,\n you might have an enum called <strong>Color</strong> with values{' '}\n <code>RED</code>, <code>GREEN</code>, and <code>BLUE</code>.\n </p>\n <p>\n Choose an enum to edit from the sidebar or{' '}\n <NewEnumDialog>\n <Button variant=\"link\" size=\"none\">\n create a new enum\n </Button>\n </NewEnumDialog>\n .\n </p>\n </div>\n );\n}\n"],"names":["Button","importShared","SplitComponent","jsxs","jsx","NewEnumDialog"],"mappings":"gKAEA,KAAA,CAAA,OAAAA,CAAA,EAAA,MAAAC,EAAA,8BAAA,EAGiEC,EAAA,UAMrB,CAExC,OAAAC,EAAA,KAAC,MAAI,CAAA,UAAU,2CACb,SAAA,CAAAC,EAAAA,IAAC,MAAG,SAAK,OAAA,CAAA,SACR,IAAC,CAAA,SAAA,CAAA,6KAG8BA,EAAAA,IAAC,UAAO,SAAK,OAAA,CAAA,EAAS,eAAa,IACjEA,EAAAA,IAAC,QAAK,SAAG,KAAA,CAAA,EAAO,KAAEA,EAAAA,IAAC,QAAK,SAAK,OAAA,CAAA,EAAO,SAAMA,EAAAA,IAAC,QAAK,SAAI,MAAA,CAAA,EAAO,GAAA,EAC7D,SACC,IAAC,CAAA,SAAA,CAAA,6CAC2C,IAC3CA,EAAAA,IAACC,GACC,SAACD,EAAA,IAAAJ,EAAA,CAAO,QAAQ,OAAO,KAAK,OAAM,SAAA,mBAAA,CAElC,CACF,CAAA,EAAe,GAAA,CAEjB,CAAA,CAAA,EACF,CAEJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import{i as Ye}from"./_virtual___federation_fn_import-CzwHXTRo.js";var Me={exports:{}},ge={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-jsx-runtime.production.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var lt;function Jt(){if(lt)return ge;lt=1;var e=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function t(i,n,u){var c=null;if(u!==void 0&&(c=""+u),n.key!==void 0&&(c=""+n.key),"key"in n){u={};for(var o in n)o!=="key"&&(u[o]=n[o])}else u=n;return n=u.ref,{$$typeof:e,type:i,key:c,ref:n!==void 0?n:null,props:u}}return ge.Fragment=r,ge.jsx=t,ge.jsxs=t,ge}var ot;function Yt(){return ot||(ot=1,Me.exports=Jt()),Me.exports}var vr=Yt();const ct=e=>{let r;const t=new Set,i=(A,S)=>{const w=typeof A=="function"?A(r):A;if(!Object.is(w,r)){const F=r;r=S??(typeof w!="object"||w===null)?w:Object.assign({},r,w),t.forEach(R=>R(r,F))}},n=()=>r,o={setState:i,getState:n,getInitialState:()=>b,subscribe:A=>(t.add(A),()=>t.delete(A))},b=r=e(i,n,o);return o},Gt=e=>e?ct(e):ct,dt=await Ye("react"),zt=e=>e;function Qt(e,r=zt){const t=dt.useSyncExternalStore(e.subscribe,()=>r(e.getState()),()=>r(e.getInitialState()));return dt.useDebugValue(t),t}const ft=e=>{const r=Gt(e),t=i=>Qt(r,i);return Object.assign(t,r),t},mr=e=>e?ft(e):ft,yt=await Ye("react"),m=await Ye("react");var ve=e=>e.type==="checkbox",le=e=>e instanceof Date,H=e=>e==null;const xt=e=>typeof e=="object";var P=e=>!H(e)&&!Array.isArray(e)&&xt(e)&&!le(e),St=e=>P(e)&&e.target?ve(e.target)?e.target.checked:e.target.value:e,Xt=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,wt=(e,r)=>e.has(Xt(r)),Zt=e=>{const r=e.constructor&&e.constructor.prototype;return P(r)&&r.hasOwnProperty("isPrototypeOf")},Ge=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function O(e){let r;const t=Array.isArray(e),i=typeof FileList<"u"?e instanceof FileList:!1;if(e instanceof Date)r=new Date(e);else if(!(Ge&&(e instanceof Blob||i))&&(t||P(e)))if(r=t?[]:{},!t&&!Zt(e))r=e;else for(const n in e)e.hasOwnProperty(n)&&(r[n]=O(e[n]));else return e;return r}var we=e=>/^\w*$/.test(e),M=e=>e===void 0,ke=e=>Array.isArray(e)?e.filter(Boolean):[],ze=e=>ke(e.replace(/["|']|\]/g,"").split(/\.|\[/)),f=(e,r,t)=>{if(!r||!P(e))return t;const i=(we(r)?[r]:ze(r)).reduce((n,u)=>H(n)?n:n[u],e);return M(i)||i===e?M(e[r])?t:e[r]:i},X=e=>typeof e=="boolean",C=(e,r,t)=>{let i=-1;const n=we(r)?[r]:ze(r),u=n.length,c=u-1;for(;++i<u;){const o=n[i];let b=t;if(i!==c){const A=e[o];b=P(A)||Array.isArray(A)?A:isNaN(+n[i+1])?{}:[]}if(o==="__proto__"||o==="constructor"||o==="prototype")return;e[o]=b,e=e[o]}};const Ae={BLUR:"blur",FOCUS_OUT:"focusout",CHANGE:"change"},K={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},ie={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},kt=m.createContext(null);kt.displayName="HookFormContext";const pe=()=>m.useContext(kt);var pt=(e,r,t,i=!0)=>{const n={defaultValues:r._defaultValues};for(const u in e)Object.defineProperty(n,u,{get:()=>{const c=u;return r._proxyFormState[c]!==K.all&&(r._proxyFormState[c]=!i||K.all),t&&(t[c]=!0),e[c]}});return n};const Ee=typeof window<"u"?yt.useLayoutEffect:yt.useEffect;function Kt(e){const r=pe(),{control:t=r.control,disabled:i,name:n,exact:u}=e||{},[c,o]=m.useState(t._formState),b=m.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return Ee(()=>t._subscribe({name:n,formState:b.current,exact:u,callback:A=>{!i&&o({...t._formState,...A})}}),[n,i,u]),m.useEffect(()=>{b.current.isValid&&t._setValid(!0)},[t]),m.useMemo(()=>pt(c,t,b.current,!1),[c,t])}var se=e=>typeof e=="string",Et=(e,r,t,i,n)=>se(e)?(i&&r.watch.add(e),f(t,e,n)):Array.isArray(e)?e.map(u=>(i&&r.watch.add(u),f(t,u))):(i&&(r.watchAll=!0),t);function er(e){const r=pe(),{control:t=r.control,name:i,defaultValue:n,disabled:u,exact:c}=e||{},o=m.useRef(n),[b,A]=m.useState(t._getWatch(i,o.current));return Ee(()=>t._subscribe({name:i,formState:{values:!0},exact:c,callback:S=>!u&&A(Et(i,t._names,S.values||t._formValues,!1,o.current))}),[i,t,u,c]),m.useEffect(()=>t._removeUnmounted()),b}function br(e){const r=pe(),{name:t,disabled:i,control:n=r.control,shouldUnregister:u}=e,c=wt(n._names.array,t),o=er({control:n,name:t,defaultValue:f(n._formValues,t,f(n._defaultValues,t,e.defaultValue)),exact:!0}),b=Kt({control:n,name:t,exact:!0}),A=m.useRef(e),S=m.useRef(n.register(t,{...e.rules,value:o,...X(e.disabled)?{disabled:e.disabled}:{}})),w=m.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!f(b.errors,t)},isDirty:{enumerable:!0,get:()=>!!f(b.dirtyFields,t)},isTouched:{enumerable:!0,get:()=>!!f(b.touchedFields,t)},isValidating:{enumerable:!0,get:()=>!!f(b.validatingFields,t)},error:{enumerable:!0,get:()=>f(b.errors,t)}}),[b,t]),F=m.useCallback(L=>S.current.onChange({target:{value:St(L),name:t},type:Ae.CHANGE}),[t]),R=m.useCallback(()=>S.current.onBlur({target:{value:f(n._formValues,t),name:t},type:Ae.BLUR}),[t,n._formValues]),Y=m.useCallback(L=>{const ee=f(n._fields,t);ee&&L&&(ee._f.ref={focus:()=>L.focus&&L.focus(),select:()=>L.select&&L.select(),setCustomValidity:V=>L.setCustomValidity(V),reportValidity:()=>L.reportValidity()})},[n._fields,t]),U=m.useMemo(()=>({name:t,value:o,...X(i)||b.disabled?{disabled:b.disabled||i}:{},onChange:F,onBlur:R,ref:Y}),[t,i,b.disabled,F,R,Y,o]);return m.useEffect(()=>{const L=n._options.shouldUnregister||u;n.register(t,{...A.current.rules,...X(A.current.disabled)?{disabled:A.current.disabled}:{}});const ee=(V,G)=>{const q=f(n._fields,V);q&&q._f&&(q._f.mount=G)};if(ee(t,!0),L){const V=O(f(n._options.defaultValues,t));C(n._defaultValues,t,V),M(f(n._formValues,t))&&C(n._formValues,t,V)}return!c&&n.register(t),()=>{(c?L&&!n._state.action:L)?n.unregister(t):ee(t,!1)}},[t,n,c,u]),m.useEffect(()=>{n._setDisabledField({disabled:i,name:t})},[i,t,n]),m.useMemo(()=>({field:U,formState:b,fieldState:w}),[U,b,w])}var tr=(e,r,t,i,n)=>r?{...t[e],types:{...t[e]&&t[e].types?t[e].types:{},[i]:n||!0}}:{},J=e=>Array.isArray(e)?e:[e],gt=()=>{let e=[];return{get observers(){return e},next:n=>{for(const u of e)u.next&&u.next(n)},subscribe:n=>(e.push(n),{unsubscribe:()=>{e=e.filter(u=>u!==n)}}),unsubscribe:()=>{e=[]}}},He=e=>H(e)||!xt(e);function ue(e,r,t=new WeakSet){if(He(e)||He(r))return e===r;if(le(e)&&le(r))return e.getTime()===r.getTime();const i=Object.keys(e),n=Object.keys(r);if(i.length!==n.length)return!1;if(t.has(e)||t.has(r))return!0;t.add(e),t.add(r);for(const u of i){const c=e[u];if(!n.includes(u))return!1;if(u!=="ref"){const o=r[u];if(le(c)&&le(o)||P(c)&&P(o)||Array.isArray(c)&&Array.isArray(o)?!ue(c,o,t):c!==o)return!1}}return!0}var j=e=>P(e)&&!Object.keys(e).length,Qe=e=>e.type==="file",te=e=>typeof e=="function",Ve=e=>{if(!Ge)return!1;const r=e?e.ownerDocument:0;return e instanceof(r&&r.defaultView?r.defaultView.HTMLElement:HTMLElement)},Dt=e=>e.type==="select-multiple",Xe=e=>e.type==="radio",rr=e=>Xe(e)||ve(e),Ue=e=>Ve(e)&&e.isConnected;function sr(e,r){const t=r.slice(0,-1).length;let i=0;for(;i<t;)e=M(e)?i++:e[r[i++]];return e}function ir(e){for(const r in e)if(e.hasOwnProperty(r)&&!M(e[r]))return!1;return!0}function B(e,r){const t=Array.isArray(r)?r:we(r)?[r]:ze(r),i=t.length===1?e:sr(e,t),n=t.length-1,u=t[n];return i&&delete i[u],n!==0&&(P(i)&&j(i)||Array.isArray(i)&&ir(i))&&B(e,t.slice(0,-1)),e}var Ct=e=>{for(const r in e)if(te(e[r]))return!0;return!1};function xe(e,r={}){const t=Array.isArray(e);if(P(e)||t)for(const i in e)Array.isArray(e[i])||P(e[i])&&!Ct(e[i])?(r[i]=Array.isArray(e[i])?[]:{},xe(e[i],r[i])):H(e[i])||(r[i]=!0);return r}function Rt(e,r,t){const i=Array.isArray(e);if(P(e)||i)for(const n in e)Array.isArray(e[n])||P(e[n])&&!Ct(e[n])?M(r)||He(t[n])?t[n]=Array.isArray(e[n])?xe(e[n],[]):{...xe(e[n])}:Rt(e[n],H(r)?{}:r[n],t[n]):t[n]=!ue(e[n],r[n]);return t}var _e=(e,r)=>Rt(e,r,xe(r));const _t={value:!1,isValid:!1},ht={value:!0,isValid:!0};var Tt=e=>{if(Array.isArray(e)){if(e.length>1){const r=e.filter(t=>t&&t.checked&&!t.disabled).map(t=>t.value);return{value:r,isValid:!!r.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!M(e[0].attributes.value)?M(e[0].value)||e[0].value===""?ht:{value:e[0].value,isValid:!0}:ht:_t}return _t},Ot=(e,{valueAsNumber:r,valueAsDate:t,setValueAs:i})=>M(e)?e:r?e===""?NaN:e&&+e:t&&se(e)?new Date(e):i?i(e):e;const vt={isValid:!1,value:null};var Mt=e=>Array.isArray(e)?e.reduce((r,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:r,vt):vt;function mt(e){const r=e.ref;return Qe(r)?r.files:Xe(r)?Mt(e.refs).value:Dt(r)?[...r.selectedOptions].map(({value:t})=>t):ve(r)?Tt(e.refs).value:Ot(M(r.value)?e.ref.value:r.value,e)}var ar=(e,r,t,i)=>{const n={};for(const u of e){const c=f(r,u);c&&C(n,u,c._f)}return{criteriaMode:t,names:[...e],fields:n,shouldUseNativeValidation:i}},Se=e=>e instanceof RegExp,he=e=>M(e)?e:Se(e)?e.source:P(e)?Se(e.value)?e.value.source:e.value:e,de=e=>({isOnSubmit:!e||e===K.onSubmit,isOnBlur:e===K.onBlur,isOnChange:e===K.onChange,isOnAll:e===K.all,isOnTouch:e===K.onTouched});const bt="AsyncFunction";var nr=e=>!!e&&!!e.validate&&!!(te(e.validate)&&e.validate.constructor.name===bt||P(e.validate)&&Object.values(e.validate).find(r=>r.constructor.name===bt)),ur=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),$e=(e,r,t)=>!t&&(r.watchAll||r.watch.has(e)||[...r.watch].some(i=>e.startsWith(i)&&/^\.\w+/.test(e.slice(i.length))));const fe=(e,r,t,i)=>{for(const n of t||Object.keys(e)){const u=f(e,n);if(u){const{_f:c,...o}=u;if(c){if(c.refs&&c.refs[0]&&r(c.refs[0],n)&&!i)return!0;if(c.ref&&r(c.ref,c.name)&&!i)return!0;if(fe(o,r))break}else if(P(o)&&fe(o,r))break}}};function Ft(e,r,t){const i=f(e,t);if(i||we(t))return{error:i,name:t};const n=t.split(".");for(;n.length;){const u=n.join("."),c=f(r,u),o=f(e,u);if(c&&!Array.isArray(c)&&t!==u)return{name:t};if(o&&o.type)return{name:u,error:o};if(o&&o.root&&o.root.type)return{name:`${u}.root`,error:o.root};n.pop()}return{name:t}}var lr=(e,r,t,i)=>{t(e);const{name:n,...u}=e;return j(u)||Object.keys(u).length>=Object.keys(r).length||Object.keys(u).find(c=>r[c]===(!i||K.all))},or=(e,r,t)=>!e||!r||e===r||J(e).some(i=>i&&(t?i===r:i.startsWith(r)||r.startsWith(i))),cr=(e,r,t,i,n)=>n.isOnAll?!1:!t&&n.isOnTouch?!(r||e):(t?i.isOnBlur:n.isOnBlur)?!e:(t?i.isOnChange:n.isOnChange)?e:!0,dr=(e,r)=>!ke(f(e,r)).length&&B(e,r),Ut=(e,r,t)=>{const i=J(f(e,t));return C(i,"root",r[t]),C(e,t,i),e},Fe=e=>se(e);function At(e,r,t="validate"){if(Fe(e)||Array.isArray(e)&&e.every(Fe)||X(e)&&!e)return{type:t,message:Fe(e)?e:"",ref:r}}var ce=e=>P(e)&&!Se(e)?e:{value:e,message:""},Je=async(e,r,t,i,n,u)=>{const{ref:c,refs:o,required:b,maxLength:A,minLength:S,min:w,max:F,pattern:R,validate:Y,name:U,valueAsNumber:L,mount:ee}=e._f,V=f(t,U);if(!ee||r.has(U))return{};const G=o?o[0]:c,q=p=>{n&&G.reportValidity&&(G.setCustomValidity(X(p)?"":p||""),G.reportValidity())},I={},v=Xe(c),_=ve(c),x=v||_,k=(L||Qe(c))&&M(c.value)&&M(V)||Ve(c)&&c.value===""||V===""||Array.isArray(V)&&!V.length,z=tr.bind(null,U,i,I),Q=(p,D,N,W=ie.maxLength,$=ie.minLength)=>{const re=p?D:N;I[U]={type:p?W:$,message:re,ref:c,...z(p?W:$,re)}};if(u?!Array.isArray(V)||!V.length:b&&(!x&&(k||H(V))||X(V)&&!V||_&&!Tt(o).isValid||v&&!Mt(o).isValid)){const{value:p,message:D}=Fe(b)?{value:!!b,message:b}:ce(b);if(p&&(I[U]={type:ie.required,message:D,ref:G,...z(ie.required,D)},!i))return q(D),I}if(!k&&(!H(w)||!H(F))){let p,D;const N=ce(F),W=ce(w);if(!H(V)&&!isNaN(V)){const $=c.valueAsNumber||V&&+V;H(N.value)||(p=$>N.value),H(W.value)||(D=$<W.value)}else{const $=c.valueAsDate||new Date(V),re=me=>new Date(new Date().toDateString()+" "+me),ye=c.type=="time",oe=c.type=="week";se(N.value)&&V&&(p=ye?re(V)>re(N.value):oe?V>N.value:$>new Date(N.value)),se(W.value)&&V&&(D=ye?re(V)<re(W.value):oe?V<W.value:$<new Date(W.value))}if((p||D)&&(Q(!!p,N.message,W.message,ie.max,ie.min),!i))return q(I[U].message),I}if((A||S)&&!k&&(se(V)||u&&Array.isArray(V))){const p=ce(A),D=ce(S),N=!H(p.value)&&V.length>+p.value,W=!H(D.value)&&V.length<+D.value;if((N||W)&&(Q(N,p.message,D.message),!i))return q(I[U].message),I}if(R&&!k&&se(V)){const{value:p,message:D}=ce(R);if(Se(p)&&!V.match(p)&&(I[U]={type:ie.pattern,message:D,ref:c,...z(ie.pattern,D)},!i))return q(D),I}if(Y){if(te(Y)){const p=await Y(V,t),D=At(p,G);if(D&&(I[U]={...D,...z(ie.validate,D.message)},!i))return q(D.message),I}else if(P(Y)){let p={};for(const D in Y){if(!j(p)&&!i)break;const N=At(await Y[D](V,t),G,D);N&&(p={...N,...z(D,N.message)},q(N.message),i&&(I[U]=p))}if(!j(p)&&(I[U]={ref:G,...p},!i))return I}}return q(!0),I};const fr={mode:K.onSubmit,reValidateMode:K.onChange,shouldFocusError:!0};function yr(e={}){let r={...fr,...e},t={submitCount:0,isDirty:!1,isReady:!1,isLoading:te(r.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:r.errors||{},disabled:r.disabled||!1},i={},n=P(r.defaultValues)||P(r.values)?O(r.defaultValues||r.values)||{}:{},u=r.shouldUnregister?{}:O(n),c={action:!1,mount:!1,watch:!1},o={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},b,A=0;const S={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1};let w={...S};const F={array:gt(),state:gt()},R=r.criteriaMode===K.all,Y=s=>a=>{clearTimeout(A),A=setTimeout(s,a)},U=async s=>{if(!r.disabled&&(S.isValid||w.isValid||s)){const a=r.resolver?j((await _()).errors):await k(i,!0);a!==t.isValid&&F.state.next({isValid:a})}},L=(s,a)=>{!r.disabled&&(S.isValidating||S.validatingFields||w.isValidating||w.validatingFields)&&((s||Array.from(o.mount)).forEach(l=>{l&&(a?C(t.validatingFields,l,a):B(t.validatingFields,l))}),F.state.next({validatingFields:t.validatingFields,isValidating:!j(t.validatingFields)}))},ee=(s,a=[],l,g,y=!0,d=!0)=>{if(g&&l&&!r.disabled){if(c.action=!0,d&&Array.isArray(f(i,s))){const h=l(f(i,s),g.argA,g.argB);y&&C(i,s,h)}if(d&&Array.isArray(f(t.errors,s))){const h=l(f(t.errors,s),g.argA,g.argB);y&&C(t.errors,s,h),dr(t.errors,s)}if((S.touchedFields||w.touchedFields)&&d&&Array.isArray(f(t.touchedFields,s))){const h=l(f(t.touchedFields,s),g.argA,g.argB);y&&C(t.touchedFields,s,h)}(S.dirtyFields||w.dirtyFields)&&(t.dirtyFields=_e(n,u)),F.state.next({name:s,isDirty:Q(s,a),dirtyFields:t.dirtyFields,errors:t.errors,isValid:t.isValid})}else C(u,s,a)},V=(s,a)=>{C(t.errors,s,a),F.state.next({errors:t.errors})},G=s=>{t.errors=s,F.state.next({errors:t.errors,isValid:!1})},q=(s,a,l,g)=>{const y=f(i,s);if(y){const d=f(u,s,M(l)?f(n,s):l);M(d)||g&&g.defaultChecked||a?C(u,s,a?d:mt(y._f)):N(s,d),c.mount&&U()}},I=(s,a,l,g,y)=>{let d=!1,h=!1;const E={name:s};if(!r.disabled){if(!l||g){(S.isDirty||w.isDirty)&&(h=t.isDirty,t.isDirty=E.isDirty=Q(),d=h!==E.isDirty);const T=ue(f(n,s),a);h=!!f(t.dirtyFields,s),T?B(t.dirtyFields,s):C(t.dirtyFields,s,!0),E.dirtyFields=t.dirtyFields,d=d||(S.dirtyFields||w.dirtyFields)&&h!==!T}if(l){const T=f(t.touchedFields,s);T||(C(t.touchedFields,s,l),E.touchedFields=t.touchedFields,d=d||(S.touchedFields||w.touchedFields)&&T!==l)}d&&y&&F.state.next(E)}return d?E:{}},v=(s,a,l,g)=>{const y=f(t.errors,s),d=(S.isValid||w.isValid)&&X(a)&&t.isValid!==a;if(r.delayError&&l?(b=Y(()=>V(s,l)),b(r.delayError)):(clearTimeout(A),b=null,l?C(t.errors,s,l):B(t.errors,s)),(l?!ue(y,l):y)||!j(g)||d){const h={...g,...d&&X(a)?{isValid:a}:{},errors:t.errors,name:s};t={...t,...h},F.state.next(h)}},_=async s=>{L(s,!0);const a=await r.resolver(u,r.context,ar(s||o.mount,i,r.criteriaMode,r.shouldUseNativeValidation));return L(s),a},x=async s=>{const{errors:a}=await _(s);if(s)for(const l of s){const g=f(a,l);g?C(t.errors,l,g):B(t.errors,l)}else t.errors=a;return a},k=async(s,a,l={valid:!0})=>{for(const g in s){const y=s[g];if(y){const{_f:d,...h}=y;if(d){const E=o.array.has(d.name),T=y._f&&nr(y._f);T&&S.validatingFields&&L([g],!0);const Z=await Je(y,o.disabled,u,R,r.shouldUseNativeValidation&&!a,E);if(T&&S.validatingFields&&L([g]),Z[d.name]&&(l.valid=!1,a))break;!a&&(f(Z,d.name)?E?Ut(t.errors,Z,d.name):C(t.errors,d.name,Z[d.name]):B(t.errors,d.name))}!j(h)&&await k(h,a,l)}}return l.valid},z=()=>{for(const s of o.unMount){const a=f(i,s);a&&(a._f.refs?a._f.refs.every(l=>!Ue(l)):!Ue(a._f.ref))&&De(s)}o.unMount=new Set},Q=(s,a)=>!r.disabled&&(s&&a&&C(u,s,a),!ue(me(),n)),p=(s,a,l)=>Et(s,o,{...c.mount?u:M(a)?n:se(s)?{[s]:a}:a},l,a),D=s=>ke(f(c.mount?u:n,s,r.shouldUnregister?f(n,s,[]):[])),N=(s,a,l={})=>{const g=f(i,s);let y=a;if(g){const d=g._f;d&&(!d.disabled&&C(u,s,Ot(a,d)),y=Ve(d.ref)&&H(a)?"":a,Dt(d.ref)?[...d.ref.options].forEach(h=>h.selected=y.includes(h.value)):d.refs?ve(d.ref)?d.refs.forEach(h=>{(!h.defaultChecked||!h.disabled)&&(Array.isArray(y)?h.checked=!!y.find(E=>E===h.value):h.checked=y===h.value||!!y)}):d.refs.forEach(h=>h.checked=h.value===y):Qe(d.ref)?d.ref.value="":(d.ref.value=y,d.ref.type||F.state.next({name:s,values:O(u)})))}(l.shouldDirty||l.shouldTouch)&&I(s,y,l.shouldTouch,l.shouldDirty,!0),l.shouldValidate&&oe(s)},W=(s,a,l)=>{for(const g in a){if(!a.hasOwnProperty(g))return;const y=a[g],d=s+"."+g,h=f(i,d);(o.array.has(s)||P(y)||h&&!h._f)&&!le(y)?W(d,y,l):N(d,y,l)}},$=(s,a,l={})=>{const g=f(i,s),y=o.array.has(s),d=O(a);C(u,s,d),y?(F.array.next({name:s,values:O(u)}),(S.isDirty||S.dirtyFields||w.isDirty||w.dirtyFields)&&l.shouldDirty&&F.state.next({name:s,dirtyFields:_e(n,u),isDirty:Q(s,d)})):g&&!g._f&&!H(d)?W(s,d,l):N(s,d,l),$e(s,o)&&F.state.next({...t}),F.state.next({name:c.mount?s:void 0,values:O(u)})},re=async s=>{c.mount=!0;const a=s.target;let l=a.name,g=!0;const y=f(i,l),d=T=>{g=Number.isNaN(T)||le(T)&&isNaN(T.getTime())||ue(T,f(u,l,T))},h=de(r.mode),E=de(r.reValidateMode);if(y){let T,Z;const be=a.type?mt(y._f):St(s),ae=s.type===Ae.BLUR||s.type===Ae.FOCUS_OUT,jt=!ur(y._f)&&!r.resolver&&!f(t.errors,l)&&!y._f.deps||cr(ae,f(t.touchedFields,l),t.isSubmitted,E,h),Te=$e(l,o,ae);C(u,l,be),ae?(y._f.onBlur&&y._f.onBlur(s),b&&b(0)):y._f.onChange&&y._f.onChange(s);const Oe=I(l,be,ae),Ht=!j(Oe)||Te;if(!ae&&F.state.next({name:l,type:s.type,values:O(u)}),jt)return(S.isValid||w.isValid)&&(r.mode==="onBlur"?ae&&U():ae||U()),Ht&&F.state.next({name:l,...Te?{}:Oe});if(!ae&&Te&&F.state.next({...t}),r.resolver){const{errors:nt}=await _([l]);if(d(be),g){const $t=Ft(t.errors,i,l),ut=Ft(nt,i,$t.name||l);T=ut.error,l=ut.name,Z=j(nt)}}else L([l],!0),T=(await Je(y,o.disabled,u,R,r.shouldUseNativeValidation))[l],L([l]),d(be),g&&(T?Z=!1:(S.isValid||w.isValid)&&(Z=await k(i,!0)));g&&(y._f.deps&&oe(y._f.deps),v(l,Z,T,Oe))}},ye=(s,a)=>{if(f(t.errors,a)&&s.focus)return s.focus(),1},oe=async(s,a={})=>{let l,g;const y=J(s);if(r.resolver){const d=await x(M(s)?s:y);l=j(d),g=s?!y.some(h=>f(d,h)):l}else s?(g=(await Promise.all(y.map(async d=>{const h=f(i,d);return await k(h&&h._f?{[d]:h}:h)}))).every(Boolean),!(!g&&!t.isValid)&&U()):g=l=await k(i);return F.state.next({...!se(s)||(S.isValid||w.isValid)&&l!==t.isValid?{}:{name:s},...r.resolver||!s?{isValid:l}:{},errors:t.errors}),a.shouldFocus&&!g&&fe(i,ye,s?y:o.mount),g},me=s=>{const a={...c.mount?u:n};return M(s)?a:se(s)?f(a,s):s.map(l=>f(a,l))},Ze=(s,a)=>({invalid:!!f((a||t).errors,s),isDirty:!!f((a||t).dirtyFields,s),error:f((a||t).errors,s),isValidating:!!f(t.validatingFields,s),isTouched:!!f((a||t).touchedFields,s)}),Lt=s=>{s&&J(s).forEach(a=>B(t.errors,a)),F.state.next({errors:s?t.errors:{}})},Ke=(s,a,l)=>{const g=(f(i,s,{_f:{}})._f||{}).ref,y=f(t.errors,s)||{},{ref:d,message:h,type:E,...T}=y;C(t.errors,s,{...T,...a,ref:g}),F.state.next({name:s,errors:t.errors,isValid:!1}),l&&l.shouldFocus&&g&&g.focus&&g.focus()},It=(s,a)=>te(s)?F.state.subscribe({next:l=>s(p(void 0,a),l)}):p(s,a,!0),et=s=>F.state.subscribe({next:a=>{or(s.name,a.name,s.exact)&&lr(a,s.formState||S,Wt,s.reRenderRoot)&&s.callback({values:{...u},...t,...a})}}).unsubscribe,Nt=s=>(c.mount=!0,w={...w,...s.formState},et({...s,formState:w})),De=(s,a={})=>{for(const l of s?J(s):o.mount)o.mount.delete(l),o.array.delete(l),a.keepValue||(B(i,l),B(u,l)),!a.keepError&&B(t.errors,l),!a.keepDirty&&B(t.dirtyFields,l),!a.keepTouched&&B(t.touchedFields,l),!a.keepIsValidating&&B(t.validatingFields,l),!r.shouldUnregister&&!a.keepDefaultValue&&B(n,l);F.state.next({values:O(u)}),F.state.next({...t,...a.keepDirty?{isDirty:Q()}:{}}),!a.keepIsValid&&U()},tt=({disabled:s,name:a})=>{(X(s)&&c.mount||s||o.disabled.has(a))&&(s?o.disabled.add(a):o.disabled.delete(a))},Ce=(s,a={})=>{let l=f(i,s);const g=X(a.disabled)||X(r.disabled);return C(i,s,{...l||{},_f:{...l&&l._f?l._f:{ref:{name:s}},name:s,mount:!0,...a}}),o.mount.add(s),l?tt({disabled:X(a.disabled)?a.disabled:r.disabled,name:s}):q(s,!0,a.value),{...g?{disabled:a.disabled||r.disabled}:{},...r.progressive?{required:!!a.required,min:he(a.min),max:he(a.max),minLength:he(a.minLength),maxLength:he(a.maxLength),pattern:he(a.pattern)}:{},name:s,onChange:re,onBlur:re,ref:y=>{if(y){Ce(s,a),l=f(i,s);const d=M(y.value)&&y.querySelectorAll&&y.querySelectorAll("input,select,textarea")[0]||y,h=rr(d),E=l._f.refs||[];if(h?E.find(T=>T===d):d===l._f.ref)return;C(i,s,{_f:{...l._f,...h?{refs:[...E.filter(Ue),d,...Array.isArray(f(n,s))?[{}]:[]],ref:{type:d.type,name:s}}:{ref:d}}}),q(s,!1,void 0,d)}else l=f(i,s,{}),l._f&&(l._f.mount=!1),(r.shouldUnregister||a.shouldUnregister)&&!(wt(o.array,s)&&c.action)&&o.unMount.add(s)}}},Re=()=>r.shouldFocusError&&fe(i,ye,o.mount),Bt=s=>{X(s)&&(F.state.next({disabled:s}),fe(i,(a,l)=>{const g=f(i,l);g&&(a.disabled=g._f.disabled||s,Array.isArray(g._f.refs)&&g._f.refs.forEach(y=>{y.disabled=g._f.disabled||s}))},0,!1))},rt=(s,a)=>async l=>{let g;l&&(l.preventDefault&&l.preventDefault(),l.persist&&l.persist());let y=O(u);if(F.state.next({isSubmitting:!0}),r.resolver){const{errors:d,values:h}=await _();t.errors=d,y=O(h)}else await k(i);if(o.disabled.size)for(const d of o.disabled)B(y,d);if(B(t.errors,"root"),j(t.errors)){F.state.next({errors:{}});try{await s(y,l)}catch(d){g=d}}else a&&await a({...t.errors},l),Re(),setTimeout(Re);if(F.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:j(t.errors)&&!g,submitCount:t.submitCount+1,errors:t.errors}),g)throw g},Pt=(s,a={})=>{f(i,s)&&(M(a.defaultValue)?$(s,O(f(n,s))):($(s,a.defaultValue),C(n,s,O(a.defaultValue))),a.keepTouched||B(t.touchedFields,s),a.keepDirty||(B(t.dirtyFields,s),t.isDirty=a.defaultValue?Q(s,O(f(n,s))):Q()),a.keepError||(B(t.errors,s),S.isValid&&U()),F.state.next({...t}))},st=(s,a={})=>{const l=s?O(s):n,g=O(l),y=j(s),d=y?n:g;if(a.keepDefaultValues||(n=l),!a.keepValues){if(a.keepDirtyValues){const h=new Set([...o.mount,...Object.keys(_e(n,u))]);for(const E of Array.from(h))f(t.dirtyFields,E)?C(d,E,f(u,E)):$(E,f(d,E))}else{if(Ge&&M(s))for(const h of o.mount){const E=f(i,h);if(E&&E._f){const T=Array.isArray(E._f.refs)?E._f.refs[0]:E._f.ref;if(Ve(T)){const Z=T.closest("form");if(Z){Z.reset();break}}}}if(a.keepFieldsRef)for(const h of o.mount)$(h,f(d,h));else i={}}u=r.shouldUnregister?a.keepDefaultValues?O(n):{}:O(d),F.array.next({values:{...d}}),F.state.next({values:{...d}})}o={mount:a.keepDirtyValues?o.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},c.mount=!S.isValid||!!a.keepIsValid||!!a.keepDirtyValues,c.watch=!!r.shouldUnregister,F.state.next({submitCount:a.keepSubmitCount?t.submitCount:0,isDirty:y?!1:a.keepDirty?t.isDirty:!!(a.keepDefaultValues&&!ue(s,n)),isSubmitted:a.keepIsSubmitted?t.isSubmitted:!1,dirtyFields:y?{}:a.keepDirtyValues?a.keepDefaultValues&&u?_e(n,u):t.dirtyFields:a.keepDefaultValues&&s?_e(n,s):a.keepDirty?t.dirtyFields:{},touchedFields:a.keepTouched?t.touchedFields:{},errors:a.keepErrors?t.errors:{},isSubmitSuccessful:a.keepIsSubmitSuccessful?t.isSubmitSuccessful:!1,isSubmitting:!1})},it=(s,a)=>st(te(s)?s(u):s,a),qt=(s,a={})=>{const l=f(i,s),g=l&&l._f;if(g){const y=g.refs?g.refs[0]:g.ref;y.focus&&(y.focus(),a.shouldSelect&&te(y.select)&&y.select())}},Wt=s=>{t={...t,...s}},at={control:{register:Ce,unregister:De,getFieldState:Ze,handleSubmit:rt,setError:Ke,_subscribe:et,_runSchema:_,_focusError:Re,_getWatch:p,_getDirty:Q,_setValid:U,_setFieldArray:ee,_setDisabledField:tt,_setErrors:G,_getFieldArray:D,_reset:st,_resetDefaultValues:()=>te(r.defaultValues)&&r.defaultValues().then(s=>{it(s,r.resetOptions),F.state.next({isLoading:!1})}),_removeUnmounted:z,_disableForm:Bt,_subjects:F,_proxyFormState:S,get _fields(){return i},get _formValues(){return u},get _state(){return c},set _state(s){c=s},get _defaultValues(){return n},get _names(){return o},set _names(s){o=s},get _formState(){return t},get _options(){return r},set _options(s){r={...r,...s}}},subscribe:Nt,trigger:oe,register:Ce,handleSubmit:rt,watch:It,setValue:$,getValues:me,reset:it,resetField:Pt,clearErrors:Lt,unregister:De,setError:Ke,setFocus:qt,getFieldState:Ze};return{...at,formControl:at}}var ne=()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();const e=typeof performance>"u"?Date.now():performance.now()*1e3;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{const t=(Math.random()*16+e)%16|0;return(r=="x"?t:t&3|8).toString(16)})},Le=(e,r,t={})=>t.shouldFocus||M(t.shouldFocus)?t.focusName||`${e}.${M(t.focusIndex)?r:t.focusIndex}.`:"",Ie=(e,r)=>[...e,...J(r)],Ne=e=>Array.isArray(e)?e.map(()=>{}):void 0;function Be(e,r,t){return[...e.slice(0,r),...J(t),...e.slice(r)]}var Pe=(e,r,t)=>Array.isArray(e)?(M(e[t])&&(e[t]=void 0),e.splice(t,0,e.splice(r,1)[0]),e):[],qe=(e,r)=>[...J(r),...J(e)];function gr(e,r){let t=0;const i=[...e];for(const n of r)i.splice(n-t,1),t++;return ke(i).length?i:[]}var We=(e,r)=>M(r)?[]:gr(e,J(r).sort((t,i)=>t-i)),je=(e,r,t)=>{[e[r],e[t]]=[e[t],e[r]]},Vt=(e,r,t)=>(e[r]=t,e);function Fr(e){const r=pe(),{control:t=r.control,name:i,keyName:n="id",shouldUnregister:u,rules:c}=e,[o,b]=m.useState(t._getFieldArray(i)),A=m.useRef(t._getFieldArray(i).map(ne)),S=m.useRef(o),w=m.useRef(i),F=m.useRef(!1);w.current=i,S.current=o,t._names.array.add(i),c&&t.register(i,c),Ee(()=>t._subjects.array.subscribe({next:({values:v,name:_})=>{if(_===w.current||!_){const x=f(v,w.current);Array.isArray(x)&&(b(x),A.current=x.map(ne))}}}).unsubscribe,[t]);const R=m.useCallback(v=>{F.current=!0,t._setFieldArray(i,v)},[t,i]),Y=(v,_)=>{const x=J(O(v)),k=Ie(t._getFieldArray(i),x);t._names.focus=Le(i,k.length-1,_),A.current=Ie(A.current,x.map(ne)),R(k),b(k),t._setFieldArray(i,k,Ie,{argA:Ne(v)})},U=(v,_)=>{const x=J(O(v)),k=qe(t._getFieldArray(i),x);t._names.focus=Le(i,0,_),A.current=qe(A.current,x.map(ne)),R(k),b(k),t._setFieldArray(i,k,qe,{argA:Ne(v)})},L=v=>{const _=We(t._getFieldArray(i),v);A.current=We(A.current,v),R(_),b(_),!Array.isArray(f(t._fields,i))&&C(t._fields,i,void 0),t._setFieldArray(i,_,We,{argA:v})},ee=(v,_,x)=>{const k=J(O(_)),z=Be(t._getFieldArray(i),v,k);t._names.focus=Le(i,v,x),A.current=Be(A.current,v,k.map(ne)),R(z),b(z),t._setFieldArray(i,z,Be,{argA:v,argB:Ne(_)})},V=(v,_)=>{const x=t._getFieldArray(i);je(x,v,_),je(A.current,v,_),R(x),b(x),t._setFieldArray(i,x,je,{argA:v,argB:_},!1)},G=(v,_)=>{const x=t._getFieldArray(i);Pe(x,v,_),Pe(A.current,v,_),R(x),b(x),t._setFieldArray(i,x,Pe,{argA:v,argB:_},!1)},q=(v,_)=>{const x=O(_),k=Vt(t._getFieldArray(i),v,x);A.current=[...k].map((z,Q)=>!z||Q===v?ne():A.current[Q]),R(k),b([...k]),t._setFieldArray(i,k,Vt,{argA:v,argB:x},!0,!1)},I=v=>{const _=J(O(v));A.current=_.map(ne),R([..._]),b([..._]),t._setFieldArray(i,[..._],x=>x,{},!0,!1)};return m.useEffect(()=>{if(t._state.action=!1,$e(i,t._names)&&t._subjects.state.next({...t._formState}),F.current&&(!de(t._options.mode).isOnSubmit||t._formState.isSubmitted)&&!de(t._options.reValidateMode).isOnSubmit)if(t._options.resolver)t._runSchema([i]).then(v=>{const _=f(v.errors,i),x=f(t._formState.errors,i);(x?!_&&x.type||_&&(x.type!==_.type||x.message!==_.message):_&&_.type)&&(_?C(t._formState.errors,i,_):B(t._formState.errors,i),t._subjects.state.next({errors:t._formState.errors}))});else{const v=f(t._fields,i);v&&v._f&&!(de(t._options.reValidateMode).isOnSubmit&&de(t._options.mode).isOnSubmit)&&Je(v,t._names.disabled,t._formValues,t._options.criteriaMode===K.all,t._options.shouldUseNativeValidation,!0).then(_=>!j(_)&&t._subjects.state.next({errors:Ut(t._formState.errors,_,i)}))}t._subjects.state.next({name:i,values:O(t._formValues)}),t._names.focus&&fe(t._fields,(v,_)=>{if(t._names.focus&&_.startsWith(t._names.focus)&&v.focus)return v.focus(),1}),t._names.focus="",t._setValid(),F.current=!1},[o,i,t]),m.useEffect(()=>(!f(t._formValues,i)&&t._setFieldArray(i),()=>{const v=(_,x)=>{const k=f(t._fields,_);k&&k._f&&(k._f.mount=x)};t._options.shouldUnregister||u?t.unregister(i):v(i,!1)}),[i,t,n,u]),{swap:m.useCallback(V,[R,i,t]),move:m.useCallback(G,[R,i,t]),prepend:m.useCallback(U,[R,i,t]),append:m.useCallback(Y,[R,i,t]),remove:m.useCallback(L,[R,i,t]),insert:m.useCallback(ee,[R,i,t]),update:m.useCallback(q,[R,i,t]),replace:m.useCallback(I,[R,i,t]),fields:m.useMemo(()=>o.map((v,_)=>({...v,[n]:A.current[_]||ne()})),[o,n])}}function Ar(e={}){const r=m.useRef(void 0),t=m.useRef(void 0),[i,n]=m.useState({isDirty:!1,isValidating:!1,isLoading:te(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:te(e.defaultValues)?void 0:e.defaultValues});if(!r.current)if(e.formControl)r.current={...e.formControl,formState:i},e.defaultValues&&!te(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:c,...o}=yr(e);r.current={...o,formState:i}}const u=r.current.control;return u._options=e,Ee(()=>{const c=u._subscribe({formState:u._proxyFormState,callback:()=>n({...u._formState}),reRenderRoot:!0});return n(o=>({...o,isReady:!0})),u._formState.isReady=!0,c},[u]),m.useEffect(()=>u._disableForm(e.disabled),[u,e.disabled]),m.useEffect(()=>{e.mode&&(u._options.mode=e.mode),e.reValidateMode&&(u._options.reValidateMode=e.reValidateMode)},[u,e.mode,e.reValidateMode]),m.useEffect(()=>{e.errors&&(u._setErrors(e.errors),u._focusError())},[u,e.errors]),m.useEffect(()=>{e.shouldUnregister&&u._subjects.state.next({values:u._getWatch()})},[u,e.shouldUnregister]),m.useEffect(()=>{if(u._proxyFormState.isDirty){const c=u._getDirty();c!==i.isDirty&&u._subjects.state.next({isDirty:c})}},[u,i.isDirty]),m.useEffect(()=>{e.values&&!ue(e.values,t.current)?(u._reset(e.values,{keepFieldsRef:!0,...u._options.resetOptions}),t.current=e.values,n(c=>({...c}))):u._resetDefaultValues()},[u,e.values]),m.useEffect(()=>{u._state.mount||(u._setValid(),u._state.mount=!0),u._state.watch&&(u._state.watch=!1,u._subjects.state.next({...u._formState})),u._removeUnmounted()}),r.current.formState=pt(i,u),r.current}export{tr as a,Ar as b,mr as c,Kt as d,er as e,Fr as f,f as g,Gt as h,Qt as i,vr as j,C as s,br as u};
|
|
10
|
+
//# sourceMappingURL=index.esm-C6ngV5UE.js.map
|