@baseplate-dev/project-builder-web 0.2.3 → 0.2.5

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.
Files changed (112) hide show
  1. package/dist/assets/-constants-CyTNHADu.js +4 -0
  2. package/dist/assets/-constants-CyTNHADu.js.map +1 -0
  3. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-BXxolMLm.js → web-dPVRSC8L.js} +2 -2
  4. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-BXxolMLm.js.map → web-dPVRSC8L.js.map} +1 -1
  5. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-DnM8acZf.js +5 -0
  6. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-DnM8acZf.js.map +1 -0
  7. package/dist/assets/__federation_shared_@baseplate-dev/{ui-components-DGE1buQ-.js → ui-components-z-HwX7Wv.js} +4 -4
  8. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-z-HwX7Wv.js.map +1 -0
  9. package/dist/assets/{_virtual___federation_fn_import-CE3p-l_2.js → _virtual___federation_fn_import-DK_YYIlv.js} +2 -2
  10. package/dist/assets/{_virtual___federation_fn_import-CE3p-l_2.js.map → _virtual___federation_fn_import-DK_YYIlv.js.map} +1 -1
  11. package/dist/assets/{backend-BAEsy0fr.js → backend-B_UhUC1z.js} +2 -2
  12. package/dist/assets/{backend-BAEsy0fr.js.map → backend-B_UhUC1z.js.map} +1 -1
  13. package/dist/assets/{badge-with-type-label-BuG6yCtf.js → badge-with-type-label-Cvf-Kq7s.js} +2 -2
  14. package/dist/assets/{badge-with-type-label-BuG6yCtf.js.map → badge-with-type-label-Cvf-Kq7s.js.map} +1 -1
  15. package/dist/assets/{edit._id-DPcGRUbG.js → edit._id-TYAWf8Zb.js} +2 -2
  16. package/dist/assets/{edit._id-DPcGRUbG.js.map → edit._id-TYAWf8Zb.js.map} +1 -1
  17. package/dist/assets/{enum-info-form-BjI1ArPU.js → enum-info-form-CfQbLUQ3.js} +2 -2
  18. package/dist/assets/{enum-info-form-BjI1ArPU.js.map → enum-info-form-CfQbLUQ3.js.map} +1 -1
  19. package/dist/assets/{graphql-DksHNLLL.js → graphql-DTRjqtIq.js} +2 -2
  20. package/dist/assets/{graphql-DksHNLLL.js.map → graphql-DTRjqtIq.js.map} +1 -1
  21. package/dist/assets/{hierarchy-BwshirJR.js → hierarchy-BDu76BxG.js} +2 -2
  22. package/dist/assets/{hierarchy-BwshirJR.js.map → hierarchy-BDu76BxG.js.map} +1 -1
  23. package/dist/assets/{immer-xieDw-3D.js → immer-BOh2djD_.js} +2 -2
  24. package/dist/assets/{immer-xieDw-3D.js.map → immer-BOh2djD_.js.map} +1 -1
  25. package/dist/assets/{index-CVRvV2mv.js → index-01LAxHjt.js} +2 -2
  26. package/dist/assets/{index-CVRvV2mv.js.map → index-01LAxHjt.js.map} +1 -1
  27. package/dist/assets/{index-gE__lQ6b.js → index-B7G2CMwL.js} +4 -4
  28. package/dist/assets/{index-gE__lQ6b.js.map → index-B7G2CMwL.js.map} +1 -1
  29. package/dist/assets/{index-BS45dlQs.js → index-BgFEd-vA.js} +2 -2
  30. package/dist/assets/{index-BS45dlQs.js.map → index-BgFEd-vA.js.map} +1 -1
  31. package/dist/assets/index-BkkIaDrq.js +2 -0
  32. package/dist/assets/index-BkkIaDrq.js.map +1 -0
  33. package/dist/assets/{index-BNK4j9mt.js → index-CKCJuR7p.js} +2 -2
  34. package/dist/assets/{index-BNK4j9mt.js.map → index-CKCJuR7p.js.map} +1 -1
  35. package/dist/assets/{index-E5Zy1ClF.js → index-Cg4QKyV6.js} +2 -2
  36. package/dist/assets/{index-E5Zy1ClF.js.map → index-Cg4QKyV6.js.map} +1 -1
  37. package/dist/assets/{index-Dp90A2TJ.js → index-D8LleqeK.js} +2 -2
  38. package/dist/assets/{index-Dp90A2TJ.js.map → index-D8LleqeK.js.map} +1 -1
  39. package/dist/assets/{index-s17MV-9f.js → index-DITwAD5X.js} +2 -2
  40. package/dist/assets/{index-s17MV-9f.js.map → index-DITwAD5X.js.map} +1 -1
  41. package/dist/assets/{index-La9rk06J.js → index-DhWOhNFS.js} +2 -2
  42. package/dist/assets/{index-La9rk06J.js.map → index-DhWOhNFS.js.map} +1 -1
  43. package/dist/assets/index-PWrncK3R.js +2 -0
  44. package/dist/assets/index-PWrncK3R.js.map +1 -0
  45. package/dist/assets/{index-C6ezfkGk.js → index-tLZ1b0Gc.js} +2 -2
  46. package/dist/assets/{index-C6ezfkGk.js.map → index-tLZ1b0Gc.js.map} +1 -1
  47. package/dist/assets/{index.esm-CyH9wtdI.js → index.esm-Bvv3vNQh.js} +2 -2
  48. package/dist/assets/{index.esm-CyH9wtdI.js.map → index.esm-Bvv3vNQh.js.map} +1 -1
  49. package/dist/assets/{model-info-form-B9t3m8Pj.js → model-info-form-tJoD-VwE.js} +2 -2
  50. package/dist/assets/{model-info-form-B9t3m8Pj.js.map → model-info-form-tJoD-VwE.js.map} +1 -1
  51. package/dist/assets/{model-merger-DL4MVNID.js → model-merger-DuBMgrZ3.js} +2 -2
  52. package/dist/assets/{model-merger-DL4MVNID.js.map → model-merger-DuBMgrZ3.js.map} +1 -1
  53. package/dist/assets/{new-app-dialog-Cd7rJ7i5.js → new-app-dialog-CFhp6QLe.js} +2 -2
  54. package/dist/assets/{new-app-dialog-Cd7rJ7i5.js.map → new-app-dialog-CFhp6QLe.js.map} +1 -1
  55. package/dist/assets/{new-enum-dialog-Z3aWnnBr.js → new-enum-dialog-BxDxXwX_.js} +2 -2
  56. package/dist/assets/{new-enum-dialog-Z3aWnnBr.js.map → new-enum-dialog-BxDxXwX_.js.map} +1 -1
  57. package/dist/assets/new-model-dialog-D4pnLGR_.js +2 -0
  58. package/dist/assets/new-model-dialog-D4pnLGR_.js.map +1 -0
  59. package/dist/assets/{route-B2oYTZT4.js → route-BGYla1q4.js} +2 -2
  60. package/dist/assets/{route-B2oYTZT4.js.map → route-BGYla1q4.js.map} +1 -1
  61. package/dist/assets/{route-B6DRGm3t.js → route-BILZA_nq.js} +2 -2
  62. package/dist/assets/{route-B6DRGm3t.js.map → route-BILZA_nq.js.map} +1 -1
  63. package/dist/assets/{route-BzTxfPrV.js → route-BLMjDHl_.js} +2 -2
  64. package/dist/assets/{route-BzTxfPrV.js.map → route-BLMjDHl_.js.map} +1 -1
  65. package/dist/assets/{route-BwqWBMDI.js → route-CO2y2T3j.js} +2 -2
  66. package/dist/assets/{route-BwqWBMDI.js.map → route-CO2y2T3j.js.map} +1 -1
  67. package/dist/assets/route-DSICQIL3.js +2 -0
  68. package/dist/assets/{route-C8YLDv4I.js.map → route-DSICQIL3.js.map} +1 -1
  69. package/dist/assets/{route-BxjC9xAo.js → route-DYHQ0t6P.js} +2 -2
  70. package/dist/assets/{route-BxjC9xAo.js.map → route-DYHQ0t6P.js.map} +1 -1
  71. package/dist/assets/{route-_AecKyFO.js → route-DvbGaH6v.js} +2 -2
  72. package/dist/assets/{route-_AecKyFO.js.map → route-DvbGaH6v.js.map} +1 -1
  73. package/dist/assets/{route-DrufP1-c.js → route-MA2rDgPd.js} +2 -2
  74. package/dist/assets/{route-DrufP1-c.js.map → route-MA2rDgPd.js.map} +1 -1
  75. package/dist/assets/{route-BOOZxY6E.js → route-rzAviP-P.js} +2 -2
  76. package/dist/assets/{route-BOOZxY6E.js.map → route-rzAviP-P.js.map} +1 -1
  77. package/dist/assets/{sections-D-GS6uoS.js → sections-BSA71xrl.js} +2 -2
  78. package/dist/assets/{sections-D-GS6uoS.js.map → sections-BSA71xrl.js.map} +1 -1
  79. package/dist/assets/{sections._sectionKey-Bj4VmUuM.js → sections._sectionKey-DSatzih8.js} +2 -2
  80. package/dist/assets/{sections._sectionKey-Bj4VmUuM.js.map → sections._sectionKey-DSatzih8.js.map} +1 -1
  81. package/dist/assets/{service-C6FdRXxU.js → service-C0mRE7Wd.js} +2 -2
  82. package/dist/assets/{service-C6FdRXxU.js.map → service-C0mRE7Wd.js.map} +1 -1
  83. package/dist/assets/{template-extractor-D2LqkpO5.js → template-extractor-1dzSeRMo.js} +2 -2
  84. package/dist/assets/{template-extractor-D2LqkpO5.js.map → template-extractor-1dzSeRMo.js.map} +1 -1
  85. package/dist/assets/{theme-builder-_PghOvuC.js → theme-builder-NSOA1xIw.js} +2 -2
  86. package/dist/assets/{theme-builder-_PghOvuC.js.map → theme-builder-NSOA1xIw.js.map} +1 -1
  87. package/dist/assets/{use-definition-schema-B2FBXmC_.js → use-definition-schema-DOTr2MSB.js} +2 -2
  88. package/dist/assets/{use-definition-schema-B2FBXmC_.js.map → use-definition-schema-DOTr2MSB.js.map} +1 -1
  89. package/dist/assets/{use-enum-form-DQza9C6Q.js → use-enum-form-Bon-b8Oc.js} +2 -2
  90. package/dist/assets/{use-enum-form-DQza9C6Q.js.map → use-enum-form-Bon-b8Oc.js.map} +1 -1
  91. package/dist/assets/use-model-form-Bjm8n0m8.js +2 -0
  92. package/dist/assets/use-model-form-Bjm8n0m8.js.map +1 -0
  93. package/dist/assets/{utils-CH9UxfXa.js → utils-BGrwv_U7.js} +2 -2
  94. package/dist/assets/{utils-CH9UxfXa.js.map → utils-BGrwv_U7.js.map} +1 -1
  95. package/dist/assets/{web-C6Idxok-.js → web-B598C4Bq.js} +2 -2
  96. package/dist/assets/{web-C6Idxok-.js.map → web-B598C4Bq.js.map} +1 -1
  97. package/dist/index.html +5 -5
  98. package/package.json +6 -6
  99. package/dist/assets/-constants-gwObfy2j.js +0 -4
  100. package/dist/assets/-constants-gwObfy2j.js.map +0 -1
  101. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CDWHycLw.js +0 -5
  102. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CDWHycLw.js.map +0 -1
  103. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-DGE1buQ-.js.map +0 -1
  104. package/dist/assets/index-B6qfP-Zp.js +0 -2
  105. package/dist/assets/index-B6qfP-Zp.js.map +0 -1
  106. package/dist/assets/index-CwavzuOe.js +0 -2
  107. package/dist/assets/index-CwavzuOe.js.map +0 -1
  108. package/dist/assets/new-model-dialog-uEX7hTid.js +0 -2
  109. package/dist/assets/new-model-dialog-uEX7hTid.js.map +0 -1
  110. package/dist/assets/route-C8YLDv4I.js +0 -2
  111. package/dist/assets/use-model-form-D4qoaVd7.js +0 -2
  112. package/dist/assets/use-model-form-D4qoaVd7.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"service-C6FdRXxU.js","sources":["../../src/routes/data/models/edit.$key/-components/service/service-method-fields-section.tsx","../../src/routes/data/models/edit.$key/-components/service/service-transformer-form.tsx","../../src/routes/data/models/edit.$key/-components/service/service-transformer-dialog.tsx","../../src/routes/data/models/edit.$key/-components/service/service-transformers-section.tsx","../../src/routes/data/models/edit.$key/service.tsx?tsr-split=component"],"sourcesContent":["import type { ModelConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control, UseFormSetValue } from 'react-hook-form';\n\nimport { ModelTransformerUtils } from '@baseplate-dev/project-builder-lib';\nimport {\n modelTransformerWebSpec,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Label,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchField,\n} from '@baseplate-dev/ui-components';\nimport { useWatch } from 'react-hook-form';\n\nimport {\n BUILT_IN_TRANSFORMER_WEB_CONFIGS,\n SCALAR_FIELD_TYPE_OPTIONS,\n} from '../../../-constants.js';\nimport { useEditedModelConfig } from '../../../-hooks/use-edited-model-config.js';\nimport { BadgeWithTypeLabel } from '../badge-with-type-label.js';\n\ninterface ServiceMethodFieldsSectionProps {\n className?: string;\n control: Control<ModelConfigInput>;\n setValue: UseFormSetValue<ModelConfigInput>;\n}\n\nexport function ServiceMethodFieldsSection({\n className,\n control,\n setValue,\n}: ServiceMethodFieldsSectionProps): React.JSX.Element | null {\n const fields = useEditedModelConfig((model) => model.model.fields);\n const create = useWatch({ control, name: 'service.create' });\n const update = useWatch({ control, name: 'service.update' });\n const isCreateEnabled = create?.enabled;\n const isUpdateEnabled = update?.enabled;\n const transformers =\n useWatch({ control, name: 'service.transformers' }) ?? [];\n const { definitionContainer, pluginContainer } = useProjectDefinition();\n\n if (!isCreateEnabled && !isUpdateEnabled) {\n return null;\n }\n\n const createFields = create?.fields ?? [];\n const updateFields = update?.fields ?? [];\n\n const createTransformers = create?.transformerNames ?? [];\n const updateTransformers = update?.transformerNames ?? [];\n\n const tableClassName =\n 'w-full border-collapse text-left [&_td]:py-1 [&_th]:sticky [&_th]:top-0 [&_th]:bg-background [&_th]:z-10 [&_th]:py-2';\n\n const transformerWeb = pluginContainer.getPluginSpec(modelTransformerWebSpec);\n\n return (\n <SectionListSection className={className}>\n <SectionListSectionHeader>\n <SectionListSectionTitle>\n Create / Update Fields\n </SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure the fields that can be created or updated by the service\n method\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"max-w-xl space-y-4\">\n <table className={tableClassName}>\n <thead>\n <tr>\n <th className=\"w-full\">\n <Label>Fields</Label>\n </th>\n {isCreateEnabled && <th className=\"pl-8\">Create</th>}\n {isUpdateEnabled && <th className=\"pl-8\">Update</th>}\n </tr>\n </thead>\n <tbody>\n {fields.map((field) => (\n <tr key={field.id}>\n <td>\n <BadgeWithTypeLabel\n type={\n field.type === 'enum' && field.options?.enumRef\n ? definitionContainer.nameFromId(field.options.enumRef)\n : SCALAR_FIELD_TYPE_OPTIONS[field.type].label\n }\n >\n {field.name}\n </BadgeWithTypeLabel>\n </td>\n {isCreateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={createFields.includes(field.id)}\n onChange={(value) => {\n setValue(\n 'service.create.fields',\n value\n ? [...createFields, field.id]\n : createFields.filter((id) => id !== field.id),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n {isUpdateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={updateFields.includes(field.id)}\n onChange={(value) => {\n setValue(\n 'service.update.fields',\n value\n ? [...updateFields, field.id]\n : updateFields.filter((id) => id !== field.id),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n </tr>\n ))}\n {transformers.length > 0 && (\n <tr>\n <th>\n <Label>Transformers</Label>\n </th>\n </tr>\n )}\n {transformers.map((transformer) => (\n <tr key={transformer.id}>\n <td>\n <BadgeWithTypeLabel\n type={\n transformerWeb.getTransformerWebConfig(\n transformer.type,\n BUILT_IN_TRANSFORMER_WEB_CONFIGS,\n ).label\n }\n >\n {ModelTransformerUtils.getTransformName(\n definitionContainer,\n transformer,\n pluginContainer,\n )}\n </BadgeWithTypeLabel>\n </td>\n {isCreateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={createTransformers.includes(transformer.id)}\n onChange={(value) => {\n setValue(\n 'service.create.transformerNames',\n value\n ? [...createTransformers, transformer.id]\n : createTransformers.filter(\n (id) => id !== transformer.id,\n ),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n {isUpdateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={updateTransformers.includes(transformer.id)}\n onChange={(value) => {\n setValue(\n 'service.update.transformerNames',\n value\n ? [...updateTransformers, transformer.id]\n : updateTransformers.filter(\n (id) => id !== transformer.id,\n ),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </SectionListSectionContent>\n </SectionListSection>\n );\n}\n","import type { TransformerConfig } from '@baseplate-dev/project-builder-lib';\nimport type { ModelTransformerWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\n\nimport {\n createTransformerSchema,\n modelTransformerEntityType,\n} from '@baseplate-dev/project-builder-lib';\nimport { useDefinitionSchema } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n DialogClose,\n DialogFooter,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { clsx } from 'clsx';\nimport { useId, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { useEditedModelConfig } from '../../../-hooks/use-edited-model-config.js';\n\ninterface ServiceTransformerFormProps {\n className?: string;\n webConfig: ModelTransformerWebConfig;\n transformer?: TransformerConfig;\n onUpdate: (transformer: TransformerConfig) => void;\n isCreate: boolean;\n}\n\nexport function ServiceTransformerForm({\n className,\n webConfig: { Form, pluginId },\n transformer,\n onUpdate,\n isCreate,\n}: ServiceTransformerFormProps): React.JSX.Element | null {\n const originalModel = useEditedModelConfig((model) => model);\n const transformerSchema = useDefinitionSchema(createTransformerSchema);\n const schema = useMemo(\n () =>\n z.object({\n transformer: transformerSchema,\n }),\n [transformerSchema],\n );\n const formProps = useForm<{ transformer: TransformerConfig }>({\n resolver: zodResolver(schema),\n defaultValues: { transformer },\n });\n const {\n handleSubmit,\n formState: { isDirty },\n } = formProps;\n\n const onSubmit = handleSubmit((data) => {\n onUpdate({\n ...data.transformer,\n id: data.transformer.id\n ? data.transformer.id\n : modelTransformerEntityType.generateNewId(),\n });\n });\n\n const formId = useId();\n\n if (!Form) {\n return null;\n }\n\n return (\n <form\n className={clsx('space-y-4', className)}\n id={formId}\n onSubmit={(e) => {\n e.stopPropagation();\n return onSubmit(e);\n }}\n >\n <Form\n formProps={formProps}\n name=\"transformer\"\n originalModel={originalModel}\n pluginId={pluginId}\n />\n <DialogFooter>\n <DialogClose asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button type=\"submit\" disabled={!isCreate && !isDirty} form={formId}>\n Save\n </Button>\n </DialogFooter>\n </form>\n );\n}\n","import type { TransformerConfig } from '@baseplate-dev/project-builder-lib';\nimport type { ModelTransformerWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n useControlledState,\n} from '@baseplate-dev/ui-components';\n\nimport { ServiceTransformerForm } from './service-transformer-form.js';\n\ninterface ServiceTransformerDialogProps {\n children?: React.ReactNode;\n asChild?: boolean;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n webConfig: ModelTransformerWebConfig | undefined;\n transformer: TransformerConfig | undefined;\n onUpdate: (transformer: TransformerConfig) => void;\n isCreate: boolean;\n}\n\nexport function ServiceTransformerDialog({\n children,\n transformer,\n asChild,\n webConfig,\n open,\n onOpenChange,\n onUpdate,\n isCreate,\n}: ServiceTransformerDialogProps): React.JSX.Element {\n const [isOpen, setIsOpen] = useControlledState(open, onOpenChange, false);\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n {children && <DialogTrigger asChild={asChild}>{children}</DialogTrigger>}\n <DialogContent>\n <DialogHeader>\n <DialogTitle>\n {isCreate ? 'Create' : 'Edit'} {webConfig?.label} Transformer\n </DialogTitle>\n <DialogDescription>\n {webConfig?.instructions ??\n 'Manage the transformer for the service'}\n </DialogDescription>\n </DialogHeader>\n {webConfig && (\n <ServiceTransformerForm\n transformer={transformer}\n onUpdate={(transformer) => {\n setIsOpen(false);\n onUpdate(transformer);\n }}\n webConfig={webConfig}\n isCreate={isCreate}\n />\n )}\n </DialogContent>\n </Dialog>\n );\n}\n","import type {\n ModelConfigInput,\n TransformerConfig,\n} from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport {\n modelTransformerWebSpec,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n RecordView,\n RecordViewActions,\n RecordViewItem,\n RecordViewItemList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n useConfirmDialog,\n} from '@baseplate-dev/ui-components';\nimport { useState } from 'react';\nimport { useFieldArray, useWatch } from 'react-hook-form';\nimport { MdAdd, MdEdit, MdOutlineDelete } from 'react-icons/md';\n\nimport { BUILT_IN_TRANSFORMER_WEB_CONFIGS } from '#src/routes/data/models/-constants.js';\n\nimport { useEditedModelConfig } from '../../../-hooks/use-edited-model-config.js';\nimport { ServiceTransformerDialog } from './service-transformer-dialog.js';\n\ninterface Props {\n className?: string;\n formProps: UseFormReturn<ModelConfigInput>;\n}\n\nfunction ServiceTransformerRecord({\n formProps,\n idx,\n onRemove,\n onUpdate,\n}: {\n formProps: UseFormReturn<ModelConfigInput>;\n idx: number;\n onUpdate: (transformer: TransformerConfig, idx: number) => void;\n onRemove: (idx: number) => void;\n}): React.JSX.Element {\n const { pluginContainer, definitionContainer } = useProjectDefinition();\n const { control } = formProps;\n\n const field = useWatch({\n control,\n name: `service.transformers.${idx}`,\n });\n\n const transformerWeb = pluginContainer.getPluginSpec(modelTransformerWebSpec);\n const transformerConfig = transformerWeb.getTransformerWebConfig(\n field.type,\n BUILT_IN_TRANSFORMER_WEB_CONFIGS,\n );\n const summary = transformerConfig.getSummary(field, definitionContainer);\n return (\n <RecordView>\n <RecordViewItemList>\n <RecordViewItem title=\"Type\">{transformerConfig.label}</RecordViewItem>\n {summary.map((item) => (\n <RecordViewItem key={item.label} title={item.label}>\n {item.description}\n </RecordViewItem>\n ))}\n </RecordViewItemList>\n <RecordViewActions>\n {transformerConfig.Form && (\n <ServiceTransformerDialog\n webConfig={transformerConfig}\n transformer={field}\n onUpdate={(transformer) => {\n onUpdate(transformer, idx);\n }}\n asChild\n isCreate={false}\n >\n <Button variant=\"ghost\" size=\"icon\" title=\"Edit\">\n <MdEdit />\n </Button>\n </ServiceTransformerDialog>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => {\n onRemove(idx);\n }}\n title=\"Remove\"\n className=\"text-destructive hover:text-destructive-hover\"\n >\n <MdOutlineDelete />\n </Button>\n </RecordViewActions>\n </RecordView>\n );\n}\n\nexport function ServiceTransformersSection({\n className,\n formProps,\n}: Props): React.JSX.Element | null {\n const { control } = formProps;\n const { fields, remove, append, update } = useFieldArray({\n control,\n name: `service.transformers`,\n });\n const { pluginContainer, definitionContainer } = useProjectDefinition();\n\n const { requestConfirm } = useConfirmDialog();\n\n const transformerWeb = pluginContainer.getPluginSpec(modelTransformerWebSpec);\n\n const modelConfig = useEditedModelConfig((model) => model);\n\n const addableTransformers = transformerWeb\n .getTransformerWebConfigs(BUILT_IN_TRANSFORMER_WEB_CONFIGS)\n .filter((transformer) =>\n transformer.allowNewTransformer\n ? transformer.allowNewTransformer(definitionContainer, modelConfig)\n : true,\n );\n\n const [isNewTransfomerDialogOpen, setIsNewTransformerDialogOpen] =\n useState(false);\n const [addableTransformerIdx, setAddableTransformerIdx] = useState<number>(0);\n\n return (\n <SectionListSection className={className}>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Transformers</SectionListSectionTitle>\n <SectionListSectionDescription>\n Transformers are used to operate on the data from the client into the\n shape that the database ORM expects.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"max-w-xl space-y-4\">\n {fields.map((field, idx) => (\n <ServiceTransformerRecord\n key={field.id}\n formProps={formProps}\n idx={idx}\n onUpdate={(transformer, idx) => {\n update(idx, transformer);\n }}\n onRemove={(idx) => {\n requestConfirm({\n title: 'Confirm delete',\n content: `Are you sure you want to delete this transformer?`,\n buttonConfirmText: 'Delete',\n buttonConfirmVariant: 'destructive',\n onConfirm: () => {\n remove(idx);\n },\n });\n }}\n />\n ))}\n {addableTransformers.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"secondary\" size=\"sm\">\n <MdAdd />\n Add Transformer\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuGroup>\n {addableTransformers.map((transformer, idx) => (\n <DropdownMenuItem\n key={transformer.name}\n onSelect={() => {\n if (transformer.Form) {\n setAddableTransformerIdx(idx);\n setIsNewTransformerDialogOpen(true);\n } else {\n append(\n transformer.getNewTransformer(\n definitionContainer,\n modelConfig,\n ),\n );\n }\n }}\n >\n <div className=\"flex flex-col gap-1\">\n <div>{transformer.label}</div>\n <div className=\"text-style-muted\">\n {transformer.description}\n </div>\n </div>\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n <ServiceTransformerDialog\n webConfig={addableTransformers[addableTransformerIdx]}\n transformer={addableTransformers[\n addableTransformerIdx\n ]?.getNewTransformer(definitionContainer, modelConfig)}\n onUpdate={(transformer) => {\n append(transformer);\n }}\n open={isNewTransfomerDialogOpen}\n onOpenChange={setIsNewTransformerDialogOpen}\n isCreate={true}\n />\n </SectionListSectionContent>\n </SectionListSection>\n );\n}\n","import type React from 'react';\n\nimport { modelTransformerEntityType } from '@baseplate-dev/project-builder-lib';\nimport { useBlockUnsavedChangesNavigate } from '@baseplate-dev/project-builder-lib/web';\nimport {\n FormActionBar,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchFieldController,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute } from '@tanstack/react-router';\n\nimport { registerEntityTypeUrl } from '#src/services/entity-type.js';\n\nimport { EditedModelContextProvider } from '../-hooks/use-edited-model-config.js';\nimport { useModelForm } from '../-hooks/use-model-form.js';\nimport { ServiceMethodFieldsSection } from './-components/service/service-method-fields-section.js';\nimport { ServiceTransformersSection } from './-components/service/service-transformers-section.js';\n\nregisterEntityTypeUrl(\n modelTransformerEntityType,\n `/data/models/edit/{parentKey}`,\n);\n\nexport const Route = createFileRoute('/data/models/edit/$key/service')({\n component: ModelEditServicePage,\n beforeLoad: () => ({\n getTitle: () => 'Service',\n }),\n});\n\nfunction ModelEditServicePage(): React.JSX.Element {\n const { key } = Route.useParams();\n const { form, onSubmit, defaultValues } = useModelForm({\n omit: ['name', 'featureRef'],\n modelKey: key,\n });\n const { control, watch, getValues, setValue, reset } = form;\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n return (\n <EditedModelContextProvider\n initialModel={defaultValues}\n getValues={getValues}\n watch={watch}\n >\n <form onSubmit={onSubmit} className=\"w-full max-w-7xl space-y-4 p-4\">\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Methods</SectionListSectionTitle>\n <SectionListSectionDescription>\n Enable or disable which service methods will be generated\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"flex gap-8\">\n <SwitchFieldController\n label=\"Create\"\n name=\"service.create.enabled\"\n control={control}\n />\n <SwitchFieldController\n label=\"Update\"\n name=\"service.update.enabled\"\n control={control}\n />\n <SwitchFieldController\n label=\"Delete\"\n name=\"service.delete.enabled\"\n control={control}\n />\n </SectionListSectionContent>\n </SectionListSection>\n <ServiceMethodFieldsSection control={control} setValue={setValue} />\n <ServiceTransformersSection formProps={form} />\n </SectionList>\n <FormActionBar form={form} />\n </form>\n </EditedModelContextProvider>\n );\n}\n"],"names":["ModelTransformerUtils","importShared","modelTransformerWebSpec","useProjectDefinition","Label","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","SwitchField","ServiceMethodFieldsSection","className","control","setValue","fields","useEditedModelConfig","model","create","useWatch","update","isCreateEnabled","isUpdateEnabled","transformers","definitionContainer","pluginContainer","createFields","updateFields","createTransformers","updateTransformers","tableClassName","transformerWeb","jsxs","jsx","field","BadgeWithTypeLabel","SCALAR_FIELD_TYPE_OPTIONS","value","id","transformer","BUILT_IN_TRANSFORMER_WEB_CONFIGS","createTransformerSchema","modelTransformerEntityType","useDefinitionSchema","Button","DialogClose","DialogFooter","useId","useMemo","z","ServiceTransformerForm","Form","pluginId","onUpdate","isCreate","originalModel","transformerSchema","schema","formProps","useForm","zodResolver","handleSubmit","isDirty","onSubmit","data","formId","clsx","e","Dialog","DialogContent","DialogDescription","DialogHeader","DialogTitle","DialogTrigger","useControlledState","ServiceTransformerDialog","children","asChild","webConfig","open","onOpenChange","isOpen","setIsOpen","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuTrigger","RecordView","RecordViewActions","RecordViewItem","RecordViewItemList","useConfirmDialog","useState","ServiceTransformerRecord","idx","onRemove","transformerConfig","summary","item","MdEdit","MdOutlineDelete","ServiceTransformersSection","remove","append","useFieldArray","requestConfirm","modelConfig","addableTransformers","isNewTransfomerDialogOpen","setIsNewTransformerDialogOpen","addableTransformerIdx","setAddableTransformerIdx","MdAdd","useBlockUnsavedChangesNavigate","FormActionBar","SectionList","SwitchFieldController","registerEntityTypeUrl","SplitComponent","key","Route","useParams","form","defaultValues","useModelForm","omit","modelKey","watch","getValues","reset","EditedModelContextProvider"],"mappings":"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"}
1
+ {"version":3,"file":"service-C0mRE7Wd.js","sources":["../../src/routes/data/models/edit.$key/-components/service/service-method-fields-section.tsx","../../src/routes/data/models/edit.$key/-components/service/service-transformer-form.tsx","../../src/routes/data/models/edit.$key/-components/service/service-transformer-dialog.tsx","../../src/routes/data/models/edit.$key/-components/service/service-transformers-section.tsx","../../src/routes/data/models/edit.$key/service.tsx?tsr-split=component"],"sourcesContent":["import type { ModelConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control, UseFormSetValue } from 'react-hook-form';\n\nimport { ModelTransformerUtils } from '@baseplate-dev/project-builder-lib';\nimport {\n modelTransformerWebSpec,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Label,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchField,\n} from '@baseplate-dev/ui-components';\nimport { useWatch } from 'react-hook-form';\n\nimport {\n BUILT_IN_TRANSFORMER_WEB_CONFIGS,\n SCALAR_FIELD_TYPE_OPTIONS,\n} from '../../../-constants.js';\nimport { useEditedModelConfig } from '../../../-hooks/use-edited-model-config.js';\nimport { BadgeWithTypeLabel } from '../badge-with-type-label.js';\n\ninterface ServiceMethodFieldsSectionProps {\n className?: string;\n control: Control<ModelConfigInput>;\n setValue: UseFormSetValue<ModelConfigInput>;\n}\n\nexport function ServiceMethodFieldsSection({\n className,\n control,\n setValue,\n}: ServiceMethodFieldsSectionProps): React.JSX.Element | null {\n const fields = useEditedModelConfig((model) => model.model.fields);\n const create = useWatch({ control, name: 'service.create' });\n const update = useWatch({ control, name: 'service.update' });\n const isCreateEnabled = create?.enabled;\n const isUpdateEnabled = update?.enabled;\n const transformers =\n useWatch({ control, name: 'service.transformers' }) ?? [];\n const { definitionContainer, pluginContainer } = useProjectDefinition();\n\n if (!isCreateEnabled && !isUpdateEnabled) {\n return null;\n }\n\n const createFields = create?.fields ?? [];\n const updateFields = update?.fields ?? [];\n\n const createTransformers = create?.transformerNames ?? [];\n const updateTransformers = update?.transformerNames ?? [];\n\n const tableClassName =\n 'w-full border-collapse text-left [&_td]:py-1 [&_th]:sticky [&_th]:top-0 [&_th]:bg-background [&_th]:z-10 [&_th]:py-2';\n\n const transformerWeb = pluginContainer.getPluginSpec(modelTransformerWebSpec);\n\n return (\n <SectionListSection className={className}>\n <SectionListSectionHeader>\n <SectionListSectionTitle>\n Create / Update Fields\n </SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure the fields that can be created or updated by the service\n method\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"max-w-xl space-y-4\">\n <table className={tableClassName}>\n <thead>\n <tr>\n <th className=\"w-full\">\n <Label>Fields</Label>\n </th>\n {isCreateEnabled && <th className=\"pl-8\">Create</th>}\n {isUpdateEnabled && <th className=\"pl-8\">Update</th>}\n </tr>\n </thead>\n <tbody>\n {fields.map((field) => (\n <tr key={field.id}>\n <td>\n <BadgeWithTypeLabel\n type={\n field.type === 'enum' && field.options?.enumRef\n ? definitionContainer.nameFromId(field.options.enumRef)\n : SCALAR_FIELD_TYPE_OPTIONS[field.type].label\n }\n >\n {field.name}\n </BadgeWithTypeLabel>\n </td>\n {isCreateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={createFields.includes(field.id)}\n onChange={(value) => {\n setValue(\n 'service.create.fields',\n value\n ? [...createFields, field.id]\n : createFields.filter((id) => id !== field.id),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n {isUpdateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={updateFields.includes(field.id)}\n onChange={(value) => {\n setValue(\n 'service.update.fields',\n value\n ? [...updateFields, field.id]\n : updateFields.filter((id) => id !== field.id),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n </tr>\n ))}\n {transformers.length > 0 && (\n <tr>\n <th>\n <Label>Transformers</Label>\n </th>\n </tr>\n )}\n {transformers.map((transformer) => (\n <tr key={transformer.id}>\n <td>\n <BadgeWithTypeLabel\n type={\n transformerWeb.getTransformerWebConfig(\n transformer.type,\n BUILT_IN_TRANSFORMER_WEB_CONFIGS,\n ).label\n }\n >\n {ModelTransformerUtils.getTransformName(\n definitionContainer,\n transformer,\n pluginContainer,\n )}\n </BadgeWithTypeLabel>\n </td>\n {isCreateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={createTransformers.includes(transformer.id)}\n onChange={(value) => {\n setValue(\n 'service.create.transformerNames',\n value\n ? [...createTransformers, transformer.id]\n : createTransformers.filter(\n (id) => id !== transformer.id,\n ),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n {isUpdateEnabled && (\n <td className=\"pl-8\">\n <SwitchField\n value={updateTransformers.includes(transformer.id)}\n onChange={(value) => {\n setValue(\n 'service.update.transformerNames',\n value\n ? [...updateTransformers, transformer.id]\n : updateTransformers.filter(\n (id) => id !== transformer.id,\n ),\n { shouldDirty: true },\n );\n }}\n />\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n </SectionListSectionContent>\n </SectionListSection>\n );\n}\n","import type { TransformerConfig } from '@baseplate-dev/project-builder-lib';\nimport type { ModelTransformerWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\n\nimport {\n createTransformerSchema,\n modelTransformerEntityType,\n} from '@baseplate-dev/project-builder-lib';\nimport { useDefinitionSchema } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n DialogClose,\n DialogFooter,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { clsx } from 'clsx';\nimport { useId, useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { useEditedModelConfig } from '../../../-hooks/use-edited-model-config.js';\n\ninterface ServiceTransformerFormProps {\n className?: string;\n webConfig: ModelTransformerWebConfig;\n transformer?: TransformerConfig;\n onUpdate: (transformer: TransformerConfig) => void;\n isCreate: boolean;\n}\n\nexport function ServiceTransformerForm({\n className,\n webConfig: { Form, pluginId },\n transformer,\n onUpdate,\n isCreate,\n}: ServiceTransformerFormProps): React.JSX.Element | null {\n const originalModel = useEditedModelConfig((model) => model);\n const transformerSchema = useDefinitionSchema(createTransformerSchema);\n const schema = useMemo(\n () =>\n z.object({\n transformer: transformerSchema,\n }),\n [transformerSchema],\n );\n const formProps = useForm<{ transformer: TransformerConfig }>({\n resolver: zodResolver(schema),\n defaultValues: { transformer },\n });\n const {\n handleSubmit,\n formState: { isDirty },\n } = formProps;\n\n const onSubmit = handleSubmit((data) => {\n onUpdate({\n ...data.transformer,\n id: data.transformer.id\n ? data.transformer.id\n : modelTransformerEntityType.generateNewId(),\n });\n });\n\n const formId = useId();\n\n if (!Form) {\n return null;\n }\n\n return (\n <form\n className={clsx('space-y-4', className)}\n id={formId}\n onSubmit={(e) => {\n e.stopPropagation();\n return onSubmit(e);\n }}\n >\n <Form\n formProps={formProps}\n name=\"transformer\"\n originalModel={originalModel}\n pluginId={pluginId}\n />\n <DialogFooter>\n <DialogClose asChild>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button type=\"submit\" disabled={!isCreate && !isDirty} form={formId}>\n Save\n </Button>\n </DialogFooter>\n </form>\n );\n}\n","import type { TransformerConfig } from '@baseplate-dev/project-builder-lib';\nimport type { ModelTransformerWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n useControlledState,\n} from '@baseplate-dev/ui-components';\n\nimport { ServiceTransformerForm } from './service-transformer-form.js';\n\ninterface ServiceTransformerDialogProps {\n children?: React.ReactNode;\n asChild?: boolean;\n open?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n webConfig: ModelTransformerWebConfig | undefined;\n transformer: TransformerConfig | undefined;\n onUpdate: (transformer: TransformerConfig) => void;\n isCreate: boolean;\n}\n\nexport function ServiceTransformerDialog({\n children,\n transformer,\n asChild,\n webConfig,\n open,\n onOpenChange,\n onUpdate,\n isCreate,\n}: ServiceTransformerDialogProps): React.JSX.Element {\n const [isOpen, setIsOpen] = useControlledState(open, onOpenChange, false);\n return (\n <Dialog open={isOpen} onOpenChange={setIsOpen}>\n {children && <DialogTrigger asChild={asChild}>{children}</DialogTrigger>}\n <DialogContent>\n <DialogHeader>\n <DialogTitle>\n {isCreate ? 'Create' : 'Edit'} {webConfig?.label} Transformer\n </DialogTitle>\n <DialogDescription>\n {webConfig?.instructions ??\n 'Manage the transformer for the service'}\n </DialogDescription>\n </DialogHeader>\n {webConfig && (\n <ServiceTransformerForm\n transformer={transformer}\n onUpdate={(transformer) => {\n setIsOpen(false);\n onUpdate(transformer);\n }}\n webConfig={webConfig}\n isCreate={isCreate}\n />\n )}\n </DialogContent>\n </Dialog>\n );\n}\n","import type {\n ModelConfigInput,\n TransformerConfig,\n} from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport {\n modelTransformerWebSpec,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n RecordView,\n RecordViewActions,\n RecordViewItem,\n RecordViewItemList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n useConfirmDialog,\n} from '@baseplate-dev/ui-components';\nimport { useState } from 'react';\nimport { useFieldArray, useWatch } from 'react-hook-form';\nimport { MdAdd, MdEdit, MdOutlineDelete } from 'react-icons/md';\n\nimport { BUILT_IN_TRANSFORMER_WEB_CONFIGS } from '#src/routes/data/models/-constants.js';\n\nimport { useEditedModelConfig } from '../../../-hooks/use-edited-model-config.js';\nimport { ServiceTransformerDialog } from './service-transformer-dialog.js';\n\ninterface Props {\n className?: string;\n formProps: UseFormReturn<ModelConfigInput>;\n}\n\nfunction ServiceTransformerRecord({\n formProps,\n idx,\n onRemove,\n onUpdate,\n}: {\n formProps: UseFormReturn<ModelConfigInput>;\n idx: number;\n onUpdate: (transformer: TransformerConfig, idx: number) => void;\n onRemove: (idx: number) => void;\n}): React.JSX.Element {\n const { pluginContainer, definitionContainer } = useProjectDefinition();\n const { control } = formProps;\n\n const field = useWatch({\n control,\n name: `service.transformers.${idx}`,\n });\n\n const transformerWeb = pluginContainer.getPluginSpec(modelTransformerWebSpec);\n const transformerConfig = transformerWeb.getTransformerWebConfig(\n field.type,\n BUILT_IN_TRANSFORMER_WEB_CONFIGS,\n );\n const summary = transformerConfig.getSummary(field, definitionContainer);\n return (\n <RecordView>\n <RecordViewItemList>\n <RecordViewItem title=\"Type\">{transformerConfig.label}</RecordViewItem>\n {summary.map((item) => (\n <RecordViewItem key={item.label} title={item.label}>\n {item.description}\n </RecordViewItem>\n ))}\n </RecordViewItemList>\n <RecordViewActions>\n {transformerConfig.Form && (\n <ServiceTransformerDialog\n webConfig={transformerConfig}\n transformer={field}\n onUpdate={(transformer) => {\n onUpdate(transformer, idx);\n }}\n asChild\n isCreate={false}\n >\n <Button variant=\"ghost\" size=\"icon\" title=\"Edit\">\n <MdEdit />\n </Button>\n </ServiceTransformerDialog>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => {\n onRemove(idx);\n }}\n title=\"Remove\"\n className=\"text-destructive hover:text-destructive-hover\"\n >\n <MdOutlineDelete />\n </Button>\n </RecordViewActions>\n </RecordView>\n );\n}\n\nexport function ServiceTransformersSection({\n className,\n formProps,\n}: Props): React.JSX.Element | null {\n const { control } = formProps;\n const { fields, remove, append, update } = useFieldArray({\n control,\n name: `service.transformers`,\n });\n const { pluginContainer, definitionContainer } = useProjectDefinition();\n\n const { requestConfirm } = useConfirmDialog();\n\n const transformerWeb = pluginContainer.getPluginSpec(modelTransformerWebSpec);\n\n const modelConfig = useEditedModelConfig((model) => model);\n\n const addableTransformers = transformerWeb\n .getTransformerWebConfigs(BUILT_IN_TRANSFORMER_WEB_CONFIGS)\n .filter((transformer) =>\n transformer.allowNewTransformer\n ? transformer.allowNewTransformer(definitionContainer, modelConfig)\n : true,\n );\n\n const [isNewTransfomerDialogOpen, setIsNewTransformerDialogOpen] =\n useState(false);\n const [addableTransformerIdx, setAddableTransformerIdx] = useState<number>(0);\n\n return (\n <SectionListSection className={className}>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Transformers</SectionListSectionTitle>\n <SectionListSectionDescription>\n Transformers are used to operate on the data from the client into the\n shape that the database ORM expects.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"max-w-xl space-y-4\">\n {fields.map((field, idx) => (\n <ServiceTransformerRecord\n key={field.id}\n formProps={formProps}\n idx={idx}\n onUpdate={(transformer, idx) => {\n update(idx, transformer);\n }}\n onRemove={(idx) => {\n requestConfirm({\n title: 'Confirm delete',\n content: `Are you sure you want to delete this transformer?`,\n buttonConfirmText: 'Delete',\n buttonConfirmVariant: 'destructive',\n onConfirm: () => {\n remove(idx);\n },\n });\n }}\n />\n ))}\n {addableTransformers.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"secondary\" size=\"sm\">\n <MdAdd />\n Add Transformer\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuGroup>\n {addableTransformers.map((transformer, idx) => (\n <DropdownMenuItem\n key={transformer.name}\n onSelect={() => {\n if (transformer.Form) {\n setAddableTransformerIdx(idx);\n setIsNewTransformerDialogOpen(true);\n } else {\n append(\n transformer.getNewTransformer(\n definitionContainer,\n modelConfig,\n ),\n );\n }\n }}\n >\n <div className=\"flex flex-col gap-1\">\n <div>{transformer.label}</div>\n <div className=\"text-style-muted\">\n {transformer.description}\n </div>\n </div>\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n <ServiceTransformerDialog\n webConfig={addableTransformers[addableTransformerIdx]}\n transformer={addableTransformers[\n addableTransformerIdx\n ]?.getNewTransformer(definitionContainer, modelConfig)}\n onUpdate={(transformer) => {\n append(transformer);\n }}\n open={isNewTransfomerDialogOpen}\n onOpenChange={setIsNewTransformerDialogOpen}\n isCreate={true}\n />\n </SectionListSectionContent>\n </SectionListSection>\n );\n}\n","import type React from 'react';\n\nimport { modelTransformerEntityType } from '@baseplate-dev/project-builder-lib';\nimport { useBlockUnsavedChangesNavigate } from '@baseplate-dev/project-builder-lib/web';\nimport {\n FormActionBar,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchFieldController,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute } from '@tanstack/react-router';\n\nimport { registerEntityTypeUrl } from '#src/services/entity-type.js';\n\nimport { EditedModelContextProvider } from '../-hooks/use-edited-model-config.js';\nimport { useModelForm } from '../-hooks/use-model-form.js';\nimport { ServiceMethodFieldsSection } from './-components/service/service-method-fields-section.js';\nimport { ServiceTransformersSection } from './-components/service/service-transformers-section.js';\n\nregisterEntityTypeUrl(\n modelTransformerEntityType,\n `/data/models/edit/{parentKey}`,\n);\n\nexport const Route = createFileRoute('/data/models/edit/$key/service')({\n component: ModelEditServicePage,\n beforeLoad: () => ({\n getTitle: () => 'Service',\n }),\n});\n\nfunction ModelEditServicePage(): React.JSX.Element {\n const { key } = Route.useParams();\n const { form, onSubmit, originalModel } = useModelForm({\n omit: ['name', 'featureRef'],\n modelKey: key,\n });\n const { control, watch, getValues, setValue, reset } = form;\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n return (\n <EditedModelContextProvider\n originalModel={originalModel}\n getValues={getValues}\n watch={watch}\n >\n <form onSubmit={onSubmit} className=\"w-full max-w-7xl space-y-4 p-4\">\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Methods</SectionListSectionTitle>\n <SectionListSectionDescription>\n Enable or disable which service methods will be generated\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"flex gap-8\">\n <SwitchFieldController\n label=\"Create\"\n name=\"service.create.enabled\"\n control={control}\n />\n <SwitchFieldController\n label=\"Update\"\n name=\"service.update.enabled\"\n control={control}\n />\n <SwitchFieldController\n label=\"Delete\"\n name=\"service.delete.enabled\"\n control={control}\n />\n </SectionListSectionContent>\n </SectionListSection>\n <ServiceMethodFieldsSection control={control} setValue={setValue} />\n <ServiceTransformersSection formProps={form} />\n </SectionList>\n <FormActionBar form={form} />\n </form>\n </EditedModelContextProvider>\n );\n}\n"],"names":["ModelTransformerUtils","importShared","modelTransformerWebSpec","useProjectDefinition","Label","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","SwitchField","ServiceMethodFieldsSection","className","control","setValue","fields","useEditedModelConfig","model","create","useWatch","update","isCreateEnabled","isUpdateEnabled","transformers","definitionContainer","pluginContainer","createFields","updateFields","createTransformers","updateTransformers","tableClassName","transformerWeb","jsxs","jsx","field","BadgeWithTypeLabel","SCALAR_FIELD_TYPE_OPTIONS","value","id","transformer","BUILT_IN_TRANSFORMER_WEB_CONFIGS","createTransformerSchema","modelTransformerEntityType","useDefinitionSchema","Button","DialogClose","DialogFooter","useId","useMemo","z","ServiceTransformerForm","Form","pluginId","onUpdate","isCreate","originalModel","transformerSchema","schema","formProps","useForm","zodResolver","handleSubmit","isDirty","onSubmit","data","formId","clsx","e","Dialog","DialogContent","DialogDescription","DialogHeader","DialogTitle","DialogTrigger","useControlledState","ServiceTransformerDialog","children","asChild","webConfig","open","onOpenChange","isOpen","setIsOpen","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuTrigger","RecordView","RecordViewActions","RecordViewItem","RecordViewItemList","useConfirmDialog","useState","ServiceTransformerRecord","idx","onRemove","transformerConfig","summary","item","MdEdit","MdOutlineDelete","ServiceTransformersSection","remove","append","useFieldArray","requestConfirm","modelConfig","addableTransformers","isNewTransfomerDialogOpen","setIsNewTransformerDialogOpen","addableTransformerIdx","setAddableTransformerIdx","MdAdd","useBlockUnsavedChangesNavigate","FormActionBar","SectionList","SwitchFieldController","registerEntityTypeUrl","SplitComponent","key","Route","useParams","form","useModelForm","omit","modelKey","watch","getValues","reset","EditedModelContextProvider"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{i as a}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{j as e}from"./index.esm-CyH9wtdI.js";import{s as h,E as p}from"./index-gE__lQ6b.js";const{createTemplateExtractorSchema:f}=await a("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:b,useDefinitionSchema:u,useProjectDefinition:j,useResettableForm:g}=await a("@baseplate-dev/project-builder-lib/web"),{Alert:E,AlertDescription:S,AlertTitle:T,CheckboxFieldController:v,FormActionBar:w,SectionList:A,SectionListSection:L,SectionListSectionContent:R,SectionListSectionHeader:C,SectionListSectionTitle:N,TextareaFieldController:y}=await a("@baseplate-dev/ui-components"),k=function(){const{definition:l,saveDefinitionWithFeedback:r}=j(),o=l.settings.templateExtractor??{writeMetadata:!1,fileIdRegexWhitelist:""},n=u(f),i=g({resolver:h(n),defaultValues:o}),{handleSubmit:c,control:t,reset:d}=i,s=c(m=>r(x=>{x.settings.templateExtractor=m}));return b({control:t,reset:d,onSubmit:s}),p?e.jsxs("form",{className:"relative h-full max-h-full pb-(--action-bar-height)",onSubmit:s,children:[e.jsxs("div",{className:"flex h-full max-h-full flex-1 flex-col overflow-y-auto px-6",children:[e.jsx("div",{className:"sticky top-0 border-b bg-background py-6",children:e.jsx("h1",{children:"Template Extractor"})}),e.jsx(A,{children:e.jsxs(L,{children:[e.jsx(C,{children:e.jsx(N,{children:"Settings"})}),e.jsxs(R,{className:"flex max-w-md flex-col gap-4",children:[e.jsx(v,{name:"writeMetadata",label:"Write Metadata",description:"Write metadata to the project to enable template extraction",control:t}),e.jsx(y,{name:"fileIdRegexWhitelist",label:"File ID Regex Whitelist",description:"A list of file IDs to include in the template extractor metadata for generators that have a manually assigned file IDs, e.g. files generated by generators that have multiple instances. The list is delimited by a newline and must be a valid regex.",control:t})]})]})})]}),e.jsx(w,{form:i})]}):e.jsxs(E,{variant:"error",className:"mx-auto my-16 max-w-2xl",children:[e.jsx(T,{children:"Template Extractor is disabled"}),e.jsxs(S,{children:["Template extractor is disabled in the environment. Please enable it with ",e.jsx("code",{children:"VITE_ENABLE_TEMPLATE_EXTRACTOR=true"})," to use it."]})]})};export{k as component};
2
- //# sourceMappingURL=template-extractor-D2LqkpO5.js.map
1
+ import{i as a}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{j as e}from"./index.esm-Bvv3vNQh.js";import{s as h,E as p}from"./index-B7G2CMwL.js";const{createTemplateExtractorSchema:f}=await a("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:b,useDefinitionSchema:u,useProjectDefinition:j,useResettableForm:g}=await a("@baseplate-dev/project-builder-lib/web"),{Alert:E,AlertDescription:S,AlertTitle:T,CheckboxFieldController:v,FormActionBar:w,SectionList:A,SectionListSection:L,SectionListSectionContent:R,SectionListSectionHeader:C,SectionListSectionTitle:N,TextareaFieldController:y}=await a("@baseplate-dev/ui-components"),k=function(){const{definition:l,saveDefinitionWithFeedback:r}=j(),o=l.settings.templateExtractor??{writeMetadata:!1,fileIdRegexWhitelist:""},n=u(f),i=g({resolver:h(n),defaultValues:o}),{handleSubmit:c,control:t,reset:d}=i,s=c(m=>r(x=>{x.settings.templateExtractor=m}));return b({control:t,reset:d,onSubmit:s}),p?e.jsxs("form",{className:"relative h-full max-h-full pb-(--action-bar-height)",onSubmit:s,children:[e.jsxs("div",{className:"flex h-full max-h-full flex-1 flex-col overflow-y-auto px-6",children:[e.jsx("div",{className:"sticky top-0 border-b bg-background py-6",children:e.jsx("h1",{children:"Template Extractor"})}),e.jsx(A,{children:e.jsxs(L,{children:[e.jsx(C,{children:e.jsx(N,{children:"Settings"})}),e.jsxs(R,{className:"flex max-w-md flex-col gap-4",children:[e.jsx(v,{name:"writeMetadata",label:"Write Metadata",description:"Write metadata to the project to enable template extraction",control:t}),e.jsx(y,{name:"fileIdRegexWhitelist",label:"File ID Regex Whitelist",description:"A list of file IDs to include in the template extractor metadata for generators that have a manually assigned file IDs, e.g. files generated by generators that have multiple instances. The list is delimited by a newline and must be a valid regex.",control:t})]})]})})]}),e.jsx(w,{form:i})]}):e.jsxs(E,{variant:"error",className:"mx-auto my-16 max-w-2xl",children:[e.jsx(T,{children:"Template Extractor is disabled"}),e.jsxs(S,{children:["Template extractor is disabled in the environment. Please enable it with ",e.jsx("code",{children:"VITE_ENABLE_TEMPLATE_EXTRACTOR=true"})," to use it."]})]})};export{k as component};
2
+ //# sourceMappingURL=template-extractor-1dzSeRMo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template-extractor-D2LqkpO5.js","sources":["../../src/routes/settings/template-extractor.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { createTemplateExtractorSchema } from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useDefinitionSchema,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n CheckboxFieldController,\n FormActionBar,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionHeader,\n SectionListSectionTitle,\n TextareaFieldController,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute } from '@tanstack/react-router';\n\nimport { ENABLE_TEMPLATE_EXTRACTOR } from '#src/services/config.js';\n\nexport const Route = createFileRoute('/settings/template-extractor')({\n component: TemplateExtractorSettingsPage,\n beforeLoad: () => ({\n getTitle: () => 'Template Extractor',\n }),\n});\n\n/**\n * Settings page for template extractor configuration\n *\n * Allows users to control template metadata generation during the extraction process.\n */\nfunction TemplateExtractorSettingsPage(): React.JSX.Element {\n const { definition, saveDefinitionWithFeedback } = useProjectDefinition();\n const defaultValues = definition.settings.templateExtractor ?? {\n writeMetadata: false,\n fileIdRegexWhitelist: '',\n };\n const templateExtractorSchema = useDefinitionSchema(\n createTemplateExtractorSchema,\n );\n const form = useResettableForm({\n resolver: zodResolver(templateExtractorSchema),\n defaultValues,\n });\n\n const { handleSubmit, control, reset } = form;\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.settings.templateExtractor = data;\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n if (!ENABLE_TEMPLATE_EXTRACTOR) {\n return (\n <Alert variant=\"error\" className=\"mx-auto my-16 max-w-2xl\">\n <AlertTitle>Template Extractor is disabled</AlertTitle>\n <AlertDescription>\n Template extractor is disabled in the environment. Please enable it\n with <code>VITE_ENABLE_TEMPLATE_EXTRACTOR=true</code> to use it.\n </AlertDescription>\n </Alert>\n );\n }\n\n return (\n <form\n className=\"relative h-full max-h-full pb-(--action-bar-height)\"\n onSubmit={onSubmit}\n >\n <div className=\"flex h-full max-h-full flex-1 flex-col overflow-y-auto px-6\">\n <div className=\"sticky top-0 border-b bg-background py-6\">\n <h1>Template Extractor</h1>\n </div>\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Settings</SectionListSectionTitle>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"flex max-w-md flex-col gap-4\">\n <CheckboxFieldController\n name=\"writeMetadata\"\n label=\"Write Metadata\"\n description=\"Write metadata to the project to enable template extraction\"\n control={control}\n />\n <TextareaFieldController\n name=\"fileIdRegexWhitelist\"\n label=\"File ID Regex Whitelist\"\n description=\"A list of file IDs to include in the template extractor metadata for generators that have a manually assigned file IDs, e.g. files generated by generators that have multiple instances. The list is delimited by a newline and must be a valid regex.\"\n control={control}\n />\n </SectionListSectionContent>\n </SectionListSection>\n </SectionList>\n </div>\n <FormActionBar form={form} />\n </form>\n );\n}\n"],"names":["createTemplateExtractorSchema","importShared","useBlockUnsavedChangesNavigate","useDefinitionSchema","useProjectDefinition","useResettableForm","Alert","AlertDescription","AlertTitle","CheckboxFieldController","FormActionBar","SectionList","SectionListSection","SectionListSectionContent","SectionListSectionHeader","SectionListSectionTitle","TextareaFieldController","SplitComponent","definition","saveDefinitionWithFeedback","defaultValues","settings","templateExtractor","writeMetadata","fileIdRegexWhitelist","templateExtractorSchema","form","resolver","zodResolver","handleSubmit","control","reset","onSubmit","draftConfig","data","ENABLE_TEMPLATE_EXTRACTOR","jsxs","jsx"],"mappings":"6JAEA,KAAA,CAAA,8BAAAA,CAAA,EAAA,MAAAC,EAAA,oCAAA,EACA,CAAA,+BAAAC,EAAA,oBAAAC,EAAA,qBAAAC,EAAA,kBAAAC,CAAA,EAAA,MAAAJ,EAAA,wCAAA,EAMA,CAAA,MAAAK,EAAA,iBAAAC,EAAA,WAAAC,EAAA,wBAAAC,EAAA,cAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,0BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,EAAA,wBAAAC,CAAA,EAAA,MAAAf,EAAA,8BAAA,EAyBAgB,EAAA,UAK4D,CACpD,KAAA,CAAEC,WAAAA,EAAYC,2BAAAA,GAA+Bf,EAAqB,EAClEgB,EAAgBF,EAAWG,SAASC,mBAAqB,CAC7DC,cAAe,GACfC,qBAAsB,EACxB,EACMC,EAA0BtB,EAC9BH,CACF,EACM0B,EAAOrB,EAAkB,CAC7BsB,SAAUC,EAAYH,CAAuB,EAC7CL,cAAAA,CAAAA,CACD,EAEK,CAAES,aAAAA,EAAcC,QAAAA,EAASC,MAAAA,CAAAA,EAAUL,EAEnCM,EAAWH,EACfV,GAAAA,EAA4Cc,GAAA,CAC1CA,EAAYZ,SAASC,kBAAoBY,CAAAA,CAC1C,CACH,EAIA,OAF+BhC,EAAA,CAAE4B,QAAAA,EAASC,MAAAA,EAAOC,SAAAA,CAAAA,CAAU,EAEtDG,EAaFC,EAAAA,KAAA,OAAA,CACC,UAAU,sDACV,SAAAJ,EAEA,SAAA,CAACI,EAAAA,KAAA,MAAA,CAAI,UAAU,8DACb,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,2CACb,SAACA,MAAA,KAAA,CAAG,8BAAkB,CACxB,CAAA,EACAA,EAAA,IAAC1B,EACC,CAAA,SAAAyB,EAAAA,KAACxB,EACC,CAAA,SAAA,CAAAyB,MAACvB,EACC,CAAA,SAAAuB,EAAA,IAACtB,EAAwB,CAAA,SAAA,UAAQ,CAAA,EACnC,EACAqB,EAAAA,KAACvB,EAA0B,CAAA,UAAU,+BACnC,SAAA,CAAAwB,MAAC5B,GACC,KAAK,gBACL,MAAM,iBACN,YAAY,8DACZ,QAAAqB,EAAiB,EAEnBO,MAACrB,GACC,KAAK,uBACL,MAAM,0BACN,YAAY,yPACZ,QAAAc,CAAiB,CAAA,CAAA,CAErB,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EACF,EACAO,MAAC3B,GAAc,KAAAgB,CAAW,CAAA,CAAA,EAC5B,EA1CGU,EAAAA,KAAA9B,EAAA,CAAM,QAAQ,QAAQ,UAAU,0BAC/B,SAAA,CAAA+B,EAAAA,IAAC7B,GAAW,SAA8B,gCAAA,CAAA,SACzCD,EAAgB,CAAA,SAAA,CAAA,4EAEV8B,EAAAA,IAAC,QAAK,SAAmC,qCAAA,CAAA,EAAO,aAAA,CACvD,CAAA,CAAA,EACF,CAsCN"}
1
+ {"version":3,"file":"template-extractor-1dzSeRMo.js","sources":["../../src/routes/settings/template-extractor.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { createTemplateExtractorSchema } from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useDefinitionSchema,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n CheckboxFieldController,\n FormActionBar,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionHeader,\n SectionListSectionTitle,\n TextareaFieldController,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute } from '@tanstack/react-router';\n\nimport { ENABLE_TEMPLATE_EXTRACTOR } from '#src/services/config.js';\n\nexport const Route = createFileRoute('/settings/template-extractor')({\n component: TemplateExtractorSettingsPage,\n beforeLoad: () => ({\n getTitle: () => 'Template Extractor',\n }),\n});\n\n/**\n * Settings page for template extractor configuration\n *\n * Allows users to control template metadata generation during the extraction process.\n */\nfunction TemplateExtractorSettingsPage(): React.JSX.Element {\n const { definition, saveDefinitionWithFeedback } = useProjectDefinition();\n const defaultValues = definition.settings.templateExtractor ?? {\n writeMetadata: false,\n fileIdRegexWhitelist: '',\n };\n const templateExtractorSchema = useDefinitionSchema(\n createTemplateExtractorSchema,\n );\n const form = useResettableForm({\n resolver: zodResolver(templateExtractorSchema),\n defaultValues,\n });\n\n const { handleSubmit, control, reset } = form;\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.settings.templateExtractor = data;\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n if (!ENABLE_TEMPLATE_EXTRACTOR) {\n return (\n <Alert variant=\"error\" className=\"mx-auto my-16 max-w-2xl\">\n <AlertTitle>Template Extractor is disabled</AlertTitle>\n <AlertDescription>\n Template extractor is disabled in the environment. Please enable it\n with <code>VITE_ENABLE_TEMPLATE_EXTRACTOR=true</code> to use it.\n </AlertDescription>\n </Alert>\n );\n }\n\n return (\n <form\n className=\"relative h-full max-h-full pb-(--action-bar-height)\"\n onSubmit={onSubmit}\n >\n <div className=\"flex h-full max-h-full flex-1 flex-col overflow-y-auto px-6\">\n <div className=\"sticky top-0 border-b bg-background py-6\">\n <h1>Template Extractor</h1>\n </div>\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Settings</SectionListSectionTitle>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"flex max-w-md flex-col gap-4\">\n <CheckboxFieldController\n name=\"writeMetadata\"\n label=\"Write Metadata\"\n description=\"Write metadata to the project to enable template extraction\"\n control={control}\n />\n <TextareaFieldController\n name=\"fileIdRegexWhitelist\"\n label=\"File ID Regex Whitelist\"\n description=\"A list of file IDs to include in the template extractor metadata for generators that have a manually assigned file IDs, e.g. files generated by generators that have multiple instances. The list is delimited by a newline and must be a valid regex.\"\n control={control}\n />\n </SectionListSectionContent>\n </SectionListSection>\n </SectionList>\n </div>\n <FormActionBar form={form} />\n </form>\n );\n}\n"],"names":["createTemplateExtractorSchema","importShared","useBlockUnsavedChangesNavigate","useDefinitionSchema","useProjectDefinition","useResettableForm","Alert","AlertDescription","AlertTitle","CheckboxFieldController","FormActionBar","SectionList","SectionListSection","SectionListSectionContent","SectionListSectionHeader","SectionListSectionTitle","TextareaFieldController","SplitComponent","definition","saveDefinitionWithFeedback","defaultValues","settings","templateExtractor","writeMetadata","fileIdRegexWhitelist","templateExtractorSchema","form","resolver","zodResolver","handleSubmit","control","reset","onSubmit","draftConfig","data","ENABLE_TEMPLATE_EXTRACTOR","jsxs","jsx"],"mappings":"6JAEA,KAAA,CAAA,8BAAAA,CAAA,EAAA,MAAAC,EAAA,oCAAA,EACA,CAAA,+BAAAC,EAAA,oBAAAC,EAAA,qBAAAC,EAAA,kBAAAC,CAAA,EAAA,MAAAJ,EAAA,wCAAA,EAMA,CAAA,MAAAK,EAAA,iBAAAC,EAAA,WAAAC,EAAA,wBAAAC,EAAA,cAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,0BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,EAAA,wBAAAC,CAAA,EAAA,MAAAf,EAAA,8BAAA,EAyBAgB,EAAA,UAK4D,CACpD,KAAA,CAAEC,WAAAA,EAAYC,2BAAAA,GAA+Bf,EAAqB,EAClEgB,EAAgBF,EAAWG,SAASC,mBAAqB,CAC7DC,cAAe,GACfC,qBAAsB,EACxB,EACMC,EAA0BtB,EAC9BH,CACF,EACM0B,EAAOrB,EAAkB,CAC7BsB,SAAUC,EAAYH,CAAuB,EAC7CL,cAAAA,CAAAA,CACD,EAEK,CAAES,aAAAA,EAAcC,QAAAA,EAASC,MAAAA,CAAAA,EAAUL,EAEnCM,EAAWH,EACfV,GAAAA,EAA4Cc,GAAA,CAC1CA,EAAYZ,SAASC,kBAAoBY,CAAAA,CAC1C,CACH,EAIA,OAF+BhC,EAAA,CAAE4B,QAAAA,EAASC,MAAAA,EAAOC,SAAAA,CAAAA,CAAU,EAEtDG,EAaFC,EAAAA,KAAA,OAAA,CACC,UAAU,sDACV,SAAAJ,EAEA,SAAA,CAACI,EAAAA,KAAA,MAAA,CAAI,UAAU,8DACb,SAAA,CAAAC,EAAAA,IAAC,OAAI,UAAU,2CACb,SAACA,MAAA,KAAA,CAAG,8BAAkB,CACxB,CAAA,EACAA,EAAA,IAAC1B,EACC,CAAA,SAAAyB,EAAAA,KAACxB,EACC,CAAA,SAAA,CAAAyB,MAACvB,EACC,CAAA,SAAAuB,EAAA,IAACtB,EAAwB,CAAA,SAAA,UAAQ,CAAA,EACnC,EACAqB,EAAAA,KAACvB,EAA0B,CAAA,UAAU,+BACnC,SAAA,CAAAwB,MAAC5B,GACC,KAAK,gBACL,MAAM,iBACN,YAAY,8DACZ,QAAAqB,EAAiB,EAEnBO,MAACrB,GACC,KAAK,uBACL,MAAM,0BACN,YAAY,yPACZ,QAAAc,CAAiB,CAAA,CAAA,CAErB,CAAA,CAAA,CAAA,CACF,CACF,CAAA,CAAA,EACF,EACAO,MAAC3B,GAAc,KAAAgB,CAAW,CAAA,CAAA,EAC5B,EA1CGU,EAAAA,KAAA9B,EAAA,CAAM,QAAQ,QAAQ,UAAU,0BAC/B,SAAA,CAAA+B,EAAAA,IAAC7B,GAAW,SAA8B,gCAAA,CAAA,SACzCD,EAAgB,CAAA,SAAA,CAAA,4EAEV8B,EAAAA,IAAC,QAAK,SAAmC,qCAAA,CAAA,EAAO,aAAA,CACvD,CAAA,CAAA,EACF,CAsCN"}
@@ -1,4 +1,4 @@
1
- import{i as n}from"./_virtual___federation_fn_import-CE3p-l_2.js";import{e as g,j as t}from"./index.esm-CyH9wtdI.js";import{s as q}from"./index-gE__lQ6b.js";import{c as N,E as J,F as Q,H as X}from"./index-BS45dlQs.js";import{i as Y}from"./inflection-C1nKqrJS.js";import{c as Z,f as e1}from"./index-D5UX5AHP.js";const{generateCssFromThemeConfig:F}=await n("@baseplate-dev/project-builder-lib"),{TextareaField:t1}=await n("@baseplate-dev/ui-components"),{useMemo:a1}=await n("react");function H(s){return Object.entries(s).map(([e,r])=>` ${e}: ${r};`).join(`
1
+ import{i as n}from"./_virtual___federation_fn_import-DK_YYIlv.js";import{e as g,j as t}from"./index.esm-Bvv3vNQh.js";import{s as q}from"./index-B7G2CMwL.js";import{c as N,E as J,F as Q,H as X}from"./index-BgFEd-vA.js";import{i as Y}from"./inflection-C1nKqrJS.js";import{c as Z,f as e1}from"./index-D5UX5AHP.js";const{generateCssFromThemeConfig:F}=await n("@baseplate-dev/project-builder-lib"),{TextareaField:t1}=await n("@baseplate-dev/ui-components"),{useMemo:a1}=await n("react");function H(s){return Object.entries(s).map(([e,r])=>` ${e}: ${r};`).join(`
2
2
  `)}function s1({className:s,control:e}){const r=g({control:e,name:"colors"}),l=a1(()=>`
3
3
  :root {
4
4
  ${H(F(r.light))}
@@ -8,4 +8,4 @@ ${H(F(r.light))}
8
8
  ${H(F(r.dark))}
9
9
  }
10
10
  `.trim(),[r]);return t.jsx("div",{className:N("",s),children:t.jsx(t1,{className:"h-60",readOnly:!0,value:l})})}const{convertHexToOklch:r1,convertOklchToColorName:o1,convertOklchToHex:l1,getDefaultThemeColorFromShade:n1,THEME_COLORS:i1}=await n("@baseplate-dev/project-builder-lib"),{Button:A,ColorPickerFieldController:h1,Tooltip:c1,TooltipContent:x1,TooltipTrigger:p1}=await n("@baseplate-dev/ui-components");function z({className:s,control:e,mode:r,setValue:l}){const a=Object.entries(i1),x=g({control:e,name:"palettes"}),c=g({control:e,name:`colors.${r}`});return t.jsx("div",{className:N("flex w-full max-w-xl gap-4",s),children:t.jsx("div",{className:"grid flex-1 grid-cols-1 gap-4 sm:grid-cols-2",children:a.map(([m,i],o)=>{const h=m,b=(o>0?a[o-1][1].groupKey:void 0)!==i.groupKey,v=c[h],u=n1(x,r,h);return t.jsxs("div",{className:N(b?"col-start-1":void 0,"relative"),children:[t.jsx(h1,{control:e,className:"w-full",wrapperClassName:"flex-col items-start",label:t.jsxs("div",{className:"flex h-6 w-full items-center gap-1",children:[t.jsx("div",{children:i.name}),t.jsxs(c1,{delayDuration:500,children:[t.jsx(p1,{asChild:!0,children:t.jsx(A,{variant:"ghost",size:"icon","aria-label":"Color Info",className:"opacity-30",children:t.jsx(J,{})})}),t.jsx(x1,{align:"start",side:"bottom",className:"max-w-[400px]",children:t.jsx("div",{className:"font-normal",children:i.description})})]})]}),parseColor:l1,serializeColor:r1,formatColorName:j=>{const p=Object.entries(x.base.shades).find(([,S])=>S===j)?.[0];if(p)return`base-${p}`;const d=Object.entries(x.primary.shades).find(([,S])=>S===j)?.[0];return d?`primary-${d}`:o1(j)},name:`colors.${r}.${h}`}),v!==u&&t.jsx(A,{className:"absolute right-2 bottom-1",onClick:()=>{l(`colors.${r}.${h}`,u)},size:"icon",variant:"ghost","aria-label":"Reset Color",children:t.jsx(Q,{})})]},m)})})})}const{generateCssFromThemeConfig:d1}=await n("@baseplate-dev/project-builder-lib"),{Badge:f,Button:M,Card:m1,CardContent:u1,CardDescription:M1,CardHeader:b1,CardTitle:j1,Combobox:g1,ComboboxContent:v1,ComboboxEmpty:f1,ComboboxInput:C1,ComboboxItem:k}=await n("@baseplate-dev/ui-components");function T1({className:s,control:e,mode:r}){const l=g({control:e,name:`colors.${r}`}),a=d1(l);return t.jsx("div",{className:N("size-full rounded-xl border border-border bg-background p-4",s),style:a,children:t.jsxs(m1,{children:[t.jsxs(b1,{children:[t.jsx(j1,{children:"Color Preview"}),t.jsx(M1,{children:"This is a preview of how your theme colors will be applied on various elements"})]}),t.jsxs(u1,{className:"space-y-4",children:[t.jsxs("div",{children:[t.jsx(C,{children:"Paragraph Text"}),t.jsx("p",{className:"text-base",children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin faucibus."})]}),t.jsxs("div",{children:[t.jsx(C,{children:"Combobox"}),t.jsxs(g1,{children:[t.jsx(C1,{placeholder:"Select an option"}),t.jsxs(v1,{style:a,children:[t.jsx(k,{value:"opt1",label:"Option 1",children:"Option 1"}),t.jsx(k,{value:"green",label:"Option 2",children:"Option 2"}),t.jsx(k,{value:"blue",label:"Option 3",children:"Option 3"}),t.jsx(f1,{children:"No results found"})]})]})]}),t.jsxs("div",{children:[t.jsx(C,{children:"Badges"}),t.jsxs("div",{className:"flex flex-wrap gap-1",children:[t.jsx(f,{variant:"default",children:"Default"}),t.jsx(f,{variant:"destructive",children:"Destructive"}),t.jsx(f,{variant:"secondary",children:"Secondary"}),t.jsx(f,{variant:"outline",children:"Outline"})]})]}),t.jsxs("div",{children:[t.jsx(C,{children:"Buttons"}),t.jsxs("div",{className:"flex flex-wrap gap-2 rounded-lg border border-border p-1",children:[t.jsx(M,{type:"button",children:"Primary"}),t.jsx(M,{variant:"destructive",type:"button",children:"Destructive"}),t.jsx(M,{variant:"ghost",type:"button",children:"Ghost"}),t.jsx(M,{variant:"link",type:"button",children:"Link"}),t.jsx(M,{variant:"secondary",type:"button",children:"Secondary"}),t.jsx(M,{variant:"outline",type:"button",children:"Outline"})]})]})]})]})})}function C({children:s}){return t.jsx("h4",{className:"text-lg font-semibold",children:s})}function w1(s){const e=new Float32Array([s.r,s.g,s.b]);return{"50-r":1/(1+1/Math.exp(1.8661608695983887+1.969373345375061*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.4601062536239624*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.7962396740913391*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"50-g":1/(1+1/Math.exp(1.9256014823913574+1.231925129890442*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.3603883981704712*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.8378368616104126*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"50-b":1/(1+1/Math.exp(1.5751663446426392+.6084778904914856*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.0512851476669312*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+1.9236465692520142*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"100-r":1/(1+1/Math.exp(1.6104178428649902+2.411083698272705*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.4946855306625366*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.5684743523597717*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"100-g":1/(1+1/Math.exp(1.6873022317886353+.7176924347877502*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.6131407022476196*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.15697577595710754*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"100-b":1/(1+1/Math.exp(1.0808522701263428-.09388591349124908*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.5177313685417175*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+2.6253278255462646*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"200-r":1/(1+1/Math.exp(1.3480290174484253+2.2088170051574707*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-1.1226733922958374*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.41870957612991333*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"200-g":1/(1+1/Math.exp(1.3919278383255005+.2666841745376587*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.5987523794174194*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.23637670278549194*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"200-b":1/(1+1/Math.exp(.6176453232765198-.6029531359672546*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.21029342710971832*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+2.906541109085083*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"300-r":1/(1+1/Math.exp(.9194338321685791+2.3936944007873535*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-1.68363356590271*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.36374539136886597*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"300-g":1/(1+1/Math.exp(1.1811708211898804-.08378893882036209*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.4275716543197632*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.6511568427085876*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"300-b":1/(1+1/Math.exp(-.04160493612289429-1.0422184467315674*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.1739543229341507*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+3.306165933609009*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"400-r":1/(1+1/Math.exp(.5908379554748535+2.6282155513763428*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-2.483553886413574*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+.16029347479343414*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"400-g":1/(1+1/Math.exp(.9054368138313293-.38720616698265076*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.231947422027588*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.0837976932525635*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"400-b":1/(1+1/Math.exp(-.6404189467430115-1.6898466348648071*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.029696132987737656*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+3.7177767753601074*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"500-r":1/(1+1/Math.exp(.3420727550983429+2.987776756286621*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-3.3403704166412354*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.07194828987121582*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"500-g":1/(1+1/Math.exp(.5289734601974487-.5567987561225891*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.3352314233779907*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.4835448265075684*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"500-b":1/(1+1/Math.exp(-1.2478309869766235-2.2976744174957275*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.30013492703437805*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+4.339084625244141*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"600-r":1/(1+1/Math.exp(.18572008609771729+2.5128233432769775*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-3.407212495803833*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.20814435184001923*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"600-g":1/(1+1/Math.exp(.15741883218288422-.7273809909820557*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.2500137090682983*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.6501106023788452*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"600-b":1/(1+1/Math.exp(-1.3073996305465698-2.5112154483795166*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.7157139182090759*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+4.086366176605225*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"700-r":1/(1+1/Math.exp(-.25121745467185974+1.7795124053955078*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-2.7557551860809326*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.0411522202193737*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"700-g":1/(1+1/Math.exp(-.43503373861312866-.6766132712364197*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+1.150789737701416*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.3406033515930176*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"700-b":1/(1+1/Math.exp(-1.1124053001403809-2.359389305114746*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.943118691444397*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+3.267453908920288*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"800-r":1/(1+1/Math.exp(-.42729225754737854+1.2738885879516602*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-2.573699474334717*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.11818580329418182*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"800-g":1/(1+1/Math.exp(-.6730203628540039-.770199716091156*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.9060920476913452*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.2600882053375244*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"800-b":1/(1+1/Math.exp(-1.32567298412323-1.9301948547363281*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.8552113175392151*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+2.6513888835906982*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"900-r":1/(1+1/Math.exp(-.6309270858764648+1.0235852003097534*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-2.4659388065338135*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.15058130025863647*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"900-g":1/(1+1/Math.exp(-.9010928273200989-.7559532523155212*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.7665435075759888*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.1884112358093262*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"900-b":1/(1+1/Math.exp(-1.5088001489639282-1.5986618995666504*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.7353832125663757*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+2.180158853530884*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"950-r":1/(1+1/Math.exp(-1.166185975074768+.5363732576370239*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-2.587523937225342*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-.061746854335069656*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"950-g":1/(1+1/Math.exp(-1.2907893657684326-1.3924223184585571*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))+.5465696454048157*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))-1.2647709846496582*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0))))),"950-b":1/(1+1/Math.exp(-1.8633685111999512-1.8034374713897705*1/(1+1/Math.exp(.5648569464683533+8.592248916625977*(e[0]||0)-2.0615885257720947*(e[1]||0)-7.465658187866211*(e[2]||0)))-.8856748938560486*1/(1+1/Math.exp(.6313956379890442-7.673094272613525*(e[0]||0)+8.008654594421387*(e[1]||0)-1.6121777296066284*(e[2]||0)))+1.8510282039642334*1/(1+1/Math.exp(.08400232344865799-.9345706105232239*(e[0]||0)-7.6551032066345215*(e[1]||0)+8.717894554138184*(e[2]||0)))))}}const{PALETTE_SHADES:N1}=await n("@baseplate-dev/project-builder-lib");function $(s,e){return`${s}-${e}`}function y1(s){const r=Z("rgb")(s);if(!r)throw new Error(`Invalid color: ${s}`);const l=w1(r);return Object.fromEntries(N1.map(a=>{const x={mode:"rgb",r:l[$(a,"r")],g:l[$(a,"g")],b:l[$(a,"b")]};return[a,e1(x)]}))}const{COLOR_PALETTES:P,convertHexToOklch:R,convertOklchToHex:I,PALETTE_SHADES:S1}=await n("@baseplate-dev/project-builder-lib"),{Button:k1,ColorPickerFieldController:K,ComboboxFieldController:$1}=await n("@baseplate-dev/ui-components"),{useCallback:P1}=await n("react");function _({control:s,getValues:e,setValue:r,onShadesChange:l,type:a}){const x=[{value:"custom",label:"Custom Base"},...Object.keys(P).map(o=>({value:o,label:Y.capitalize(o)}))],c=g({control:s,name:`palettes.${a}.paletteName`}),m=P1(o=>{if(!o||!Object.prototype.hasOwnProperty.call(P,o))return;const h=P[o];r(`palettes.${a}.shades`,h),l?.(h)},[r,l,a]),i=()=>{const o=e(`palettes.${a}.customBase`);if(!o)return;const h=y1(o);r(`palettes.${a}.shades`,h),l?.(h)};return t.jsxs("div",{className:"flex max-w-fit flex-col gap-4",children:[t.jsx($1,{name:`palettes.${a}.paletteName`,control:s,options:x,placeholder:"Choose a base palette",onChange:m}),c==="custom"&&t.jsxs("div",{className:"flex max-w-xl items-center justify-between",children:[t.jsx(K,{className:"flex-1 space-x-1",wrapperClassName:"items-center",control:s,name:`palettes.${a}.customBase`,label:"Custom Base Color",placeholder:"Choose a color",parseColor:I,serializeColor:R}),t.jsx(k1,{variant:"secondary",onClick:i,size:"sm",children:"Generate"})]}),t.jsx("div",{className:"flex gap-3",children:S1.map(o=>t.jsx(K,{wrapperClassName:"flex flex-col items-center",hideText:!0,control:s,name:`palettes.${a}.shades.${o}`,label:o,parseColor:I,serializeColor:R,onChange:()=>l?.(e(`palettes.${a}.shades`))},o))})]})}const{createThemeSchema:O1,generateDefaultTheme:E1,generateThemeColorsFromShade:W}=await n("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:B1,useDefinitionSchema:D1,useProjectDefinition:L1,useResettableForm:F1}=await n("@baseplate-dev/project-builder-lib/web"),{Alert:H1,AlertDescription:A1,AlertTitle:z1,Button:R1,FormActionBar:I1,SectionList:K1,SectionListSection:O,SectionListSectionContent:E,SectionListSectionDescription:B,SectionListSectionHeader:D,SectionListSectionTitle:L,Tabs:G,TabsContent:T,TabsList:U,TabsTrigger:w}=await n("@baseplate-dev/ui-components"),{useCallback:V,useMemo:_1,useState:W1}=await n("react"),X1=function(){const{definition:e,saveDefinitionWithFeedback:r}=L1(),l=D1(O1),a=_1(()=>e.settings.theme??E1(),[e.settings.theme]),x=F1({resolver:q(l),values:a}),{control:c,handleSubmit:m,setValue:i,getValues:o,reset:h}=x,y=m(p=>r(d=>{d.settings.theme=p}));B1({control:c,reset:h,onSubmit:y});const b=V(p=>{const d=o("palettes");i("colors",{light:W(d,"light",p?void 0:{palettes:a.palettes,config:a.colors.light}),dark:W(d,"dark",p?void 0:{palettes:a.palettes,config:a.colors.dark})})},[o,i,a]),v=V(()=>{b()},[b]),[u,j]=W1("light");return t.jsxs("form",{className:"relative h-full max-h-full pb-(--action-bar-height)",onSubmit:y,children:[t.jsxs("div",{className:"flex h-full max-h-full flex-1 flex-col overflow-y-auto px-6",children:[t.jsxs("div",{className:"sticky top-0 z-10 space-y-2 border-b bg-background py-6",children:[t.jsx("h1",{children:"Theme Builder"}),t.jsxs("p",{className:"max-w-3xl text-muted-foreground",children:["The theme of the UI is based off color variables used with"," ",t.jsx("a",{href:"https://ui.shadcn.com/docs/theming",target:"_blank",rel:"noreferrer",className:"underline",children:"the Shadn UI component library"}),". We generate the color variables based off the Tailwind color palette structure but you can customize them as you wish."]})]}),t.jsxs("div",{className:"pt-4",children:[t.jsxs(H1,{className:"max-w-fit",children:[t.jsx(X,{}),t.jsx(z1,{children:"Work in Progress"}),t.jsx(A1,{children:"This page is still a work in progress. It is not being used for generation at the moment."})]}),t.jsxs(K1,{children:[t.jsxs(O,{children:[t.jsxs(D,{children:[t.jsx(L,{children:"Theme Palettes"}),t.jsx(B,{children:"Pick the colors for your theme"})]}),t.jsx(E,{className:"max-w-3xl",children:t.jsxs(G,{defaultValue:"base",children:[t.jsxs(U,{children:[t.jsx(w,{value:"base",children:"Base"}),t.jsx(w,{value:"primary",children:"Primary"})]}),t.jsx(T,{value:"base",children:t.jsx(_,{control:c,getValues:o,setValue:i,type:"base",onShadesChange:v})}),t.jsx(T,{value:"primary",children:t.jsx(_,{control:c,getValues:o,setValue:i,type:"primary",onShadesChange:v})})]})})]}),t.jsxs(O,{children:[t.jsxs(D,{children:[t.jsx(L,{children:"Theme Colors"}),t.jsx(B,{children:"Pick the colors for your theme"}),t.jsx("div",{className:"sticky top-44",children:t.jsx(T1,{control:c,mode:u},u)})]}),t.jsxs(E,{className:"flex flex-col gap-4",children:[t.jsxs(G,{value:u,onValueChange:j,children:[t.jsxs(U,{children:[t.jsx(w,{value:"light",children:"Light"}),t.jsx(w,{value:"dark",children:"Dark"})]}),t.jsx(T,{value:"light",children:t.jsx(z,{control:c,setValue:i,mode:"light"})}),t.jsx(T,{value:"dark",children:t.jsx(z,{control:c,setValue:i,mode:"dark"})})]}),t.jsx(R1,{onClick:()=>{b(!0)},variant:"outline",size:"sm",type:"button",className:"w-fit",children:"Reset Colors"})]})]}),t.jsxs(O,{children:[t.jsxs(D,{children:[t.jsx(L,{children:"CSS Preview"}),t.jsx(B,{children:"Preview the CSS for your theme"})]}),t.jsx(E,{className:"flex flex-col gap-4",children:t.jsx(s1,{control:c})})]})]})]})]}),t.jsx(I1,{form:x})]})};export{X1 as component};
11
- //# sourceMappingURL=theme-builder-_PghOvuC.js.map
11
+ //# sourceMappingURL=theme-builder-NSOA1xIw.js.map