@baseplate-dev/project-builder-web 0.2.6 → 0.3.1

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 (194) hide show
  1. package/dist/assets/-constants-C0cnDlAn.js +4 -0
  2. package/dist/assets/-constants-C0cnDlAn.js.map +1 -0
  3. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-BCejYgPM.js +2 -0
  4. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/{web-CEscUEnR.js.map → web-BCejYgPM.js.map} +1 -1
  5. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-BxDAWgq7.js +2 -0
  6. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-BxDAWgq7.js.map +1 -0
  7. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-D6OnTPTN.js +46 -0
  8. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-D6OnTPTN.js.map +1 -0
  9. package/dist/assets/__federation_shared_@baseplate-dev/utils-DvvrgoSE.js +5 -0
  10. package/dist/assets/__federation_shared_@baseplate-dev/utils-DvvrgoSE.js.map +1 -0
  11. package/dist/assets/__federation_shared_@tanstack/react-router-B5c6YNeC.js +19 -0
  12. package/dist/assets/__federation_shared_@tanstack/react-router-B5c6YNeC.js.map +1 -0
  13. package/dist/assets/__federation_shared_react-WURrSs1p.js +2 -0
  14. package/dist/assets/{__federation_shared_react-CTQ9xfiH.js.map → __federation_shared_react-WURrSs1p.js.map} +1 -1
  15. package/dist/assets/__federation_shared_react-dom-CWagDEjd.js +2 -0
  16. package/dist/assets/{__federation_shared_react-dom-DPv53nVg.js.map → __federation_shared_react-dom-CWagDEjd.js.map} +1 -1
  17. package/dist/assets/_commonjsHelpers-CqkleIqs.js +2 -0
  18. package/dist/assets/_commonjsHelpers-CqkleIqs.js.map +1 -0
  19. package/dist/assets/_virtual___federation_fn_import-DXu2m-ZE.js +2 -0
  20. package/dist/assets/{_virtual___federation_fn_import-BLYgPlMt.js.map → _virtual___federation_fn_import-DXu2m-ZE.js.map} +1 -1
  21. package/dist/assets/admin-Bw70Pql0.js +2 -0
  22. package/dist/assets/admin-Bw70Pql0.js.map +1 -0
  23. package/dist/assets/backend-CoqSwiCt.js +2 -0
  24. package/dist/assets/{backend-hJNcdERv.js.map → backend-CoqSwiCt.js.map} +1 -1
  25. package/dist/assets/badge-with-type-label-BXoSRTRE.js +2 -0
  26. package/dist/assets/{badge-with-type-label-CezAtjFy.js.map → badge-with-type-label-BXoSRTRE.js.map} +1 -1
  27. package/dist/assets/edit._key-CtMMGDWu.js +2 -0
  28. package/dist/assets/edit._key-CtMMGDWu.js.map +1 -0
  29. package/dist/assets/edit._sectionKey-CTX9L0j4.js +3 -0
  30. package/dist/assets/edit._sectionKey-CTX9L0j4.js.map +1 -0
  31. package/dist/assets/enum-info-form-D5bAsvPH.js +2 -0
  32. package/dist/assets/{enum-info-form-xlZ2HO8I.js.map → enum-info-form-D5bAsvPH.js.map} +1 -1
  33. package/dist/assets/graphql-BmA-sAqU.js +2 -0
  34. package/dist/assets/{graphql-D3J4ZWXL.js.map → graphql-BmA-sAqU.js.map} +1 -1
  35. package/dist/assets/hierarchy-CZorhmS7.js +2 -0
  36. package/dist/assets/{hierarchy-DF9lzUjz.js.map → hierarchy-CZorhmS7.js.map} +1 -1
  37. package/dist/assets/immer-B7fdkLVi.js +2 -0
  38. package/dist/assets/immer-B7fdkLVi.js.map +1 -0
  39. package/dist/assets/index-BABen-rU.js +2 -0
  40. package/dist/assets/index-BABen-rU.js.map +1 -0
  41. package/dist/assets/index-BGLRovL6.js +2 -0
  42. package/dist/assets/index-BGLRovL6.js.map +1 -0
  43. package/dist/assets/index-BPzqpd9P.js +2 -0
  44. package/dist/assets/{index-DJsZccoO.js.map → index-BPzqpd9P.js.map} +1 -1
  45. package/dist/assets/index-BUYA3Tes.js +40 -0
  46. package/dist/assets/index-BUYA3Tes.js.map +1 -0
  47. package/dist/assets/index-Bl_iRlKL.js +2 -0
  48. package/dist/assets/index-Bl_iRlKL.js.map +1 -0
  49. package/dist/assets/index-BpDkQSTy.js +2 -0
  50. package/dist/assets/{index-BdmJimiZ.js.map → index-BpDkQSTy.js.map} +1 -1
  51. package/dist/assets/index-CaiaVpxa.js +2 -0
  52. package/dist/assets/index-CaiaVpxa.js.map +1 -0
  53. package/dist/assets/index-CsGKSjOd.js +2 -0
  54. package/dist/assets/index-CsGKSjOd.js.map +1 -0
  55. package/dist/assets/index-D-dbw3Qx.js +2 -0
  56. package/dist/assets/{index-1ErFJbDw.js.map → index-D-dbw3Qx.js.map} +1 -1
  57. package/dist/assets/index-DCiH936w.js +2 -0
  58. package/dist/assets/{index-Bv8hyN9u.js.map → index-DCiH936w.js.map} +1 -1
  59. package/dist/assets/index-DDivWD4R.js +2 -0
  60. package/dist/assets/index-DDivWD4R.js.map +1 -0
  61. package/dist/assets/index-DpJKJe06.js +2 -0
  62. package/dist/assets/index-DpJKJe06.js.map +1 -0
  63. package/dist/assets/{index-B0D_rfGi.js → index-DqHVrEeL.js} +2 -2
  64. package/dist/assets/{index-B0D_rfGi.js.map → index-DqHVrEeL.js.map} +1 -1
  65. package/dist/assets/index-PlVWOW99.css +1 -0
  66. package/dist/assets/index-_mf2naQd.js +2 -0
  67. package/dist/assets/index-_mf2naQd.js.map +1 -0
  68. package/dist/assets/{index-9Ra4Lmds.js → index-c0qeY2gs.js} +3 -3
  69. package/dist/assets/{index-9Ra4Lmds.js.map → index-c0qeY2gs.js.map} +1 -1
  70. package/dist/assets/index-p--SDqro.js +2 -0
  71. package/dist/assets/{index-B5-Qczd9.js.map → index-p--SDqro.js.map} +1 -1
  72. package/dist/assets/index.esm-CTDJ8Wko.js +2 -0
  73. package/dist/assets/index.esm-CTDJ8Wko.js.map +1 -0
  74. package/dist/assets/jsx-runtime-D_zvdyIk.js +10 -0
  75. package/dist/assets/jsx-runtime-D_zvdyIk.js.map +1 -0
  76. package/dist/assets/model-info-form-pKQBCJu4.js +2 -0
  77. package/dist/assets/{model-info-form-VtbYsjrH.js.map → model-info-form-pKQBCJu4.js.map} +1 -1
  78. package/dist/assets/model-merger-vEOkdVdS.js +2 -0
  79. package/dist/assets/model-merger-vEOkdVdS.js.map +1 -0
  80. package/dist/assets/new-admin-section-dialog-F58HZ0yO.js +2 -0
  81. package/dist/assets/new-admin-section-dialog-F58HZ0yO.js.map +1 -0
  82. package/dist/assets/new-app-dialog-DPQv-mvi.js +2 -0
  83. package/dist/assets/new-app-dialog-DPQv-mvi.js.map +1 -0
  84. package/dist/assets/new-enum-dialog-xVvneRQN.js +2 -0
  85. package/dist/assets/{new-enum-dialog-B0QcIWdY.js.map → new-enum-dialog-xVvneRQN.js.map} +1 -1
  86. package/dist/assets/new-model-dialog-ApenxGWq.js +2 -0
  87. package/dist/assets/{new-model-dialog-CM2dJ8Iv.js.map → new-model-dialog-ApenxGWq.js.map} +1 -1
  88. package/dist/assets/route-1RLqcpwJ.js +2 -0
  89. package/dist/assets/{route-DmdFbZkw.js.map → route-1RLqcpwJ.js.map} +1 -1
  90. package/dist/assets/route-9nRSk82v.js +2 -0
  91. package/dist/assets/route-9nRSk82v.js.map +1 -0
  92. package/dist/assets/route-B5_zLW88.js +2 -0
  93. package/dist/assets/{route-CAp89B2q.js.map → route-B5_zLW88.js.map} +1 -1
  94. package/dist/assets/route-BPsno3Cl.js +2 -0
  95. package/dist/assets/route-BPsno3Cl.js.map +1 -0
  96. package/dist/assets/route-BW0F_EH4.js +2 -0
  97. package/dist/assets/{route-DcsVxxui.js.map → route-BW0F_EH4.js.map} +1 -1
  98. package/dist/assets/route-C1hyfOXp.js +2 -0
  99. package/dist/assets/route-C1hyfOXp.js.map +1 -0
  100. package/dist/assets/route-CH7VQVwb.js +2 -0
  101. package/dist/assets/route-CH7VQVwb.js.map +1 -0
  102. package/dist/assets/route-CpoiDvOD.js +2 -0
  103. package/dist/assets/route-CpoiDvOD.js.map +1 -0
  104. package/dist/assets/route-Dq2UgkxS.js +2 -0
  105. package/dist/assets/{route-BsIUCKz1.js.map → route-Dq2UgkxS.js.map} +1 -1
  106. package/dist/assets/route-z54yq2nP.js +2 -0
  107. package/dist/assets/route-z54yq2nP.js.map +1 -0
  108. package/dist/assets/service-Cv-U7NUv.js +2 -0
  109. package/dist/assets/service-Cv-U7NUv.js.map +1 -0
  110. package/dist/assets/sortBy-C9bvycg5.js +2 -0
  111. package/dist/assets/sortBy-C9bvycg5.js.map +1 -0
  112. package/dist/assets/template-extractor-ElrbBsVj.js +2 -0
  113. package/dist/assets/{template-extractor-DEU0CX0Y.js.map → template-extractor-ElrbBsVj.js.map} +1 -1
  114. package/dist/assets/{theme-builder-La1nKR0K.js → theme-builder-Butjmy7L.js} +6 -6
  115. package/dist/assets/{theme-builder-La1nKR0K.js.map → theme-builder-Butjmy7L.js.map} +1 -1
  116. package/dist/assets/{use-definition-schema-CuFFJIzk.js → use-definition-schema-e7us6WfR.js} +2 -2
  117. package/dist/assets/{use-definition-schema-CuFFJIzk.js.map → use-definition-schema-e7us6WfR.js.map} +1 -1
  118. package/dist/assets/use-enum-form-CEyTBPQn.js +2 -0
  119. package/dist/assets/{use-enum-form-DKD2EDHZ.js.map → use-enum-form-CEyTBPQn.js.map} +1 -1
  120. package/dist/assets/use-model-form-Ch_tz0Rd.js +2 -0
  121. package/dist/assets/{use-model-form-BQa-PiE_.js.map → use-model-form-Ch_tz0Rd.js.map} +1 -1
  122. package/dist/assets/words-Cs2RBKRm.js +2 -0
  123. package/dist/assets/words-Cs2RBKRm.js.map +1 -0
  124. package/dist/index.html +11 -8
  125. package/package.json +11 -11
  126. package/dist/assets/-constants-CqYT9Sad.js +0 -4
  127. package/dist/assets/-constants-CqYT9Sad.js.map +0 -1
  128. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib/web-CEscUEnR.js +0 -2
  129. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CzpSl25Z.js +0 -5
  130. package/dist/assets/__federation_shared_@baseplate-dev/project-builder-lib-CzpSl25Z.js.map +0 -1
  131. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-Bpztr-cx.js +0 -46
  132. package/dist/assets/__federation_shared_@baseplate-dev/ui-components-Bpztr-cx.js.map +0 -1
  133. package/dist/assets/__federation_shared_react-CTQ9xfiH.js +0 -2
  134. package/dist/assets/__federation_shared_react-dom-DPv53nVg.js +0 -2
  135. package/dist/assets/_virtual___federation_fn_import-BLYgPlMt.js +0 -2
  136. package/dist/assets/backend-hJNcdERv.js +0 -2
  137. package/dist/assets/badge-with-type-label-CezAtjFy.js +0 -2
  138. package/dist/assets/edit._id-bMpe6S3O.js +0 -2
  139. package/dist/assets/edit._id-bMpe6S3O.js.map +0 -1
  140. package/dist/assets/enum-info-form-xlZ2HO8I.js +0 -2
  141. package/dist/assets/graphql-D3J4ZWXL.js +0 -2
  142. package/dist/assets/hierarchy-DF9lzUjz.js +0 -2
  143. package/dist/assets/immer-BOh2djD_.js +0 -2
  144. package/dist/assets/immer-BOh2djD_.js.map +0 -1
  145. package/dist/assets/index-1ErFJbDw.js +0 -2
  146. package/dist/assets/index-37eYMUXo.js +0 -2
  147. package/dist/assets/index-37eYMUXo.js.map +0 -1
  148. package/dist/assets/index-B5-Qczd9.js +0 -2
  149. package/dist/assets/index-BLuLGksP.js +0 -2
  150. package/dist/assets/index-BLuLGksP.js.map +0 -1
  151. package/dist/assets/index-BPK2SbiO.js +0 -2
  152. package/dist/assets/index-BPK2SbiO.js.map +0 -1
  153. package/dist/assets/index-BdmJimiZ.js +0 -2
  154. package/dist/assets/index-Bv8hyN9u.js +0 -2
  155. package/dist/assets/index-C15I7WFi.js +0 -2
  156. package/dist/assets/index-C15I7WFi.js.map +0 -1
  157. package/dist/assets/index-C_wN4CIq.js +0 -58
  158. package/dist/assets/index-C_wN4CIq.js.map +0 -1
  159. package/dist/assets/index-DBOJRz5n.css +0 -1
  160. package/dist/assets/index-DJsZccoO.js +0 -2
  161. package/dist/assets/index-DwyYddxl.js +0 -2
  162. package/dist/assets/index-DwyYddxl.js.map +0 -1
  163. package/dist/assets/index-P-wtG1LL.js +0 -2
  164. package/dist/assets/index-P-wtG1LL.js.map +0 -1
  165. package/dist/assets/index.esm-DcyGeCKA.js +0 -10
  166. package/dist/assets/index.esm-DcyGeCKA.js.map +0 -1
  167. package/dist/assets/model-info-form-VtbYsjrH.js +0 -2
  168. package/dist/assets/model-merger-qJqD9I2_.js +0 -2
  169. package/dist/assets/model-merger-qJqD9I2_.js.map +0 -1
  170. package/dist/assets/new-app-dialog-CTtQ52jO.js +0 -2
  171. package/dist/assets/new-app-dialog-CTtQ52jO.js.map +0 -1
  172. package/dist/assets/new-enum-dialog-B0QcIWdY.js +0 -2
  173. package/dist/assets/new-model-dialog-CM2dJ8Iv.js +0 -2
  174. package/dist/assets/route-B34jnFQF.js +0 -2
  175. package/dist/assets/route-B34jnFQF.js.map +0 -1
  176. package/dist/assets/route-BRBmSLMi.js +0 -2
  177. package/dist/assets/route-BRBmSLMi.js.map +0 -1
  178. package/dist/assets/route-BsIUCKz1.js +0 -2
  179. package/dist/assets/route-CAp89B2q.js +0 -2
  180. package/dist/assets/route-DcsVxxui.js +0 -2
  181. package/dist/assets/route-DmdFbZkw.js +0 -2
  182. package/dist/assets/route-Dpmx4lrA.js +0 -2
  183. package/dist/assets/route-Dpmx4lrA.js.map +0 -1
  184. package/dist/assets/route-T4J_Uk-9.js +0 -2
  185. package/dist/assets/route-T4J_Uk-9.js.map +0 -1
  186. package/dist/assets/route-w8_2x1VY.js +0 -2
  187. package/dist/assets/route-w8_2x1VY.js.map +0 -1
  188. package/dist/assets/service-Bgm1ICPI.js +0 -2
  189. package/dist/assets/service-Bgm1ICPI.js.map +0 -1
  190. package/dist/assets/template-extractor-DEU0CX0Y.js +0 -2
  191. package/dist/assets/use-enum-form-DKD2EDHZ.js +0 -2
  192. package/dist/assets/use-model-form-BQa-PiE_.js +0 -2
  193. package/dist/assets/utils-BYjOwi1b.js +0 -2
  194. package/dist/assets/utils-BYjOwi1b.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{g as r}from"./_commonjsHelpers-CqkleIqs.js";import{r as t}from"./index-c0qeY2gs.js";var e=t();const s=r(e);export{s as default};
2
+ //# sourceMappingURL=__federation_shared_react-WURrSs1p.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"__federation_shared_react-CTQ9xfiH.js","sources":["../../../../node_modules/.pnpm/react@19.1.0/node_modules/react/index.js?commonjs-entry"],"sourcesContent":["import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireReact } from \"/home/runner/work/baseplate/baseplate/node_modules/.pnpm/react@19.1.0/node_modules/react/index.js\";\nvar reactExports = requireReact();\nexport { reactExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(reactExports);"],"names":["reactExports","requireReact","index","getDefaultExportFromCjs"],"mappings":"0CAEA,IAAIA,EAAeC,EAAc,EAEjC,MAAAC,EAA4BC,EAAwBH,CAAY","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"__federation_shared_react-WURrSs1p.js","sources":["../../../../node_modules/.pnpm/react@19.1.0/node_modules/react/index.js?commonjs-entry"],"sourcesContent":["import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireReact } from \"/home/runner/work/baseplate/baseplate/node_modules/.pnpm/react@19.1.0/node_modules/react/index.js\";\nvar reactExports = requireReact();\nexport { reactExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(reactExports);"],"names":["reactExports","requireReact","index","getDefaultExportFromCjs"],"mappings":"2FAEA,IAAIA,EAAeC,EAAc,EAEjC,MAAAC,EAA4BC,EAAwBH,CAAY","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{g as r}from"./_commonjsHelpers-CqkleIqs.js";import{r as o}from"./index-DqHVrEeL.js";var t=o();const m=r(t);export{m as default};
2
+ //# sourceMappingURL=__federation_shared_react-dom-CWagDEjd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"__federation_shared_react-dom-DPv53nVg.js","sources":["../../../../node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/index.js?commonjs-entry"],"sourcesContent":["import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireReactDom } from \"/home/runner/work/baseplate/baseplate/node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/index.js\";\nvar reactDomExports = requireReactDom();\nexport { reactDomExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(reactDomExports);"],"names":["reactDomExports","requireReactDom","index","getDefaultExportFromCjs"],"mappings":"gFAEA,IAAIA,EAAkBC,EAAiB,EAEvC,MAAAC,EAA4BC,EAAwBH,CAAe","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"__federation_shared_react-dom-CWagDEjd.js","sources":["../../../../node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/index.js?commonjs-entry"],"sourcesContent":["import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireReactDom } from \"/home/runner/work/baseplate/baseplate/node_modules/.pnpm/react-dom@19.1.0_react@19.1.0/node_modules/react-dom/index.js\";\nvar reactDomExports = requireReactDom();\nexport { reactDomExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(reactDomExports);"],"names":["reactDomExports","requireReactDom","index","getDefaultExportFromCjs"],"mappings":"2FAEA,IAAIA,EAAkBC,EAAiB,EAEvC,MAAAC,EAA4BC,EAAwBH,CAAe","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}export{e as g};
2
+ //# sourceMappingURL=_commonjsHelpers-CqkleIqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers-CqkleIqs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ const z="[0-9A-Za-z-]+",V=`(?:\\+(${z}(?:\\.${z})*))`,b="0|[1-9]\\d*",v="[0-9]+",Z="\\d*[a-zA-Z-][a-zA-Z0-9-]*",X=`(?:${v}|${Z})`,D=`(?:-?(${X}(?:\\.${X})*))`,q=`(?:${b}|${Z})`,B=`(?:-(${q}(?:\\.${q})*))`,C=`${b}|x|X|\\*`,_=`[v=\\s]*(${C})(?:\\.(${C})(?:\\.(${C})(?:${B})?${V}?)?)?`,J=`^\\s*(${_})\\s+-\\s+(${_})\\s*$`,Q=`(${v})\\.(${v})\\.(${v})`,W=`[v=\\s]*${Q}${D}?${V}?`,P="((?:<|>)?=?)",Y=`(\\s*)${P}\\s*(${W}|${_})`,F="(?:~>?)",j=`(\\s*)${F}\\s+`,G="(?:\\^)",A=`(\\s*)${G}\\s+`,m="(<|>)?=?\\s*\\*",ee=`^${G}${_}$`,re=`(${b})\\.(${b})\\.(${b})`,te=`v?${re}${B}?${V}?`,ne=`^${F}${_}$`,se=`^${P}\\s*${_}$`,ie=`^${P}\\s*(${te})$|^$`,ue="^\\s*>=\\s*0.0.0\\s*$";function o(e){return new RegExp(e)}function $(e){return!e||e.toLowerCase()==="x"||e==="*"}function H(...e){return n=>e.reduce((i,r)=>r(i),n)}function E(e){return e.match(o(ie))}function S(e,n,i,r){const t=`${e}.${n}.${i}`;return r?`${t}-${r}`:t}function $e(e){return e.replace(o(J),(n,i,r,t,s,u,a,c,f,l,h,p)=>($(r)?i="":$(t)?i=`>=${r}.0.0`:$(s)?i=`>=${r}.${t}.0`:i=`>=${i}`,$(f)?c="":$(l)?c=`<${+f+1}.0.0-0`:$(h)?c=`<${f}.${+l+1}.0-0`:p?c=`<=${f}.${l}.${h}-${p}`:c=`<=${c}`,`${i} ${c}`.trim()))}function ae(e){return e.replace(o(Y),"$1$2$3")}function ce(e){return e.replace(o(j),"$1~")}function fe(e){return e.replace(o(A),"$1^")}function le(e){return e.trim().split(/\s+/).map(n=>n.replace(o(ee),(i,r,t,s,u)=>$(r)?"":$(t)?`>=${r}.0.0 <${+r+1}.0.0-0`:$(s)?r==="0"?`>=${r}.${t}.0 <${r}.${+t+1}.0-0`:`>=${r}.${t}.0 <${+r+1}.0.0-0`:u?r==="0"?t==="0"?`>=${r}.${t}.${s}-${u} <${r}.${t}.${+s+1}-0`:`>=${r}.${t}.${s}-${u} <${r}.${+t+1}.0-0`:`>=${r}.${t}.${s}-${u} <${+r+1}.0.0-0`:r==="0"?t==="0"?`>=${r}.${t}.${s} <${r}.${t}.${+s+1}-0`:`>=${r}.${t}.${s} <${r}.${+t+1}.0-0`:`>=${r}.${t}.${s} <${+r+1}.0.0-0`)).join(" ")}function oe(e){return e.trim().split(/\s+/).map(n=>n.replace(o(ne),(i,r,t,s,u)=>$(r)?"":$(t)?`>=${r}.0.0 <${+r+1}.0.0-0`:$(s)?`>=${r}.${t}.0 <${r}.${+t+1}.0-0`:u?`>=${r}.${t}.${s}-${u} <${r}.${+t+1}.0-0`:`>=${r}.${t}.${s} <${r}.${+t+1}.0-0`)).join(" ")}function pe(e){return e.split(/\s+/).map(n=>n.trim().replace(o(se),(i,r,t,s,u,a)=>{const c=$(t),f=c||$(s),l=f||$(u);return r==="="&&l&&(r=""),a="",c?r===">"||r==="<"?"<0.0.0-0":"*":r&&l?(f&&(s=0),u=0,r===">"?(r=">=",f?(t=+t+1,s=0,u=0):(s=+s+1,u=0)):r==="<="&&(r="<",f?t=+t+1:s=+s+1),r==="<"&&(a="-0"),`${r+t}.${s}.${u}${a}`):f?`>=${t}.0.0${a} <${+t+1}.0.0-0`:l?`>=${t}.${s}.0${a} <${t}.${+s+1}.0-0`:i})).join(" ")}function de(e){return e.trim().replace(o(m),"")}function _e(e){return e.trim().replace(o(ue),"")}function w(e,n){return e=+e||e,n=+n||n,e>n?1:e===n?0:-1}function be(e,n){const{preRelease:i}=e,{preRelease:r}=n;if(i===void 0&&r)return 1;if(i&&r===void 0)return-1;if(i===void 0&&r===void 0)return 0;for(let t=0,s=i.length;t<=s;t++){const u=i[t],a=r[t];if(u!==a)return u===void 0&&a===void 0?0:u?a?w(u,a):-1:1}return 0}function R(e,n){return w(e.major,n.major)||w(e.minor,n.minor)||w(e.patch,n.patch)||be(e,n)}function T(e,n){return e.version===n.version}function he(e,n){switch(e.operator){case"":case"=":return T(e,n);case">":return R(e,n)<0;case">=":return T(e,n)||R(e,n)<0;case"<":return R(e,n)>0;case"<=":return T(e,n)||R(e,n)>0;case void 0:return!0;default:return!1}}function Re(e){return H(le,oe,pe,de)(e)}function ve(e){return H($e,ae,ce,fe)(e.trim()).split(/\s+/).join(" ")}function we(e,n){if(!e)return!1;const t=ve(n).split(" ").map(p=>Re(p)).join(" ").split(/\s+/).map(p=>_e(p)),s=E(e);if(!s)return!1;const[,u,,a,c,f,l]=s,h={version:S(a,c,f,l),major:a,minor:c,patch:f,preRelease:l?.split(".")};for(const p of t){const y=E(p);if(!y)return!1;const[,M,,I,O,U,x]=y,N={operator:M,version:S(I,O,U,x),major:I,minor:O,patch:U,preRelease:x?.split(".")};if(!he(N,h))return!1}return!0}const k={},g={react:{get:()=>()=>d(new URL("__federation_shared_react-WURrSs1p.js",import.meta.url).href),import:!0},"react-dom":{get:()=>()=>d(new URL("__federation_shared_react-dom-CWagDEjd.js",import.meta.url).href),import:!0},zod:{get:()=>()=>d(new URL("__federation_shared_zod-DQ8g46gT.js",import.meta.url).href),import:!0},"@baseplate-dev/project-builder-lib":{get:()=>()=>d(new URL("__federation_shared_@baseplate-dev/project-builder-lib-BxDAWgq7.js",import.meta.url).href),import:!0},"@baseplate-dev/project-builder-lib/web":{get:()=>()=>d(new URL("__federation_shared_@baseplate-dev/project-builder-lib/web-BCejYgPM.js",import.meta.url).href),import:!0},"@baseplate-dev/ui-components":{get:()=>()=>d(new URL("__federation_shared_@baseplate-dev/ui-components-D6OnTPTN.js",import.meta.url).href),import:!0},"@baseplate-dev/utils":{get:()=>()=>d(new URL("__federation_shared_@baseplate-dev/utils-DvvrgoSE.js",import.meta.url).href),import:!0},"@tanstack/react-router":{get:()=>()=>d(new URL("__federation_shared_@tanstack/react-router-B5c6YNeC.js",import.meta.url).href),import:!0}},L=Object.create(null);async function xe(e,n="default"){return L[e]?new Promise(i=>i(L[e])):await ge(e,n)||Le(e)}async function d(e){return k[e]??=import(e),k[e]}async function ge(e,n){let i=null;if(globalThis?.__federation_shared__?.[n]?.[e]){const r=globalThis.__federation_shared__[n][e],t=Object.keys(r)[0],s=Object.values(r)[0];g[e]?.requiredVersion?we(t,g[e].requiredVersion)?i=await(await s.get())():console.log(`provider support ${e}(${t}) is not satisfied requiredVersion(\${moduleMap[name].requiredVersion})`):i=await(await s.get())()}if(i)return K(i,e)}async function Le(e){if(g[e]?.import){let n=await(await g[e].get())();return K(n,e)}else console.error("consumer config import=false,so cant use callback shared module")}function K(e,n){return typeof e.default=="function"?(Object.keys(e).forEach(i=>{i!=="default"&&(e.default[i]=e[i])}),L[n]=e.default,e.default):(e.default&&(e=Object.assign({},e.default,e)),L[n]=e,e)}export{xe as i};
2
+ //# sourceMappingURL=_virtual___federation_fn_import-DXu2m-ZE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_virtual___federation_fn_import-BLYgPlMt.js","sources":["../../../../node_modules/.pnpm/@originjs+vite-plugin-federation@1.3.6/node_modules/@originjs/vite-plugin-federation/dist/satisfy.mjs"],"sourcesContent":["const buildIdentifier = \"[0-9A-Za-z-]+\";\nconst build = `(?:\\\\+(${buildIdentifier}(?:\\\\.${buildIdentifier})*))`;\nconst numericIdentifier = \"0|[1-9]\\\\d*\";\nconst numericIdentifierLoose = \"[0-9]+\";\nconst nonNumericIdentifier = \"\\\\d*[a-zA-Z-][a-zA-Z0-9-]*\";\nconst preReleaseIdentifierLoose = `(?:${numericIdentifierLoose}|${nonNumericIdentifier})`;\nconst preReleaseLoose = `(?:-?(${preReleaseIdentifierLoose}(?:\\\\.${preReleaseIdentifierLoose})*))`;\nconst preReleaseIdentifier = `(?:${numericIdentifier}|${nonNumericIdentifier})`;\nconst preRelease = `(?:-(${preReleaseIdentifier}(?:\\\\.${preReleaseIdentifier})*))`;\nconst xRangeIdentifier = `${numericIdentifier}|x|X|\\\\*`;\nconst xRangePlain = `[v=\\\\s]*(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:${preRelease})?${build}?)?)?`;\nconst hyphenRange = `^\\\\s*(${xRangePlain})\\\\s+-\\\\s+(${xRangePlain})\\\\s*$`;\nconst mainVersionLoose = `(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})`;\nconst loosePlain = `[v=\\\\s]*${mainVersionLoose}${preReleaseLoose}?${build}?`;\nconst gtlt = \"((?:<|>)?=?)\";\nconst comparatorTrim = `(\\\\s*)${gtlt}\\\\s*(${loosePlain}|${xRangePlain})`;\nconst loneTilde = \"(?:~>?)\";\nconst tildeTrim = `(\\\\s*)${loneTilde}\\\\s+`;\nconst loneCaret = \"(?:\\\\^)\";\nconst caretTrim = `(\\\\s*)${loneCaret}\\\\s+`;\nconst star = \"(<|>)?=?\\\\s*\\\\*\";\nconst caret = `^${loneCaret}${xRangePlain}$`;\nconst mainVersion = `(${numericIdentifier})\\\\.(${numericIdentifier})\\\\.(${numericIdentifier})`;\nconst fullPlain = `v?${mainVersion}${preRelease}?${build}?`;\nconst tilde = `^${loneTilde}${xRangePlain}$`;\nconst xRange = `^${gtlt}\\\\s*${xRangePlain}$`;\nconst comparator = `^${gtlt}\\\\s*(${fullPlain})$|^$`;\nconst gte0 = \"^\\\\s*>=\\\\s*0.0.0\\\\s*$\";\nfunction parseRegex(source) {\n return new RegExp(source);\n}\nfunction isXVersion(version) {\n return !version || version.toLowerCase() === \"x\" || version === \"*\";\n}\nfunction pipe(...fns) {\n return (x) => {\n return fns.reduce((v, f) => f(v), x);\n };\n}\nfunction extractComparator(comparatorString) {\n return comparatorString.match(parseRegex(comparator));\n}\nfunction combineVersion(major, minor, patch, preRelease2) {\n const mainVersion2 = `${major}.${minor}.${patch}`;\n if (preRelease2) {\n return `${mainVersion2}-${preRelease2}`;\n }\n return mainVersion2;\n}\nfunction parseHyphen(range) {\n return range.replace(\n parseRegex(hyphenRange),\n (_range, from, fromMajor, fromMinor, fromPatch, _fromPreRelease, _fromBuild, to, toMajor, toMinor, toPatch, toPreRelease) => {\n if (isXVersion(fromMajor)) {\n from = \"\";\n } else if (isXVersion(fromMinor)) {\n from = `>=${fromMajor}.0.0`;\n } else if (isXVersion(fromPatch)) {\n from = `>=${fromMajor}.${fromMinor}.0`;\n } else {\n from = `>=${from}`;\n }\n if (isXVersion(toMajor)) {\n to = \"\";\n } else if (isXVersion(toMinor)) {\n to = `<${+toMajor + 1}.0.0-0`;\n } else if (isXVersion(toPatch)) {\n to = `<${toMajor}.${+toMinor + 1}.0-0`;\n } else if (toPreRelease) {\n to = `<=${toMajor}.${toMinor}.${toPatch}-${toPreRelease}`;\n } else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n }\n );\n}\nfunction parseComparatorTrim(range) {\n return range.replace(parseRegex(comparatorTrim), \"$1$2$3\");\n}\nfunction parseTildeTrim(range) {\n return range.replace(parseRegex(tildeTrim), \"$1~\");\n}\nfunction parseCaretTrim(range) {\n return range.replace(parseRegex(caretTrim), \"$1^\");\n}\nfunction parseCarets(range) {\n return range.trim().split(/\\s+/).map((rangeVersion) => {\n return rangeVersion.replace(\n parseRegex(caret),\n (_, major, minor, patch, preRelease2) => {\n if (isXVersion(major)) {\n return \"\";\n } else if (isXVersion(minor)) {\n return `>=${major}.0.0 <${+major + 1}.0.0-0`;\n } else if (isXVersion(patch)) {\n if (major === \"0\") {\n return `>=${major}.${minor}.0 <${major}.${+minor + 1}.0-0`;\n } else {\n return `>=${major}.${minor}.0 <${+major + 1}.0.0-0`;\n }\n } else if (preRelease2) {\n if (major === \"0\") {\n if (minor === \"0\") {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${major}.${minor}.${+patch + 1}-0`;\n } else {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${major}.${+minor + 1}.0-0`;\n }\n } else {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${+major + 1}.0.0-0`;\n }\n } else {\n if (major === \"0\") {\n if (minor === \"0\") {\n return `>=${major}.${minor}.${patch} <${major}.${minor}.${+patch + 1}-0`;\n } else {\n return `>=${major}.${minor}.${patch} <${major}.${+minor + 1}.0-0`;\n }\n }\n return `>=${major}.${minor}.${patch} <${+major + 1}.0.0-0`;\n }\n }\n );\n }).join(\" \");\n}\nfunction parseTildes(range) {\n return range.trim().split(/\\s+/).map((rangeVersion) => {\n return rangeVersion.replace(\n parseRegex(tilde),\n (_, major, minor, patch, preRelease2) => {\n if (isXVersion(major)) {\n return \"\";\n } else if (isXVersion(minor)) {\n return `>=${major}.0.0 <${+major + 1}.0.0-0`;\n } else if (isXVersion(patch)) {\n return `>=${major}.${minor}.0 <${major}.${+minor + 1}.0-0`;\n } else if (preRelease2) {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${major}.${+minor + 1}.0-0`;\n }\n return `>=${major}.${minor}.${patch} <${major}.${+minor + 1}.0-0`;\n }\n );\n }).join(\" \");\n}\nfunction parseXRanges(range) {\n return range.split(/\\s+/).map((rangeVersion) => {\n return rangeVersion.trim().replace(\n parseRegex(xRange),\n (ret, gtlt2, major, minor, patch, preRelease2) => {\n const isXMajor = isXVersion(major);\n const isXMinor = isXMajor || isXVersion(minor);\n const isXPatch = isXMinor || isXVersion(patch);\n if (gtlt2 === \"=\" && isXPatch) {\n gtlt2 = \"\";\n }\n preRelease2 = \"\";\n if (isXMajor) {\n if (gtlt2 === \">\" || gtlt2 === \"<\") {\n return \"<0.0.0-0\";\n } else {\n return \"*\";\n }\n } else if (gtlt2 && isXPatch) {\n if (isXMinor) {\n minor = 0;\n }\n patch = 0;\n if (gtlt2 === \">\") {\n gtlt2 = \">=\";\n if (isXMinor) {\n major = +major + 1;\n minor = 0;\n patch = 0;\n } else {\n minor = +minor + 1;\n patch = 0;\n }\n } else if (gtlt2 === \"<=\") {\n gtlt2 = \"<\";\n if (isXMinor) {\n major = +major + 1;\n } else {\n minor = +minor + 1;\n }\n }\n if (gtlt2 === \"<\") {\n preRelease2 = \"-0\";\n }\n return `${gtlt2 + major}.${minor}.${patch}${preRelease2}`;\n } else if (isXMinor) {\n return `>=${major}.0.0${preRelease2} <${+major + 1}.0.0-0`;\n } else if (isXPatch) {\n return `>=${major}.${minor}.0${preRelease2} <${major}.${+minor + 1}.0-0`;\n }\n return ret;\n }\n );\n }).join(\" \");\n}\nfunction parseStar(range) {\n return range.trim().replace(parseRegex(star), \"\");\n}\nfunction parseGTE0(comparatorString) {\n return comparatorString.trim().replace(parseRegex(gte0), \"\");\n}\nfunction compareAtom(rangeAtom, versionAtom) {\n rangeAtom = +rangeAtom || rangeAtom;\n versionAtom = +versionAtom || versionAtom;\n if (rangeAtom > versionAtom) {\n return 1;\n }\n if (rangeAtom === versionAtom) {\n return 0;\n }\n return -1;\n}\nfunction comparePreRelease(rangeAtom, versionAtom) {\n const { preRelease: rangePreRelease } = rangeAtom;\n const { preRelease: versionPreRelease } = versionAtom;\n if (rangePreRelease === void 0 && !!versionPreRelease) {\n return 1;\n }\n if (!!rangePreRelease && versionPreRelease === void 0) {\n return -1;\n }\n if (rangePreRelease === void 0 && versionPreRelease === void 0) {\n return 0;\n }\n for (let i = 0, n = rangePreRelease.length; i <= n; i++) {\n const rangeElement = rangePreRelease[i];\n const versionElement = versionPreRelease[i];\n if (rangeElement === versionElement) {\n continue;\n }\n if (rangeElement === void 0 && versionElement === void 0) {\n return 0;\n }\n if (!rangeElement) {\n return 1;\n }\n if (!versionElement) {\n return -1;\n }\n return compareAtom(rangeElement, versionElement);\n }\n return 0;\n}\nfunction compareVersion(rangeAtom, versionAtom) {\n return compareAtom(rangeAtom.major, versionAtom.major) || compareAtom(rangeAtom.minor, versionAtom.minor) || compareAtom(rangeAtom.patch, versionAtom.patch) || comparePreRelease(rangeAtom, versionAtom);\n}\nfunction eq(rangeAtom, versionAtom) {\n return rangeAtom.version === versionAtom.version;\n}\nfunction compare(rangeAtom, versionAtom) {\n switch (rangeAtom.operator) {\n case \"\":\n case \"=\":\n return eq(rangeAtom, versionAtom);\n case \">\":\n return compareVersion(rangeAtom, versionAtom) < 0;\n case \">=\":\n return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0;\n case \"<\":\n return compareVersion(rangeAtom, versionAtom) > 0;\n case \"<=\":\n return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0;\n case void 0: {\n return true;\n }\n default:\n return false;\n }\n}\nfunction parseComparatorString(range) {\n return pipe(\n parseCarets,\n parseTildes,\n parseXRanges,\n parseStar\n )(range);\n}\nfunction parseRange(range) {\n return pipe(\n parseHyphen,\n parseComparatorTrim,\n parseTildeTrim,\n parseCaretTrim\n )(range.trim()).split(/\\s+/).join(\" \");\n}\nfunction satisfy(version, range) {\n if (!version) {\n return false;\n }\n const parsedRange = parseRange(range);\n const parsedComparator = parsedRange.split(\" \").map((rangeVersion) => parseComparatorString(rangeVersion)).join(\" \");\n const comparators = parsedComparator.split(/\\s+/).map((comparator2) => parseGTE0(comparator2));\n const extractedVersion = extractComparator(version);\n if (!extractedVersion) {\n return false;\n }\n const [\n ,\n versionOperator,\n ,\n versionMajor,\n versionMinor,\n versionPatch,\n versionPreRelease\n ] = extractedVersion;\n const versionAtom = {\n operator: versionOperator,\n version: combineVersion(\n versionMajor,\n versionMinor,\n versionPatch,\n versionPreRelease\n ),\n major: versionMajor,\n minor: versionMinor,\n patch: versionPatch,\n preRelease: versionPreRelease == null ? void 0 : versionPreRelease.split(\".\")\n };\n for (const comparator2 of comparators) {\n const extractedComparator = extractComparator(comparator2);\n if (!extractedComparator) {\n return false;\n }\n const [\n ,\n rangeOperator,\n ,\n rangeMajor,\n rangeMinor,\n rangePatch,\n rangePreRelease\n ] = extractedComparator;\n const rangeAtom = {\n operator: rangeOperator,\n version: combineVersion(\n rangeMajor,\n rangeMinor,\n rangePatch,\n rangePreRelease\n ),\n major: rangeMajor,\n minor: rangeMinor,\n patch: rangePatch,\n preRelease: rangePreRelease == null ? void 0 : rangePreRelease.split(\".\")\n };\n if (!compare(rangeAtom, versionAtom)) {\n return false;\n }\n }\n return true;\n}\nexport {\n satisfy\n};\n"],"names":["buildIdentifier","build","numericIdentifier","numericIdentifierLoose","nonNumericIdentifier","preReleaseIdentifierLoose","preReleaseLoose","preReleaseIdentifier","preRelease","xRangeIdentifier","xRangePlain","hyphenRange","mainVersionLoose","loosePlain","gtlt","comparatorTrim","loneTilde","tildeTrim","loneCaret","caretTrim","star","caret","mainVersion","fullPlain","tilde","xRange","comparator","gte0","parseRegex","source","isXVersion","version","pipe","fns","x","v","f","extractComparator","comparatorString","combineVersion","major","minor","patch","preRelease2","mainVersion2","parseHyphen","range","_range","from","fromMajor","fromMinor","fromPatch","_fromPreRelease","_fromBuild","to","toMajor","toMinor","toPatch","toPreRelease","parseComparatorTrim","parseTildeTrim","parseCaretTrim","parseCarets","rangeVersion","_","parseTildes","parseXRanges","ret","gtlt2","isXMajor","isXMinor","isXPatch","parseStar","parseGTE0","compareAtom","rangeAtom","versionAtom","comparePreRelease","rangePreRelease","versionPreRelease","i","n","rangeElement","versionElement","compareVersion","eq","compare","parseComparatorString","parseRange","satisfy","comparators","comparator2","extractedVersion","versionOperator","versionMajor","versionMinor","versionPatch","extractedComparator","rangeOperator","rangeMajor","rangeMinor","rangePatch"],"mappings":"AAAA,MAAMA,EAAkB,gBAClBC,EAAQ,UAAUD,CAAe,SAASA,CAAe,OACzDE,EAAoB,cACpBC,EAAyB,SACzBC,EAAuB,6BACvBC,EAA4B,MAAMF,CAAsB,IAAIC,CAAoB,IAChFE,EAAkB,SAASD,CAAyB,SAASA,CAAyB,OACtFE,EAAuB,MAAML,CAAiB,IAAIE,CAAoB,IACtEI,EAAa,QAAQD,CAAoB,SAASA,CAAoB,OACtEE,EAAmB,GAAGP,CAAiB,WACvCQ,EAAc,YAAYD,CAAgB,WAAWA,CAAgB,WAAWA,CAAgB,OAAOD,CAAU,KAAKP,CAAK,QAC3HU,EAAc,SAASD,CAAW,cAAcA,CAAW,SAC3DE,EAAmB,IAAIT,CAAsB,QAAQA,CAAsB,QAAQA,CAAsB,IACzGU,EAAa,WAAWD,CAAgB,GAAGN,CAAe,IAAIL,CAAK,IACnEa,EAAO,eACPC,EAAiB,SAASD,CAAI,QAAQD,CAAU,IAAIH,CAAW,IAC/DM,EAAY,UACZC,EAAY,SAASD,CAAS,OAC9BE,EAAY,UACZC,EAAY,SAASD,CAAS,OAC9BE,EAAO,kBACPC,GAAQ,IAAIH,CAAS,GAAGR,CAAW,IACnCY,GAAc,IAAIpB,CAAiB,QAAQA,CAAiB,QAAQA,CAAiB,IACrFqB,GAAY,KAAKD,EAAW,GAAGd,CAAU,IAAIP,CAAK,IAClDuB,GAAQ,IAAIR,CAAS,GAAGN,CAAW,IACnCe,GAAS,IAAIX,CAAI,OAAOJ,CAAW,IACnCgB,GAAa,IAAIZ,CAAI,QAAQS,EAAS,QACtCI,GAAO,wBACb,SAASC,EAAWC,EAAQ,CAC1B,OAAO,IAAI,OAAOA,CAAM,CAC1B,CACA,SAASC,EAAWC,EAAS,CAC3B,MAAO,CAACA,GAAWA,EAAQ,YAAW,IAAO,KAAOA,IAAY,GAClE,CACA,SAASC,KAAQC,EAAK,CACpB,OAAQC,GACCD,EAAI,OAAO,CAACE,EAAGC,IAAMA,EAAED,CAAC,EAAGD,CAAC,CAEvC,CACA,SAASG,EAAkBC,EAAkB,CAC3C,OAAOA,EAAiB,MAAMV,EAAWF,EAAU,CAAC,CACtD,CACA,SAASa,EAAeC,EAAOC,EAAOC,EAAOC,EAAa,CACxD,MAAMC,EAAe,GAAGJ,CAAK,IAAIC,CAAK,IAAIC,CAAK,GAC/C,OAAIC,EACK,GAAGC,CAAY,IAAID,CAAW,GAEhCC,CACT,CACA,SAASC,GAAYC,EAAO,CAC1B,OAAOA,EAAM,QACXlB,EAAWjB,CAAW,EACtB,CAACoC,EAAQC,EAAMC,EAAWC,EAAWC,EAAWC,EAAiBC,EAAYC,EAAIC,EAASC,EAASC,EAASC,KACtG5B,EAAWmB,CAAS,EACtBD,EAAO,GACElB,EAAWoB,CAAS,EAC7BF,EAAO,KAAKC,CAAS,OACZnB,EAAWqB,CAAS,EAC7BH,EAAO,KAAKC,CAAS,IAAIC,CAAS,KAElCF,EAAO,KAAKA,CAAI,GAEdlB,EAAWyB,CAAO,EACpBD,EAAK,GACIxB,EAAW0B,CAAO,EAC3BF,EAAK,IAAI,CAACC,EAAU,CAAC,SACZzB,EAAW2B,CAAO,EAC3BH,EAAK,IAAIC,CAAO,IAAI,CAACC,EAAU,CAAC,OACvBE,EACTJ,EAAK,KAAKC,CAAO,IAAIC,CAAO,IAAIC,CAAO,IAAIC,CAAY,GAEvDJ,EAAK,KAAKA,CAAE,GAEP,GAAGN,CAAI,IAAIM,CAAE,GAAG,KAAM,EAEhC,CACH,CACA,SAASK,GAAoBb,EAAO,CAClC,OAAOA,EAAM,QAAQlB,EAAWb,CAAc,EAAG,QAAQ,CAC3D,CACA,SAAS6C,GAAed,EAAO,CAC7B,OAAOA,EAAM,QAAQlB,EAAWX,CAAS,EAAG,KAAK,CACnD,CACA,SAAS4C,GAAef,EAAO,CAC7B,OAAOA,EAAM,QAAQlB,EAAWT,CAAS,EAAG,KAAK,CACnD,CACA,SAAS2C,GAAYhB,EAAO,CAC1B,OAAOA,EAAM,OAAO,MAAM,KAAK,EAAE,IAAKiB,GAC7BA,EAAa,QAClBnC,EAAWP,EAAK,EAChB,CAAC2C,EAAGxB,EAAOC,EAAOC,EAAOC,IACnBb,EAAWU,CAAK,EACX,GACEV,EAAWW,CAAK,EAClB,KAAKD,CAAK,SAAS,CAACA,EAAQ,CAAC,SAC3BV,EAAWY,CAAK,EACrBF,IAAU,IACL,KAAKA,CAAK,IAAIC,CAAK,OAAOD,CAAK,IAAI,CAACC,EAAQ,CAAC,OAE7C,KAAKD,CAAK,IAAIC,CAAK,OAAO,CAACD,EAAQ,CAAC,SAEpCG,EACLH,IAAU,IACRC,IAAU,IACL,KAAKD,CAAK,IAAIC,CAAK,IAAIC,CAAK,IAAIC,CAAW,KAAKH,CAAK,IAAIC,CAAK,IAAI,CAACC,EAAQ,CAAC,KAE5E,KAAKF,CAAK,IAAIC,CAAK,IAAIC,CAAK,IAAIC,CAAW,KAAKH,CAAK,IAAI,CAACC,EAAQ,CAAC,OAGrE,KAAKD,CAAK,IAAIC,CAAK,IAAIC,CAAK,IAAIC,CAAW,KAAK,CAACH,EAAQ,CAAC,SAG/DA,IAAU,IACRC,IAAU,IACL,KAAKD,CAAK,IAAIC,CAAK,IAAIC,CAAK,KAAKF,CAAK,IAAIC,CAAK,IAAI,CAACC,EAAQ,CAAC,KAE7D,KAAKF,CAAK,IAAIC,CAAK,IAAIC,CAAK,KAAKF,CAAK,IAAI,CAACC,EAAQ,CAAC,OAGxD,KAAKD,CAAK,IAAIC,CAAK,IAAIC,CAAK,KAAK,CAACF,EAAQ,CAAC,QAGvD,CACF,EAAE,KAAK,GAAG,CACb,CACA,SAASyB,GAAYnB,EAAO,CAC1B,OAAOA,EAAM,OAAO,MAAM,KAAK,EAAE,IAAKiB,GAC7BA,EAAa,QAClBnC,EAAWJ,EAAK,EAChB,CAACwC,EAAGxB,EAAOC,EAAOC,EAAOC,IACnBb,EAAWU,CAAK,EACX,GACEV,EAAWW,CAAK,EAClB,KAAKD,CAAK,SAAS,CAACA,EAAQ,CAAC,SAC3BV,EAAWY,CAAK,EAClB,KAAKF,CAAK,IAAIC,CAAK,OAAOD,CAAK,IAAI,CAACC,EAAQ,CAAC,OAC3CE,EACF,KAAKH,CAAK,IAAIC,CAAK,IAAIC,CAAK,IAAIC,CAAW,KAAKH,CAAK,IAAI,CAACC,EAAQ,CAAC,OAErE,KAAKD,CAAK,IAAIC,CAAK,IAAIC,CAAK,KAAKF,CAAK,IAAI,CAACC,EAAQ,CAAC,MAE9D,CACF,EAAE,KAAK,GAAG,CACb,CACA,SAASyB,GAAapB,EAAO,CAC3B,OAAOA,EAAM,MAAM,KAAK,EAAE,IAAKiB,GACtBA,EAAa,KAAI,EAAG,QACzBnC,EAAWH,EAAM,EACjB,CAAC0C,EAAKC,EAAO5B,EAAOC,EAAOC,EAAOC,IAAgB,CAChD,MAAM0B,EAAWvC,EAAWU,CAAK,EAC3B8B,EAAWD,GAAYvC,EAAWW,CAAK,EACvC8B,EAAWD,GAAYxC,EAAWY,CAAK,EAK7C,OAJI0B,IAAU,KAAOG,IACnBH,EAAQ,IAEVzB,EAAc,GACV0B,EACED,IAAU,KAAOA,IAAU,IACtB,WAEA,IAEAA,GAASG,GACdD,IACF7B,EAAQ,GAEVC,EAAQ,EACJ0B,IAAU,KACZA,EAAQ,KACJE,GACF9B,EAAQ,CAACA,EAAQ,EACjBC,EAAQ,EACRC,EAAQ,IAERD,EAAQ,CAACA,EAAQ,EACjBC,EAAQ,IAED0B,IAAU,OACnBA,EAAQ,IACJE,EACF9B,EAAQ,CAACA,EAAQ,EAEjBC,EAAQ,CAACA,EAAQ,GAGjB2B,IAAU,MACZzB,EAAc,MAET,GAAGyB,EAAQ5B,CAAK,IAAIC,CAAK,IAAIC,CAAK,GAAGC,CAAW,IAC9C2B,EACF,KAAK9B,CAAK,OAAOG,CAAW,KAAK,CAACH,EAAQ,CAAC,SACzC+B,EACF,KAAK/B,CAAK,IAAIC,CAAK,KAAKE,CAAW,KAAKH,CAAK,IAAI,CAACC,EAAQ,CAAC,OAE7D0B,CACf,CACK,CACF,EAAE,KAAK,GAAG,CACb,CACA,SAASK,GAAU1B,EAAO,CACxB,OAAOA,EAAM,OAAO,QAAQlB,EAAWR,CAAI,EAAG,EAAE,CAClD,CACA,SAASqD,GAAUnC,EAAkB,CACnC,OAAOA,EAAiB,OAAO,QAAQV,EAAWD,EAAI,EAAG,EAAE,CAC7D,CACA,SAAS+C,EAAYC,EAAWC,EAAa,CAG3C,OAFAD,EAAY,CAACA,GAAaA,EAC1BC,EAAc,CAACA,GAAeA,EAC1BD,EAAYC,EACP,EAELD,IAAcC,EACT,EAEF,EACT,CACA,SAASC,GAAkBF,EAAWC,EAAa,CACjD,KAAM,CAAE,WAAYE,CAAe,EAAKH,EAClC,CAAE,WAAYI,CAAiB,EAAKH,EAC1C,GAAIE,IAAoB,QAAYC,EAClC,MAAO,GAET,GAAMD,GAAmBC,IAAsB,OAC7C,MAAO,GAET,GAAID,IAAoB,QAAUC,IAAsB,OACtD,MAAO,GAET,QAASC,EAAI,EAAGC,EAAIH,EAAgB,OAAQE,GAAKC,EAAGD,IAAK,CACvD,MAAME,EAAeJ,EAAgBE,CAAC,EAChCG,EAAiBJ,EAAkBC,CAAC,EAC1C,GAAIE,IAAiBC,EAGrB,OAAID,IAAiB,QAAUC,IAAmB,OACzC,EAEJD,EAGAC,EAGET,EAAYQ,EAAcC,CAAc,EAFtC,GAHA,CAMb,CACE,MAAO,EACT,CACA,SAASC,EAAeT,EAAWC,EAAa,CAC9C,OAAOF,EAAYC,EAAU,MAAOC,EAAY,KAAK,GAAKF,EAAYC,EAAU,MAAOC,EAAY,KAAK,GAAKF,EAAYC,EAAU,MAAOC,EAAY,KAAK,GAAKC,GAAkBF,EAAWC,CAAW,CAC1M,CACA,SAASS,EAAGV,EAAWC,EAAa,CAClC,OAAOD,EAAU,UAAYC,EAAY,OAC3C,CACA,SAASU,GAAQX,EAAWC,EAAa,CACvC,OAAQD,EAAU,SAAQ,CACxB,IAAK,GACL,IAAK,IACH,OAAOU,EAAGV,EAAWC,CAAW,EAClC,IAAK,IACH,OAAOQ,EAAeT,EAAWC,CAAW,EAAI,EAClD,IAAK,KACH,OAAOS,EAAGV,EAAWC,CAAW,GAAKQ,EAAeT,EAAWC,CAAW,EAAI,EAChF,IAAK,IACH,OAAOQ,EAAeT,EAAWC,CAAW,EAAI,EAClD,IAAK,KACH,OAAOS,EAAGV,EAAWC,CAAW,GAAKQ,EAAeT,EAAWC,CAAW,EAAI,EAChF,KAAK,OACH,MAAO,GAET,QACE,MAAO,EACb,CACA,CACA,SAASW,GAAsBzC,EAAO,CACpC,OAAOd,EACL8B,GACAG,GACAC,GACAM,EACD,EAAC1B,CAAK,CACT,CACA,SAAS0C,GAAW1C,EAAO,CACzB,OAAOd,EACLa,GACAc,GACAC,GACAC,EACJ,EAAIf,EAAM,MAAM,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,CACvC,CACA,SAAS2C,GAAQ1D,EAASe,EAAO,CAC/B,GAAI,CAACf,EACH,MAAO,GAIT,MAAM2D,EAFcF,GAAW1C,CAAK,EACC,MAAM,GAAG,EAAE,IAAKiB,GAAiBwB,GAAsBxB,CAAY,CAAC,EAAE,KAAK,GAAG,EAC9E,MAAM,KAAK,EAAE,IAAK4B,GAAgBlB,GAAUkB,CAAW,CAAC,EACvFC,EAAmBvD,EAAkBN,CAAO,EAClD,GAAI,CAAC6D,EACH,MAAO,GAET,KAAM,CACR,CACIC,EACJ,CACIC,EACAC,EACAC,EACAjB,CACJ,EAAMa,EACEhB,EAAc,CAElB,QAASrC,EACPuD,EACAC,EACAC,EACAjB,CACD,EACD,MAAOe,EACP,MAAOC,EACP,MAAOC,EACP,WAAiDjB,GAAkB,MAAM,GAAG,CAC7E,EACD,UAAWY,KAAeD,EAAa,CACrC,MAAMO,EAAsB5D,EAAkBsD,CAAW,EACzD,GAAI,CAACM,EACH,MAAO,GAET,KAAM,CACV,CACMC,EACN,CACMC,EACAC,EACAC,EACAvB,CACN,EAAQmB,EACEtB,EAAY,CAChB,SAAUuB,EACV,QAAS3D,EACP4D,EACAC,EACAC,EACAvB,CACD,EACD,MAAOqB,EACP,MAAOC,EACP,MAAOC,EACP,WAA+CvB,GAAgB,MAAM,GAAG,CACzE,EACD,GAAI,CAACQ,GAAQX,EAAWC,CAAW,EACjC,MAAO,EAEb,CACE,MAAO,EACT","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"_virtual___federation_fn_import-DXu2m-ZE.js","sources":["../../../../node_modules/.pnpm/@originjs+vite-plugin-federation@1.3.6/node_modules/@originjs/vite-plugin-federation/dist/satisfy.mjs"],"sourcesContent":["const buildIdentifier = \"[0-9A-Za-z-]+\";\nconst build = `(?:\\\\+(${buildIdentifier}(?:\\\\.${buildIdentifier})*))`;\nconst numericIdentifier = \"0|[1-9]\\\\d*\";\nconst numericIdentifierLoose = \"[0-9]+\";\nconst nonNumericIdentifier = \"\\\\d*[a-zA-Z-][a-zA-Z0-9-]*\";\nconst preReleaseIdentifierLoose = `(?:${numericIdentifierLoose}|${nonNumericIdentifier})`;\nconst preReleaseLoose = `(?:-?(${preReleaseIdentifierLoose}(?:\\\\.${preReleaseIdentifierLoose})*))`;\nconst preReleaseIdentifier = `(?:${numericIdentifier}|${nonNumericIdentifier})`;\nconst preRelease = `(?:-(${preReleaseIdentifier}(?:\\\\.${preReleaseIdentifier})*))`;\nconst xRangeIdentifier = `${numericIdentifier}|x|X|\\\\*`;\nconst xRangePlain = `[v=\\\\s]*(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:\\\\.(${xRangeIdentifier})(?:${preRelease})?${build}?)?)?`;\nconst hyphenRange = `^\\\\s*(${xRangePlain})\\\\s+-\\\\s+(${xRangePlain})\\\\s*$`;\nconst mainVersionLoose = `(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})\\\\.(${numericIdentifierLoose})`;\nconst loosePlain = `[v=\\\\s]*${mainVersionLoose}${preReleaseLoose}?${build}?`;\nconst gtlt = \"((?:<|>)?=?)\";\nconst comparatorTrim = `(\\\\s*)${gtlt}\\\\s*(${loosePlain}|${xRangePlain})`;\nconst loneTilde = \"(?:~>?)\";\nconst tildeTrim = `(\\\\s*)${loneTilde}\\\\s+`;\nconst loneCaret = \"(?:\\\\^)\";\nconst caretTrim = `(\\\\s*)${loneCaret}\\\\s+`;\nconst star = \"(<|>)?=?\\\\s*\\\\*\";\nconst caret = `^${loneCaret}${xRangePlain}$`;\nconst mainVersion = `(${numericIdentifier})\\\\.(${numericIdentifier})\\\\.(${numericIdentifier})`;\nconst fullPlain = `v?${mainVersion}${preRelease}?${build}?`;\nconst tilde = `^${loneTilde}${xRangePlain}$`;\nconst xRange = `^${gtlt}\\\\s*${xRangePlain}$`;\nconst comparator = `^${gtlt}\\\\s*(${fullPlain})$|^$`;\nconst gte0 = \"^\\\\s*>=\\\\s*0.0.0\\\\s*$\";\nfunction parseRegex(source) {\n return new RegExp(source);\n}\nfunction isXVersion(version) {\n return !version || version.toLowerCase() === \"x\" || version === \"*\";\n}\nfunction pipe(...fns) {\n return (x) => {\n return fns.reduce((v, f) => f(v), x);\n };\n}\nfunction extractComparator(comparatorString) {\n return comparatorString.match(parseRegex(comparator));\n}\nfunction combineVersion(major, minor, patch, preRelease2) {\n const mainVersion2 = `${major}.${minor}.${patch}`;\n if (preRelease2) {\n return `${mainVersion2}-${preRelease2}`;\n }\n return mainVersion2;\n}\nfunction parseHyphen(range) {\n return range.replace(\n parseRegex(hyphenRange),\n (_range, from, fromMajor, fromMinor, fromPatch, _fromPreRelease, _fromBuild, to, toMajor, toMinor, toPatch, toPreRelease) => {\n if (isXVersion(fromMajor)) {\n from = \"\";\n } else if (isXVersion(fromMinor)) {\n from = `>=${fromMajor}.0.0`;\n } else if (isXVersion(fromPatch)) {\n from = `>=${fromMajor}.${fromMinor}.0`;\n } else {\n from = `>=${from}`;\n }\n if (isXVersion(toMajor)) {\n to = \"\";\n } else if (isXVersion(toMinor)) {\n to = `<${+toMajor + 1}.0.0-0`;\n } else if (isXVersion(toPatch)) {\n to = `<${toMajor}.${+toMinor + 1}.0-0`;\n } else if (toPreRelease) {\n to = `<=${toMajor}.${toMinor}.${toPatch}-${toPreRelease}`;\n } else {\n to = `<=${to}`;\n }\n return `${from} ${to}`.trim();\n }\n );\n}\nfunction parseComparatorTrim(range) {\n return range.replace(parseRegex(comparatorTrim), \"$1$2$3\");\n}\nfunction parseTildeTrim(range) {\n return range.replace(parseRegex(tildeTrim), \"$1~\");\n}\nfunction parseCaretTrim(range) {\n return range.replace(parseRegex(caretTrim), \"$1^\");\n}\nfunction parseCarets(range) {\n return range.trim().split(/\\s+/).map((rangeVersion) => {\n return rangeVersion.replace(\n parseRegex(caret),\n (_, major, minor, patch, preRelease2) => {\n if (isXVersion(major)) {\n return \"\";\n } else if (isXVersion(minor)) {\n return `>=${major}.0.0 <${+major + 1}.0.0-0`;\n } else if (isXVersion(patch)) {\n if (major === \"0\") {\n return `>=${major}.${minor}.0 <${major}.${+minor + 1}.0-0`;\n } else {\n return `>=${major}.${minor}.0 <${+major + 1}.0.0-0`;\n }\n } else if (preRelease2) {\n if (major === \"0\") {\n if (minor === \"0\") {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${major}.${minor}.${+patch + 1}-0`;\n } else {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${major}.${+minor + 1}.0-0`;\n }\n } else {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${+major + 1}.0.0-0`;\n }\n } else {\n if (major === \"0\") {\n if (minor === \"0\") {\n return `>=${major}.${minor}.${patch} <${major}.${minor}.${+patch + 1}-0`;\n } else {\n return `>=${major}.${minor}.${patch} <${major}.${+minor + 1}.0-0`;\n }\n }\n return `>=${major}.${minor}.${patch} <${+major + 1}.0.0-0`;\n }\n }\n );\n }).join(\" \");\n}\nfunction parseTildes(range) {\n return range.trim().split(/\\s+/).map((rangeVersion) => {\n return rangeVersion.replace(\n parseRegex(tilde),\n (_, major, minor, patch, preRelease2) => {\n if (isXVersion(major)) {\n return \"\";\n } else if (isXVersion(minor)) {\n return `>=${major}.0.0 <${+major + 1}.0.0-0`;\n } else if (isXVersion(patch)) {\n return `>=${major}.${minor}.0 <${major}.${+minor + 1}.0-0`;\n } else if (preRelease2) {\n return `>=${major}.${minor}.${patch}-${preRelease2} <${major}.${+minor + 1}.0-0`;\n }\n return `>=${major}.${minor}.${patch} <${major}.${+minor + 1}.0-0`;\n }\n );\n }).join(\" \");\n}\nfunction parseXRanges(range) {\n return range.split(/\\s+/).map((rangeVersion) => {\n return rangeVersion.trim().replace(\n parseRegex(xRange),\n (ret, gtlt2, major, minor, patch, preRelease2) => {\n const isXMajor = isXVersion(major);\n const isXMinor = isXMajor || isXVersion(minor);\n const isXPatch = isXMinor || isXVersion(patch);\n if (gtlt2 === \"=\" && isXPatch) {\n gtlt2 = \"\";\n }\n preRelease2 = \"\";\n if (isXMajor) {\n if (gtlt2 === \">\" || gtlt2 === \"<\") {\n return \"<0.0.0-0\";\n } else {\n return \"*\";\n }\n } else if (gtlt2 && isXPatch) {\n if (isXMinor) {\n minor = 0;\n }\n patch = 0;\n if (gtlt2 === \">\") {\n gtlt2 = \">=\";\n if (isXMinor) {\n major = +major + 1;\n minor = 0;\n patch = 0;\n } else {\n minor = +minor + 1;\n patch = 0;\n }\n } else if (gtlt2 === \"<=\") {\n gtlt2 = \"<\";\n if (isXMinor) {\n major = +major + 1;\n } else {\n minor = +minor + 1;\n }\n }\n if (gtlt2 === \"<\") {\n preRelease2 = \"-0\";\n }\n return `${gtlt2 + major}.${minor}.${patch}${preRelease2}`;\n } else if (isXMinor) {\n return `>=${major}.0.0${preRelease2} <${+major + 1}.0.0-0`;\n } else if (isXPatch) {\n return `>=${major}.${minor}.0${preRelease2} <${major}.${+minor + 1}.0-0`;\n }\n return ret;\n }\n );\n }).join(\" \");\n}\nfunction parseStar(range) {\n return range.trim().replace(parseRegex(star), \"\");\n}\nfunction parseGTE0(comparatorString) {\n return comparatorString.trim().replace(parseRegex(gte0), \"\");\n}\nfunction compareAtom(rangeAtom, versionAtom) {\n rangeAtom = +rangeAtom || rangeAtom;\n versionAtom = +versionAtom || versionAtom;\n if (rangeAtom > versionAtom) {\n return 1;\n }\n if (rangeAtom === versionAtom) {\n return 0;\n }\n return -1;\n}\nfunction comparePreRelease(rangeAtom, versionAtom) {\n const { preRelease: rangePreRelease } = rangeAtom;\n const { preRelease: versionPreRelease } = versionAtom;\n if (rangePreRelease === void 0 && !!versionPreRelease) {\n return 1;\n }\n if (!!rangePreRelease && versionPreRelease === void 0) {\n return -1;\n }\n if (rangePreRelease === void 0 && versionPreRelease === void 0) {\n return 0;\n }\n for (let i = 0, n = rangePreRelease.length; i <= n; i++) {\n const rangeElement = rangePreRelease[i];\n const versionElement = versionPreRelease[i];\n if (rangeElement === versionElement) {\n continue;\n }\n if (rangeElement === void 0 && versionElement === void 0) {\n return 0;\n }\n if (!rangeElement) {\n return 1;\n }\n if (!versionElement) {\n return -1;\n }\n return compareAtom(rangeElement, versionElement);\n }\n return 0;\n}\nfunction compareVersion(rangeAtom, versionAtom) {\n return compareAtom(rangeAtom.major, versionAtom.major) || compareAtom(rangeAtom.minor, versionAtom.minor) || compareAtom(rangeAtom.patch, versionAtom.patch) || comparePreRelease(rangeAtom, versionAtom);\n}\nfunction eq(rangeAtom, versionAtom) {\n return rangeAtom.version === versionAtom.version;\n}\nfunction compare(rangeAtom, versionAtom) {\n switch (rangeAtom.operator) {\n case \"\":\n case \"=\":\n return eq(rangeAtom, versionAtom);\n case \">\":\n return compareVersion(rangeAtom, versionAtom) < 0;\n case \">=\":\n return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) < 0;\n case \"<\":\n return compareVersion(rangeAtom, versionAtom) > 0;\n case \"<=\":\n return eq(rangeAtom, versionAtom) || compareVersion(rangeAtom, versionAtom) > 0;\n case void 0: {\n return true;\n }\n default:\n return false;\n }\n}\nfunction parseComparatorString(range) {\n return pipe(\n parseCarets,\n parseTildes,\n parseXRanges,\n parseStar\n )(range);\n}\nfunction parseRange(range) {\n return pipe(\n parseHyphen,\n parseComparatorTrim,\n parseTildeTrim,\n parseCaretTrim\n )(range.trim()).split(/\\s+/).join(\" \");\n}\nfunction satisfy(version, range) {\n if (!version) {\n return false;\n }\n const parsedRange = parseRange(range);\n const parsedComparator = parsedRange.split(\" \").map((rangeVersion) => parseComparatorString(rangeVersion)).join(\" \");\n const comparators = parsedComparator.split(/\\s+/).map((comparator2) => parseGTE0(comparator2));\n const extractedVersion = extractComparator(version);\n if (!extractedVersion) {\n return false;\n }\n const [\n ,\n versionOperator,\n ,\n versionMajor,\n versionMinor,\n versionPatch,\n versionPreRelease\n ] = extractedVersion;\n const versionAtom = {\n operator: versionOperator,\n version: combineVersion(\n versionMajor,\n versionMinor,\n versionPatch,\n versionPreRelease\n ),\n major: versionMajor,\n minor: versionMinor,\n patch: versionPatch,\n preRelease: versionPreRelease == null ? void 0 : versionPreRelease.split(\".\")\n };\n for (const comparator2 of comparators) {\n const extractedComparator = extractComparator(comparator2);\n if (!extractedComparator) {\n return false;\n }\n const [\n ,\n rangeOperator,\n ,\n rangeMajor,\n rangeMinor,\n rangePatch,\n rangePreRelease\n ] = extractedComparator;\n const rangeAtom = {\n operator: rangeOperator,\n version: combineVersion(\n rangeMajor,\n rangeMinor,\n rangePatch,\n rangePreRelease\n ),\n major: rangeMajor,\n minor: rangeMinor,\n patch: rangePatch,\n preRelease: rangePreRelease == null ? void 0 : rangePreRelease.split(\".\")\n };\n if (!compare(rangeAtom, versionAtom)) {\n return false;\n }\n }\n return true;\n}\nexport {\n satisfy\n};\n"],"names":["buildIdentifier","build","numericIdentifier","numericIdentifierLoose","nonNumericIdentifier","preReleaseIdentifierLoose","preReleaseLoose","preReleaseIdentifier","preRelease","xRangeIdentifier","xRangePlain","hyphenRange","mainVersionLoose","loosePlain","gtlt","comparatorTrim","loneTilde","tildeTrim","loneCaret","caretTrim","star","caret","mainVersion","fullPlain","tilde","xRange","comparator","gte0","parseRegex","source","isXVersion","version","pipe","fns","x","v","f","extractComparator","comparatorString","combineVersion","major","minor","patch","preRelease2","mainVersion2","parseHyphen","range","_range","from","fromMajor","fromMinor","fromPatch","_fromPreRelease","_fromBuild","to","toMajor","toMinor","toPatch","toPreRelease","parseComparatorTrim","parseTildeTrim","parseCaretTrim","parseCarets","rangeVersion","_","parseTildes","parseXRanges","ret","gtlt2","isXMajor","isXMinor","isXPatch","parseStar","parseGTE0","compareAtom","rangeAtom","versionAtom","comparePreRelease","rangePreRelease","versionPreRelease","i","n","rangeElement","versionElement","compareVersion","eq","compare","parseComparatorString","parseRange","satisfy","comparators","comparator2","extractedVersion","versionOperator","versionMajor","versionMinor","versionPatch","extractedComparator","rangeOperator","rangeMajor","rangeMinor","rangePatch"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{i as t}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{z as y,s as R}from"./index-BUYA3Tes.js";import{K as F}from"./index-BGLRovL6.js";import{u as L}from"./use-definition-schema-e7us6WfR.js";const{appEntityType:P,authConfigSpec:D,createWebAppSchema:k}=await t("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:E,useProjectDefinition:M,useResettableForm:N}=await t("@baseplate-dev/project-builder-lib/web"),{Button:W,FormActionBar:B,InputFieldController:K,MultiComboboxFieldController:U,SectionList:I,SectionListSection:h,SectionListSectionContent:u,SectionListSectionDescription:x,SectionListSectionHeader:b,SectionListSectionTitle:f,SwitchFieldController:O}=await t("@baseplate-dev/ui-components"),{Link:T}=await t("@tanstack/react-router"),Q=function(){const{webDefinition:s}=y.useRouteContext(),{definition:j,saveDefinitionWithFeedback:S,pluginContainer:g}=M(),A=L(k),a=N({resolver:R(A),values:s}),{control:i,handleSubmit:w,reset:C,watch:c}=a,r=w(n=>S(p=>{p.apps=p.apps.map(m=>m.id===s.id?n:m)}));E({control:i,reset:C,onSubmit:r});const l=g.getPluginSpecOptional(D)?.getAuthRoles(j).map(n=>({label:n.name,value:n.id})),d=c("adminApp.enabled"),o=c("adminApp.sections")??[],v=P.keyFromId(s.id);return e.jsxs("form",{className:"w-full max-w-7xl space-y-4 p-4",onSubmit:r,children:[e.jsxs(I,{children:[e.jsxs(h,{children:[e.jsxs(b,{children:[e.jsx(f,{children:"Admin Configuration"}),e.jsx(x,{children:"Configure administrative features for your web application."})]}),e.jsxs(u,{className:"space-y-6",children:[e.jsx(O,{label:"Enable Admin Panel",description:"Add administrative interface to your web application",control:i,name:"adminApp.enabled"}),d&&e.jsxs(e.Fragment,{children:[e.jsx(K,{label:"Admin Path Prefix",placeholder:"/admin",description:"URL prefix for admin routes (e.g. /admin)",control:i,name:"adminApp.pathPrefix"}),l&&e.jsx(U,{label:"Admin Access Roles",description:"Which roles can access the admin panel",control:i,options:l,name:"adminApp.allowedRoles"})]})]})]}),d&&e.jsxs(h,{children:[e.jsxs(b,{children:[e.jsx(f,{children:"Admin Sections"}),e.jsxs(x,{children:["Manage CRUD interfaces for your data models.",o.length>0&&e.jsxs("span",{className:"ml-2 text-sm",children:["(",o.length," section",o.length===1?"":"s"," ","configured)"]})]})]}),e.jsx(u,{children:e.jsx(W,{variant:"secondary",asChild:!0,children:e.jsxs(T,{to:"/admin-sections/$appKey",params:{appKey:v},children:[e.jsx(F,{}),"Manage Admin Sections"]})})})]})]}),e.jsx(B,{form:a})]})};export{Q as component};
2
+ //# sourceMappingURL=admin-Bw70Pql0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-Bw70Pql0.js","sources":["../../src/routes/apps/edit.$key/web/admin.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n appEntityType,\n authConfigSpec,\n createWebAppSchema,\n} from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n FormActionBar,\n InputFieldController,\n MultiComboboxFieldController,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchFieldController,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute, Link } from '@tanstack/react-router';\nimport { MdSettings } from 'react-icons/md';\n\nimport { useDefinitionSchema } from '#src/hooks/use-definition-schema.js';\n\nexport const Route = createFileRoute('/apps/edit/$key/web/admin')({\n component: WebAdminPage,\n});\n\nfunction WebAdminPage(): React.JSX.Element {\n const { webDefinition } = Route.useRouteContext();\n const { definition, saveDefinitionWithFeedback, pluginContainer } =\n useProjectDefinition();\n const webAppSchema = useDefinitionSchema(createWebAppSchema);\n\n const formProps = useResettableForm({\n resolver: zodResolver(webAppSchema),\n values: webDefinition,\n });\n const { control, handleSubmit, reset, watch } = formProps;\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.apps = draftConfig.apps.map((app) =>\n app.id === webDefinition.id ? data : app,\n );\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n const roleOptions = pluginContainer\n .getPluginSpecOptional(authConfigSpec)\n ?.getAuthRoles(definition)\n .map((role) => ({\n label: role.name,\n value: role.id,\n }));\n\n const adminEnabled = watch('adminApp.enabled');\n const sections = watch('adminApp.sections') ?? [];\n\n // Get the app key for navigation\n const appKey = appEntityType.keyFromId(webDefinition.id);\n\n return (\n <form className=\"w-full max-w-7xl space-y-4 p-4\" onSubmit={onSubmit}>\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>\n Admin Configuration\n </SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure administrative features for your web application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"space-y-6\">\n <SwitchFieldController\n label=\"Enable Admin Panel\"\n description=\"Add administrative interface to your web application\"\n control={control}\n name=\"adminApp.enabled\"\n />\n\n {adminEnabled && (\n <>\n <InputFieldController\n label=\"Admin Path Prefix\"\n placeholder=\"/admin\"\n description=\"URL prefix for admin routes (e.g. /admin)\"\n control={control}\n name=\"adminApp.pathPrefix\"\n />\n\n {roleOptions && (\n <MultiComboboxFieldController\n label=\"Admin Access Roles\"\n description=\"Which roles can access the admin panel\"\n control={control}\n options={roleOptions}\n name=\"adminApp.allowedRoles\"\n />\n )}\n </>\n )}\n </SectionListSectionContent>\n </SectionListSection>\n\n {adminEnabled && (\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Admin Sections</SectionListSectionTitle>\n <SectionListSectionDescription>\n Manage CRUD interfaces for your data models.\n {sections.length > 0 && (\n <span className=\"ml-2 text-sm\">\n ({sections.length} section{sections.length === 1 ? '' : 's'}{' '}\n configured)\n </span>\n )}\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <Button variant=\"secondary\" asChild>\n <Link to=\"/admin-sections/$appKey\" params={{ appKey }}>\n <MdSettings />\n Manage Admin Sections\n </Link>\n </Button>\n </SectionListSectionContent>\n </SectionListSection>\n )}\n </SectionList>\n <FormActionBar form={formProps} />\n </form>\n );\n}\n"],"names":["appEntityType","authConfigSpec","createWebAppSchema","importShared","useBlockUnsavedChangesNavigate","useProjectDefinition","useResettableForm","Button","FormActionBar","InputFieldController","MultiComboboxFieldController","SectionList","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","SwitchFieldController","Link","SplitComponent","webDefinition","Route","useRouteContext","definition","saveDefinitionWithFeedback","pluginContainer","webAppSchema","useDefinitionSchema","formProps","resolver","zodResolver","values","control","handleSubmit","reset","watch","onSubmit","draftConfig","apps","map","app","id","data","roleOptions","getPluginSpecOptional","getAuthRoles","role","label","name","value","adminEnabled","sections","appKey","keyFromId","jsxs","jsx","Fragment","length","MdSettings"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as s}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{g as k,s as g}from"./index-BUYA3Tes.js";import{u as v}from"./use-definition-schema-e7us6WfR.js";const{createBackendAppSchema:L}=await s("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:E,useProjectDefinition:B,useResettableForm:P}=await s("@baseplate-dev/project-builder-lib/web"),{FormActionBar:w,InputFieldController:l,SectionList:y,SectionListSection:p,SectionListSectionContent:d,SectionListSectionDescription:b,SectionListSectionHeader:m,SectionListSectionTitle:u,SwitchFieldController:i}=await s("@baseplate-dev/ui-components"),N=function(){const{saveDefinitionWithFeedback:x}=B(),{backendDefinition:n}=k.useLoaderData(),j=v(L),o=P({resolver:g(j),values:n}),{control:a,handleSubmit:h,reset:S}=o,t=h(f=>x(r=>{r.apps=r.apps.map(c=>c.id===n.id?f:c)}));return E({control:a,reset:S,onSubmit:t}),e.jsxs("form",{className:"w-full max-w-7xl space-y-4 px-4",onSubmit:t,children:[e.jsxs(y,{children:[e.jsxs(p,{children:[e.jsxs(m,{children:[e.jsx(u,{children:"General"}),e.jsx(b,{children:"Basic configuration for your backend application."})]}),e.jsxs(d,{className:"space-y-6",children:[e.jsx(l,{label:"Name",control:a,name:"name"}),e.jsx(l,{label:"Package Location (optional)",placeholder:"e.g. packages/backend",control:a,name:"packageLocation"})]})]}),e.jsxs(p,{children:[e.jsxs(m,{children:[e.jsx(u,{children:"Configuration"}),e.jsx(b,{children:"Enable or disable external services and features for your backend application."})]}),e.jsx(d,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(i,{control:a,name:"enableStripe",label:"Stripe",description:"Enable Stripe for payment processing"}),e.jsx(i,{control:a,name:"enablePostmark",label:"Postmark",description:"Enable Postmark for email delivery"}),e.jsx(i,{control:a,name:"enableRedis",label:"Redis",description:"Enable Redis for caching and session storage"}),e.jsx(i,{control:a,name:"enableBullQueue",label:"Bull Queue",description:"Enable Bull Queue for background job processing"}),e.jsx(i,{control:a,name:"enableSubscriptions",label:"GraphQL Subscriptions",description:"Enable GraphQL Subscriptions for real-time updates"}),e.jsx(i,{control:a,name:"enableAxios",label:"Axios",description:"Enable Axios for HTTP requests"})]})})]})]}),e.jsx(w,{form:o})]})};export{N as component};
2
+ //# sourceMappingURL=backend-CoqSwiCt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend-hJNcdERv.js","sources":["../../src/routes/apps/edit.$key/backend.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { createBackendAppSchema } from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n FormActionBar,\n InputFieldController,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchFieldController,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute, notFound, redirect } from '@tanstack/react-router';\n\nimport { useDefinitionSchema } from '#src/hooks/use-definition-schema.js';\n\nexport const Route = createFileRoute('/apps/edit/$key/backend')({\n component: BackendAppEditPage,\n loader: ({ context: { app }, params: { key } }) => {\n if (!app) throw notFound();\n if (app.type !== 'backend') {\n throw redirect({ to: '/apps/edit/$key', params: { key } });\n }\n return {\n backendDefinition: app,\n };\n },\n});\n\nfunction BackendAppEditPage(): React.JSX.Element {\n const { saveDefinitionWithFeedback } = useProjectDefinition();\n const { backendDefinition } = Route.useLoaderData();\n\n const backendAppSchema = useDefinitionSchema(createBackendAppSchema);\n const formProps = useResettableForm({\n resolver: zodResolver(backendAppSchema),\n values: backendDefinition,\n });\n const { control, handleSubmit, reset } = formProps;\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.apps = draftConfig.apps.map((app) =>\n app.id === backendDefinition.id ? data : app,\n );\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n return (\n <form className=\"w-full max-w-7xl space-y-4 px-4\" onSubmit={onSubmit}>\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>General</SectionListSectionTitle>\n <SectionListSectionDescription>\n Basic configuration for your backend application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"space-y-6\">\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <InputFieldController\n label=\"Package Location (optional)\"\n placeholder=\"e.g. packages/backend\"\n control={control}\n name=\"packageLocation\"\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Configuration</SectionListSectionTitle>\n <SectionListSectionDescription>\n Enable or disable external services and features for your backend\n application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <div className=\"space-y-4\">\n <SwitchFieldController\n control={control}\n name=\"enableStripe\"\n label=\"Stripe\"\n description=\"Enable Stripe for payment processing\"\n />\n <SwitchFieldController\n control={control}\n name=\"enablePostmark\"\n label=\"Postmark\"\n description=\"Enable Postmark for email delivery\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableRedis\"\n label=\"Redis\"\n description=\"Enable Redis for caching and session storage\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableBullQueue\"\n label=\"Bull Queue\"\n description=\"Enable Bull Queue for background job processing\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableSubscriptions\"\n label=\"GraphQL Subscriptions\"\n description=\"Enable GraphQL Subscriptions for real-time updates\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableAxios\"\n label=\"Axios\"\n description=\"Enable Axios for HTTP requests\"\n />\n </div>\n </SectionListSectionContent>\n </SectionListSection>\n </SectionList>\n <FormActionBar form={formProps} />\n </form>\n );\n}\n"],"names":["createBackendAppSchema","importShared","useBlockUnsavedChangesNavigate","useProjectDefinition","useResettableForm","FormActionBar","InputFieldController","SectionList","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","SwitchFieldController","SplitComponent","saveDefinitionWithFeedback","backendDefinition","Route","useLoaderData","backendAppSchema","useDefinitionSchema","formProps","resolver","zodResolver","values","control","handleSubmit","reset","onSubmit","draftConfig","apps","map","app","id","data","jsxs","jsx"],"mappings":"qNAEA,KAAA,CAAA,uBAAAA,CAAA,EAAA,MAAAC,EAAA,oCAAA,EACA,CAAA,+BAAAC,EAAA,qBAAAC,EAAA,kBAAAC,CAAA,EAAA,MAAAH,EAAA,wCAAA,EAKA,CAAA,cAAAI,EAAA,qBAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,0BAAAC,EAAA,8BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,EAAA,sBAAAC,CAAA,EAAA,MAAAZ,EAAA,8BAAA,EAc0Ea,EAAA,UAezB,CACzC,KAAA,CAAEC,2BAAAA,GAA+BZ,EAAqB,EACtD,CAAEa,kBAAAA,CAAAA,EAAsBC,EAAMC,cAAc,EAE5CC,EAAmBC,EAAoBpB,CAAsB,EAC7DqB,EAAYjB,EAAkB,CAClCkB,SAAUC,EAAYJ,CAAgB,EACtCK,OAAQR,CAAAA,CACT,EACK,CAAES,QAAAA,EAASC,aAAAA,EAAcC,MAAAA,CAAAA,EAAUN,EAEnCO,EAAWF,EACfX,GAAAA,EAA4Cc,GAAA,CAC9BC,EAAAA,KAAOD,EAAYC,KAAKC,IAAKC,GACvCA,EAAIC,KAAOjB,EAAkBiB,GAAKC,EAAOF,CAC3C,CAAA,CACD,CACH,EAE+B,OAAA9B,EAAA,CAAEuB,QAAAA,EAASE,MAAAA,EAAOC,SAAAA,CAAAA,CAAU,EAGxDO,EAAAA,KAAA,OAAA,CAAK,UAAU,kCAAkC,SAAAP,EAChD,SAAA,CAAAO,OAAC5B,EACC,CAAA,SAAA,CAAA4B,OAAC3B,EACC,CAAA,SAAA,CAAA2B,OAACxB,EACC,CAAA,SAAA,CAAAyB,EAAAA,IAACxB,GAAwB,SAAO,SAAA,CAAA,EAChCwB,EAAAA,IAAC1B,GAA6B,SAE9B,mDAAA,CAAA,CAAA,EACF,EACAyB,EAAAA,KAAC1B,EAA0B,CAAA,UAAU,YACnC,SAAA,CAAA2B,EAAA,IAAC9B,EAAqB,CAAA,MAAM,OAAO,QAAAmB,EAAkB,KAAK,OAAM,EAChEW,MAAC9B,GACC,MAAM,8BACN,YAAY,wBACZ,QAAAmB,EACA,KAAK,iBAAiB,CAAA,CAAA,CAE1B,CAAA,CAAA,EACF,SAECjB,EACC,CAAA,SAAA,CAAA2B,OAACxB,EACC,CAAA,SAAA,CAAAyB,EAAAA,IAACxB,GAAwB,SAAa,eAAA,CAAA,EACtCwB,EAAAA,IAAC1B,GAA6B,SAG9B,gFAAA,CAAA,CAAA,EACF,EACC0B,MAAA3B,EAAA,CACC,SAAC0B,EAAAA,KAAA,MAAA,CAAI,UAAU,YACb,SAAA,CAAAC,MAACvB,GACC,QAAAY,EACA,KAAK,eACL,MAAM,SACN,YAAY,uCAAsC,EAEpDW,MAACvB,GACC,QAAAY,EACA,KAAK,iBACL,MAAM,WACN,YAAY,qCAAoC,EAElDW,MAACvB,GACC,QAAAY,EACA,KAAK,cACL,MAAM,QACN,YAAY,+CAA8C,EAE5DW,MAACvB,GACC,QAAAY,EACA,KAAK,kBACL,MAAM,aACN,YAAY,kDAAiD,EAE/DW,MAACvB,GACC,QAAAY,EACA,KAAK,sBACL,MAAM,wBACN,YAAY,qDAAoD,EAElEW,MAACvB,GACC,QAAAY,EACA,KAAK,cACL,MAAM,QACN,YAAY,gCAAgC,CAAA,CAAA,CAAA,CAEhD,CACF,CAAA,CAAA,CACF,CAAA,CAAA,EACF,EACAW,EAAAA,IAAC/B,EAAc,CAAA,KAAMgB,CAAU,CAAA,CAAA,EACjC,CAEJ"}
1
+ {"version":3,"file":"backend-CoqSwiCt.js","sources":["../../src/routes/apps/edit.$key/backend.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport { createBackendAppSchema } from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n FormActionBar,\n InputFieldController,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n SwitchFieldController,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute, notFound, redirect } from '@tanstack/react-router';\n\nimport { useDefinitionSchema } from '#src/hooks/use-definition-schema.js';\n\nexport const Route = createFileRoute('/apps/edit/$key/backend')({\n component: BackendAppEditPage,\n loader: ({ context: { app }, params: { key } }) => {\n if (!app) throw notFound();\n if (app.type !== 'backend') {\n throw redirect({ to: '/apps/edit/$key', params: { key } });\n }\n return {\n backendDefinition: app,\n };\n },\n});\n\nfunction BackendAppEditPage(): React.JSX.Element {\n const { saveDefinitionWithFeedback } = useProjectDefinition();\n const { backendDefinition } = Route.useLoaderData();\n\n const backendAppSchema = useDefinitionSchema(createBackendAppSchema);\n const formProps = useResettableForm({\n resolver: zodResolver(backendAppSchema),\n values: backendDefinition,\n });\n const { control, handleSubmit, reset } = formProps;\n\n const onSubmit = handleSubmit((data) =>\n saveDefinitionWithFeedback((draftConfig) => {\n draftConfig.apps = draftConfig.apps.map((app) =>\n app.id === backendDefinition.id ? data : app,\n );\n }),\n );\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n return (\n <form className=\"w-full max-w-7xl space-y-4 px-4\" onSubmit={onSubmit}>\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>General</SectionListSectionTitle>\n <SectionListSectionDescription>\n Basic configuration for your backend application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"space-y-6\">\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <InputFieldController\n label=\"Package Location (optional)\"\n placeholder=\"e.g. packages/backend\"\n control={control}\n name=\"packageLocation\"\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Configuration</SectionListSectionTitle>\n <SectionListSectionDescription>\n Enable or disable external services and features for your backend\n application.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <div className=\"space-y-4\">\n <SwitchFieldController\n control={control}\n name=\"enableStripe\"\n label=\"Stripe\"\n description=\"Enable Stripe for payment processing\"\n />\n <SwitchFieldController\n control={control}\n name=\"enablePostmark\"\n label=\"Postmark\"\n description=\"Enable Postmark for email delivery\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableRedis\"\n label=\"Redis\"\n description=\"Enable Redis for caching and session storage\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableBullQueue\"\n label=\"Bull Queue\"\n description=\"Enable Bull Queue for background job processing\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableSubscriptions\"\n label=\"GraphQL Subscriptions\"\n description=\"Enable GraphQL Subscriptions for real-time updates\"\n />\n <SwitchFieldController\n control={control}\n name=\"enableAxios\"\n label=\"Axios\"\n description=\"Enable Axios for HTTP requests\"\n />\n </div>\n </SectionListSectionContent>\n </SectionListSection>\n </SectionList>\n <FormActionBar form={formProps} />\n </form>\n );\n}\n"],"names":["createBackendAppSchema","importShared","useBlockUnsavedChangesNavigate","useProjectDefinition","useResettableForm","FormActionBar","InputFieldController","SectionList","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","SwitchFieldController","SplitComponent","saveDefinitionWithFeedback","backendDefinition","Route","useLoaderData","backendAppSchema","useDefinitionSchema","formProps","resolver","zodResolver","values","control","handleSubmit","reset","onSubmit","draftConfig","apps","map","app","id","data","jsxs","jsx"],"mappings":"uNAEA,KAAA,CAAA,uBAAAA,CAAA,EAAA,MAAAC,EAAA,oCAAA,EACA,CAAA,+BAAAC,EAAA,qBAAAC,EAAA,kBAAAC,CAAA,EAAA,MAAAH,EAAA,wCAAA,EAKA,CAAA,cAAAI,EAAA,qBAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,0BAAAC,EAAA,8BAAAC,EAAA,yBAAAC,EAAA,wBAAAC,EAAA,sBAAAC,CAAA,EAAA,MAAAZ,EAAA,8BAAA,EAc0Ea,EAAA,UAezB,CACzC,KAAA,CAAEC,2BAAAA,GAA+BZ,EAAqB,EACtD,CAAEa,kBAAAA,CAAAA,EAAsBC,EAAMC,cAAc,EAE5CC,EAAmBC,EAAoBpB,CAAsB,EAC7DqB,EAAYjB,EAAkB,CAClCkB,SAAUC,EAAYJ,CAAgB,EACtCK,OAAQR,CAAAA,CACT,EACK,CAAES,QAAAA,EAASC,aAAAA,EAAcC,MAAAA,CAAAA,EAAUN,EAEnCO,EAAWF,EACfX,GAAAA,EAA4Cc,GAAA,CAC9BC,EAAAA,KAAOD,EAAYC,KAAKC,IAAKC,GACvCA,EAAIC,KAAOjB,EAAkBiB,GAAKC,EAAOF,CAC3C,CAAA,CACD,CACH,EAE+B,OAAA9B,EAAA,CAAEuB,QAAAA,EAASE,MAAAA,EAAOC,SAAAA,CAAAA,CAAU,EAGxDO,EAAAA,KAAA,OAAA,CAAK,UAAU,kCAAkC,SAAAP,EAChD,SAAA,CAAAO,OAAC5B,EACC,CAAA,SAAA,CAAA4B,OAAC3B,EACC,CAAA,SAAA,CAAA2B,OAACxB,EACC,CAAA,SAAA,CAAAyB,EAAAA,IAACxB,GAAwB,SAAO,SAAA,CAAA,EAChCwB,EAAAA,IAAC1B,GAA6B,SAE9B,mDAAA,CAAA,CAAA,EACF,EACAyB,EAAAA,KAAC1B,EAA0B,CAAA,UAAU,YACnC,SAAA,CAAA2B,EAAA,IAAC9B,EAAqB,CAAA,MAAM,OAAO,QAAAmB,EAAkB,KAAK,OAAM,EAChEW,MAAC9B,GACC,MAAM,8BACN,YAAY,wBACZ,QAAAmB,EACA,KAAK,iBAAiB,CAAA,CAAA,CAE1B,CAAA,CAAA,EACF,SAECjB,EACC,CAAA,SAAA,CAAA2B,OAACxB,EACC,CAAA,SAAA,CAAAyB,EAAAA,IAACxB,GAAwB,SAAa,eAAA,CAAA,EACtCwB,EAAAA,IAAC1B,GAA6B,SAG9B,gFAAA,CAAA,CAAA,EACF,EACC0B,MAAA3B,EAAA,CACC,SAAC0B,EAAAA,KAAA,MAAA,CAAI,UAAU,YACb,SAAA,CAAAC,MAACvB,GACC,QAAAY,EACA,KAAK,eACL,MAAM,SACN,YAAY,uCAAsC,EAEpDW,MAACvB,GACC,QAAAY,EACA,KAAK,iBACL,MAAM,WACN,YAAY,qCAAoC,EAElDW,MAACvB,GACC,QAAAY,EACA,KAAK,cACL,MAAM,QACN,YAAY,+CAA8C,EAE5DW,MAACvB,GACC,QAAAY,EACA,KAAK,kBACL,MAAM,aACN,YAAY,kDAAiD,EAE/DW,MAACvB,GACC,QAAAY,EACA,KAAK,sBACL,MAAM,wBACN,YAAY,qDAAoD,EAElEW,MAACvB,GACC,QAAAY,EACA,KAAK,cACL,MAAM,QACN,YAAY,gCAAgC,CAAA,CAAA,CAAA,CAEhD,CACF,CAAA,CAAA,CACF,CAAA,CAAA,EACF,EACAW,EAAAA,IAAC/B,EAAc,CAAA,KAAMgB,CAAU,CAAA,CAAA,EACjC,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{i as d}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as o}from"./jsx-runtime-D_zvdyIk.js";import{c as f}from"./index-BGLRovL6.js";function g(e){const t=/([_\s-]*[A-Z]+(?![^\s\-_A-Z])|[_\s-]*[A-Z]*[^\s\-_A-Z]+)/g;return e.match(t)??[]}function a(e,t){return e.length<=t?e:`${e.slice(0,Math.max(0,t-3))}...`}function p(e,t=20){if(e.length<=t)return e;if(e.length<=3)return"...";const n=g(e);if(n.length===1)return a(e,t);const s=n[0],l=(n.at(-1)??"").replace(/^[_\s-]+/,""),c=l.length;if(s.length+c+3>t)return a(e,t);let i=s;for(let r=1;r<n.length-1;r++){const u=n[r].length;if(i.length+u+c+3>t)break;i+=n[r]}return`${i}...${l}`}const{Badge:m}=await d("@baseplate-dev/ui-components");function b({className:e,children:t,type:n}){return o.jsxs("div",{className:f("flex h-8 w-full items-center justify-between gap-4 rounded-md border bg-muted px-3 text-sm",e),children:[o.jsx("div",{children:t}),o.jsx(m,{variant:"outline",className:"text-muted-foreground",children:p(n,20)})]})}export{b as B};
2
+ //# sourceMappingURL=badge-with-type-label-BXoSRTRE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge-with-type-label-CezAtjFy.js","sources":["../../src/utils/string.ts","../../src/routes/data/models/edit.$key/-components/badge-with-type-label.tsx"],"sourcesContent":["// Split the string into words and separators, preserving original form\nfunction splitIntoTokens(str: string): string[] {\n const regex = /([_\\s-]*[A-Z]+(?![^\\s\\-_A-Z])|[_\\s-]*[A-Z]*[^\\s\\-_A-Z]+)/g;\n return str.match(regex) ?? [];\n}\n\n/**\n * Truncates a string and appends an ellipsis ('...') if it exceeds the specified maximum length.\n *\n * @param str - The string to be truncated.\n * @param maxLength - The maximum allowed length of the string including the ellipsis.\n * @returns The truncated string with an ellipsis if it exceeds the maximum length, otherwise the original string.\n */\nfunction ellipsisString(str: string, maxLength: number): string {\n return str.length <= maxLength\n ? str\n : `${str.slice(0, Math.max(0, maxLength - 3))}...`;\n}\n\n/**\n * Truncates a string from the middle and adds an ellipsis ('...') if it exceeds the specified maximum length.\n *\n * @param str - The input string to be truncated.\n * @param maxLength - The maximum allowed length of the truncated string including the ellipsis, defaults to 20.\n * @returns The truncated string with an ellipsis in the middle if it exceeds the maximum length.\n *\n * The function works as follows:\n * - If the input string length is less than or equal to the maximum length, it returns the original string.\n * - If the input string length is less than or equal to 3, it returns '...'.\n * - It splits the string into tokens and checks if the first and last tokens together exceed the maximum length.\n * - If they do, it truncates the string using an ellipsis.\n * - Otherwise, it reconstructs the string by adding tokens until the length exceeds the maximum length, then adds an ellipsis and the last token.\n */\nexport function ellipsisStringFromMiddle(str: string, maxLength = 20): string {\n if (str.length <= maxLength) {\n return str;\n }\n\n if (str.length <= 3) {\n return '...';\n }\n\n const tokens = splitIntoTokens(str);\n\n if (tokens.length === 1) {\n return ellipsisString(str, maxLength);\n }\n\n // Check if first and last tokens exceed maxLength\n const firstToken = tokens[0];\n const lastToken = (tokens.at(-1) ?? '').replace(/^[_\\s-]+/, '');\n const lastTokenLength = lastToken.length;\n if (firstToken.length + lastTokenLength + 3 > maxLength) {\n return ellipsisString(str, maxLength);\n }\n\n let reconstructed = firstToken;\n\n // Keep adding tokens until the length exceeds maxLength\n for (let i = 1; i < tokens.length - 1; i++) {\n const nextTokenLength = tokens[i].length;\n if (\n reconstructed.length + nextTokenLength + lastTokenLength + 3 >\n maxLength\n ) {\n break;\n }\n reconstructed += tokens[i];\n }\n\n // trim any separators from the end of the last token\n return `${reconstructed}...${lastToken}`;\n}\n","import type React from 'react';\n\nimport { Badge } from '@baseplate-dev/ui-components';\nimport { clsx } from 'clsx';\n\nimport { ellipsisStringFromMiddle } from '#src/utils/string.js';\n\ninterface BadgeWithTypeLabelProps {\n className?: string;\n children: React.ReactNode;\n type: string;\n}\n\nexport function BadgeWithTypeLabel({\n className,\n children,\n type,\n}: BadgeWithTypeLabelProps): React.JSX.Element {\n return (\n <div\n className={clsx(\n 'flex h-8 w-full items-center justify-between gap-4 rounded-md border bg-muted px-3 text-sm',\n className,\n )}\n >\n <div>{children}</div>\n <Badge variant=\"outline\" className=\"text-muted-foreground\">\n {ellipsisStringFromMiddle(type, 20)}\n </Badge>\n </div>\n );\n}\n"],"names":["splitIntoTokens","str","regex","ellipsisString","maxLength","ellipsisStringFromMiddle","tokens","firstToken","lastToken","lastTokenLength","reconstructed","i","nextTokenLength","Badge","importShared","BadgeWithTypeLabel","className","children","type","jsxs","clsx","jsx"],"mappings":"sJACA,SAASA,EAAgBC,EAAuB,CAC9C,MAAMC,EAAQ,4DACd,OAAOD,EAAI,MAAMC,CAAK,GAAK,CAAC,CAC9B,CASA,SAASC,EAAeF,EAAaG,EAA2B,CAC9D,OAAOH,EAAI,QAAUG,EACjBH,EACA,GAAGA,EAAI,MAAM,EAAG,KAAK,IAAI,EAAGG,EAAY,CAAC,CAAC,CAAC,KACjD,CAgBgB,SAAAC,EAAyBJ,EAAaG,EAAY,GAAY,CACxE,GAAAH,EAAI,QAAUG,EACT,OAAAH,EAGL,GAAAA,EAAI,QAAU,EACT,MAAA,MAGH,MAAAK,EAASN,EAAgBC,CAAG,EAE9B,GAAAK,EAAO,SAAW,EACb,OAAAH,EAAeF,EAAKG,CAAS,EAIhC,MAAAG,EAAaD,EAAO,CAAC,EACrBE,GAAaF,EAAO,GAAG,EAAE,GAAK,IAAI,QAAQ,WAAY,EAAE,EACxDG,EAAkBD,EAAU,OAClC,GAAID,EAAW,OAASE,EAAkB,EAAIL,EACrC,OAAAD,EAAeF,EAAKG,CAAS,EAGtC,IAAIM,EAAgBH,EAGpB,QAASI,EAAI,EAAGA,EAAIL,EAAO,OAAS,EAAGK,IAAK,CACpC,MAAAC,EAAkBN,EAAOK,CAAC,EAAE,OAClC,GACED,EAAc,OAASE,EAAkBH,EAAkB,EAC3DL,EAEA,MAEFM,GAAiBJ,EAAOK,CAAC,CAAA,CAIpB,MAAA,GAAGD,CAAa,MAAMF,CAAS,EACxC,CCtEA,KAAA,CAAA,MAAAK,CAAA,EAAA,MAAAC,EAAA,8BAAA,EAWO,SAASC,EAAmB,CACjC,UAAAC,EACA,SAAAC,EACA,KAAAC,CACF,EAA+C,CAE3C,OAAAC,EAAA,KAAC,MAAA,CACC,UAAWC,EACT,6FACAJ,CACF,EAEA,SAAA,CAAAK,MAAC,OAAK,SAAAJ,EAAS,EACfI,EAAAA,IAACR,GAAM,QAAQ,UAAU,UAAU,wBAChC,SAAAR,EAAyBa,EAAM,EAAE,CACpC,CAAA,CAAA,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"badge-with-type-label-BXoSRTRE.js","sources":["../../src/utils/string.ts","../../src/routes/data/models/edit.$key/-components/badge-with-type-label.tsx"],"sourcesContent":["// Split the string into words and separators, preserving original form\nfunction splitIntoTokens(str: string): string[] {\n const regex = /([_\\s-]*[A-Z]+(?![^\\s\\-_A-Z])|[_\\s-]*[A-Z]*[^\\s\\-_A-Z]+)/g;\n return str.match(regex) ?? [];\n}\n\n/**\n * Truncates a string and appends an ellipsis ('...') if it exceeds the specified maximum length.\n *\n * @param str - The string to be truncated.\n * @param maxLength - The maximum allowed length of the string including the ellipsis.\n * @returns The truncated string with an ellipsis if it exceeds the maximum length, otherwise the original string.\n */\nfunction ellipsisString(str: string, maxLength: number): string {\n return str.length <= maxLength\n ? str\n : `${str.slice(0, Math.max(0, maxLength - 3))}...`;\n}\n\n/**\n * Truncates a string from the middle and adds an ellipsis ('...') if it exceeds the specified maximum length.\n *\n * @param str - The input string to be truncated.\n * @param maxLength - The maximum allowed length of the truncated string including the ellipsis, defaults to 20.\n * @returns The truncated string with an ellipsis in the middle if it exceeds the maximum length.\n *\n * The function works as follows:\n * - If the input string length is less than or equal to the maximum length, it returns the original string.\n * - If the input string length is less than or equal to 3, it returns '...'.\n * - It splits the string into tokens and checks if the first and last tokens together exceed the maximum length.\n * - If they do, it truncates the string using an ellipsis.\n * - Otherwise, it reconstructs the string by adding tokens until the length exceeds the maximum length, then adds an ellipsis and the last token.\n */\nexport function ellipsisStringFromMiddle(str: string, maxLength = 20): string {\n if (str.length <= maxLength) {\n return str;\n }\n\n if (str.length <= 3) {\n return '...';\n }\n\n const tokens = splitIntoTokens(str);\n\n if (tokens.length === 1) {\n return ellipsisString(str, maxLength);\n }\n\n // Check if first and last tokens exceed maxLength\n const firstToken = tokens[0];\n const lastToken = (tokens.at(-1) ?? '').replace(/^[_\\s-]+/, '');\n const lastTokenLength = lastToken.length;\n if (firstToken.length + lastTokenLength + 3 > maxLength) {\n return ellipsisString(str, maxLength);\n }\n\n let reconstructed = firstToken;\n\n // Keep adding tokens until the length exceeds maxLength\n for (let i = 1; i < tokens.length - 1; i++) {\n const nextTokenLength = tokens[i].length;\n if (\n reconstructed.length + nextTokenLength + lastTokenLength + 3 >\n maxLength\n ) {\n break;\n }\n reconstructed += tokens[i];\n }\n\n // trim any separators from the end of the last token\n return `${reconstructed}...${lastToken}`;\n}\n","import type React from 'react';\n\nimport { Badge } from '@baseplate-dev/ui-components';\nimport { clsx } from 'clsx';\n\nimport { ellipsisStringFromMiddle } from '#src/utils/string.js';\n\ninterface BadgeWithTypeLabelProps {\n className?: string;\n children: React.ReactNode;\n type: string;\n}\n\nexport function BadgeWithTypeLabel({\n className,\n children,\n type,\n}: BadgeWithTypeLabelProps): React.JSX.Element {\n return (\n <div\n className={clsx(\n 'flex h-8 w-full items-center justify-between gap-4 rounded-md border bg-muted px-3 text-sm',\n className,\n )}\n >\n <div>{children}</div>\n <Badge variant=\"outline\" className=\"text-muted-foreground\">\n {ellipsisStringFromMiddle(type, 20)}\n </Badge>\n </div>\n );\n}\n"],"names":["splitIntoTokens","str","regex","ellipsisString","maxLength","ellipsisStringFromMiddle","tokens","firstToken","lastToken","lastTokenLength","reconstructed","i","nextTokenLength","Badge","importShared","BadgeWithTypeLabel","className","children","type","jsxs","clsx","jsx"],"mappings":"wJACA,SAASA,EAAgBC,EAAuB,CAC9C,MAAMC,EAAQ,4DACd,OAAOD,EAAI,MAAMC,CAAK,GAAK,CAAC,CAC9B,CASA,SAASC,EAAeF,EAAaG,EAA2B,CAC9D,OAAOH,EAAI,QAAUG,EACjBH,EACA,GAAGA,EAAI,MAAM,EAAG,KAAK,IAAI,EAAGG,EAAY,CAAC,CAAC,CAAC,KACjD,CAgBgB,SAAAC,EAAyBJ,EAAaG,EAAY,GAAY,CACxE,GAAAH,EAAI,QAAUG,EACT,OAAAH,EAGL,GAAAA,EAAI,QAAU,EACT,MAAA,MAGH,MAAAK,EAASN,EAAgBC,CAAG,EAE9B,GAAAK,EAAO,SAAW,EACb,OAAAH,EAAeF,EAAKG,CAAS,EAIhC,MAAAG,EAAaD,EAAO,CAAC,EACrBE,GAAaF,EAAO,GAAG,EAAE,GAAK,IAAI,QAAQ,WAAY,EAAE,EACxDG,EAAkBD,EAAU,OAClC,GAAID,EAAW,OAASE,EAAkB,EAAIL,EACrC,OAAAD,EAAeF,EAAKG,CAAS,EAGtC,IAAIM,EAAgBH,EAGpB,QAASI,EAAI,EAAGA,EAAIL,EAAO,OAAS,EAAGK,IAAK,CACpC,MAAAC,EAAkBN,EAAOK,CAAC,EAAE,OAClC,GACED,EAAc,OAASE,EAAkBH,EAAkB,EAC3DL,EAEA,MAEFM,GAAiBJ,EAAOK,CAAC,CAAA,CAIpB,MAAA,GAAGD,CAAa,MAAMF,CAAS,EACxC,CCtEA,KAAA,CAAA,MAAAK,CAAA,EAAA,MAAAC,EAAA,8BAAA,EAWO,SAASC,EAAmB,CACjC,UAAAC,EACA,SAAAC,EACA,KAAAC,CACF,EAA+C,CAE3C,OAAAC,EAAA,KAAC,MAAA,CACC,UAAWC,EACT,6FACAJ,CACF,EAEA,SAAA,CAAAK,MAAC,OAAK,SAAAJ,EAAS,EACfI,EAAAA,IAACR,GAAM,QAAQ,UAAU,UAAU,wBAChC,SAAAR,EAAyBa,EAAM,EAAE,CACpC,CAAA,CAAA,CAAA,CACF,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{i as t}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{d as l,N as j,e as P,l as g}from"./index-BUYA3Tes.js";const{createPluginImplementationStoreWithNewPlugins:D,PluginUtils:f,webConfigSpec:m}=await t("@baseplate-dev/project-builder-lib"),{useProjectDefinition:v}=await t("@baseplate-dev/project-builder-lib/web"),{Button:S,DropdownMenu:y,DropdownMenuContent:N,DropdownMenuGroup:M,DropdownMenuItem:k,DropdownMenuTrigger:W,useConfirmDialog:A}=await t("@baseplate-dev/ui-components"),{useNavigate:F}=await t("@tanstack/react-router"),{useMemo:E}=await t("react"),B=function(){const{definitionContainer:o,pluginContainer:r,schemaParserContext:a,saveDefinitionWithFeedbackSync:x,isSavingDefinition:b}=v(),{key:i}=l.useParams(),{requestConfirm:h}=A(),c=F({from:l.fullPath}),{pluginMetadata:n}=l.useLoaderData(),s=f.byKey(o.definition,i),u=E(()=>{if(!i)return;const p=r.getPluginSpec(m).getWebConfigComponent(i);return p||D(a.pluginStore,[n],o.definition).getPluginSpec(m).getWebConfigComponent(i)},[i,a,o,r,n]);if(!u)return e.jsx(j,{});function C(){x(d=>{f.disablePlugin(d,n.key,a)},{successMessage:`Disabled ${n.displayName}!`,onSuccess:()=>{c({to:"/plugins"}).catch(g)}})}function w(){s||c({to:"/plugins"}).catch(g)}return e.jsx("div",{className:"relative flex h-full flex-1 flex-col gap-4 overflow-hidden",children:e.jsxs("div",{className:"flex flex-1 flex-col gap-4 overflow-y-auto p-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h1",{children:[n.displayName," Plugin"]}),s&&e.jsxs(y,{children:[e.jsx(W,{asChild:!0,children:e.jsx(S,{variant:"ghost",size:"icon",children:e.jsx(P,{"aria-label":"More Actions"})})}),e.jsx(N,{children:e.jsx(M,{children:e.jsx(k,{disabled:b,onSelect:()=>{h({title:"Disable Plugin",content:`Are you sure you want to disable the ${n.displayName} plugin?`,onConfirm:C})},children:"Disable Plugin"})})})]})]}),e.jsx(u,{definition:s,metadata:n,onSave:w})]})})};export{B as component};
2
+ //# sourceMappingURL=edit._key-CtMMGDWu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit._key-CtMMGDWu.js","sources":["../../src/routes/plugins/edit.$key.tsx?tsr-split=component"],"sourcesContent":["import type React from 'react';\n\nimport {\n createPluginImplementationStoreWithNewPlugins,\n getPluginMetadataByKey,\n PluginUtils,\n webConfigSpec,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuTrigger,\n useConfirmDialog,\n} from '@baseplate-dev/ui-components';\nimport { createFileRoute, notFound, useNavigate } from '@tanstack/react-router';\nimport { useMemo } from 'react';\nimport { HiDotsVertical } from 'react-icons/hi';\n\nimport { NotFoundCard } from '#src/components/index.js';\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\nexport const Route = createFileRoute('/plugins/edit/$key')({\n component: PluginConfigPage,\n beforeLoad: ({ params: { key }, context: { schemaParserContext } }) => {\n const pluginMetadata = getPluginMetadataByKey(\n schemaParserContext.pluginStore,\n key,\n );\n if (!pluginMetadata) return {};\n return {\n getTitle: () => pluginMetadata.displayName,\n pluginMetadata,\n };\n },\n loader: ({ context: { pluginMetadata } }) => {\n if (!pluginMetadata) throw notFound();\n return { pluginMetadata };\n },\n});\n\nfunction PluginConfigPage(): React.JSX.Element {\n const {\n definitionContainer,\n pluginContainer,\n schemaParserContext,\n saveDefinitionWithFeedbackSync,\n isSavingDefinition,\n } = useProjectDefinition();\n const { key } = Route.useParams();\n const { requestConfirm } = useConfirmDialog();\n const navigate = useNavigate({ from: Route.fullPath });\n const { pluginMetadata } = Route.useLoaderData();\n\n const pluginDefinition = PluginUtils.byKey(\n definitionContainer.definition,\n key,\n );\n\n const Container = useMemo(() => {\n if (!key) {\n return;\n }\n\n const pluginSpec = pluginContainer.getPluginSpec(webConfigSpec);\n const webConfigComponent = pluginSpec.getWebConfigComponent(key);\n if (webConfigComponent) {\n return webConfigComponent;\n }\n const newPluginContainer = createPluginImplementationStoreWithNewPlugins(\n schemaParserContext.pluginStore,\n [pluginMetadata],\n definitionContainer.definition,\n );\n\n return newPluginContainer\n .getPluginSpec(webConfigSpec)\n .getWebConfigComponent(key);\n }, [\n key,\n schemaParserContext,\n definitionContainer,\n pluginContainer,\n pluginMetadata,\n ]);\n\n if (!Container) {\n return <NotFoundCard />;\n }\n\n function onDisablePlugin(): void {\n saveDefinitionWithFeedbackSync(\n (draft) => {\n PluginUtils.disablePlugin(\n draft,\n pluginMetadata.key,\n schemaParserContext,\n );\n },\n {\n successMessage: `Disabled ${pluginMetadata.displayName}!`,\n onSuccess: () => {\n navigate({ to: '/plugins' }).catch(logAndFormatError);\n },\n },\n );\n }\n\n function onSave(): void {\n if (!pluginDefinition) {\n navigate({ to: '/plugins' }).catch(logAndFormatError);\n }\n }\n\n return (\n <div className=\"relative flex h-full flex-1 flex-col gap-4 overflow-hidden\">\n <div className=\"flex flex-1 flex-col gap-4 overflow-y-auto p-4\">\n <div className=\"flex items-center justify-between\">\n <h1>{pluginMetadata.displayName} Plugin</h1>\n {pluginDefinition && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\">\n <HiDotsVertical aria-label=\"More Actions\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent>\n <DropdownMenuGroup>\n <DropdownMenuItem\n disabled={isSavingDefinition}\n onSelect={() => {\n requestConfirm({\n title: 'Disable Plugin',\n content: `Are you sure you want to disable the ${pluginMetadata.displayName} plugin?`,\n onConfirm: onDisablePlugin,\n });\n }}\n >\n Disable Plugin\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n <Container\n definition={pluginDefinition}\n metadata={pluginMetadata}\n onSave={onSave}\n />\n </div>\n </div>\n );\n}\n"],"names":["createPluginImplementationStoreWithNewPlugins","PluginUtils","webConfigSpec","importShared","useProjectDefinition","Button","DropdownMenu","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuTrigger","useConfirmDialog","useNavigate","useMemo","SplitComponent","definitionContainer","pluginContainer","schemaParserContext","saveDefinitionWithFeedbackSync","isSavingDefinition","key","Route","useParams","requestConfirm","navigate","from","fullPath","pluginMetadata","useLoaderData","pluginDefinition","byKey","definition","Container","webConfigComponent","getPluginSpec","getWebConfigComponent","pluginStore","NotFoundCard","onDisablePlugin","draft","disablePlugin","successMessage","displayName","onSuccess","to","catch","logAndFormatError","onSave","jsxs","jsx","HiDotsVertical","title","content","onConfirm"],"mappings":"6KAEA,KAAA,CAAA,8CAAAA,EAAA,YAAAC,EAAA,cAAAC,CAAA,EAAA,MAAAC,EAAA,oCAAA,EAMA,CAAA,qBAAAC,CAAA,EAAA,MAAAD,EAAA,wCAAA,EACA,CAAA,OAAAE,EAAA,aAAAC,EAAA,oBAAAC,EAAA,kBAAAC,EAAA,iBAAAC,EAAA,oBAAAC,EAAA,iBAAAC,CAAA,EAAA,MAAAR,EAAA,8BAAA,EASA,CAAA,YAAAS,CAAA,EAAA,MAAAT,EAAA,wBAAA,EACA,CAAA,QAAAU,CAAA,EAAA,MAAAV,EAAA,OAAA,EAIqEW,EAAA,UAqBtB,CACvC,KAAA,CACJC,oBAAAA,EACAC,gBAAAA,EACAC,oBAAAA,EACAC,+BAAAA,EACAC,mBAAAA,GACEf,EAAqB,EACnB,CAAEgB,IAAAA,CAAAA,EAAQC,EAAMC,UAAU,EAC1B,CAAEC,eAAAA,GAAmBZ,EAAiB,EACtCa,EAAWZ,EAAY,CAAEa,KAAMJ,EAAMK,QAAAA,CAAU,EAC/C,CAAEC,eAAAA,CAAAA,EAAmBN,EAAMO,cAAc,EAEzCC,EAAmB5B,EAAY6B,MACnCf,EAAoBgB,WACpBX,CACF,EAEMY,EAAYnB,EAAQ,IAAM,CAC9B,GAAI,CAACO,EACH,OAIIa,MAAAA,EADajB,EAAgBkB,cAAchC,CAAa,EACxBiC,sBAAsBf,CAAG,EAC/D,OAAIa,GAGuBjC,EACzBiB,EAAoBmB,YACpB,CAACT,CAAc,EACfZ,EAAoBgB,UACtB,EAGGG,cAAchC,CAAa,EAC3BiC,sBAAsBf,CAAG,CAAA,EAC3B,CACDA,EACAH,EACAF,EACAC,EACAW,CAAc,CACf,EAED,GAAI,CAACK,EACH,aAAQK,EAAe,EAAA,EAGzB,SAASC,GAAwB,CAC/BpB,EACaqB,GAAA,CACTtC,EAAYuC,cACVD,EACAZ,EAAeP,IACfH,CACF,CAAA,EAEF,CACEwB,eAAgB,YAAYd,EAAee,WAAW,IACtDC,UAAWA,IAAM,CACNnB,EAAA,CAAEoB,GAAI,UAAA,CAAY,EAAEC,MAAMC,CAAiB,CAAA,CACtD,CAEJ,CAAA,CAGF,SAASC,GAAe,CACjBlB,GACML,EAAA,CAAEoB,GAAI,UAAA,CAAY,EAAEC,MAAMC,CAAiB,CACtD,CAGF,aACG,MAAI,CAAA,UAAU,6DACb,SAACE,EAAA,KAAA,MAAA,CAAI,UAAU,iDACb,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,OAAC,KAAIrB,CAAAA,SAAAA,CAAee,EAAAA,YAAY,SAAA,EAAO,EACtCb,UACEvB,EACC,CAAA,SAAA,CAAA2C,MAACvC,EAAoB,CAAA,QAAO,GAC1B,SAAAuC,EAAA,IAAC5C,GAAO,QAAQ,QAAQ,KAAK,OAC3B,SAAC4C,EAAAA,IAAAC,EAAA,CAAe,aAAW,cAAA,CAAc,CAC3C,CAAA,EACF,EACAD,EAAAA,IAAC1C,GACC,SAAC0C,EAAAA,IAAAzC,EAAA,CACC,eAACC,EACC,CAAA,SAAUU,EACV,SAAU,IAAM,CACCI,EAAA,CACb4B,MAAO,iBACPC,QAAS,wCAAwCzB,EAAee,WAAW,WAC3EW,UAAWf,CAAAA,CACZ,CACH,EAAE,SAGJ,iBAAA,CAAA,CACF,CACF,CAAA,CAAA,CACF,CAAA,CAAA,EAEJ,QACCN,EACC,CAAA,WAAYH,EACZ,SAAUF,EACV,OAAAoB,CAAe,CAAA,CAAA,CAAA,CAEnB,CACF,CAAA,CAEJ"}
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BUYA3Tes.js","assets/_virtual___federation_fn_import-DXu2m-ZE.js","assets/jsx-runtime-D_zvdyIk.js","assets/index-c0qeY2gs.js","assets/index-DqHVrEeL.js","assets/_commonjsHelpers-CqkleIqs.js","assets/index-BGLRovL6.js","assets/index.esm-CTDJ8Wko.js","assets/sortBy-C9bvycg5.js","assets/immer-B7fdkLVi.js","assets/index-PlVWOW99.css","assets/index-CaiaVpxa.js","assets/index-Bl_iRlKL.js"])))=>i.map(i=>d[i]);
2
+ import{i as d}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{C as U,s as V,l as H,h as ee,_ as v,i as E}from"./index-BUYA3Tes.js";import{u as ne}from"./use-definition-schema-e7us6WfR.js";import{f as z,e as F,b as oe}from"./index.esm-CTDJ8Wko.js";import{c as G}from"./index-BGLRovL6.js";const{ModelUtils:te}=await d("@baseplate-dev/project-builder-lib"),{createAdminCrudInputWebConfig:le,useProjectDefinition:ie}=await d("@baseplate-dev/project-builder-lib/web"),{SelectFieldController:W}=await d("@baseplate-dev/ui-components");function ae({formProps:l,name:n,model:t,embeddedFormOptions:i}){const{definition:s}=ie(),o=te.getRelationsToModel(s,t.id).map(m=>({label:`${m.relation.foreignRelationName} (${m.model.name})`,value:m.relation.foreignId})),a=n,r=l.control;return e.jsxs(e.Fragment,{children:[e.jsx(W,{label:"Relation Name",control:r,name:`${a}.modelRelationRef`,options:o}),e.jsx(W,{label:"Embedded Form",control:r,name:`${a}.embeddedFormRef`,options:i})]})}const se=le({name:"embedded",pluginKey:void 0,label:"Embedded",getNewInput:()=>({label:"",type:"embedded",modelRelationRef:"",embeddedFormRef:""}),Form:ae}),{createAdminCrudInputWebConfig:re,useProjectDefinition:de}=await d("@baseplate-dev/project-builder-lib/web"),{SelectFieldController:B}=await d("@baseplate-dev/ui-components");function ce({formProps:l,name:n,model:t,embeddedFormOptions:i}){const{definitionContainer:s}=de(),o=t.model.relations?.map(m=>({label:`${m.name} (${s.nameFromId(m.modelRef)})`,value:m.id}))??[],a=n,r=l.control;return e.jsxs(e.Fragment,{children:[e.jsx(B,{label:"Relation Name",control:r,name:`${a}.localRelationRef`,options:o}),e.jsx(B,{label:"Embedded Form",control:r,name:`${a}.embeddedFormRef`,options:i})]})}const me=re({name:"embeddedLocal",pluginKey:void 0,label:"Embedded Local",getNewInput:()=>({label:"",type:"embeddedLocal",embeddedFormRef:"",localRelationRef:""}),Form:ce}),{createAdminCrudInputWebConfig:pe}=await d("@baseplate-dev/project-builder-lib/web"),{SelectFieldController:ue}=await d("@baseplate-dev/ui-components");function be({formProps:l,name:n,model:t}){const i=t.model.fields.filter(a=>a.type==="enum").map(a=>({label:a.name,value:a.id})),s=n,o=l.control;return e.jsx(ue,{label:"Enum Field",control:o,name:`${s}.modelFieldRef`,options:i})}const fe=pe({name:"enum",pluginKey:void 0,label:"Enum",getNewInput:()=>({label:"",type:"enum",modelFieldRef:""}),Form:be}),{createAdminCrudInputWebConfig:xe,useProjectDefinition:je}=await d("@baseplate-dev/project-builder-lib/web"),{InputFieldController:g,SelectFieldController:he}=await d("@baseplate-dev/ui-components");function Ce({formProps:l,name:n,model:t}){const{definitionContainer:i}=je(),s=t.model.relations?.map(r=>({label:`${r.name} (${i.nameFromId(r.modelRef)})`,value:r.id}))??[],o=n,a=l.control;return e.jsxs(e.Fragment,{children:[e.jsx(he,{label:"Local Relation Name",control:a,name:`${o}.localRelationRef`,options:s}),e.jsx(g,{label:"Label Expression (e.g. name)",control:a,name:`${o}.labelExpression`}),e.jsx(g,{label:"Value Expression (e.g. id)",control:a,name:`${o}.valueExpression`}),e.jsx(g,{label:"Default Label (optional)",control:a,name:`${o}.defaultLabel`}),e.jsx(g,{label:"Empty Label (optional) - only if field is nullable",control:a,name:`${o}.nullLabel`})]})}const Fe=xe({name:"foreign",pluginKey:void 0,label:"Foreign",getNewInput:()=>({label:"",type:"foreign",localRelationRef:"",labelExpression:"",valueExpression:"",defaultLabel:"",nullLabel:""}),Form:Ce}),{createAdminCrudInputWebConfig:ve}=await d("@baseplate-dev/project-builder-lib/web"),{InputFieldController:ge,SelectFieldController:ye}=await d("@baseplate-dev/ui-components");function Se({formProps:l,name:n,model:t}){const i=t.model.fields.map(a=>({label:a.name,value:a.id})),s=n,o=l.control;return e.jsxs(e.Fragment,{children:[e.jsx(ye,{label:"Field",control:o,name:`${s}.modelFieldRef`,options:i}),e.jsx(ge,{label:"Validation (zod), e.g. z.string().min(1) (optional)",control:o,name:`${s}.validation`})]})}const Ie=ve({name:"text",pluginKey:void 0,label:"Text",getNewInput:()=>({label:"",type:"text",modelFieldRef:""}),Form:Se}),M=[se,me,fe,Fe,Ie],{ModelUtils:$e}=await d("@baseplate-dev/project-builder-lib"),{adminCrudInputWebSpec:we,useProjectDefinition:Re}=await d("@baseplate-dev/project-builder-lib/web"),{Button:De,InputFieldController:Le,SelectFieldController:Te}=await d("@baseplate-dev/ui-components");function Ee({idx:l,formProps:n,embeddedFormOptions:t}){const{control:i}=n,s=F({control:i,name:"modelRef"}),{definition:o,pluginContainer:a}=Re(),r=s?$e.byIdOrThrow(o,s):void 0,m=a.getPluginSpec(we),u=m.getInputWebConfigs(M).map(f=>({label:f.label,value:f.name})),b=F({control:i,name:`form.fields.${l}.type`}),c=m.getInputWebConfig(b,M),p=c.Form;return e.jsxs("div",{className:"space-y-4",children:[e.jsx(Te,{label:"Type",control:i,options:u,name:`form.fields.${l}.type`}),e.jsx(Le,{label:"Label",control:i,name:`form.fields.${l}.label`}),p&&r&&e.jsx(p,{formProps:n,name:`form.fields.${l}`,model:r,embeddedFormOptions:t,pluginKey:c.pluginKey})]})}function Y({className:l,formProps:n,embeddedFormOptions:t}){const{control:i}=n,{fields:s,append:o,remove:a}=z({control:i,name:"form.fields"});return e.jsxs("div",{className:G("space-y-4",l),children:[s.map((r,m)=>e.jsx(U,{collapsedContents:e.jsxs("div",{children:[r.label," (",r.type,")"]}),onRemove:()=>{a(m)},defaultOpen:!r.label,children:e.jsx(Ee,{idx:m,formProps:n,embeddedFormOptions:t},r.id)},r.id)),e.jsx(De,{onClick:()=>{o({type:"text",label:""})},children:"Add Field"})]})}const{adminCrudDisplayTypes:Ae,ModelUtils:Ne}=await d("@baseplate-dev/project-builder-lib"),{useProjectDefinition:_e}=await d("@baseplate-dev/project-builder-lib/web"),{Button:Pe,InputFieldController:A,SelectFieldController:N}=await d("@baseplate-dev/ui-components");function Oe({idx:l,control:n,fieldOptions:t,localRelationOptions:i}){const s=Ae.map(a=>({label:a,value:a})),o=F({control:n,name:`table.columns.${l}.display.type`});return e.jsxs("div",{className:"space-y-4",children:[e.jsx(N,{label:"Type",control:n,options:s,name:`table.columns.${l}.display.type`}),e.jsx(A,{label:"Label",control:n,name:`table.columns.${l}.label`}),o==="text"&&e.jsx(N,{label:"Field",control:n,name:`table.columns.${l}.display.modelFieldRef`,options:t}),o==="foreign"&&e.jsxs(e.Fragment,{children:[e.jsx(N,{label:"Local Relation Name",control:n,name:`table.columns.${l}.display.localRelationRef`,options:i}),e.jsx(A,{label:"Label Expression (e.g. name)",control:n,name:`table.columns.${l}.display.labelExpression`}),e.jsx(A,{label:"Value Expression (e.g. id)",control:n,name:`table.columns.${l}.display.valueExpression`})]})]})}function J({className:l,control:n}){const t=F({control:n,name:"modelRef"}),{definition:i,definitionContainer:s}=_e(),o=t?Ne.byIdOrThrow(i,t):void 0,{fields:a,append:r,remove:m}=z({control:n,name:"table.columns"}),u=o?.model.relations?.map(c=>({label:`${c.name} (${s.nameFromId(c.modelRef)})`,value:c.id}))??[],b=o?.model.fields.map(c=>({label:c.name,value:c.id}))??[];return e.jsxs("div",{className:G("space-y-4",l),children:[a.map((c,p)=>e.jsx(U,{collapsedContents:e.jsxs("div",{children:[c.label," (",c.display.type,")"]}),onRemove:()=>{m(p)},defaultOpen:!c.label,children:e.jsx(Oe,{idx:p,control:n,fieldOptions:b,localRelationOptions:u},c.id)},c.id)),e.jsx(Pe,{onClick:()=>{r({display:{type:"text",modelFieldRef:""},label:""})},children:"Add Column"})]})}const{createAdminCrudEmbeddedFormSchema:We}=await d("@baseplate-dev/project-builder-lib"),{useDefinitionSchema:Be,useProjectDefinition:Q}=await d("@baseplate-dev/project-builder-lib/web"),{Button:P,CheckboxFieldController:Me,InputFieldController:ke,SelectFieldController:k,Table:Ke,TableBody:Ue,TableCell:y,TableHead:S,TableHeader:Ve,TableRow:K,toast:He}=await d("@baseplate-dev/ui-components"),{useId:ze}=await d("react");function Ge({items:l,edit:n,remove:t}){const{definitionContainer:i}=Q();return e.jsxs(Ke,{className:"max-w-6xl",children:[e.jsx(Ve,{children:e.jsxs(K,{children:[e.jsx(S,{children:"Form Name"}),e.jsx(S,{children:"Model Name"}),e.jsx(S,{children:"Type"}),e.jsx(S,{children:"Actions"})]})}),e.jsx(Ue,{children:l.map((s,o)=>e.jsxs(K,{children:[e.jsx(y,{children:s.name}),e.jsx(y,{children:i.nameFromId(s.modelRef)}),e.jsx(y,{children:s.type}),e.jsxs(y,{className:"space-x-4",children:[e.jsx(P,{variant:"link",size:"none",onClick:()=>{n(o)},children:"Edit"}),e.jsx(P,{variant:"linkDestructive",size:"none",onClick:()=>{t(o)},children:"Remove"})]})]},s.id))})]})}const Ye=[{label:"Object",value:"object"},{label:"List",value:"list"}];function Je({initialData:l,onSubmit:n,embeddedFormOptions:t}){const{definition:i}=Q(),s=Be(We),o=oe({resolver:V(s),defaultValues:l}),{handleSubmit:a,control:r,watch:m}=o,u=i.models.map(p=>({label:p.name,value:p.id})),b=m("type"),c=ze();return e.jsxs("form",{onSubmit:p=>{p.stopPropagation(),a(n)(p).catch(f=>{He.error(H(f))})},id:c,className:"space-y-4",children:[e.jsx(ke,{label:"Name",control:r,name:"name"}),e.jsx(k,{label:"Type",control:r,name:"type",options:Ye}),e.jsx(Me,{label:"Include ID Field? (useful for list types)",control:r,name:"includeIdField"}),e.jsx(k,{label:"Model",control:r,options:u,name:"modelRef"}),b==="list"&&e.jsxs(e.Fragment,{children:[e.jsx("h2",{children:"Table"}),e.jsx(J,{control:r})]}),e.jsx("h2",{children:"Form"}),e.jsx(Y,{formProps:o,embeddedFormOptions:t}),e.jsx(P,{type:"submit",form:c,children:"Save"})]})}const{useProjectDefinition:Qe}=await d("@baseplate-dev/project-builder-lib/web"),{CheckboxFieldController:Xe,ComboboxFieldController:Ze,SectionListSection:I,SectionListSectionContent:$,SectionListSectionDescription:w,SectionListSectionHeader:R,SectionListSectionTitle:D}=await d("@baseplate-dev/ui-components");function qe({formProps:l}){const{control:n}=l,{definition:t}=Qe(),i=t.models.map(o=>({label:o.name,value:o.id})),s=F({control:n,name:"embeddedForms"})?.map(o=>({label:o.name,value:o.id}))??[];return e.jsxs(e.Fragment,{children:[e.jsxs(I,{children:[e.jsxs(R,{children:[e.jsx(D,{children:"Model Configuration"}),e.jsx(w,{children:"Configure the data model and basic settings for this CRUD section."})]}),e.jsxs($,{className:"space-y-6",children:[e.jsx(Ze,{label:"Model",control:n,options:i,name:"modelRef"}),e.jsx(Xe,{label:"Disable Create?",control:n,name:"disableCreate"})]})]}),e.jsxs(I,{children:[e.jsxs(R,{children:[e.jsx(D,{children:"Table Configuration"}),e.jsx(w,{children:"Configure which columns to display in the data table."})]}),e.jsx($,{children:e.jsx(J,{control:n})})]}),e.jsxs(I,{children:[e.jsxs(R,{children:[e.jsx(D,{children:"Form Configuration"}),e.jsx(w,{children:"Configure the form fields for creating and editing records."})]}),e.jsx($,{children:e.jsx(Y,{formProps:l,embeddedFormOptions:s})})]}),e.jsxs(I,{children:[e.jsxs(R,{children:[e.jsx(D,{children:"Embedded Forms"}),e.jsx(w,{children:"Configure embedded forms for related data objects."})]}),e.jsx($,{children:e.jsx(ee.LabelledController,{control:n,name:"embeddedForms",renderForm:o=>e.jsx(Je,{...o,embeddedFormOptions:s}),renderTable:o=>e.jsx(Ge,{...o}),defaultValue:{type:"object"}})})]})]})}const{AsyncComboboxField:en,useControllerMerged:nn}=await d("@baseplate-dev/ui-components");async function on(){const l=await v(()=>import("./index-BUYA3Tes.js").then(o=>o.A),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),n=await v(()=>import("./index-CaiaVpxa.js"),__vite__mapDeps([11,6,1])),t=await v(()=>import("./index-BGLRovL6.js").then(o=>o.R),__vite__mapDeps([6,1])),i=await v(()=>import("./index-Bl_iRlKL.js"),__vite__mapDeps([12,6,1]));return[l,n,t,i].map(o=>Object.entries(o).filter(([,a])=>typeof a=="function").map(([a,r])=>({label:a,value:a,icon:r}))).flat()}function tn({...l}){return e.jsx(en,{placeholder:"Select an icon",...l,loadOptions:n=>on().then(t=>t.filter(i=>!n||i.label.toLowerCase().includes(n.toLowerCase())).sort((i,s)=>i.label.localeCompare(s.label)).slice(0,20)),renderItemLabel:n=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n.icon,{className:"size-4"}),n.label]})})}function ln({name:l,control:n,...t}){const{field:i,fieldState:{error:s}}=nn({name:l,control:n},t),o=t;return e.jsx(tn,{error:s?.message,...o,...i,value:i.value??null})}const{adminSectionEntityType:an,createWebAdminSectionSchema:sn}=await d("@baseplate-dev/project-builder-lib"),{useBlockUnsavedChangesNavigate:rn,useProjectDefinition:dn,useResettableForm:cn}=await d("@baseplate-dev/project-builder-lib/web"),{Button:_,ComboboxFieldController:mn,Dialog:pn,DialogClose:un,DialogContent:bn,DialogFooter:fn,DialogHeader:xn,DialogTitle:jn,DialogTrigger:hn,FormActionBar:Cn,InputFieldController:Fn,SectionList:vn,SectionListSection:gn,SectionListSectionContent:yn,SectionListSectionDescription:Sn,SectionListSectionHeader:In,SectionListSectionTitle:$n}=await d("@baseplate-dev/ui-components"),{useNavigate:wn}=await d("@tanstack/react-router"),Nn=function(){const{app:n,section:t}=E.useLoaderData(),{appKey:i,sectionKey:s}=E.useParams(),o=wn({from:E.fullPath}),{definition:a,saveDefinitionWithFeedback:r,isSavingDefinition:m}=dn(),u=ne(sn),b=a.features.map(x=>({label:x.name,value:x.id})),c=cn({resolver:V(u),values:t,defaultValues:{type:"crud"}}),{control:p,handleSubmit:f,reset:X}=c,O=f(x=>{const{id:j,...h}=x;return r(q=>{const C=q.apps.find(T=>T.id===n.id);if(C?.type!=="web"||!C.adminApp)return;const L=C.adminApp.sections?.findIndex(T=>T.id===an.idFromKey(s));L!==void 0&&L>=0&&C.adminApp.sections&&(C.adminApp.sections[L]={...h,id:t.id})})}),Z=()=>{r(x=>{const j=x.apps.find(h=>h.id===n.id);j?.type!=="web"||!j.adminApp||(j.adminApp.sections=j.adminApp.sections?.filter(h=>h.id!==t.id))},{successMessage:`Successfully deleted section "${t.name}"!`,onSuccess:()=>{o({to:"/admin-sections/$appKey",params:{appKey:i}}).catch(H)}})};return rn({control:p,reset:X,onSubmit:O}),e.jsxs("div",{className:"relative flex h-full flex-1 flex-col overflow-hidden",children:[e.jsx("div",{className:"max-w-7xl space-y-4 border-b p-4",children:e.jsxs("div",{className:"flex items-center justify-between space-x-4",children:[e.jsxs("div",{children:[e.jsx("h2",{children:t.name}),e.jsxs("p",{className:"text-base text-muted-foreground",children:[t.type," section"]})]}),e.jsxs(pn,{children:[e.jsx(hn,{asChild:!0,children:e.jsx(_,{variant:"secondary",children:"Delete"})}),e.jsxs(bn,{children:[e.jsx(xn,{children:e.jsxs(jn,{children:["Delete ",t.name]})}),e.jsxs("p",{children:["Are you sure you want to delete ",e.jsx("strong",{children:t.name}),"?"]}),e.jsx("p",{className:"text-style-muted",children:"This action will permanently remove the admin section from your application. This cannot be undone."}),e.jsxs(fn,{children:[e.jsx(un,{children:e.jsx(_,{variant:"secondary",children:"Cancel"})}),e.jsx(_,{variant:"destructive",onClick:Z,disabled:m,children:"Delete Section"})]})]})]})]})}),e.jsx("div",{className:"mb-(--action-bar-height) flex flex-1 overflow-y-auto",style:{"--action-bar-height":"52px"},children:e.jsxs("form",{onSubmit:O,className:"w-full max-w-7xl space-y-4 p-4",children:[e.jsxs(vn,{children:[e.jsxs(gn,{children:[e.jsxs(In,{children:[e.jsx($n,{children:"General"}),e.jsx(Sn,{children:"Basic configuration for your admin section."})]}),e.jsxs(yn,{className:"space-y-6",children:[e.jsx(Fn,{label:"Name",control:p,name:"name",autoComplete:"off"}),e.jsx(mn,{label:"Feature",control:p,options:b,name:"featureRef"}),e.jsx(ln,{label:"Icon",control:p,name:"icon",description:"Choose an icon to represent this section"})]})]}),e.jsx(qe,{formProps:c})]}),e.jsx(Cn,{form:c})]})})]},t.id)};export{Nn as component};
3
+ //# sourceMappingURL=edit._sectionKey-CTX9L0j4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"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","names":["ModelUtils","importShared","createAdminCrudInputWebConfig","useProjectDefinition","SelectFieldController","AdminCrudEmbeddedInputForm","formProps","name","model","embeddedFormOptions","definition","foreignRelationOptions","r","prefix","controlTyped","jsxs","Fragment","jsx","adminCrudEmbeddedInputWebConfig","AdminCrudEmbeddedLocalInputForm","definitionContainer","localRelationOptions","relation","adminCrudEmbeddedLocalInputWebConfig","AdminCrudEnumInputForm","enumFieldOptions","f","field","adminCrudEnumInputWebConfig","InputFieldController","AdminCrudForeignInputForm","adminCrudForeignInputWebConfig","AdminCrudTextInputForm","fieldOptions","adminCrudTextInputWebConfig","BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS","adminCrudInputWebSpec","Button","FieldForm","idx","control","modelRef","useWatch","pluginContainer","inputWeb","fieldTypeOptions","config","type","inputWebConfig","WebForm","CrudFormFieldsForm","className","fields","append","remove","useFieldArray","clsx","CollapsibleRow","adminCrudDisplayTypes","ColumnForm","displayTypeOptions","t","CrudTableColumnsForm","createAdminCrudEmbeddedFormSchema","useDefinitionSchema","CheckboxFieldController","Table","TableBody","TableCell","TableHead","TableHeader","TableRow","toast","useId","AdminCrudEmbeddedTable","items","edit","item","TYPE_OPTIONS","AdminCrudEmbeddedForm","initialData","onSubmit","adminCrudEmbeddedFormSchema","useForm","zodResolver","handleSubmit","watch","modelOptions","formId","e","error","logAndFormatError","ComboboxFieldController","SectionListSection","SectionListSectionContent","SectionListSectionDescription","SectionListSectionHeader","SectionListSectionTitle","AdminCrudSectionForm","form","EmbeddedListInput","tableProps","AsyncComboboxField","useControllerMerged","fetchIcons","hiIcons","__vitePreload","n","faIcons","mdIcons","bsIcons","icons","value","key","ReactIconCombobox","rest","query","options","option","a","b","ReactIconComboboxController","restProps","adminSectionEntityType","createWebAdminSectionSchema","useBlockUnsavedChangesNavigate","useResettableForm","Dialog","DialogClose","DialogContent","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","FormActionBar","SectionList","useNavigate","SplitComponent","app","section","Route","useLoaderData","appKey","sectionKey","useParams","navigate","from","fullPath","saveDefinitionWithFeedback","isSavingDefinition","adminSectionSchema","featureOptions","features","map","label","id","resolver","values","defaultValues","reset","data","_dataId","sectionData","draftConfig","webApp","apps","find","adminApp","existingIndex","sections","findIndex","s","idFromKey","undefined","handleDelete","filter","successMessage","onSuccess","to","params","catch"],"ignoreList":[],"sources":["../../src/routes/admin-sections.$appKey/-components/inputs/embedded-input-config.tsx","../../src/routes/admin-sections.$appKey/-components/inputs/embedded-local-input-config.tsx","../../src/routes/admin-sections.$appKey/-components/inputs/enum-input-config.tsx","../../src/routes/admin-sections.$appKey/-components/inputs/foreign-input-config.tsx","../../src/routes/admin-sections.$appKey/-components/inputs/text-input-config.tsx","../../src/routes/admin-sections.$appKey/-components/inputs/index.ts","../../src/routes/admin-sections.$appKey/-components/crud-form-fields-form.tsx","../../src/routes/admin-sections.$appKey/-components/crud-table-columns-form.tsx","../../src/routes/admin-sections.$appKey/-components/admin-crud-embedded-form.tsx","../../src/routes/admin-sections.$appKey/-components/admin-crud-section-form.tsx","../../src/routes/admin-sections.$appKey/-components/react-icon-combobox.tsx","../../src/routes/admin-sections.$appKey/edit.$sectionKey.tsx?tsr-split=component"],"sourcesContent":["import type { AdminCrudEmbeddedInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { ModelUtils } from '@baseplate-dev/project-builder-lib';\nimport {\n createAdminCrudInputWebConfig,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport { SelectFieldController } from '@baseplate-dev/ui-components';\n\nfunction AdminCrudEmbeddedInputForm({\n formProps,\n name,\n model,\n embeddedFormOptions,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const { definition } = useProjectDefinition();\n\n const foreignRelationOptions = ModelUtils.getRelationsToModel(\n definition,\n model.id,\n ).map((r) => ({\n label: `${r.relation.foreignRelationName} (${r.model.name})`,\n value: r.relation.foreignId,\n }));\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudEmbeddedInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Relation Name\"\n control={controlTyped}\n name={`${prefix}.modelRelationRef`}\n options={foreignRelationOptions}\n />\n <SelectFieldController\n label=\"Embedded Form\"\n control={controlTyped}\n name={`${prefix}.embeddedFormRef`}\n options={embeddedFormOptions}\n />\n </>\n );\n}\n\nexport const adminCrudEmbeddedInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudEmbeddedInputConfig>({\n name: 'embedded',\n pluginKey: undefined,\n label: 'Embedded',\n getNewInput: () => ({\n label: '',\n type: 'embedded',\n modelRelationRef: '',\n embeddedFormRef: '',\n }),\n Form: AdminCrudEmbeddedInputForm,\n });\n","import type { AdminCrudEmbeddedLocalInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport {\n createAdminCrudInputWebConfig,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport { SelectFieldController } from '@baseplate-dev/ui-components';\n\nfunction AdminCrudEmbeddedLocalInputForm({\n formProps,\n name,\n model,\n embeddedFormOptions,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const { definitionContainer } = useProjectDefinition();\n const localRelationOptions =\n model.model.relations?.map((relation) => ({\n label: `${relation.name} (${definitionContainer.nameFromId(relation.modelRef)})`,\n value: relation.id,\n })) ?? [];\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudEmbeddedLocalInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Relation Name\"\n control={controlTyped}\n name={`${prefix}.localRelationRef`}\n options={localRelationOptions}\n />\n <SelectFieldController\n label=\"Embedded Form\"\n control={controlTyped}\n name={`${prefix}.embeddedFormRef`}\n options={embeddedFormOptions}\n />\n </>\n );\n}\n\nexport const adminCrudEmbeddedLocalInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudEmbeddedLocalInputConfig>({\n name: 'embeddedLocal',\n pluginKey: undefined,\n label: 'Embedded Local',\n getNewInput: () => ({\n label: '',\n type: 'embeddedLocal',\n embeddedFormRef: '',\n localRelationRef: '',\n }),\n Form: AdminCrudEmbeddedLocalInputForm,\n });\n","import type { AdminCrudEnumInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { createAdminCrudInputWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport { SelectFieldController } from '@baseplate-dev/ui-components';\n\nfunction AdminCrudEnumInputForm({\n formProps,\n name,\n model,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const enumFieldOptions = model.model.fields\n .filter((f) => f.type === 'enum')\n .map((field) => ({\n label: field.name,\n value: field.id,\n }));\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudEnumInputConfig;\n }>;\n\n return (\n <SelectFieldController\n label=\"Enum Field\"\n control={controlTyped}\n name={`${prefix}.modelFieldRef`}\n options={enumFieldOptions}\n />\n );\n}\n\nexport const adminCrudEnumInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudEnumInputConfig>({\n name: 'enum',\n pluginKey: undefined,\n label: 'Enum',\n getNewInput: () => ({ label: '', type: 'enum', modelFieldRef: '' }),\n Form: AdminCrudEnumInputForm,\n });\n","import type { AdminCrudForeignInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport {\n createAdminCrudInputWebConfig,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\n\nfunction AdminCrudForeignInputForm({\n formProps,\n name,\n model,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const { definitionContainer } = useProjectDefinition();\n const localRelationOptions =\n model.model.relations?.map((relation) => ({\n label: `${relation.name} (${definitionContainer.nameFromId(relation.modelRef)})`,\n value: relation.id,\n })) ?? [];\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudForeignInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Local Relation Name\"\n control={controlTyped}\n name={`${prefix}.localRelationRef`}\n options={localRelationOptions}\n />\n <InputFieldController\n label=\"Label Expression (e.g. name)\"\n control={controlTyped}\n name={`${prefix}.labelExpression`}\n />\n <InputFieldController\n label=\"Value Expression (e.g. id)\"\n control={controlTyped}\n name={`${prefix}.valueExpression`}\n />\n <InputFieldController\n label=\"Default Label (optional)\"\n control={controlTyped}\n name={`${prefix}.defaultLabel`}\n />\n <InputFieldController\n label=\"Empty Label (optional) - only if field is nullable\"\n control={controlTyped}\n name={`${prefix}.nullLabel`}\n />\n </>\n );\n}\n\nexport const adminCrudForeignInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudForeignInputConfig>({\n name: 'foreign',\n pluginKey: undefined,\n label: 'Foreign',\n getNewInput: () => ({\n label: '',\n type: 'foreign',\n localRelationRef: '',\n labelExpression: '',\n valueExpression: '',\n defaultLabel: '',\n nullLabel: '',\n }),\n Form: AdminCrudForeignInputForm,\n });\n","import type { AdminCrudTextInputConfig } from '@baseplate-dev/project-builder-lib';\nimport type { AdminCrudInputWebFormProps } from '@baseplate-dev/project-builder-lib/web';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { createAdminCrudInputWebConfig } from '@baseplate-dev/project-builder-lib/web';\nimport {\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\n\nfunction AdminCrudTextInputForm({\n formProps,\n name,\n model,\n}: AdminCrudInputWebFormProps): React.JSX.Element {\n const fieldOptions = model.model.fields.map((field) => ({\n label: field.name,\n value: field.id,\n }));\n const prefix = name as 'prefix';\n const controlTyped = formProps.control as Control<{\n prefix: AdminCrudTextInputConfig;\n }>;\n\n return (\n <>\n <SelectFieldController\n label=\"Field\"\n control={controlTyped}\n name={`${prefix}.modelFieldRef`}\n options={fieldOptions}\n />\n <InputFieldController\n label=\"Validation (zod), e.g. z.string().min(1) (optional)\"\n control={controlTyped}\n name={`${prefix}.validation`}\n />\n </>\n );\n}\n\nexport const adminCrudTextInputWebConfig =\n createAdminCrudInputWebConfig<AdminCrudTextInputConfig>({\n name: 'text',\n pluginKey: undefined,\n label: 'Text',\n getNewInput: () => ({ label: '', type: 'text', modelFieldRef: '' }),\n Form: AdminCrudTextInputForm,\n });\n","import { adminCrudEmbeddedInputWebConfig } from './embedded-input-config.js';\nimport { adminCrudEmbeddedLocalInputWebConfig } from './embedded-local-input-config.js';\nimport { adminCrudEnumInputWebConfig } from './enum-input-config.js';\nimport { adminCrudForeignInputWebConfig } from './foreign-input-config.js';\nimport { adminCrudTextInputWebConfig } from './text-input-config.js';\n\nexport const BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS = [\n adminCrudEmbeddedInputWebConfig,\n adminCrudEmbeddedLocalInputWebConfig,\n adminCrudEnumInputWebConfig,\n adminCrudForeignInputWebConfig,\n adminCrudTextInputWebConfig,\n];\n","import type { AdminCrudSectionConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { UseFormReturn } from 'react-hook-form';\n\nimport { ModelUtils } from '@baseplate-dev/project-builder-lib';\nimport {\n adminCrudInputWebSpec,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\nimport clsx from 'clsx';\nimport { useFieldArray, useWatch } from 'react-hook-form';\n\nimport { CollapsibleRow } from '#src/components/index.js';\n\nimport { BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS } from './inputs/index.js';\n\nexport type AdminCrudFormConfigInput = Pick<\n AdminCrudSectionConfigInput,\n 'form' | 'modelRef'\n>;\n\ninterface Props {\n className?: string;\n formProps: UseFormReturn<AdminCrudFormConfigInput>;\n embeddedFormOptions: { label: string; value: string }[];\n}\n\nfunction FieldForm({\n idx,\n formProps,\n embeddedFormOptions,\n}: {\n idx: number;\n formProps: UseFormReturn<AdminCrudFormConfigInput>;\n embeddedFormOptions: { label: string; value: string }[];\n}): React.JSX.Element {\n const { control } = formProps;\n const modelRef = useWatch({ control, name: 'modelRef' });\n const { definition, pluginContainer } = useProjectDefinition();\n const model = modelRef\n ? ModelUtils.byIdOrThrow(definition, modelRef)\n : undefined;\n\n const inputWeb = pluginContainer.getPluginSpec(adminCrudInputWebSpec);\n\n const fieldTypeOptions = inputWeb\n .getInputWebConfigs(BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS)\n .map((config) => ({\n label: config.label,\n value: config.name,\n }));\n\n const type = useWatch({\n control,\n name: `form.fields.${idx}.type`,\n });\n const inputWebConfig = inputWeb.getInputWebConfig(\n type,\n BUILT_IN_ADMIN_CRUD_INPUT_WEB_CONFIGS,\n );\n const WebForm = inputWebConfig.Form;\n\n return (\n <div className=\"space-y-4\">\n <SelectFieldController\n label=\"Type\"\n control={control}\n options={fieldTypeOptions}\n name={`form.fields.${idx}.type`}\n />\n <InputFieldController\n label=\"Label\"\n control={control}\n name={`form.fields.${idx}.label`}\n />\n {WebForm && model && (\n <WebForm\n formProps={formProps}\n name={`form.fields.${idx}`}\n model={model}\n embeddedFormOptions={embeddedFormOptions}\n pluginKey={inputWebConfig.pluginKey}\n />\n )}\n </div>\n );\n}\n\nfunction CrudFormFieldsForm({\n className,\n formProps,\n embeddedFormOptions,\n}: Props): React.JSX.Element {\n const { control } = formProps;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'form.fields',\n });\n\n return (\n <div className={clsx('space-y-4', className)}>\n {fields.map((field, idx) => (\n <CollapsibleRow\n key={field.id}\n collapsedContents={\n <div>\n {field.label} ({field.type})\n </div>\n }\n onRemove={() => {\n remove(idx);\n }}\n defaultOpen={!field.label}\n >\n <FieldForm\n key={field.id}\n idx={idx}\n formProps={formProps}\n embeddedFormOptions={embeddedFormOptions}\n />\n </CollapsibleRow>\n ))}\n <Button\n onClick={() => {\n append({ type: 'text', label: '' });\n }}\n >\n Add Field\n </Button>\n </div>\n );\n}\n\nexport default CrudFormFieldsForm;\n","import type { AdminCrudSectionConfig } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport {\n adminCrudDisplayTypes,\n ModelUtils,\n} from '@baseplate-dev/project-builder-lib';\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n InputFieldController,\n SelectFieldController,\n} from '@baseplate-dev/ui-components';\nimport clsx from 'clsx';\nimport { useFieldArray, useWatch } from 'react-hook-form';\n\nimport { CollapsibleRow } from '#src/components/index.js';\n\nexport type AdminCrudTableConfig = Pick<\n AdminCrudSectionConfig,\n 'table' | 'modelRef'\n>;\n\ninterface Props {\n className?: string;\n control: Control<AdminCrudTableConfig>;\n}\n\nfunction ColumnForm({\n idx,\n control,\n fieldOptions,\n localRelationOptions,\n}: {\n idx: number;\n control: Control<AdminCrudTableConfig>;\n fieldOptions: { label: string; value: string }[];\n localRelationOptions: { label: string; value: string }[];\n}): React.JSX.Element {\n const displayTypeOptions = adminCrudDisplayTypes.map((t) => ({\n label: t,\n value: t,\n }));\n const type = useWatch({ control, name: `table.columns.${idx}.display.type` });\n return (\n <div className=\"space-y-4\">\n <SelectFieldController\n label=\"Type\"\n control={control}\n options={displayTypeOptions}\n name={`table.columns.${idx}.display.type`}\n />\n <InputFieldController\n label=\"Label\"\n control={control}\n name={`table.columns.${idx}.label`}\n />\n\n {type === 'text' && (\n <SelectFieldController\n label=\"Field\"\n control={control}\n name={`table.columns.${idx}.display.modelFieldRef`}\n options={fieldOptions}\n />\n )}\n {type === 'foreign' && (\n <>\n <SelectFieldController\n label=\"Local Relation Name\"\n control={control}\n name={`table.columns.${idx}.display.localRelationRef`}\n options={localRelationOptions}\n />\n <InputFieldController\n label=\"Label Expression (e.g. name)\"\n control={control}\n name={`table.columns.${idx}.display.labelExpression`}\n />\n <InputFieldController\n label=\"Value Expression (e.g. id)\"\n control={control}\n name={`table.columns.${idx}.display.valueExpression`}\n />\n </>\n )}\n </div>\n );\n}\n\nfunction CrudTableColumnsForm({\n className,\n control,\n}: Props): React.JSX.Element {\n const modelRef = useWatch({ control, name: 'modelRef' });\n const { definition, definitionContainer } = useProjectDefinition();\n const model = modelRef\n ? ModelUtils.byIdOrThrow(definition, modelRef)\n : undefined;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'table.columns',\n });\n\n const localRelationOptions =\n model?.model.relations?.map((relation) => ({\n label: `${relation.name} (${definitionContainer.nameFromId(relation.modelRef)})`,\n value: relation.id,\n })) ?? [];\n\n const fieldOptions =\n model?.model.fields.map((field) => ({\n label: field.name,\n value: field.id,\n })) ?? [];\n\n return (\n <div className={clsx('space-y-4', className)}>\n {fields.map((field, idx) => (\n <CollapsibleRow\n key={field.id}\n collapsedContents={\n <div>\n {field.label} ({field.display.type})\n </div>\n }\n onRemove={() => {\n remove(idx);\n }}\n defaultOpen={!field.label}\n >\n <ColumnForm\n key={field.id}\n idx={idx}\n control={control}\n fieldOptions={fieldOptions}\n localRelationOptions={localRelationOptions}\n />\n </CollapsibleRow>\n ))}\n <Button\n onClick={() => {\n append({ display: { type: 'text', modelFieldRef: '' }, label: '' });\n }}\n >\n Add Column\n </Button>\n </div>\n );\n}\n\nexport default CrudTableColumnsForm;\n","import type { AdminCrudEmbeddedFormConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control, UseFormReturn } from 'react-hook-form';\n\nimport { createAdminCrudEmbeddedFormSchema } from '@baseplate-dev/project-builder-lib';\nimport {\n useDefinitionSchema,\n useProjectDefinition,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n CheckboxFieldController,\n InputFieldController,\n SelectFieldController,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n toast,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useId } from 'react';\nimport { useForm } from 'react-hook-form';\n\nimport type {\n EmbeddedListFormProps,\n EmbeddedListTableProps,\n} from '#src/components/index.js';\n\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\nimport type { AdminCrudFormConfigInput } from './crud-form-fields-form.js';\nimport type { AdminCrudTableConfig } from './crud-table-columns-form.js';\n\nimport CrudFormFieldsForm from './crud-form-fields-form.js';\nimport CrudTableColumnsForm from './crud-table-columns-form.js';\n\nexport function AdminCrudEmbeddedTable({\n items,\n edit,\n remove,\n}: EmbeddedListTableProps<AdminCrudEmbeddedFormConfigInput>): React.JSX.Element {\n const { definitionContainer } = useProjectDefinition();\n return (\n <Table className=\"max-w-6xl\">\n <TableHeader>\n <TableRow>\n <TableHead>Form Name</TableHead>\n <TableHead>Model Name</TableHead>\n <TableHead>Type</TableHead>\n <TableHead>Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map((item, idx) => (\n <TableRow key={item.id}>\n <TableCell>{item.name}</TableCell>\n <TableCell>\n {definitionContainer.nameFromId(item.modelRef)}\n </TableCell>\n <TableCell>{item.type}</TableCell>\n <TableCell className=\"space-x-4\">\n <Button\n variant=\"link\"\n size=\"none\"\n onClick={() => {\n edit(idx);\n }}\n >\n Edit\n </Button>\n <Button\n variant=\"linkDestructive\"\n size=\"none\"\n onClick={() => {\n remove(idx);\n }}\n >\n Remove\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n\nconst TYPE_OPTIONS = [\n { label: 'Object', value: 'object' },\n { label: 'List', value: 'list' },\n];\n\ninterface Props\n extends EmbeddedListFormProps<AdminCrudEmbeddedFormConfigInput> {\n embeddedFormOptions: { label: string; value: string }[];\n}\n\nfunction AdminCrudEmbeddedForm({\n initialData,\n onSubmit,\n embeddedFormOptions,\n}: Props): React.JSX.Element {\n const { definition } = useProjectDefinition();\n const adminCrudEmbeddedFormSchema = useDefinitionSchema(\n createAdminCrudEmbeddedFormSchema,\n );\n const formProps = useForm<AdminCrudEmbeddedFormConfigInput>({\n resolver: zodResolver(adminCrudEmbeddedFormSchema),\n defaultValues: initialData,\n });\n const { handleSubmit, control, watch } = formProps;\n\n const modelOptions = definition.models.map((model) => ({\n label: model.name,\n value: model.id,\n }));\n\n const type = watch('type');\n\n const formId = useId();\n\n return (\n <form\n onSubmit={(e) => {\n e.stopPropagation();\n handleSubmit(onSubmit)(e).catch((error: unknown) => {\n toast.error(logAndFormatError(error));\n });\n }}\n id={formId}\n className=\"space-y-4\"\n >\n <InputFieldController label=\"Name\" control={control} name=\"name\" />\n <SelectFieldController\n label=\"Type\"\n control={control}\n name=\"type\"\n options={TYPE_OPTIONS}\n />\n <CheckboxFieldController\n label=\"Include ID Field? (useful for list types)\"\n control={control}\n name=\"includeIdField\"\n />\n <SelectFieldController\n label=\"Model\"\n control={control}\n options={modelOptions}\n name=\"modelRef\"\n />\n {type === 'list' && (\n <>\n <h2>Table</h2>\n <CrudTableColumnsForm\n control={control as unknown as Control<AdminCrudTableConfig>}\n />\n </>\n )}\n <h2>Form</h2>\n <CrudFormFieldsForm\n formProps={\n formProps as unknown as UseFormReturn<AdminCrudFormConfigInput>\n }\n embeddedFormOptions={embeddedFormOptions}\n />\n <Button type=\"submit\" form={formId}>\n Save\n </Button>\n </form>\n );\n}\n\nexport default AdminCrudEmbeddedForm;\n","import type { WebAdminSectionConfigInput } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control, UseFormReturn } from 'react-hook-form';\n\nimport { useProjectDefinition } from '@baseplate-dev/project-builder-lib/web';\nimport {\n CheckboxFieldController,\n ComboboxFieldController,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n} from '@baseplate-dev/ui-components';\nimport { useWatch } from 'react-hook-form';\n\nimport { EmbeddedListInput } from '#src/components/index.js';\n\nimport type { AdminCrudFormConfigInput } from './crud-form-fields-form.js';\nimport type { AdminCrudTableConfig } from './crud-table-columns-form.js';\n\nimport AdminCrudEmbeddedForm, {\n AdminCrudEmbeddedTable,\n} from './admin-crud-embedded-form.js';\nimport CrudFormFieldsForm from './crud-form-fields-form.js';\nimport CrudTableColumnsForm from './crud-table-columns-form.js';\n\ninterface Props {\n formProps: UseFormReturn<WebAdminSectionConfigInput>;\n}\n\nfunction AdminCrudSectionForm({ formProps }: Props): React.JSX.Element {\n const { control } = formProps;\n const { definition } = useProjectDefinition();\n\n const modelOptions = definition.models.map((model) => ({\n label: model.name,\n value: model.id,\n }));\n\n // TODO: struggles with https://github.com/react-hook-form/react-hook-form/discussions/7354\n\n const embeddedFormOptions =\n useWatch({\n control,\n name: 'embeddedForms',\n })?.map((form) => ({\n label: form.name,\n value: form.id,\n })) ?? [];\n\n // TODO: Update embedded form names when form is added/removed\n\n return (\n <>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Model Configuration</SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure the data model and basic settings for this CRUD section.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"space-y-6\">\n <ComboboxFieldController\n label=\"Model\"\n control={control}\n options={modelOptions}\n name=\"modelRef\"\n />\n <CheckboxFieldController\n label=\"Disable Create?\"\n control={control}\n name=\"disableCreate\"\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Table Configuration</SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure which columns to display in the data table.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <CrudTableColumnsForm\n control={control as unknown as Control<AdminCrudTableConfig>}\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Form Configuration</SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure the form fields for creating and editing records.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <CrudFormFieldsForm\n formProps={\n formProps as unknown as UseFormReturn<AdminCrudFormConfigInput>\n }\n embeddedFormOptions={embeddedFormOptions}\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>Embedded Forms</SectionListSectionTitle>\n <SectionListSectionDescription>\n Configure embedded forms for related data objects.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent>\n <EmbeddedListInput.LabelledController\n control={control}\n name=\"embeddedForms\"\n renderForm={(formProps) => (\n <AdminCrudEmbeddedForm\n {...formProps}\n embeddedFormOptions={embeddedFormOptions}\n />\n )}\n renderTable={(tableProps) => (\n <AdminCrudEmbeddedTable {...tableProps} />\n )}\n defaultValue={{ type: 'object' }}\n />\n </SectionListSectionContent>\n </SectionListSection>\n </>\n );\n}\n\nexport default AdminCrudSectionForm;\n","import type { ComboboxFieldProps } from '@baseplate-dev/ui-components';\nimport type React from 'react';\nimport type { Control, FieldPath, FieldValues } from 'react-hook-form';\nimport type { IconType } from 'react-icons/lib';\n\nimport {\n AsyncComboboxField,\n useControllerMerged,\n} from '@baseplate-dev/ui-components';\n\ninterface IconOption {\n label: string;\n value: string;\n icon: IconType;\n}\n\ntype ReactIconComboboxProps = Omit<\n ComboboxFieldProps<IconOption>,\n 'options' | 'renderText'\n>;\n\nasync function fetchIcons(): Promise<IconOption[]> {\n const hiIcons = await import('react-icons/hi');\n const faIcons = await import('react-icons/fa');\n const mdIcons = await import('react-icons/md');\n const bsIcons = await import('react-icons/bs');\n\n const icons = [hiIcons, faIcons, mdIcons, bsIcons].map((icons) =>\n Object.entries(icons)\n .filter(([, value]) => typeof value === 'function')\n .map(([key, value]) => ({\n label: key,\n value: key,\n icon: value as IconType,\n })),\n );\n\n return icons.flat();\n}\n\nfunction ReactIconCombobox({\n ...rest\n}: ReactIconComboboxProps): React.ReactElement {\n return (\n <AsyncComboboxField\n placeholder=\"Select an icon\"\n {...rest}\n loadOptions={(query) =>\n fetchIcons().then((options) =>\n options\n .filter(\n (option) =>\n !query ||\n option.label.toLowerCase().includes(query.toLowerCase()),\n )\n .sort((a, b) => a.label.localeCompare(b.label))\n .slice(0, 20),\n )\n }\n renderItemLabel={(option) => (\n <div className=\"flex items-center gap-2\">\n <option.icon className=\"size-4\" />\n {option.label}\n </div>\n )}\n />\n );\n}\n\ninterface ReactIconComboboxControllerProps<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> extends Omit<ReactIconComboboxProps, 'value'> {\n control: Control<TFieldValues>;\n name: TFieldName;\n}\n\nfunction ReactIconComboboxController<\n TFieldValues extends FieldValues = FieldValues,\n TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n name,\n control,\n ...rest\n}: ReactIconComboboxControllerProps<\n TFieldValues,\n TFieldName\n>): React.JSX.Element {\n const {\n field,\n fieldState: { error },\n } = useControllerMerged({ name, control }, rest);\n\n const restProps = rest;\n\n return (\n <ReactIconCombobox\n error={error?.message}\n {...restProps}\n {...field}\n value={field.value ?? null}\n />\n );\n}\n\nexport { ReactIconComboboxController };\n","import type React from 'react';\n\nimport {\n adminSectionEntityType,\n createWebAdminSectionSchema,\n} from '@baseplate-dev/project-builder-lib';\nimport {\n useBlockUnsavedChangesNavigate,\n useProjectDefinition,\n useResettableForm,\n} from '@baseplate-dev/project-builder-lib/web';\nimport {\n Button,\n ComboboxFieldController,\n Dialog,\n DialogClose,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n FormActionBar,\n InputFieldController,\n SectionList,\n SectionListSection,\n SectionListSectionContent,\n SectionListSectionDescription,\n SectionListSectionHeader,\n SectionListSectionTitle,\n} from '@baseplate-dev/ui-components';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { createFileRoute, notFound, useNavigate } from '@tanstack/react-router';\n\nimport { useDefinitionSchema } from '#src/hooks/use-definition-schema.js';\nimport { logAndFormatError } from '#src/services/error-formatter.js';\n\nimport AdminCrudSectionForm from './-components/admin-crud-section-form.js';\nimport { ReactIconComboboxController } from './-components/react-icon-combobox.js';\n\nexport const Route = createFileRoute(\n '/admin-sections/$appKey/edit/$sectionKey',\n)({\n component: EditAdminSectionPage,\n beforeLoad: ({ params: { sectionKey }, context: { adminApp } }) => {\n if (!adminApp) return {};\n\n const section = adminApp.sections?.find(\n (s) => adminSectionEntityType.idFromKey(sectionKey) === s.id,\n );\n\n if (!section) return {};\n\n return {\n getTitle: () => section.name,\n section,\n };\n },\n loader: ({ context: { section, app } }) => {\n if (!section || !app) throw notFound();\n return { section, app };\n },\n});\n\nfunction EditAdminSectionPage(): React.JSX.Element {\n const { app, section } = Route.useLoaderData();\n const { appKey, sectionKey } = Route.useParams();\n const navigate = useNavigate({ from: Route.fullPath });\n\n const { definition, saveDefinitionWithFeedback, isSavingDefinition } =\n useProjectDefinition();\n const adminSectionSchema = useDefinitionSchema(createWebAdminSectionSchema);\n\n const featureOptions = definition.features.map((f) => ({\n label: f.name,\n value: f.id,\n }));\n\n const formProps = useResettableForm({\n resolver: zodResolver(adminSectionSchema),\n values: section,\n defaultValues: { type: 'crud' },\n });\n\n const { control, handleSubmit, reset } = formProps;\n\n const onSubmit = handleSubmit((data) => {\n const { id: _dataId, ...sectionData } = data;\n return saveDefinitionWithFeedback((draftConfig) => {\n const webApp = draftConfig.apps.find((a) => a.id === app.id);\n if (webApp?.type !== 'web' || !webApp.adminApp) return;\n\n const existingIndex = webApp.adminApp.sections?.findIndex(\n (s) => s.id === adminSectionEntityType.idFromKey(sectionKey),\n );\n\n if (\n existingIndex !== undefined &&\n existingIndex >= 0 &&\n webApp.adminApp.sections\n ) {\n webApp.adminApp.sections[existingIndex] = {\n ...sectionData,\n id: section.id,\n };\n }\n });\n });\n\n const handleDelete = (): void => {\n void saveDefinitionWithFeedback(\n (draftConfig) => {\n const webApp = draftConfig.apps.find((a) => a.id === app.id);\n if (webApp?.type !== 'web' || !webApp.adminApp) return;\n\n webApp.adminApp.sections = webApp.adminApp.sections?.filter(\n (s) => s.id !== section.id,\n );\n },\n {\n successMessage: `Successfully deleted section \"${section.name}\"!`,\n onSuccess: () => {\n navigate({\n to: '/admin-sections/$appKey',\n params: { appKey },\n }).catch(logAndFormatError);\n },\n },\n );\n };\n\n useBlockUnsavedChangesNavigate({ control, reset, onSubmit });\n\n return (\n <div\n className=\"relative flex h-full flex-1 flex-col overflow-hidden\"\n key={section.id}\n >\n <div className=\"max-w-7xl space-y-4 border-b p-4\">\n <div className=\"flex items-center justify-between space-x-4\">\n <div>\n <h2>{section.name}</h2>\n <p className=\"text-base text-muted-foreground\">\n {section.type} section\n </p>\n </div>\n <Dialog>\n <DialogTrigger asChild>\n <Button variant=\"secondary\">Delete</Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete {section.name}</DialogTitle>\n </DialogHeader>\n <p>\n Are you sure you want to delete <strong>{section.name}</strong>?\n </p>\n <p className=\"text-style-muted\">\n This action will permanently remove the admin section from your\n application. This cannot be undone.\n </p>\n <DialogFooter>\n <DialogClose>\n <Button variant=\"secondary\">Cancel</Button>\n </DialogClose>\n <Button\n variant=\"destructive\"\n onClick={handleDelete}\n disabled={isSavingDefinition}\n >\n Delete Section\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n </div>\n <div\n className=\"mb-(--action-bar-height) flex flex-1 overflow-y-auto\"\n style={\n {\n '--action-bar-height': '52px',\n } as React.CSSProperties\n }\n >\n <form onSubmit={onSubmit} className=\"w-full max-w-7xl space-y-4 p-4\">\n <SectionList>\n <SectionListSection>\n <SectionListSectionHeader>\n <SectionListSectionTitle>General</SectionListSectionTitle>\n <SectionListSectionDescription>\n Basic configuration for your admin section.\n </SectionListSectionDescription>\n </SectionListSectionHeader>\n <SectionListSectionContent className=\"space-y-6\">\n <InputFieldController\n label=\"Name\"\n control={control}\n name=\"name\"\n autoComplete=\"off\"\n />\n <ComboboxFieldController\n label=\"Feature\"\n control={control}\n options={featureOptions}\n name=\"featureRef\"\n />\n <ReactIconComboboxController\n label=\"Icon\"\n control={control}\n name=\"icon\"\n description=\"Choose an icon to represent this section\"\n />\n </SectionListSectionContent>\n </SectionListSection>\n\n <AdminCrudSectionForm formProps={formProps} />\n </SectionList>\n <FormActionBar form={formProps} />\n </form>\n </div>\n </div>\n );\n}\n"],"file":"assets/edit._sectionKey-CTX9L0j4.js"}
@@ -0,0 +1,2 @@
1
+ import{i as t}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{c as r}from"./index-BGLRovL6.js";const{FeatureComboboxFieldController:s}=await t("@baseplate-dev/project-builder-lib/web"),{InputFieldController:n}=await t("@baseplate-dev/ui-components");function c({className:o,control:a}){return e.jsxs("div",{className:r("max-w-md space-y-4",o),children:[e.jsx(n,{label:"Name",control:a,name:"name",description:"The name of the enum (PascalCase)"}),e.jsx(s,{label:"Feature",control:a,name:"featureRef",description:"The feature this enum belongs to (dash-case)",canCreate:!0})]})}export{c as E};
2
+ //# sourceMappingURL=enum-info-form-D5bAsvPH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enum-info-form-xlZ2HO8I.js","sources":["../../src/routes/data/enums/-components/enum-info-form.tsx"],"sourcesContent":["import type { EnumConfig } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { FeatureComboboxFieldController } from '@baseplate-dev/project-builder-lib/web';\nimport { InputFieldController } from '@baseplate-dev/ui-components';\nimport { clsx } from 'clsx';\n\ninterface Props {\n className?: string;\n control: Control<EnumConfig>;\n}\n\nexport function EnumInfoForm({ className, control }: Props): React.JSX.Element {\n return (\n <div className={clsx('max-w-md space-y-4', className)}>\n <InputFieldController\n label=\"Name\"\n control={control}\n name=\"name\"\n description=\"The name of the enum (PascalCase)\"\n />\n <FeatureComboboxFieldController\n label=\"Feature\"\n control={control}\n name=\"featureRef\"\n description=\"The feature this enum belongs to (dash-case)\"\n canCreate\n />\n </div>\n );\n}\n"],"names":["FeatureComboboxFieldController","importShared","InputFieldController","EnumInfoForm","className","control","clsx","jsx"],"mappings":"sJAIA,KAAA,CAAA,+BAAAA,CAAA,EAAA,MAAAC,EAAA,wCAAA,EACA,CAAA,qBAAAC,CAAA,EAAA,MAAAD,EAAA,8BAAA,EAQO,SAASE,EAAa,CAAE,UAAAC,EAAW,QAAAC,GAAqC,CAC7E,cACG,MAAI,CAAA,UAAWC,EAAK,qBAAsBF,CAAS,EAClD,SAAA,CAAAG,EAAA,IAACL,EAAA,CACC,MAAM,OACN,QAAAG,EACA,KAAK,OACL,YAAY,mCAAA,CACd,EACAE,EAAA,IAACP,EAAA,CACC,MAAM,UACN,QAAAK,EACA,KAAK,aACL,YAAY,+CACZ,UAAS,EAAA,CAAA,CACX,EACF,CAEJ"}
1
+ {"version":3,"file":"enum-info-form-D5bAsvPH.js","sources":["../../src/routes/data/enums/-components/enum-info-form.tsx"],"sourcesContent":["import type { EnumConfig } from '@baseplate-dev/project-builder-lib';\nimport type React from 'react';\nimport type { Control } from 'react-hook-form';\n\nimport { FeatureComboboxFieldController } from '@baseplate-dev/project-builder-lib/web';\nimport { InputFieldController } from '@baseplate-dev/ui-components';\nimport { clsx } from 'clsx';\n\ninterface Props {\n className?: string;\n control: Control<EnumConfig>;\n}\n\nexport function EnumInfoForm({ className, control }: Props): React.JSX.Element {\n return (\n <div className={clsx('max-w-md space-y-4', className)}>\n <InputFieldController\n label=\"Name\"\n control={control}\n name=\"name\"\n description=\"The name of the enum (PascalCase)\"\n />\n <FeatureComboboxFieldController\n label=\"Feature\"\n control={control}\n name=\"featureRef\"\n description=\"The feature this enum belongs to (dash-case)\"\n canCreate\n />\n </div>\n );\n}\n"],"names":["FeatureComboboxFieldController","importShared","InputFieldController","EnumInfoForm","className","control","clsx","jsx"],"mappings":"wJAIA,KAAA,CAAA,+BAAAA,CAAA,EAAA,MAAAC,EAAA,wCAAA,EACA,CAAA,qBAAAC,CAAA,EAAA,MAAAD,EAAA,8BAAA,EAQO,SAASE,EAAa,CAAE,UAAAC,EAAW,QAAAC,GAAqC,CAC7E,cACG,MAAI,CAAA,UAAWC,EAAK,qBAAsBF,CAAS,EAClD,SAAA,CAAAG,EAAA,IAACL,EAAA,CACC,MAAM,OACN,QAAAG,EACA,KAAK,OACL,YAAY,mCAAA,CACd,EACAE,EAAA,IAACP,EAAA,CACC,MAAM,UACN,QAAAK,EACA,KAAK,aACL,YAAY,+CACZ,UAAS,EAAA,CAAA,CACX,EACF,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{i as a}from"./_virtual___federation_fn_import-DXu2m-ZE.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{u as y,S as V,E as K}from"./-constants-C0cnDlAn.js";import{u as W}from"./use-model-form-Ch_tz0Rd.js";import{e as m,u as L}from"./index.esm-CTDJ8Wko.js";import{D as I,G as P}from"./index-BGLRovL6.js";import{B as w}from"./badge-with-type-label-BXoSRTRE.js";import{y as Z}from"./index-BUYA3Tes.js";const{authConfigSpec:Y}=await a("@baseplate-dev/project-builder-lib"),{useProjectDefinition:J}=await a("@baseplate-dev/project-builder-lib/web"),{Alert:X,AlertDescription:ee,AlertTitle:te,MultiSwitchField:N,SectionListSection:ie,SectionListSectionContent:se,SectionListSectionDescription:ne,SectionListSectionHeader:le,SectionListSectionTitle:ae,SwitchFieldController:R}=await a("@baseplate-dev/ui-components"),{Link:oe}=await a("@tanstack/react-router");function ce({control:t,modelKey:o}){const{definition:d,pluginContainer:l}=J(),i=l.getPluginSpecOptional(Y)?.getAuthRoles(d).map(b=>({label:b.name,value:b.id})),n=m({control:t,name:"graphql.objectType.enabled"}),c=y(b=>b.service??{}),p=m({control:t,name:"graphql.mutations.create.enabled"}),h=c.create?.enabled,j=m({control:t,name:"graphql.mutations.update.enabled"}),g=c.update?.enabled,u=m({control:t,name:"graphql.mutations.delete.enabled"}),x=c.delete?.enabled;return e.jsxs(ie,{children:[e.jsx("div",{children:e.jsxs(le,{className:"sticky top-2",children:[e.jsx(ae,{children:"Mutations"}),e.jsx(ne,{children:"Configure the GraphQL mutations that can be performed on this model."})]})}),e.jsxs(se,{className:"space-y-8",children:[(!h||!g||!x)&&e.jsxs(X,{className:"max-w-md",children:[e.jsx(I,{}),e.jsxs(te,{children:["Service methods disabled (",[!h&&"Create",!g&&"Update",!x&&"Delete"].filter(Boolean).join(", "),")"]}),e.jsxs(ee,{children:["Enable the appropriate methods on the"," ",e.jsx(oe,{to:"/data/models/edit/$key/service",params:{key:o},className:"font-semibold",children:"the service tab"})," ","to expose mutations"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(R,{control:t,name:"graphql.mutations.create.enabled",disabled:!n||!h,label:"Create Mutation",description:"Expose the create method in the GraphQL schema, e.g. createUser(input: $input)."}),p&&i&&e.jsx(N.Controller,{control:t,name:"graphql.mutations.create.roles",label:"Allowed Roles",options:i,className:"ml-[52px]"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(R,{control:t,name:"graphql.mutations.update.enabled",label:"Update Mutation",disabled:!n||!g,description:"Expose the update method in the GraphQL schema, e.g. updateUser(id: $id, input: $input)."}),j&&i&&e.jsx(N.Controller,{control:t,name:"graphql.mutations.update.roles",label:"Allowed Roles",options:i,className:"ml-[52px]"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{control:t,name:"graphql.mutations.delete.enabled",label:"Delete Mutation",disabled:!n||!x,description:"Expose the delete method in the GraphQL schema, e.g. deleteUser(id: $id)."}),u&&i&&e.jsx(N.Controller,{control:t,name:"graphql.mutations.delete.roles",label:"Allowed Roles",options:i,className:"ml-[52px]"})]})]})]})}function E(t){return P({attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z",clipRule:"evenodd"},child:[]}]})(t)}function q(t){return P({attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M9.47 6.47a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 1 1-1.06 1.06L10 8.06l-3.72 3.72a.75.75 0 0 1-1.06-1.06l4.25-4.25Z",clipRule:"evenodd"},child:[]}]})(t)}const{ModelUtils:de}=await a("@baseplate-dev/project-builder-lib"),{useProjectDefinition:re}=await a("@baseplate-dev/project-builder-lib/web"),{Badge:$,Button:T,Label:D,SectionListSection:pe,SectionListSectionContent:he,SectionListSectionDescription:me,SectionListSectionHeader:ue,SectionListSectionTitle:xe,Switch:F,SwitchFieldController:je}=await a("@baseplate-dev/ui-components"),{useState:M}=await a("react"),be="border-collapse text-left [&_td]:py-1 [&_th]:sticky [&_th]:top-0 [&_th]:bg-background [&_th]:z-10 [&_th]:py-2";function k(t,o,d,l){return d?t.filter(i=>o.includes(i.id)||i.id===l).map(i=>i.id):o.filter(i=>i!==l)}function ge({control:t}){const{definitionContainer:o,definition:d}=re(),l=y(s=>s.id),i=m({control:t,name:"graphql.objectType.enabled"}),n=y(s=>s.model.fields),{field:{value:c=[],onChange:p}}=L({control:t,name:"graphql.objectType.fields"}),h=n.length>10,[j,g]=M(h),u=y(s=>s.model.relations)??[],{field:{value:x=[],onChange:b}}=L({control:t,name:"graphql.objectType.localRelations"}),A=u.length>4,[S,U]=M(A),f=de.getRelationsToModel(d,l),{field:{value:v=[],onChange:B}}=L({control:t,name:"graphql.objectType.foreignRelations"}),O=f.length>4,[C,_]=M(O);return e.jsxs(pe,{children:[e.jsx("div",{children:e.jsxs(ue,{className:"sticky top-2",children:[e.jsx(xe,{children:"Object Type"}),e.jsx(me,{children:"Configure the object type that will be exposed in the GraphQL schema for this model."})]})}),e.jsxs(he,{className:"space-y-4",children:[e.jsx(je,{control:t,name:"graphql.objectType.enabled",label:"Enable Object Type",description:"Must be enabled for queries, mutations, and any relations to this model"}),e.jsxs("table",{className:be,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:e.jsxs("div",{className:"flex w-80 items-center gap-1",children:[e.jsx(D,{children:"Exposed Fields"}),e.jsxs($,{variant:"outline",className:"mr-5 font-medium text-muted-foreground",children:[c.length,"/",n.length," active"]}),h?e.jsx(T,{onClick:()=>{g(!j)},className:"flex items-center gap-4",title:j?"Expand fields":"Collapse fields",type:"button",variant:"ghost",size:"icon",children:j?e.jsx(E,{}):e.jsx(q,{})}):null]})}),e.jsx("th",{className:"pl-8"})]})}),e.jsxs("tbody",{children:[!j&&n.map(s=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx(w,{type:s.type==="enum"&&s.options?.enumRef?o.nameFromId(s.options.enumRef):V[s.type].label,children:s.name})}),e.jsx("td",{className:"pl-8",children:e.jsx(F,{"aria-label":`Expose ${s.name} field`,disabled:!i,checked:c.includes(s.id),onCheckedChange:r=>{p(k(n,c,r,s.id))}})})]},s.id)),u.length>0?e.jsxs("tr",{children:[e.jsx("th",{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(D,{children:"Exposed Local Relations"}),e.jsxs($,{variant:"outline",className:"mr-5 font-medium text-muted-foreground",children:[x.length,"/",u.length," ","active"]}),A?e.jsx(T,{onClick:()=>{U(!S)},className:"flex items-center gap-4",title:S?"Expand fields":"Collapse fields",type:"button",variant:"ghost",size:"icon",children:S?e.jsx(E,{}):e.jsx(q,{})}):null]})}),e.jsx("th",{})]}):null,!S&&u.map(s=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx(w,{type:o.nameFromId(s.modelRef),children:s.name})}),e.jsx("td",{className:"pl-8",children:e.jsx(F,{"aria-label":`Expose ${s.name} relation`,disabled:!i,checked:x.includes(s.id),onCheckedChange:r=>{b(k(u,x,r,s.id))}})})]},s.id)),f.length>0?e.jsxs("tr",{children:[e.jsx("th",{children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(D,{children:"Exposed Foreign Relations"}),e.jsxs($,{variant:"outline",className:"mr-5 font-medium text-muted-foreground",children:[v.length,"/",f.length," ","active"]}),O?e.jsx(T,{onClick:()=>{_(!C)},className:"flex items-center gap-4",title:C?"Expand fields":"Collapse fields",type:"button",variant:"ghost",size:"icon",children:C?e.jsx(E,{}):e.jsx(q,{})}):null]})}),e.jsx("th",{})]}):null,!C&&f.map(({model:s,relation:r})=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx(w,{type:s.name,children:r.foreignRelationName})}),e.jsx("td",{className:"pl-8",children:e.jsx(F,{"aria-label":`Expose ${r.foreignRelationName} relation`,disabled:!i,checked:v.includes(r.foreignId),onCheckedChange:H=>{B(k(f.map(({relation:z})=>({id:z.foreignId})),v,H,r.foreignId))}})})]},r.id))]})]})]})]})}const{authConfigSpec:fe}=await a("@baseplate-dev/project-builder-lib"),{useProjectDefinition:Se}=await a("@baseplate-dev/project-builder-lib/web"),{Alert:Ce,AlertDescription:ye,AlertTitle:ve,MultiSwitchField:G,SectionListSection:Le,SectionListSectionContent:we,SectionListSectionDescription:Ne,SectionListSectionHeader:Re,SectionListSectionTitle:Ee,SwitchFieldController:Q}=await a("@baseplate-dev/ui-components");function qe({control:t}){const{definition:o,pluginContainer:d}=Se(),l=m({control:t,name:"graphql.objectType.enabled"}),i=d.getPluginSpecOptional(fe)?.getAuthRoles(o).map(p=>({label:p.name,value:p.id})),n=m({control:t,name:"graphql.queries.get.enabled"}),c=m({control:t,name:"graphql.queries.list.enabled"});return e.jsxs(Le,{children:[e.jsx("div",{children:e.jsxs(Re,{className:"sticky top-2",children:[e.jsx(Ee,{children:"Queries"}),e.jsx(Ne,{children:"Configure the GraphQL queries that can be performed on this model."})]})}),e.jsxs(we,{className:"space-y-8",children:[!l&&e.jsxs(Ce,{className:"max-w-md",children:[e.jsx(I,{}),e.jsx(ve,{children:"Object type missing"}),e.jsx(ye,{children:"Enable the object type to expose queries and mutations"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(Q,{control:t,name:"graphql.queries.get.enabled",label:"Get By ID Query",disabled:!l,description:"Expose method for querying a single instance of this model by its ID, e.g. user(id: $id)."}),n&&i&&e.jsx(G.Controller,{control:t,name:"graphql.queries.get.roles",label:"Allowed Roles",options:i,className:"ml-[52px]"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(Q,{control:t,name:"graphql.queries.list.enabled",disabled:!l,label:"List Query",description:"Expose method for querying a list of instances of this model, e.g. users."}),c&&i&&e.jsx(G.Controller,{control:t,name:"graphql.queries.list.roles",label:"Allowed Roles",options:i,className:"ml-[52px]"})]})]})]})}const{useBlockUnsavedChangesNavigate:$e}=await a("@baseplate-dev/project-builder-lib/web"),{FormActionBar:Te,SectionList:De}=await a("@baseplate-dev/ui-components"),Pe=function(){const{key:o}=Z.useParams(),{form:d,onSubmit:l,originalModel:i}=W({omit:["name","featureRef"],modelKey:o}),{control:n,watch:c,getValues:p,reset:h}=d;return $e({control:n,reset:h,onSubmit:l}),e.jsx(K,{originalModel:i,getValues:p,watch:c,children:e.jsx("form",{onSubmit:l,className:"space-y-4 p-4",children:e.jsxs(De,{children:[e.jsx(ge,{control:n}),e.jsx(qe,{control:n}),e.jsx(ce,{control:n,modelKey:o}),e.jsx(Te,{form:d})]})})})};export{Pe as component};
2
+ //# sourceMappingURL=graphql-BmA-sAqU.js.map