@kozou/svelte-ui 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/build/client/_app/immutable/assets/0.BpzpdRYx.css +2 -0
  2. package/build/client/_app/immutable/assets/0.BpzpdRYx.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.BpzpdRYx.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{DxikiVqj.js → BAfs2EwQ.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BAfs2EwQ.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BAfs2EwQ.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{BgT5WiOF.js → ClT4djUO.js} +1 -1
  8. package/build/client/_app/immutable/chunks/ClT4djUO.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/{BgT5WiOF.js.gz → ClT4djUO.js.gz} +0 -0
  10. package/build/client/_app/immutable/chunks/CrFfElwr.js +1 -0
  11. package/build/client/_app/immutable/chunks/CrFfElwr.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CrFfElwr.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/DHwlcjtp.js +214 -0
  14. package/build/client/_app/immutable/chunks/DHwlcjtp.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/DHwlcjtp.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{BLwQsTD2.js → DqFR9xzq.js} +1 -1
  17. package/build/client/_app/immutable/chunks/DqFR9xzq.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/DqFR9xzq.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/{rPPoD7Sp.js → POk9Ad1v.js} +2 -2
  20. package/build/client/_app/immutable/chunks/POk9Ad1v.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/POk9Ad1v.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/app.DX7U95N5.js +2 -0
  23. package/build/client/_app/immutable/entry/app.DX7U95N5.js.br +0 -0
  24. package/build/client/_app/immutable/entry/app.DX7U95N5.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/start.CTKpPXDp.js +1 -0
  26. package/build/client/_app/immutable/entry/start.CTKpPXDp.js.br +1 -0
  27. package/build/client/_app/immutable/entry/start.CTKpPXDp.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{0.BTi1ueXu.js → 0.ahUg4RPH.js} +1 -1
  29. package/build/client/_app/immutable/nodes/0.ahUg4RPH.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/0.ahUg4RPH.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{1.D09foNRb.js → 1.BCx2aLZ9.js} +1 -1
  32. package/build/client/_app/immutable/nodes/1.BCx2aLZ9.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.BCx2aLZ9.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/2.DXYbQoLe.js +1 -0
  35. package/build/client/_app/immutable/nodes/2.DXYbQoLe.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/2.DXYbQoLe.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/3.D_kabCAZ.js +1 -0
  38. package/build/client/_app/immutable/nodes/3.D_kabCAZ.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/3.D_kabCAZ.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{3.BfuWEZdX.js → 4.C486-zEy.js} +1 -1
  41. package/build/client/_app/immutable/nodes/4.C486-zEy.js.br +2 -0
  42. package/build/client/_app/immutable/nodes/4.C486-zEy.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{4.5H5WIc-o.js → 5.D1OoUXND.js} +1 -1
  44. package/build/client/_app/immutable/nodes/5.D1OoUXND.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/5.D1OoUXND.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js +1 -0
  47. package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/7.cAEaWzyw.js +1 -0
  50. package/build/client/_app/immutable/nodes/7.cAEaWzyw.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/7.cAEaWzyw.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{7.CjEmXoAF.js → 8.Cb70WGbk.js} +1 -1
  53. package/build/client/_app/immutable/nodes/8.Cb70WGbk.js.br +1 -0
  54. package/build/client/_app/immutable/nodes/8.Cb70WGbk.js.gz +0 -0
  55. package/build/client/_app/version.json +1 -1
  56. package/build/client/_app/version.json.br +0 -0
  57. package/build/client/_app/version.json.gz +0 -0
  58. package/build/server/chunks/{0-C4CgvBlc.js → 0-CTaiiMQp.js} +3 -3
  59. package/build/server/chunks/{0-C4CgvBlc.js.map → 0-CTaiiMQp.js.map} +1 -1
  60. package/build/server/chunks/{1-BvxsIwwy.js → 1-Dni7ax6A.js} +3 -3
  61. package/build/server/chunks/{1-BvxsIwwy.js.map → 1-Dni7ax6A.js.map} +1 -1
  62. package/build/server/chunks/{2-D9il_3ty.js → 2--1dA0mCa.js} +19 -5
  63. package/build/server/chunks/2--1dA0mCa.js.map +1 -0
  64. package/build/server/chunks/3-N0Oe_-32.js +144 -0
  65. package/build/server/chunks/3-N0Oe_-32.js.map +1 -0
  66. package/build/server/chunks/{3-DfrqlU53.js → 4-BB3nsMwf.js} +5 -5
  67. package/build/server/chunks/{3-DfrqlU53.js.map → 4-BB3nsMwf.js.map} +1 -1
  68. package/build/server/chunks/{4-1chJCfPL.js → 5-QdpSeSEB.js} +6 -6
  69. package/build/server/chunks/{4-1chJCfPL.js.map → 5-QdpSeSEB.js.map} +1 -1
  70. package/build/server/chunks/{5-DUCxshKE.js → 6-DQ9D4Rjj.js} +11 -10
  71. package/build/server/chunks/6-DQ9D4Rjj.js.map +1 -0
  72. package/build/server/chunks/{6-Dh7Tg-XB.js → 7-yY-k4F-J.js} +11 -10
  73. package/build/server/chunks/7-yY-k4F-J.js.map +1 -0
  74. package/build/server/chunks/{7-CKkRKfs8.js → 8-C6Rfqnpk.js} +5 -5
  75. package/build/server/chunks/{7-CKkRKfs8.js.map → 8-C6Rfqnpk.js.map} +1 -1
  76. package/build/server/chunks/{_page.svelte-DaJwoT9F.js → _page.svelte-6bUnnrWp.js} +3 -3
  77. package/build/server/chunks/{_page.svelte-DaJwoT9F.js.map → _page.svelte-6bUnnrWp.js.map} +1 -1
  78. package/build/server/chunks/_page.svelte-BAaP0Gbn.js +143 -0
  79. package/build/server/chunks/_page.svelte-BAaP0Gbn.js.map +1 -0
  80. package/build/server/chunks/{_page.svelte-BN1au56r.js → _page.svelte-Cup_HkLy.js} +19 -3
  81. package/build/server/chunks/_page.svelte-Cup_HkLy.js.map +1 -0
  82. package/build/server/chunks/{_page.svelte-DI_FY3zW.js → _page.svelte-D1coeZL7.js} +7 -6
  83. package/build/server/chunks/_page.svelte-D1coeZL7.js.map +1 -0
  84. package/build/server/chunks/{_page.svelte-CBUJNhG1.js → _page.svelte-DsOlSzf6.js} +7 -6
  85. package/build/server/chunks/_page.svelte-DsOlSzf6.js.map +1 -0
  86. package/build/server/chunks/{_server.ts-C-Wy675T.js → _server.ts-DlnyELsA.js} +4 -4
  87. package/build/server/chunks/{_server.ts-C-Wy675T.js.map → _server.ts-DlnyELsA.js.map} +1 -1
  88. package/build/server/chunks/{adapter-CXNsjV1V.js → adapter-B1wOda2X.js} +13 -1
  89. package/build/server/chunks/adapter-B1wOda2X.js.map +1 -0
  90. package/build/server/chunks/{client-C004jkBy.js → client-CF_AG7xO.js} +2 -2
  91. package/build/server/chunks/{client-C004jkBy.js.map → client-CF_AG7xO.js.map} +1 -1
  92. package/build/server/chunks/{composite-form-_tg7iknp.js → composite-form-Khrcy6Jk.js} +60 -21
  93. package/build/server/chunks/composite-form-Khrcy6Jk.js.map +1 -0
  94. package/build/server/chunks/{error.svelte-u8Vsq8vF.js → error.svelte-CrnPC1Ez.js} +3 -3
  95. package/build/server/chunks/{error.svelte-u8Vsq8vF.js.map → error.svelte-CrnPC1Ez.js.map} +1 -1
  96. package/build/server/chunks/{hooks.server-DtCXcOVD.js → hooks.server-Oa_UD2Wo.js} +636 -12
  97. package/build/server/chunks/hooks.server-Oa_UD2Wo.js.map +1 -0
  98. package/build/server/chunks/{index-5kYmxIr9.js → index-CVekYGHP.js} +2 -2
  99. package/build/server/chunks/{index-5kYmxIr9.js.map → index-CVekYGHP.js.map} +1 -1
  100. package/build/server/chunks/{internal-fxcuSPWe.js → internal-Z9Jwi6lX.js} +3 -3
  101. package/build/server/chunks/{internal-fxcuSPWe.js.map → internal-Z9Jwi6lX.js.map} +1 -1
  102. package/build/server/chunks/privilege-readonly-CK4k2aYO.js +15 -0
  103. package/build/server/chunks/privilege-readonly-CK4k2aYO.js.map +1 -0
  104. package/build/server/chunks/{relation-options-Dzy9DaQG.js → relation-options-BQ3XnftO.js} +2 -2
  105. package/build/server/chunks/{relation-options-Dzy9DaQG.js.map → relation-options-BQ3XnftO.js.map} +1 -1
  106. package/build/server/chunks/relation-select-composite-field-D4LZijR_.js +101 -0
  107. package/build/server/chunks/relation-select-composite-field-D4LZijR_.js.map +1 -0
  108. package/build/server/chunks/{widget-registry-BcgMXjkA.js → widget-registry-6ku8orXa.js} +3 -98
  109. package/build/server/chunks/widget-registry-6ku8orXa.js.map +1 -0
  110. package/build/server/index.js +2 -2
  111. package/build/server/manifest.js +23 -15
  112. package/build/server/manifest.js.map +1 -1
  113. package/package.json +4 -4
  114. package/build/client/_app/immutable/assets/0._vgqT-Ja.css +0 -2
  115. package/build/client/_app/immutable/assets/0._vgqT-Ja.css.br +0 -0
  116. package/build/client/_app/immutable/assets/0._vgqT-Ja.css.gz +0 -0
  117. package/build/client/_app/immutable/chunks/BLwQsTD2.js.br +0 -0
  118. package/build/client/_app/immutable/chunks/BLwQsTD2.js.gz +0 -0
  119. package/build/client/_app/immutable/chunks/BgT5WiOF.js.br +0 -0
  120. package/build/client/_app/immutable/chunks/DY0oakY5.js +0 -214
  121. package/build/client/_app/immutable/chunks/DY0oakY5.js.br +0 -0
  122. package/build/client/_app/immutable/chunks/DY0oakY5.js.gz +0 -0
  123. package/build/client/_app/immutable/chunks/DxikiVqj.js.br +0 -0
  124. package/build/client/_app/immutable/chunks/DxikiVqj.js.gz +0 -0
  125. package/build/client/_app/immutable/chunks/rPPoD7Sp.js.br +0 -0
  126. package/build/client/_app/immutable/chunks/rPPoD7Sp.js.gz +0 -0
  127. package/build/client/_app/immutable/entry/app.G2Y8IfhN.js +0 -2
  128. package/build/client/_app/immutable/entry/app.G2Y8IfhN.js.br +0 -0
  129. package/build/client/_app/immutable/entry/app.G2Y8IfhN.js.gz +0 -0
  130. package/build/client/_app/immutable/entry/start.sPBaDl_M.js +0 -1
  131. package/build/client/_app/immutable/entry/start.sPBaDl_M.js.br +0 -1
  132. package/build/client/_app/immutable/entry/start.sPBaDl_M.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.br +0 -0
  134. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.gz +0 -0
  135. package/build/client/_app/immutable/nodes/1.D09foNRb.js.br +0 -2
  136. package/build/client/_app/immutable/nodes/1.D09foNRb.js.gz +0 -0
  137. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js +0 -1
  138. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.br +0 -0
  139. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.gz +0 -0
  140. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/4.5H5WIc-o.js.br +0 -0
  143. package/build/client/_app/immutable/nodes/4.5H5WIc-o.js.gz +0 -0
  144. package/build/client/_app/immutable/nodes/5.BR2iBXwV.js +0 -1
  145. package/build/client/_app/immutable/nodes/5.BR2iBXwV.js.br +0 -0
  146. package/build/client/_app/immutable/nodes/5.BR2iBXwV.js.gz +0 -0
  147. package/build/client/_app/immutable/nodes/6.ChubZePh.js +0 -1
  148. package/build/client/_app/immutable/nodes/6.ChubZePh.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/6.ChubZePh.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.br +0 -1
  151. package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.gz +0 -0
  152. package/build/server/chunks/2-D9il_3ty.js.map +0 -1
  153. package/build/server/chunks/5-DUCxshKE.js.map +0 -1
  154. package/build/server/chunks/6-Dh7Tg-XB.js.map +0 -1
  155. package/build/server/chunks/_page.svelte-BN1au56r.js.map +0 -1
  156. package/build/server/chunks/_page.svelte-CBUJNhG1.js.map +0 -1
  157. package/build/server/chunks/_page.svelte-DI_FY3zW.js.map +0 -1
  158. package/build/server/chunks/adapter-CXNsjV1V.js.map +0 -1
  159. package/build/server/chunks/composite-form-_tg7iknp.js.map +0 -1
  160. package/build/server/chunks/hooks.server-DtCXcOVD.js.map +0 -1
  161. package/build/server/chunks/widget-registry-BcgMXjkA.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ //#region src/lib/form/privilege-readonly.ts
2
+ function applyPrivilegeReadonly(table, mode) {
3
+ return {
4
+ ...table,
5
+ columns: table.columns.map((c) => {
6
+ return (mode === "create" ? c.insertable === false : c.updatable === false) && !c.readonly ? {
7
+ ...c,
8
+ readonly: true
9
+ } : c;
10
+ })
11
+ };
12
+ }
13
+
14
+ export { applyPrivilegeReadonly as a };
15
+ //# sourceMappingURL=privilege-readonly-CK4k2aYO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privilege-readonly-CK4k2aYO.js","sources":["../../../.svelte-kit/adapter-node/chunks/privilege-readonly.js"],"sourcesContent":["//#region src/lib/form/privilege-readonly.ts\nfunction applyPrivilegeReadonly(table, mode) {\n\treturn {\n\t\t...table,\n\t\tcolumns: table.columns.map((c) => {\n\t\t\treturn (mode === \"create\" ? c.insertable === false : c.updatable === false) && !c.readonly ? {\n\t\t\t\t...c,\n\t\t\t\treadonly: true\n\t\t\t} : c;\n\t\t})\n\t};\n}\n//#endregion\nexport { applyPrivilegeReadonly as t };\n"],"names":[],"mappings":"AAAA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7C,CAAC,OAAO;AACR,EAAE,GAAG,KAAK;AACV,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACpC,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,CAAC,UAAU,KAAK,KAAK,GAAG,CAAC,CAAC,SAAS,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG;AAChG,IAAI,GAAG,CAAC;AACR,IAAI,QAAQ,EAAE;AACd,IAAI,GAAG,CAAC;AACR,EAAE,CAAC;AACH,EAAE;AACF;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { e as encodeResourceId } from './resource-id-PDcQeAnc.js';
2
- import { e as error } from './index-5kYmxIr9.js';
2
+ import { e as error } from './index-CVekYGHP.js';
3
3
 
4
4
  var MAX_RELATION_LIMIT = 100;
5
5
  function clampLimit(raw) {
@@ -84,4 +84,4 @@ async function ensureSelectedOptions(adapter, relations, row, options) {
84
84
  }
85
85
 
86
86
  export { ensureSelectedOptions as e, loadInitialRelationOptions as l, searchRelationOptions as s };
87
- //# sourceMappingURL=relation-options-Dzy9DaQG.js.map
87
+ //# sourceMappingURL=relation-options-BQ3XnftO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation-options-Dzy9DaQG.js","sources":["../../../.svelte-kit/adapter-node/chunks/relation-options.js"],"sourcesContent":["import { t as encodeResourceId } from \"./resource-id.js\";\nimport { error } from \"@sveltejs/kit\";\nvar MAX_RELATION_LIMIT = 100;\nfunction clampLimit(raw) {\n\tif (raw === null) return 20;\n\tconst parsed = Number.parseInt(raw, 10);\n\tif (!Number.isFinite(parsed) || parsed < 1) return 20;\n\treturn Math.min(parsed, MAX_RELATION_LIMIT);\n}\n/**\n* Validate a relation-options request against the schema and run the search.\n*\n* The target `resource` must be a known table and both `label` and every\n* `fields` entry must be real columns of that table, so a crafted request\n* cannot point the picker at an unknown resource or push arbitrary identifiers\n* into the adapter's query grammar. Throws a SvelteKit `error` (400/404) on a\n* bad request; the endpoint surfaces it as the HTTP status.\n*/\nasync function searchRelationOptions(schema, adapter, request) {\n\tconst { resource, label } = request;\n\tif (resource === null || resource.length === 0) throw error(400, \"relation-options requires a \\\"resource\\\" query parameter.\");\n\tif (label === null || label.length === 0) throw error(400, \"relation-options requires a \\\"label\\\" query parameter.\");\n\tconst target = schema.tables.find((t) => t.qualifiedName === resource);\n\tif (target === void 0) throw error(404, `Unknown relation target: ${resource}`);\n\tconst columnNames = new Set(target.columns.map((c) => c.name));\n\tif (!columnNames.has(label)) throw error(400, `Unknown label column \"${label}\" on \"${resource}\".`);\n\tconst searchFields = request.fields ? request.fields.split(\",\").map((field) => field.trim()).filter((field) => field.length > 0) : [];\n\tfor (const field of searchFields) if (!columnNames.has(field)) throw error(400, `Unknown search field \"${field}\" on \"${resource}\".`);\n\treturn adapter.searchRelation(resource, {\n\t\tquery: request.query ?? \"\",\n\t\tlabelField: label,\n\t\tsearchFields,\n\t\tlimit: clampLimit(request.limit)\n\t});\n}\nasync function loadInitialRelationOptions(adapter, relations) {\n\tconst entries = await Promise.all(relations.map(async (relation) => {\n\t\ttry {\n\t\t\tconst options = await adapter.searchRelation(relation.resource, {\n\t\t\t\tquery: \"\",\n\t\t\t\tlabelField: relation.labelField,\n\t\t\t\tsearchFields: relation.searchFields,\n\t\t\t\tlimit: 20\n\t\t\t});\n\t\t\treturn [relation.field, options];\n\t\t} catch {\n\t\t\treturn [relation.field, []];\n\t\t}\n\t}));\n\treturn Object.fromEntries(entries);\n}\n/** Ensure each relation's currently-stored value is selectable by prepending\n* it (with a resolved label) when the first page does not already include\n* it. A composite relation assembles its current value from every component\n* column — in key order, so it doubles as the target's item id — and is\n* skipped when any component is missing (a partially-null composite foreign\n* key is not a reference). Mutates `options` in place. */\nasync function ensureSelectedOptions(adapter, relations, row, options) {\n\tawait Promise.all(relations.map(async (relation) => {\n\t\tconst keyFields = relation.keyFields ?? [relation.field];\n\t\tconst components = [];\n\t\tfor (const field of keyFields) {\n\t\t\tconst value = row[field];\n\t\t\tif (value === null || value === void 0) return;\n\t\t\tif (typeof value !== \"string\" && typeof value !== \"number\") return;\n\t\t\tif (value === \"\") return;\n\t\t\tcomponents.push(value);\n\t\t}\n\t\tconst current = keyFields.length === 1 ? components[0] : components;\n\t\tconst currentKey = encodeResourceId(current);\n\t\tconst existing = options[relation.field] ?? [];\n\t\tif (existing.some((option) => encodeResourceId(option.id) === currentKey)) return;\n\t\tlet label = components.map(String).join(\", \");\n\t\ttry {\n\t\t\tconst projected = (await adapter.get(relation.resource, current))[relation.labelField];\n\t\t\tif (projected !== null && projected !== void 0) label = String(projected);\n\t\t} catch {}\n\t\toptions[relation.field] = [{\n\t\t\tid: current,\n\t\t\tlabel\n\t\t}, ...existing];\n\t}));\n}\n//#endregion\nexport { loadInitialRelationOptions as n, searchRelationOptions as r, ensureSelectedOptions as t };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-options-BQ3XnftO.js","sources":["../../../.svelte-kit/adapter-node/chunks/relation-options.js"],"sourcesContent":["import { t as encodeResourceId } from \"./resource-id.js\";\nimport { error } from \"@sveltejs/kit\";\nvar MAX_RELATION_LIMIT = 100;\nfunction clampLimit(raw) {\n\tif (raw === null) return 20;\n\tconst parsed = Number.parseInt(raw, 10);\n\tif (!Number.isFinite(parsed) || parsed < 1) return 20;\n\treturn Math.min(parsed, MAX_RELATION_LIMIT);\n}\n/**\n* Validate a relation-options request against the schema and run the search.\n*\n* The target `resource` must be a known table and both `label` and every\n* `fields` entry must be real columns of that table, so a crafted request\n* cannot point the picker at an unknown resource or push arbitrary identifiers\n* into the adapter's query grammar. Throws a SvelteKit `error` (400/404) on a\n* bad request; the endpoint surfaces it as the HTTP status.\n*/\nasync function searchRelationOptions(schema, adapter, request) {\n\tconst { resource, label } = request;\n\tif (resource === null || resource.length === 0) throw error(400, \"relation-options requires a \\\"resource\\\" query parameter.\");\n\tif (label === null || label.length === 0) throw error(400, \"relation-options requires a \\\"label\\\" query parameter.\");\n\tconst target = schema.tables.find((t) => t.qualifiedName === resource);\n\tif (target === void 0) throw error(404, `Unknown relation target: ${resource}`);\n\tconst columnNames = new Set(target.columns.map((c) => c.name));\n\tif (!columnNames.has(label)) throw error(400, `Unknown label column \"${label}\" on \"${resource}\".`);\n\tconst searchFields = request.fields ? request.fields.split(\",\").map((field) => field.trim()).filter((field) => field.length > 0) : [];\n\tfor (const field of searchFields) if (!columnNames.has(field)) throw error(400, `Unknown search field \"${field}\" on \"${resource}\".`);\n\treturn adapter.searchRelation(resource, {\n\t\tquery: request.query ?? \"\",\n\t\tlabelField: label,\n\t\tsearchFields,\n\t\tlimit: clampLimit(request.limit)\n\t});\n}\nasync function loadInitialRelationOptions(adapter, relations) {\n\tconst entries = await Promise.all(relations.map(async (relation) => {\n\t\ttry {\n\t\t\tconst options = await adapter.searchRelation(relation.resource, {\n\t\t\t\tquery: \"\",\n\t\t\t\tlabelField: relation.labelField,\n\t\t\t\tsearchFields: relation.searchFields,\n\t\t\t\tlimit: 20\n\t\t\t});\n\t\t\treturn [relation.field, options];\n\t\t} catch {\n\t\t\treturn [relation.field, []];\n\t\t}\n\t}));\n\treturn Object.fromEntries(entries);\n}\n/** Ensure each relation's currently-stored value is selectable by prepending\n* it (with a resolved label) when the first page does not already include\n* it. A composite relation assembles its current value from every component\n* column — in key order, so it doubles as the target's item id — and is\n* skipped when any component is missing (a partially-null composite foreign\n* key is not a reference). Mutates `options` in place. */\nasync function ensureSelectedOptions(adapter, relations, row, options) {\n\tawait Promise.all(relations.map(async (relation) => {\n\t\tconst keyFields = relation.keyFields ?? [relation.field];\n\t\tconst components = [];\n\t\tfor (const field of keyFields) {\n\t\t\tconst value = row[field];\n\t\t\tif (value === null || value === void 0) return;\n\t\t\tif (typeof value !== \"string\" && typeof value !== \"number\") return;\n\t\t\tif (value === \"\") return;\n\t\t\tcomponents.push(value);\n\t\t}\n\t\tconst current = keyFields.length === 1 ? components[0] : components;\n\t\tconst currentKey = encodeResourceId(current);\n\t\tconst existing = options[relation.field] ?? [];\n\t\tif (existing.some((option) => encodeResourceId(option.id) === currentKey)) return;\n\t\tlet label = components.map(String).join(\", \");\n\t\ttry {\n\t\t\tconst projected = (await adapter.get(relation.resource, current))[relation.labelField];\n\t\t\tif (projected !== null && projected !== void 0) label = String(projected);\n\t\t} catch {}\n\t\toptions[relation.field] = [{\n\t\t\tid: current,\n\t\t\tlabel\n\t\t}, ...existing];\n\t}));\n}\n//#endregion\nexport { loadInitialRelationOptions as n, searchRelationOptions as r, ensureSelectedOptions as t };\n"],"names":[],"mappings":";;;AAEA,IAAI,kBAAkB,GAAG,GAAG;AAC5B,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,CAAC,IAAI,GAAG,KAAK,IAAI,EAAE,OAAO,EAAE;AAC5B,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;AACxC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE;AACtD,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AAC/D,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO;AACpC,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,2DAA2D,CAAC;AAC9H,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,wDAAwD,CAAC;AACrH,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC;AACvE,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnG,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;AACtI,CAAC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrI,CAAC,OAAO,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;AACzC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AAC5B,EAAE,UAAU,EAAE,KAAK;AACnB,EAAE,YAAY;AACd,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK;AACjC,EAAE,CAAC;AACH;AACA,eAAe,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE;AAC9D,CAAC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,QAAQ,KAAK;AACrE,EAAE,IAAI;AACN,GAAG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,UAAU,EAAE,QAAQ,CAAC,UAAU;AACnC,IAAI,YAAY,EAAE,QAAQ,CAAC,YAAY;AACvC,IAAI,KAAK,EAAE;AACX,IAAI,CAAC;AACL,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;AACnC,EAAE,CAAC,CAAC,MAAM;AACV,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;AAC9B,EAAE;AACF,CAAC,CAAC,CAAC,CAAC;AACJ,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE;AACvE,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,QAAQ,KAAK;AACrD,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1D,EAAE,MAAM,UAAU,GAAG,EAAE;AACvB,EAAE,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE;AACjC,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC3B,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC3C,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC/D,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE;AACrB,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,EAAE;AACF,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU;AACrE,EAAE,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC9C,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;AAChD,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,EAAE;AAC7E,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/C,EAAE,IAAI;AACN,GAAG,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC;AACzF,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5E,EAAE,CAAC,CAAC,MAAM,CAAC;AACX,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,GAAG,EAAE,EAAE,OAAO;AACd,GAAG;AACH,GAAG,EAAE,GAAG,QAAQ,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC;AACJ;;;;"}
@@ -0,0 +1,101 @@
1
+ import { d as attr, q as escape_html, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
2
+ import { e as encodeResourceId } from './resource-id-PDcQeAnc.js';
3
+ import { c as createRelationSearch, f as fetchRelationOptions } from './widget-registry-6ku8orXa.js';
4
+ import { i as isPickableOption, c as compositeParamName, C as COMPOSITE_CLEAR_VALUE } from './composite-form-Khrcy6Jk.js';
5
+
6
+ //#region src/lib/form/widgets/relation-select-composite-field.svelte
7
+ function Relation_select_composite_field($$renderer, $$props) {
8
+ $$renderer.component(($$renderer) => {
9
+ /** Base for the select's DOM id (the relation's first column). */
10
+ /** "schema.table" the picker searches. */
11
+ /** Target column shown as each option's label. */
12
+ /** Target columns the substring search filters on. */
13
+ /** Server-rendered first page (plus the current value on edit) so the
14
+ * picker has rows before the browser issues any request. */
15
+ /** Current component values, in the target's primary-key declaration
16
+ * order (the order option-id components use). */
17
+ /** Receives the picked option's components (same order), or `null` when
18
+ * the operator clears an optional relation. */
19
+ let { name, label, resource, labelField, searchFields, initialOptions, values, onpick, required = false, readonly = false, limit = 20 } = $$props;
20
+ let options = initialOptions.filter(isPickableOption);
21
+ let query = "";
22
+ const known = /* @__PURE__ */ new Map();
23
+ function remember(option) {
24
+ const components = Array.isArray(option.id) ? option.id : [option.id];
25
+ known.set(encodeResourceId(option.id), {
26
+ label: option.label,
27
+ components
28
+ });
29
+ }
30
+ for (const option of initialOptions.filter(isPickableOption)) remember(option);
31
+ const selectedKey = derived(() => {
32
+ if (values.length > 0 && values.every((value) => value === "")) return COMPOSITE_CLEAR_VALUE;
33
+ const components = [];
34
+ for (const value of values) {
35
+ if (value === null || value === void 0) return "";
36
+ if (typeof value !== "string" && typeof value !== "number") return "";
37
+ components.push(value);
38
+ }
39
+ return encodeResourceId(components);
40
+ });
41
+ createRelationSearch({
42
+ adapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },
43
+ resource,
44
+ labelField,
45
+ searchFields,
46
+ limit
47
+ });
48
+ function handleChange(event) {
49
+ const key = event.target.value;
50
+ if (key === "__clear__") {
51
+ onpick(null);
52
+ return;
53
+ }
54
+ if (key === "") return;
55
+ const picked = known.get(key);
56
+ if (picked !== void 0) onpick(picked.components);
57
+ }
58
+ const selectId = derived(() => `relation-${name}`);
59
+ $$renderer.push(`<div class="block"><label${attr("for", selectId())} class="mb-1 block text-sm font-medium">${escape_html(label)}`);
60
+ if (required) {
61
+ $$renderer.push("<!--[0-->");
62
+ $$renderer.push(`<span class="text-destructive" aria-hidden="true">*</span>`);
63
+ } else $$renderer.push("<!--[-1-->");
64
+ $$renderer.push(`<!--]--></label> <input type="text" placeholder="Search…"${attr("aria-label", `Search ${label}`)}${attr("value", query)}${attr("disabled", readonly, true)} class="mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"/> `);
65
+ $$renderer.select({
66
+ id: selectId(),
67
+ name: compositeParamName(name),
68
+ required,
69
+ disabled: readonly,
70
+ value: selectedKey(),
71
+ onchange: handleChange,
72
+ class: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
73
+ }, ($$renderer) => {
74
+ $$renderer.option({
75
+ value: "",
76
+ disabled: true
77
+ }, ($$renderer) => {
78
+ $$renderer.push(`Select…`);
79
+ });
80
+ if (!required) {
81
+ $$renderer.push("<!--[0-->");
82
+ $$renderer.option({ value: COMPOSITE_CLEAR_VALUE }, ($$renderer) => {
83
+ $$renderer.push(`--`);
84
+ });
85
+ } else $$renderer.push("<!--[-1-->");
86
+ $$renderer.push(`<!--]--><!--[-->`);
87
+ const each_array = ensure_array_like(options);
88
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
89
+ let option = each_array[$$index];
90
+ $$renderer.option({ value: encodeResourceId(option.id) }, ($$renderer) => {
91
+ $$renderer.push(`${escape_html(option.label)}`);
92
+ });
93
+ }
94
+ $$renderer.push(`<!--]-->`);
95
+ });
96
+ $$renderer.push(`</div>`);
97
+ });
98
+ }
99
+
100
+ export { Relation_select_composite_field as R };
101
+ //# sourceMappingURL=relation-select-composite-field-D4LZijR_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-select-composite-field-D4LZijR_.js","sources":["../../../.svelte-kit/adapter-node/chunks/relation-select-composite-field.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, r as derived } from \"./dev.js\";\nimport { t as encodeResourceId } from \"./resource-id.js\";\nimport { i as fetchRelationOptions, r as createRelationSearch } from \"./widget-registry.js\";\nimport { a as isPickableOption, r as compositeParamName, t as COMPOSITE_CLEAR_VALUE } from \"./relation-field-config.js\";\n//#region src/lib/form/widgets/relation-select-composite-field.svelte\nfunction Relation_select_composite_field($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Base for the select's DOM id (the relation's first column). */\n\t\t/** \"schema.table\" the picker searches. */\n\t\t/** Target column shown as each option's label. */\n\t\t/** Target columns the substring search filters on. */\n\t\t/** Server-rendered first page (plus the current value on edit) so the\n\t\t* picker has rows before the browser issues any request. */\n\t\t/** Current component values, in the target's primary-key declaration\n\t\t* order (the order option-id components use). */\n\t\t/** Receives the picked option's components (same order), or `null` when\n\t\t* the operator clears an optional relation. */\n\t\tlet { name, label, resource, labelField, searchFields, initialOptions, values, onpick, required = false, readonly = false, limit = 20 } = $$props;\n\t\tlet options = initialOptions.filter(isPickableOption);\n\t\tlet query = \"\";\n\t\tconst known = /* @__PURE__ */ new Map();\n\t\tfunction remember(option) {\n\t\t\tconst components = Array.isArray(option.id) ? option.id : [option.id];\n\t\t\tknown.set(encodeResourceId(option.id), {\n\t\t\t\tlabel: option.label,\n\t\t\t\tcomponents\n\t\t\t});\n\t\t}\n\t\tfor (const option of initialOptions.filter(isPickableOption)) remember(option);\n\t\tconst selectedKey = derived(() => {\n\t\t\tif (values.length > 0 && values.every((value) => value === \"\")) return COMPOSITE_CLEAR_VALUE;\n\t\t\tconst components = [];\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value === null || value === void 0) return \"\";\n\t\t\t\tif (typeof value !== \"string\" && typeof value !== \"number\") return \"\";\n\t\t\t\tcomponents.push(value);\n\t\t\t}\n\t\t\treturn encodeResourceId(components);\n\t\t});\n\t\tcreateRelationSearch({\n\t\t\tadapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },\n\t\t\tresource,\n\t\t\tlabelField,\n\t\t\tsearchFields,\n\t\t\tlimit\n\t\t});\n\t\tfunction handleChange(event) {\n\t\t\tconst key = event.target.value;\n\t\t\tif (key === \"__clear__\") {\n\t\t\t\tonpick(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (key === \"\") return;\n\t\t\tconst picked = known.get(key);\n\t\t\tif (picked !== void 0) onpick(picked.components);\n\t\t}\n\t\tconst selectId = derived(() => `relation-${name}`);\n\t\t$$renderer.push(`<div class=\"block\"><label${attr(\"for\", selectId())} class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></label> <input type=\"text\" placeholder=\"Search…\"${attr(\"aria-label\", `Search ${label}`)}${attr(\"value\", query)}${attr(\"disabled\", readonly, true)} class=\"mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/> `);\n\t\t$$renderer.select({\n\t\t\tid: selectId(),\n\t\t\tname: compositeParamName(name),\n\t\t\trequired,\n\t\t\tdisabled: readonly,\n\t\t\tvalue: selectedKey(),\n\t\t\tonchange: handleChange,\n\t\t\tclass: \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({\n\t\t\t\tvalue: \"\",\n\t\t\t\tdisabled: true\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Select…`);\n\t\t\t});\n\t\t\tif (!required) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.option({ value: COMPOSITE_CLEAR_VALUE }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`--`);\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: encodeResourceId(option.id) }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option.label)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</div>`);\n\t});\n}\n//#endregion\nexport { Relation_select_composite_field as t };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { d as attr, q as escape_html, o as ensure_array_like, e as bind_props, m as derived } from './dev-yFiAtg5l.js';
1
+ import { e as bind_props, q as escape_html, d as attr, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
2
2
  import { e as encodeResourceId } from './resource-id-PDcQeAnc.js';
3
- import { i as isPickableOption, c as compositeParamName, C as COMPOSITE_CLEAR_VALUE } from './composite-form-_tg7iknp.js';
4
3
 
5
4
  //#region src/lib/form/relation-options-client.ts
6
5
  var RELATION_OPTIONS_PATH = "/relation-options";
@@ -72,100 +71,6 @@ function createRelationSearch(opts) {
72
71
  };
73
72
  }
74
73
  //#endregion
75
- //#region src/lib/form/widgets/relation-select-composite-field.svelte
76
- function Relation_select_composite_field($$renderer, $$props) {
77
- $$renderer.component(($$renderer) => {
78
- /** Base for the select's DOM id (the relation's first column). */
79
- /** "schema.table" the picker searches. */
80
- /** Target column shown as each option's label. */
81
- /** Target columns the substring search filters on. */
82
- /** Server-rendered first page (plus the current value on edit) so the
83
- * picker has rows before the browser issues any request. */
84
- /** Current component values, in the target's primary-key declaration
85
- * order (the order option-id components use). */
86
- /** Receives the picked option's components (same order), or `null` when
87
- * the operator clears an optional relation. */
88
- let { name, label, resource, labelField, searchFields, initialOptions, values, onpick, required = false, readonly = false, limit = 20 } = $$props;
89
- let options = initialOptions.filter(isPickableOption);
90
- let query = "";
91
- const known = /* @__PURE__ */ new Map();
92
- function remember(option) {
93
- const components = Array.isArray(option.id) ? option.id : [option.id];
94
- known.set(encodeResourceId(option.id), {
95
- label: option.label,
96
- components
97
- });
98
- }
99
- for (const option of initialOptions.filter(isPickableOption)) remember(option);
100
- const selectedKey = derived(() => {
101
- if (values.length > 0 && values.every((value) => value === "")) return COMPOSITE_CLEAR_VALUE;
102
- const components = [];
103
- for (const value of values) {
104
- if (value === null || value === void 0) return "";
105
- if (typeof value !== "string" && typeof value !== "number") return "";
106
- components.push(value);
107
- }
108
- return encodeResourceId(components);
109
- });
110
- createRelationSearch({
111
- adapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },
112
- resource,
113
- labelField,
114
- searchFields,
115
- limit
116
- });
117
- function handleChange(event) {
118
- const key = event.target.value;
119
- if (key === "__clear__") {
120
- onpick(null);
121
- return;
122
- }
123
- if (key === "") return;
124
- const picked = known.get(key);
125
- if (picked !== void 0) onpick(picked.components);
126
- }
127
- const selectId = derived(() => `relation-${name}`);
128
- $$renderer.push(`<div class="block"><label${attr("for", selectId())} class="mb-1 block text-sm font-medium">${escape_html(label)}`);
129
- if (required) {
130
- $$renderer.push("<!--[0-->");
131
- $$renderer.push(`<span class="text-destructive" aria-hidden="true">*</span>`);
132
- } else $$renderer.push("<!--[-1-->");
133
- $$renderer.push(`<!--]--></label> <input type="text" placeholder="Search…"${attr("aria-label", `Search ${label}`)}${attr("value", query)}${attr("disabled", readonly, true)} class="mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"/> `);
134
- $$renderer.select({
135
- id: selectId(),
136
- name: compositeParamName(name),
137
- required,
138
- disabled: readonly,
139
- value: selectedKey(),
140
- onchange: handleChange,
141
- class: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
142
- }, ($$renderer) => {
143
- $$renderer.option({
144
- value: "",
145
- disabled: true
146
- }, ($$renderer) => {
147
- $$renderer.push(`Select…`);
148
- });
149
- if (!required) {
150
- $$renderer.push("<!--[0-->");
151
- $$renderer.option({ value: COMPOSITE_CLEAR_VALUE }, ($$renderer) => {
152
- $$renderer.push(`--`);
153
- });
154
- } else $$renderer.push("<!--[-1-->");
155
- $$renderer.push(`<!--]--><!--[-->`);
156
- const each_array = ensure_array_like(options);
157
- for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
158
- let option = each_array[$$index];
159
- $$renderer.option({ value: encodeResourceId(option.id) }, ($$renderer) => {
160
- $$renderer.push(`${escape_html(option.label)}`);
161
- });
162
- }
163
- $$renderer.push(`<!--]-->`);
164
- });
165
- $$renderer.push(`</div>`);
166
- });
167
- }
168
- //#endregion
169
74
  //#region src/lib/form/widgets/relation-select.svelte
170
75
  function Relation_select($$renderer, $$props) {
171
76
  $$renderer.component(($$renderer) => {
@@ -478,5 +383,5 @@ function resolveWidget(widget) {
478
383
  return widgetRegistry[widget] ?? Text;
479
384
  }
480
385
 
481
- export { Relation_select_composite_field as R, Relation_select_field as a, resolveWidget as r };
482
- //# sourceMappingURL=widget-registry-BcgMXjkA.js.map
386
+ export { Relation_select_field as R, createRelationSearch as c, fetchRelationOptions as f, resolveWidget as r };
387
+ //# sourceMappingURL=widget-registry-6ku8orXa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-registry-6ku8orXa.js","sources":["../../../.svelte-kit/adapter-node/chunks/widget-registry.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, n as bind_props, r as derived } from \"./dev.js\";\nimport { t as encodeResourceId } from \"./resource-id.js\";\n//#region src/lib/form/relation-options-client.ts\nvar RELATION_OPTIONS_PATH = \"/relation-options\";\n/** Build the `/relation-options` query string for a relation search. */\nfunction relationOptionsUrl(resource, params) {\n\tconst query = new URLSearchParams();\n\tquery.set(\"resource\", resource);\n\tquery.set(\"label\", params.labelField);\n\tif (params.searchFields.length > 0) query.set(\"fields\", params.searchFields.join(\",\"));\n\tif (params.query.length > 0) query.set(\"q\", params.query);\n\tif (params.limit !== void 0) query.set(\"limit\", String(params.limit));\n\treturn `${RELATION_OPTIONS_PATH}?${query.toString()}`;\n}\nasync function fetchRelationOptions(fetchFn, resource, params) {\n\tconst response = await fetchFn(relationOptionsUrl(resource, params));\n\tif (!response.ok) return [];\n\tconst body = await response.json();\n\treturn Array.isArray(body.options) ? body.options : [];\n}\n//#endregion\n//#region src/lib/form/relation-search.ts\nvar DEFAULT_DEBOUNCE_MS = 200;\nvar CANCELLED_REASON = \"relation-search:cancelled\";\nvar RelationSearchCancelledError = class extends Error {\n\tconstructor() {\n\t\tsuper(CANCELLED_REASON);\n\t\tthis.name = \"RelationSearchCancelledError\";\n\t}\n};\nfunction createRelationSearch(opts) {\n\tconst debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n\tconst setTimeoutFn = opts.setTimeoutFn ?? globalThis.setTimeout;\n\tconst clearTimeoutFn = opts.clearTimeoutFn ?? globalThis.clearTimeout;\n\tlet pendingHandle = null;\n\tlet pendingReject = null;\n\tlet latestSeq = 0;\n\tfunction cancelInternal() {\n\t\tlatestSeq += 1;\n\t\tif (pendingHandle !== null) {\n\t\t\tclearTimeoutFn(pendingHandle);\n\t\t\tpendingHandle = null;\n\t\t}\n\t\tif (pendingReject !== null) {\n\t\t\tpendingReject(new RelationSearchCancelledError());\n\t\t\tpendingReject = null;\n\t\t}\n\t}\n\treturn {\n\t\tsearch(query) {\n\t\t\tcancelInternal();\n\t\t\tconst seq = latestSeq;\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpendingReject = reject;\n\t\t\t\tpendingHandle = setTimeoutFn(() => {\n\t\t\t\t\tpendingHandle = null;\n\t\t\t\t\tpendingReject = null;\n\t\t\t\t\topts.adapter.searchRelation(opts.resource, {\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tlabelField: opts.labelField,\n\t\t\t\t\t\tsearchFields: opts.searchFields,\n\t\t\t\t\t\tlimit: opts.limit\n\t\t\t\t\t}).then((rows) => seq === latestSeq ? resolve(rows) : reject(new RelationSearchCancelledError()), (err) => seq === latestSeq ? reject(err) : reject(new RelationSearchCancelledError()));\n\t\t\t\t}, debounceMs);\n\t\t\t});\n\t\t},\n\t\tcancel() {\n\t\t\tcancelInternal();\n\t\t}\n\t};\n}\n//#endregion\n//#region src/lib/form/widgets/relation-select.svelte\nfunction Relation_select($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, options, value = \"\", required = false, readonly = false, onsearch } = $$props;\n\t\tlet query = \"\";\n\t\tconst selectId = derived(() => `relation-${name}`);\n\t\t$$renderer.push(`<div class=\"block\"><label${attr(\"for\", selectId())} class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></label> `);\n\t\tif (onsearch) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<input type=\"text\" placeholder=\"Search…\"${attr(\"aria-label\", `Search ${label}`)}${attr(\"value\", query)}${attr(\"disabled\", readonly, true)} class=\"mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\t$$renderer.select({\n\t\t\tid: selectId(),\n\t\t\tname,\n\t\t\trequired,\n\t\t\tdisabled: readonly,\n\t\t\tvalue,\n\t\t\tclass: \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n\t\t}, ($$renderer) => {\n\t\t\tif (!required) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`--`);\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: option.id }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option.label)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</div>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/relation-select-field.svelte\nfunction Relation_select_field($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** \"schema.table\" the picker searches. */\n\t\t/** Target column shown as each option's label. */\n\t\t/** Target columns the substring search filters on. */\n\t\t/** Server-rendered first page (plus the current value on edit) so the\n\t\t* picker has rows before the browser issues any request. */\n\t\tlet { name, label, resource, labelField, searchFields, initialOptions, value = \"\", required = false, readonly = false, limit = 20 } = $$props;\n\t\tlet options = [...initialOptions];\n\t\tconst known = /* @__PURE__ */ new Map();\n\t\tfor (const option of initialOptions) known.set(encodeResourceId(option.id), option.label);\n\t\tconst search = createRelationSearch({\n\t\t\tadapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },\n\t\t\tresource,\n\t\t\tlabelField,\n\t\t\tsearchFields,\n\t\t\tlimit\n\t\t});\n\t\tfunction withSelected(results) {\n\t\t\tif (value === \"\" || value === null || value === void 0) return results;\n\t\t\tconst selected = value;\n\t\t\tconst selectedKey = encodeResourceId(selected);\n\t\t\tif (results.some((option) => encodeResourceId(option.id) === selectedKey)) return results;\n\t\t\tconst selectedLabel = known.get(selectedKey);\n\t\t\tif (selectedLabel === void 0) return results;\n\t\t\treturn [{\n\t\t\t\tid: selected,\n\t\t\t\tlabel: selectedLabel\n\t\t\t}, ...results];\n\t\t}\n\t\tasync function handleSearch(query) {\n\t\t\ttry {\n\t\t\t\tconst results = await search.search(query);\n\t\t\t\tfor (const option of results) known.set(encodeResourceId(option.id), option.label);\n\t\t\t\toptions = withSelected(results);\n\t\t\t} catch {}\n\t\t}\n\t\tlet $$settled = true;\n\t\tlet $$inner_renderer;\n\t\tfunction $$render_inner($$renderer) {\n\t\t\tRelation_select($$renderer, {\n\t\t\t\tname,\n\t\t\t\tlabel,\n\t\t\t\toptions,\n\t\t\t\trequired,\n\t\t\t\treadonly,\n\t\t\t\tonsearch: handleSearch,\n\t\t\t\tget value() {\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\tset value($$value) {\n\t\t\t\t\tvalue = $$value;\n\t\t\t\t\t$$settled = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tdo {\n\t\t\t$$settled = true;\n\t\t\t$$inner_renderer = $$renderer.copy();\n\t\t\t$$render_inner($$inner_renderer);\n\t\t} while (!$$settled);\n\t\t$$renderer.subsume($$inner_renderer);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/boolean.svelte\nfunction Boolean($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"flex items-center gap-2\"><input type=\"checkbox\"${attr(\"name\", name)}${attr(\"disabled\", readonly, true)}${attr(\"checked\", value, true)} class=\"h-4 w-4 rounded border border-input bg-background\"/> <span class=\"text-sm font-medium\">${escape_html(label)}</span></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/date.svelte\nfunction Date($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"date\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/datetime.svelte\nfunction Datetime($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"datetime-local\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/enum-select.svelte\nfunction Enum_select($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, options, value = \"\", required = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> `);\n\t\t$$renderer.select({\n\t\t\tname,\n\t\t\trequired,\n\t\t\tdisabled: readonly,\n\t\t\tvalue,\n\t\t\tclass: \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n\t\t}, ($$renderer) => {\n\t\t\tif (!required) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`--`);\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: option }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/image-url.svelte\nfunction Image_url($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"https://…\", readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"url\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/> `);\n\t\tif (value) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<img${attr(\"src\", value)}${attr(\"alt\", label)} class=\"mt-2 max-h-32 rounded-md border border-border object-contain\" loading=\"lazy\"/>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/json.svelte\nfunction Json($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = void 0, required = false, readonly = false } = $$props;\n\t\tfunction formatInitial(input) {\n\t\t\tif (input === void 0 || input === null) return \"\";\n\t\t\tif (typeof input === \"string\") return input;\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(input, null, 2);\n\t\t\t} catch {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t\tlet text = formatInitial(value);\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <textarea${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"readonly\", readonly, true)}${attr(\"rows\", 6)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs\">`);\n\t\tconst $$body = escape_html(text);\n\t\tif ($$body) $$renderer.push(`${$$body}`);\n\t\t$$renderer.push(`</textarea></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/number.svelte\nfunction Number($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"\", readonly = false, step = \"any\" } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"number\"${attr(\"name\", name)}${attr(\"step\", step)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/text.svelte\nfunction Text($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"\", readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"text\"${attr(\"name\", name)}${attr(\"value\", value)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/textarea.svelte\nfunction Textarea($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"\", readonly = false, rows = 4 } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <textarea${attr(\"name\", name)}${attr(\"rows\", rows)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\">`);\n\t\tconst $$body = escape_html(value);\n\t\tif ($$body) $$renderer.push(`${$$body}`);\n\t\t$$renderer.push(`</textarea></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/uuid.svelte\nfunction Uuid($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"00000000-0000-0000-0000-000000000000\", readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"text\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} pattern=\"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\" class=\"w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widget-registry.ts\nvar widgetRegistry = {\n\ttext: Text,\n\ttextarea: Textarea,\n\tnumber: Number,\n\tcurrency: Number,\n\tboolean: Boolean,\n\tdate: Date,\n\tdatetime: Datetime,\n\t\"enum-select\": Enum_select,\n\t\"relation-select\": Relation_select,\n\tjson: Json,\n\t\"image-url\": Image_url,\n\tuuid: Uuid\n};\nfunction resolveWidget(widget) {\n\treturn widgetRegistry[widget] ?? Text;\n}\n//#endregion\nexport { fetchRelationOptions as i, Relation_select_field as n, createRelationSearch as r, resolveWidget as t };\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { j as coalesce_to_error, s as get_status, q as get_message, a1 as with_request_store, G as parse, _ as __commonJSMin, E as options, N as set_private_env, O as set_public_env, p as get_hooks, y as noop, u as has_resolution_suffix, t as has_data_suffix, h as base, V as strip_resolution_suffix, U as strip_data_suffix, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, m as decode_pathname, d as add_data_suffix, e as add_resolution_suffix, o as find_route, B as normalize_path, n as disable_search, J as public_env, Z as validate_layout_server_exports, Y as validate_layout_exports, a0 as validate_page_server_exports, $ as validate_page_exports, z as noop_span, M as resolve, K as read_implementation, r as get_relative_path, P as set_read_implementation, F as override, g as assets, L as reset, f as app_dir, l as create_remote_key, v as hash, W as text_encoder, k as compact, D as once, A as normalize_error, x as make_trackable, H as parse_remote_arg, R as stringify, S as stringify$1, Q as split_remote_key, i as base64_encode } from './chunks/internal-fxcuSPWe.js';
1
+ import { j as coalesce_to_error, s as get_status, q as get_message, a1 as with_request_store, G as parse, _ as __commonJSMin, E as options, N as set_private_env, O as set_public_env, p as get_hooks, y as noop, u as has_resolution_suffix, t as has_data_suffix, h as base, V as strip_resolution_suffix, U as strip_data_suffix, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, m as decode_pathname, d as add_data_suffix, e as add_resolution_suffix, o as find_route, B as normalize_path, n as disable_search, J as public_env, Z as validate_layout_server_exports, Y as validate_layout_exports, a0 as validate_page_server_exports, $ as validate_page_exports, z as noop_span, M as resolve, K as read_implementation, r as get_relative_path, P as set_read_implementation, F as override, g as assets, L as reset, f as app_dir, l as create_remote_key, v as hash, W as text_encoder, k as compact, D as once, A as normalize_error, x as make_trackable, H as parse_remote_arg, R as stringify, S as stringify$1, Q as split_remote_key, i as base64_encode } from './chunks/internal-Z9Jwi6lX.js';
2
2
  import { aa as uneval, X as readable, ad as writable } from './chunks/dev-yFiAtg5l.js';
3
- import { j as json, t as text, i as isRedirect, e as error } from './chunks/index-5kYmxIr9.js';
3
+ import { j as json, t as text, i as isRedirect, e as error } from './chunks/index-CVekYGHP.js';
4
4
  import { H as HttpError, S as SvelteKitError, R as Redirect, A as ActionFailure } from './chunks/index-DBqjc0Yf.js';
5
5
  import { s as set_app } from './chunks/app-MIcRQ3KA.js';
6
6
  import 'node:module';
@@ -10,16 +10,17 @@ return {
10
10
  assets: new Set([]),
11
11
  mimeTypes: {},
12
12
  _: {
13
- client: {start:"_app/immutable/entry/start.sPBaDl_M.js",app:"_app/immutable/entry/app.G2Y8IfhN.js",imports:["_app/immutable/entry/start.sPBaDl_M.js","_app/immutable/chunks/rPPoD7Sp.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/entry/app.G2Y8IfhN.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/kNaey6uv.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.CTKpPXDp.js",app:"_app/immutable/entry/app.DX7U95N5.js",imports:["_app/immutable/entry/start.CTKpPXDp.js","_app/immutable/chunks/POk9Ad1v.js","_app/immutable/chunks/ClT4djUO.js","_app/immutable/entry/app.DX7U95N5.js","_app/immutable/chunks/ClT4djUO.js","_app/immutable/chunks/kNaey6uv.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./chunks/0-C4CgvBlc.js')),
16
- __memo(() => import('./chunks/1-BvxsIwwy.js')),
17
- __memo(() => import('./chunks/2-D9il_3ty.js')),
18
- __memo(() => import('./chunks/3-DfrqlU53.js')),
19
- __memo(() => import('./chunks/4-1chJCfPL.js')),
20
- __memo(() => import('./chunks/5-DUCxshKE.js')),
21
- __memo(() => import('./chunks/6-Dh7Tg-XB.js')),
22
- __memo(() => import('./chunks/7-CKkRKfs8.js'))
15
+ __memo(() => import('./chunks/0-CTaiiMQp.js')),
16
+ __memo(() => import('./chunks/1-Dni7ax6A.js')),
17
+ __memo(() => import('./chunks/2--1dA0mCa.js')),
18
+ __memo(() => import('./chunks/3-N0Oe_-32.js')),
19
+ __memo(() => import('./chunks/4-BB3nsMwf.js')),
20
+ __memo(() => import('./chunks/5-QdpSeSEB.js')),
21
+ __memo(() => import('./chunks/6-DQ9D4Rjj.js')),
22
+ __memo(() => import('./chunks/7-yY-k4F-J.js')),
23
+ __memo(() => import('./chunks/8-C6Rfqnpk.js'))
23
24
  ],
24
25
  remotes: {
25
26
 
@@ -32,46 +33,53 @@ return {
32
33
  page: { layouts: [0,], errors: [1,], leaf: 2 },
33
34
  endpoint: null
34
35
  },
36
+ {
37
+ id: "/actions/[fn]",
38
+ pattern: /^\/actions\/([^/]+?)\/?$/,
39
+ params: [{"name":"fn","optional":false,"rest":false,"chained":false}],
40
+ page: { layouts: [0,], errors: [1,], leaf: 3 },
41
+ endpoint: null
42
+ },
35
43
  {
36
44
  id: "/relation-options",
37
45
  pattern: /^\/relation-options\/?$/,
38
46
  params: [],
39
47
  page: null,
40
- endpoint: __memo(() => import('./chunks/_server.ts-C-Wy675T.js'))
48
+ endpoint: __memo(() => import('./chunks/_server.ts-DlnyELsA.js'))
41
49
  },
42
50
  {
43
51
  id: "/tables/[table]",
44
52
  pattern: /^\/tables\/([^/]+?)\/?$/,
45
53
  params: [{"name":"table","optional":false,"rest":false,"chained":false}],
46
- page: { layouts: [0,], errors: [1,], leaf: 3 },
54
+ page: { layouts: [0,], errors: [1,], leaf: 4 },
47
55
  endpoint: null
48
56
  },
49
57
  {
50
58
  id: "/tables/[table]/new",
51
59
  pattern: /^\/tables\/([^/]+?)\/new\/?$/,
52
60
  params: [{"name":"table","optional":false,"rest":false,"chained":false}],
53
- page: { layouts: [0,], errors: [1,], leaf: 6 },
61
+ page: { layouts: [0,], errors: [1,], leaf: 7 },
54
62
  endpoint: null
55
63
  },
56
64
  {
57
65
  id: "/tables/[table]/[id]",
58
66
  pattern: /^\/tables\/([^/]+?)\/([^/]+?)\/?$/,
59
67
  params: [{"name":"table","optional":false,"rest":false,"chained":false},{"name":"id","optional":false,"rest":false,"chained":false}],
60
- page: { layouts: [0,], errors: [1,], leaf: 4 },
68
+ page: { layouts: [0,], errors: [1,], leaf: 5 },
61
69
  endpoint: null
62
70
  },
63
71
  {
64
72
  id: "/tables/[table]/[id]/edit",
65
73
  pattern: /^\/tables\/([^/]+?)\/([^/]+?)\/edit\/?$/,
66
74
  params: [{"name":"table","optional":false,"rest":false,"chained":false},{"name":"id","optional":false,"rest":false,"chained":false}],
67
- page: { layouts: [0,], errors: [1,], leaf: 5 },
75
+ page: { layouts: [0,], errors: [1,], leaf: 6 },
68
76
  endpoint: null
69
77
  },
70
78
  {
71
79
  id: "/views/[view]",
72
80
  pattern: /^\/views\/([^/]+?)\/?$/,
73
81
  params: [{"name":"view","optional":false,"rest":false,"chained":false}],
74
- page: { layouts: [0,], errors: [1,], leaf: 7 },
82
+ page: { layouts: [0,], errors: [1,], leaf: 8 },
75
83
  endpoint: null
76
84
  }
77
85
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([]),\n\tmimeTypes: {},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.sPBaDl_M.js\",app:\"_app/immutable/entry/app.G2Y8IfhN.js\",imports:[\"_app/immutable/entry/start.sPBaDl_M.js\",\"_app/immutable/chunks/rPPoD7Sp.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/entry/app.G2Y8IfhN.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/kNaey6uv.js\",\"_app/immutable/chunks/xihTtKlq.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/relation-options\",\n\t\t\t\tpattern: /^\\/relation-options\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/relation-options/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]/new\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/new\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]/[id]\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]/[id]/edit\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/([^/]+?)\\/edit\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/views/[view]\",\n\t\t\t\tpattern: /^\\/views\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"view\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"AAAY,MAAC,QAAQ,GAAG,CAAC,MAAM;AAC/B,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AACtC;;AAEA,OAAO;AACP,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,OAAO,EAAE,MAAM;AAChB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;AACpB,CAAC,SAAS,EAAE,EAAE;AACd,CAAC,CAAC,EAAE;AACJ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,GAAG,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,sCAAsC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACza,EAAE,KAAK,EAAE;AACT,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC;AACtC,GAAG;AACH,EAAE,OAAO,EAAE;AACX;AACA,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG;AACH,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,mBAAmB;AAC3B,IAAI,OAAO,EAAE,yBAAyB;AACtC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,IAAI;AACd,IAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,OAAO,iCAAoD,CAAC;AACvF,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,iBAAiB;AACzB,IAAI,OAAO,EAAE,yBAAyB;AACtC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,qBAAqB;AAC7B,IAAI,OAAO,EAAE,8BAA8B;AAC3C,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,sBAAsB;AAC9B,IAAI,OAAO,EAAE,mCAAmC;AAChD,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxI,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,2BAA2B;AACnC,IAAI,OAAO,EAAE,yCAAyC;AACtD,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxI,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,eAAe;AACvB,IAAI,OAAO,EAAE,wBAAwB;AACrC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3E,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd;AACA,GAAG;AACH,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;AACjC,EAAE,QAAQ,EAAE,YAAY;AACxB;AACA,GAAG,OAAO,IAAI;AACd,EAAE,CAAC;AACH,EAAE,aAAa,EAAE;AACjB;AACA;AACA,CAAC;;AAEW,MAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;;AAEzB,MAAC,IAAI,GAAG;;;;"}
1
+ {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([]),\n\tmimeTypes: {},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.CTKpPXDp.js\",app:\"_app/immutable/entry/app.DX7U95N5.js\",imports:[\"_app/immutable/entry/start.CTKpPXDp.js\",\"_app/immutable/chunks/POk9Ad1v.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/entry/app.DX7U95N5.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/chunks/kNaey6uv.js\",\"_app/immutable/chunks/xihTtKlq.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js')),\n\t\t\t__memo(() => import('./nodes/7.js')),\n\t\t\t__memo(() => import('./nodes/8.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/actions/[fn]\",\n\t\t\t\tpattern: /^\\/actions\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"fn\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/relation-options\",\n\t\t\t\tpattern: /^\\/relation-options\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: null,\n\t\t\t\tendpoint: __memo(() => import('./entries/endpoints/relation-options/_server.ts.js'))\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]/new\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/new\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 7 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]/[id]\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/tables/[table]/[id]/edit\",\n\t\t\t\tpattern: /^\\/tables\\/([^/]+?)\\/([^/]+?)\\/edit\\/?$/,\n\t\t\t\tparams: [{\"name\":\"table\",\"optional\":false,\"rest\":false,\"chained\":false},{\"name\":\"id\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/views/[view]\",\n\t\t\t\tpattern: /^\\/views\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"view\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 8 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kozou/svelte-ui",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Kozou reference Admin UI. SvelteKit + Svelte 5 admin UI that consumes SchemaContext via @kozou/core and talks to a backend via the DataAdapter interface.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -41,8 +41,8 @@
41
41
  "tailwind-merge": "^3.6.0",
42
42
  "tailwind-variants": "^3.2.2",
43
43
  "zod": "^4.4.3",
44
- "@kozou/introspect": "1.3.0",
45
- "@kozou/core": "1.3.0"
44
+ "@kozou/core": "1.4.0",
45
+ "@kozou/introspect": "1.4.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@playwright/test": "^1.50.0",
@@ -62,7 +62,7 @@
62
62
  "tw-animate-css": "^1.4.0",
63
63
  "typescript": "^6.0.3",
64
64
  "vite": "^8.0.14",
65
- "@kozou/api": "1.3.0"
65
+ "@kozou/api": "1.4.0"
66
66
  },
67
67
  "scripts": {
68
68
  "dev": "vite dev",
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.table{display:table}.h-4{height:calc(var(--spacing) * 4)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-input{border-color:var(--input)}.bg-background{background-color:var(--background)}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.object-contain{object-fit:contain}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.underline{text-decoration-line:underline}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.running{animation-play-state:running}@media (hover:hover){.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:underline:hover{text-decoration-line:underline}}.disabled\:opacity-50:disabled{opacity:.5}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(43.9% 0 0)}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}