@kozou/svelte-ui 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/README.md +33 -3
  2. package/build/client/_app/immutable/assets/0._vgqT-Ja.css +2 -0
  3. package/build/client/_app/immutable/assets/0._vgqT-Ja.css.br +0 -0
  4. package/build/client/_app/immutable/assets/{0.B45CfnXC.css.gz → 0._vgqT-Ja.css.gz} +0 -0
  5. package/build/client/_app/immutable/chunks/{BatBMP3E.js → B1d2TdTR.js} +3 -3
  6. package/build/client/_app/immutable/chunks/B1d2TdTR.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/B1d2TdTR.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/BgT5WiOF.js +2 -0
  9. package/build/client/_app/immutable/chunks/BgT5WiOF.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/BgT5WiOF.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/{Ds-FbTMg.js → Cn0w88Fq.js} +1 -1
  12. package/build/client/_app/immutable/chunks/Cn0w88Fq.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/Cn0w88Fq.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/D5sfkRNZ.js +1 -0
  15. package/build/client/_app/immutable/chunks/D5sfkRNZ.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/D5sfkRNZ.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/DPra5YQV.js +214 -0
  18. package/build/client/_app/immutable/chunks/DPra5YQV.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/DPra5YQV.js.gz +0 -0
  20. package/build/client/_app/immutable/chunks/DxikiVqj.js +1 -0
  21. package/build/client/_app/immutable/chunks/DxikiVqj.js.br +0 -0
  22. package/build/client/_app/immutable/chunks/DxikiVqj.js.gz +0 -0
  23. package/build/client/_app/immutable/entry/app.DHE9drsq.js +2 -0
  24. package/build/client/_app/immutable/entry/app.DHE9drsq.js.br +0 -0
  25. package/build/client/_app/immutable/entry/app.DHE9drsq.js.gz +0 -0
  26. package/build/client/_app/immutable/entry/start.BzGMfeBV.js +1 -0
  27. package/build/client/_app/immutable/entry/start.BzGMfeBV.js.br +0 -0
  28. package/build/client/_app/immutable/entry/start.BzGMfeBV.js.gz +0 -0
  29. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js +1 -0
  30. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.br +0 -0
  31. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.gz +0 -0
  32. package/build/client/_app/immutable/nodes/1.D560IYiX.js +1 -0
  33. package/build/client/_app/immutable/nodes/1.D560IYiX.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/1.D560IYiX.js.gz +0 -0
  35. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js +1 -0
  36. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.br +0 -0
  37. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.gz +0 -0
  38. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js +1 -0
  39. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.br +0 -0
  40. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.gz +0 -0
  41. package/build/client/_app/immutable/nodes/4.B99LqPAe.js +1 -0
  42. package/build/client/_app/immutable/nodes/4.B99LqPAe.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/4.B99LqPAe.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/5.DReWNUeS.js +1 -0
  45. package/build/client/_app/immutable/nodes/5.DReWNUeS.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/5.DReWNUeS.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/6.k15tkojQ.js +1 -0
  48. package/build/client/_app/immutable/nodes/6.k15tkojQ.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/6.k15tkojQ.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/{7.mp1zOZZv.js → 7.CjEmXoAF.js} +1 -1
  51. package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.br +1 -0
  52. package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.gz +0 -0
  53. package/build/client/_app/version.json +1 -1
  54. package/build/client/_app/version.json.br +0 -0
  55. package/build/client/_app/version.json.gz +0 -0
  56. package/build/server/chunks/{0-D3i8OEah.js → 0-C4CgvBlc.js} +3 -3
  57. package/build/server/chunks/{0-D3i8OEah.js.map → 0-C4CgvBlc.js.map} +1 -1
  58. package/build/server/chunks/{1-HR1yd0wU.js → 1-9vEmRESU.js} +3 -3
  59. package/build/server/chunks/{1-HR1yd0wU.js.map → 1-9vEmRESU.js.map} +1 -1
  60. package/build/server/chunks/{2-CE6m9qid.js → 2-D9il_3ty.js} +2 -2
  61. package/build/server/chunks/{2-CE6m9qid.js.map → 2-D9il_3ty.js.map} +1 -1
  62. package/build/server/chunks/{3-BfIWDc-d.js → 3-DfrqlU53.js} +3 -3
  63. package/build/server/chunks/3-DfrqlU53.js.map +1 -0
  64. package/build/server/chunks/{4-Dqn3l8BI.js → 4-B5b-ipUm.js} +46 -4
  65. package/build/server/chunks/4-B5b-ipUm.js.map +1 -0
  66. package/build/server/chunks/{5-DA-bCkUw.js → 5-CsUNrHuc.js} +25 -12
  67. package/build/server/chunks/5-CsUNrHuc.js.map +1 -0
  68. package/build/server/chunks/{6-DEjxcpBy.js → 6-DDoMrGFt.js} +23 -12
  69. package/build/server/chunks/6-DDoMrGFt.js.map +1 -0
  70. package/build/server/chunks/{7-BFDTBBBE.js → 7-CKkRKfs8.js} +3 -3
  71. package/build/server/chunks/7-CKkRKfs8.js.map +1 -0
  72. package/build/server/chunks/{_page.svelte-CyAlYQ7a.js → _page.svelte-BEtFIV7C.js} +3 -3
  73. package/build/server/chunks/{_page.svelte-CyAlYQ7a.js.map → _page.svelte-BEtFIV7C.js.map} +1 -1
  74. package/build/server/chunks/_page.svelte-CDGnOeZp.js +167 -0
  75. package/build/server/chunks/_page.svelte-CDGnOeZp.js.map +1 -0
  76. package/build/server/chunks/_page.svelte-DZ2Ayw0S.js +167 -0
  77. package/build/server/chunks/_page.svelte-DZ2Ayw0S.js.map +1 -0
  78. package/build/server/chunks/_server.ts-C-Wy675T.js +19 -0
  79. package/build/server/chunks/_server.ts-C-Wy675T.js.map +1 -0
  80. package/build/server/chunks/{adapter-1jZYeJkL.js → adapter-CXNsjV1V.js} +22 -10
  81. package/build/server/chunks/adapter-CXNsjV1V.js.map +1 -0
  82. package/build/server/chunks/{client-B9o82f8t.js → client-DLR5dxwU.js} +2 -2
  83. package/build/server/chunks/{client-B9o82f8t.js.map → client-DLR5dxwU.js.map} +1 -1
  84. package/build/server/chunks/{zod-from-table-D-zpiAdX.js → composite-form-BHZcuFIS.js} +250 -7
  85. package/build/server/chunks/composite-form-BHZcuFIS.js.map +1 -0
  86. package/build/server/chunks/{error.svelte-CCf63hYR.js → error.svelte-B3vg3Q2F.js} +3 -3
  87. package/build/server/chunks/{error.svelte-CCf63hYR.js.map → error.svelte-B3vg3Q2F.js.map} +1 -1
  88. package/build/server/chunks/{hooks.server-gNQ4wkwm.js → hooks.server-VuiVxiIQ.js} +35 -22
  89. package/build/server/chunks/hooks.server-VuiVxiIQ.js.map +1 -0
  90. package/build/server/chunks/{internal-CCj4Us-1.js → internal-BkKkeKsj.js} +3 -3
  91. package/build/server/chunks/{internal-CCj4Us-1.js.map → internal-BkKkeKsj.js.map} +1 -1
  92. package/build/server/chunks/relation-options-Dzy9DaQG.js +87 -0
  93. package/build/server/chunks/relation-options-Dzy9DaQG.js.map +1 -0
  94. package/build/server/chunks/{widget-registry-CYJ6dCZP.js → widget-registry-hWgMHMd3.js} +283 -43
  95. package/build/server/chunks/widget-registry-hWgMHMd3.js.map +1 -0
  96. package/build/server/index.js +1 -1
  97. package/build/server/manifest.js +16 -9
  98. package/build/server/manifest.js.map +1 -1
  99. package/package.json +4 -4
  100. package/build/client/_app/immutable/assets/0.B45CfnXC.css +0 -2
  101. package/build/client/_app/immutable/assets/0.B45CfnXC.css.br +0 -0
  102. package/build/client/_app/immutable/chunks/1PNfJiP5.js +0 -2
  103. package/build/client/_app/immutable/chunks/1PNfJiP5.js.br +0 -0
  104. package/build/client/_app/immutable/chunks/1PNfJiP5.js.gz +0 -0
  105. package/build/client/_app/immutable/chunks/BatBMP3E.js.br +0 -0
  106. package/build/client/_app/immutable/chunks/BatBMP3E.js.gz +0 -0
  107. package/build/client/_app/immutable/chunks/DhQvJhgX.js +0 -214
  108. package/build/client/_app/immutable/chunks/DhQvJhgX.js.br +0 -0
  109. package/build/client/_app/immutable/chunks/DhQvJhgX.js.gz +0 -0
  110. package/build/client/_app/immutable/chunks/Ds-FbTMg.js.br +0 -0
  111. package/build/client/_app/immutable/chunks/Ds-FbTMg.js.gz +0 -0
  112. package/build/client/_app/immutable/chunks/y9cSQmno.js +0 -1
  113. package/build/client/_app/immutable/chunks/y9cSQmno.js.br +0 -0
  114. package/build/client/_app/immutable/chunks/y9cSQmno.js.gz +0 -0
  115. package/build/client/_app/immutable/entry/app.CZ136DH2.js +0 -2
  116. package/build/client/_app/immutable/entry/app.CZ136DH2.js.br +0 -0
  117. package/build/client/_app/immutable/entry/app.CZ136DH2.js.gz +0 -0
  118. package/build/client/_app/immutable/entry/start.B2SCrcq3.js +0 -1
  119. package/build/client/_app/immutable/entry/start.B2SCrcq3.js.br +0 -0
  120. package/build/client/_app/immutable/entry/start.B2SCrcq3.js.gz +0 -0
  121. package/build/client/_app/immutable/nodes/0.DAriStmJ.js +0 -1
  122. package/build/client/_app/immutable/nodes/0.DAriStmJ.js.br +0 -0
  123. package/build/client/_app/immutable/nodes/0.DAriStmJ.js.gz +0 -0
  124. package/build/client/_app/immutable/nodes/1.C6AP-LKV.js +0 -1
  125. package/build/client/_app/immutable/nodes/1.C6AP-LKV.js.br +0 -0
  126. package/build/client/_app/immutable/nodes/1.C6AP-LKV.js.gz +0 -0
  127. package/build/client/_app/immutable/nodes/2.C3ChRVrO.js +0 -1
  128. package/build/client/_app/immutable/nodes/2.C3ChRVrO.js.br +0 -0
  129. package/build/client/_app/immutable/nodes/2.C3ChRVrO.js.gz +0 -0
  130. package/build/client/_app/immutable/nodes/3.C2gCkFBC.js +0 -1
  131. package/build/client/_app/immutable/nodes/3.C2gCkFBC.js.br +0 -0
  132. package/build/client/_app/immutable/nodes/3.C2gCkFBC.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/4.BT4cE3lU.js +0 -1
  134. package/build/client/_app/immutable/nodes/4.BT4cE3lU.js.br +0 -0
  135. package/build/client/_app/immutable/nodes/4.BT4cE3lU.js.gz +0 -0
  136. package/build/client/_app/immutable/nodes/5.q_Qsfmij.js +0 -1
  137. package/build/client/_app/immutable/nodes/5.q_Qsfmij.js.br +0 -0
  138. package/build/client/_app/immutable/nodes/5.q_Qsfmij.js.gz +0 -0
  139. package/build/client/_app/immutable/nodes/6.Ca5RA2Y5.js +0 -1
  140. package/build/client/_app/immutable/nodes/6.Ca5RA2Y5.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/6.Ca5RA2Y5.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/7.mp1zOZZv.js.br +0 -1
  143. package/build/client/_app/immutable/nodes/7.mp1zOZZv.js.gz +0 -0
  144. package/build/server/chunks/3-BfIWDc-d.js.map +0 -1
  145. package/build/server/chunks/4-Dqn3l8BI.js.map +0 -1
  146. package/build/server/chunks/5-DA-bCkUw.js.map +0 -1
  147. package/build/server/chunks/6-DEjxcpBy.js.map +0 -1
  148. package/build/server/chunks/7-BFDTBBBE.js.map +0 -1
  149. package/build/server/chunks/_page.svelte-CYEmRGgG.js +0 -70
  150. package/build/server/chunks/_page.svelte-CYEmRGgG.js.map +0 -1
  151. package/build/server/chunks/_page.svelte-NvCEA5JB.js +0 -70
  152. package/build/server/chunks/_page.svelte-NvCEA5JB.js.map +0 -1
  153. package/build/server/chunks/adapter-1jZYeJkL.js.map +0 -1
  154. package/build/server/chunks/hooks.server-gNQ4wkwm.js.map +0 -1
  155. package/build/server/chunks/widget-registry-CYJ6dCZP.js.map +0 -1
  156. package/build/server/chunks/zod-from-table-D-zpiAdX.js.map +0 -1
@@ -1,5 +1,5 @@
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
2
  import { p as parseResourceId, e as encodeResourceId } from './resource-id-PDcQeAnc.js';
2
- import { g as getAdapter } from './adapter-1jZYeJkL.js';
3
3
  import { e as error, r as redirect } from './index-5kYmxIr9.js';
4
4
  import './index-DBqjc0Yf.js';
5
5
 
@@ -8,7 +8,19 @@ async function resolveFkLabels(args) {
8
8
  const { table, row, schema, loadRow } = args;
9
9
  const out = {};
10
10
  const lookups = [];
11
+ const claims = /* @__PURE__ */ new Map();
11
12
  for (const relation of table.relations) {
13
+ const first = (relation.fields ?? [relation.field])[0];
14
+ claims.set(first, (claims.get(first) ?? 0) + 1);
15
+ }
16
+ for (const relation of table.relations) {
17
+ const fields = relation.fields ?? [relation.field];
18
+ if (fields.length > 1) {
19
+ if ((claims.get(fields[0]) ?? 0) > 1) continue;
20
+ const lookup = compositeLookup(fields, relation, row, schema, loadRow, out);
21
+ if (lookup !== null) lookups.push(lookup);
22
+ continue;
23
+ }
12
24
  const rawValue = row[relation.field];
13
25
  if (rawValue === null || rawValue === void 0) continue;
14
26
  if (typeof rawValue !== "string" && typeof rawValue !== "number") continue;
@@ -35,6 +47,36 @@ async function resolveFkLabels(args) {
35
47
  await Promise.all(lookups);
36
48
  return out;
37
49
  }
50
+ /** Build the lookup for a composite relation, or return `null` when it
51
+ * cannot be resolved (the raw values then render as-is). The target row is
52
+ * fetched by primary key, so the relation must reference the target's full
53
+ * primary key (in any column order) and every component must be present.
54
+ * The resolved entry is keyed by the relation's first column. */
55
+ function compositeLookup(fields, relation, row, schema, loadRow, out) {
56
+ const referencedQualifiedName = `${relation.references.schema}.${relation.references.table}`;
57
+ const referencedTable = schema.tables.find((t) => t.qualifiedName === referencedQualifiedName);
58
+ if (referencedTable === void 0) return null;
59
+ const refColumns = relation.references.columns ?? [relation.references.column];
60
+ if (refColumns.length !== fields.length) return null;
61
+ const primaryKey = referencedTable.primaryKey;
62
+ if (primaryKey.length !== refColumns.length || !primaryKey.every((column) => refColumns.includes(column))) return null;
63
+ const components = [];
64
+ for (const keyColumn of primaryKey) {
65
+ const raw = row[fields[refColumns.indexOf(keyColumn)]];
66
+ if (raw === null || raw === void 0) return null;
67
+ if (typeof raw !== "string" && typeof raw !== "number") return null;
68
+ components.push(raw);
69
+ }
70
+ const value = encodeResourceId(components);
71
+ return loadRow(referencedQualifiedName, components).then((targetRow) => {
72
+ const label = projectLabel(referencedTable, targetRow);
73
+ out[fields[0]] = {
74
+ value,
75
+ label,
76
+ referencedQualifiedName
77
+ };
78
+ });
79
+ }
38
80
  function projectLabel(referencedTable, targetRow) {
39
81
  if (targetRow === null) return null;
40
82
  const display = referencedTable.displayField;
@@ -96,11 +138,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
96
138
 
97
139
  const index = 4;
98
140
  let component_cache;
99
- const component = async () => component_cache ??= (await import('./_page.svelte-CyAlYQ7a.js')).default;
141
+ const component = async () => component_cache ??= (await import('./_page.svelte-BEtFIV7C.js')).default;
100
142
  const server_id = "src/routes/tables/[table]/[id]/+page.server.ts";
101
- const imports = ["_app/immutable/nodes/4.BT4cE3lU.js","_app/immutable/chunks/1PNfJiP5.js","_app/immutable/chunks/Ds-FbTMg.js","_app/immutable/chunks/BatBMP3E.js","_app/immutable/chunks/xihTtKlq.js"];
143
+ const imports = ["_app/immutable/nodes/4.B99LqPAe.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/Cn0w88Fq.js","_app/immutable/chunks/B1d2TdTR.js","_app/immutable/chunks/xihTtKlq.js"];
102
144
  const stylesheets = [];
103
145
  const fonts = [];
104
146
 
105
147
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
106
- //# sourceMappingURL=4-Dqn3l8BI.js.map
148
+ //# sourceMappingURL=4-B5b-ipUm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4-B5b-ipUm.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../chunks/adapter.js\";\nimport { n as parseResourceId, t as encodeResourceId } from \"../../../../../chunks/resource-id.js\";\nimport { error, redirect } from \"@sveltejs/kit\";\n//#region src/lib/detail/resolve-fk-labels.ts\nasync function resolveFkLabels(args) {\n\tconst { table, row, schema, loadRow } = args;\n\tconst out = {};\n\tconst lookups = [];\n\tconst claims = /* @__PURE__ */ new Map();\n\tfor (const relation of table.relations) {\n\t\tconst first = (relation.fields ?? [relation.field])[0];\n\t\tclaims.set(first, (claims.get(first) ?? 0) + 1);\n\t}\n\tfor (const relation of table.relations) {\n\t\tconst fields = relation.fields ?? [relation.field];\n\t\tif (fields.length > 1) {\n\t\t\tif ((claims.get(fields[0]) ?? 0) > 1) continue;\n\t\t\tconst lookup = compositeLookup(fields, relation, row, schema, loadRow, out);\n\t\t\tif (lookup !== null) lookups.push(lookup);\n\t\t\tcontinue;\n\t\t}\n\t\tconst rawValue = row[relation.field];\n\t\tif (rawValue === null || rawValue === void 0) continue;\n\t\tif (typeof rawValue !== \"string\" && typeof rawValue !== \"number\") continue;\n\t\tconst value = rawValue;\n\t\tconst referencedQualifiedName = `${relation.references.schema}.${relation.references.table}`;\n\t\tconst referencedTable = schema.tables.find((t) => t.qualifiedName === referencedQualifiedName);\n\t\tif (referencedTable === void 0) {\n\t\t\tout[relation.field] = {\n\t\t\t\tvalue,\n\t\t\t\tlabel: null,\n\t\t\t\treferencedQualifiedName\n\t\t\t};\n\t\t\tcontinue;\n\t\t}\n\t\tlookups.push(loadRow(referencedQualifiedName, value).then((targetRow) => {\n\t\t\tconst label = projectLabel(referencedTable, targetRow);\n\t\t\tout[relation.field] = {\n\t\t\t\tvalue,\n\t\t\t\tlabel,\n\t\t\t\treferencedQualifiedName\n\t\t\t};\n\t\t}));\n\t}\n\tawait Promise.all(lookups);\n\treturn out;\n}\n/** Build the lookup for a composite relation, or return `null` when it\n* cannot be resolved (the raw values then render as-is). The target row is\n* fetched by primary key, so the relation must reference the target's full\n* primary key (in any column order) and every component must be present.\n* The resolved entry is keyed by the relation's first column. */\nfunction compositeLookup(fields, relation, row, schema, loadRow, out) {\n\tconst referencedQualifiedName = `${relation.references.schema}.${relation.references.table}`;\n\tconst referencedTable = schema.tables.find((t) => t.qualifiedName === referencedQualifiedName);\n\tif (referencedTable === void 0) return null;\n\tconst refColumns = relation.references.columns ?? [relation.references.column];\n\tif (refColumns.length !== fields.length) return null;\n\tconst primaryKey = referencedTable.primaryKey;\n\tif (primaryKey.length !== refColumns.length || !primaryKey.every((column) => refColumns.includes(column))) return null;\n\tconst components = [];\n\tfor (const keyColumn of primaryKey) {\n\t\tconst raw = row[fields[refColumns.indexOf(keyColumn)]];\n\t\tif (raw === null || raw === void 0) return null;\n\t\tif (typeof raw !== \"string\" && typeof raw !== \"number\") return null;\n\t\tcomponents.push(raw);\n\t}\n\tconst value = encodeResourceId(components);\n\treturn loadRow(referencedQualifiedName, components).then((targetRow) => {\n\t\tconst label = projectLabel(referencedTable, targetRow);\n\t\tout[fields[0]] = {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t\treferencedQualifiedName\n\t\t};\n\t});\n}\nfunction projectLabel(referencedTable, targetRow) {\n\tif (targetRow === null) return null;\n\tconst display = referencedTable.displayField;\n\tif (display === null) return null;\n\tconst value = targetRow[display];\n\tif (value === null || value === void 0) return null;\n\treturn String(value);\n}\n//#endregion\n//#region src/routes/tables/[table]/[id]/+page.server.ts\nfunction findTable(tables, slug) {\n\treturn tables.find((t) => t.qualifiedName === slug) ?? null;\n}\nfunction tableViewModel(table) {\n\treturn {\n\t\tqualifiedName: table.qualifiedName,\n\t\tlabel: table.label,\n\t\tcolumns: table.columns.map((c) => ({\n\t\t\tname: c.name,\n\t\t\tlabel: c.label,\n\t\t\twidget: c.widget,\n\t\t\tisPrimaryKey: c.isPrimaryKey,\n\t\t\tisForeignKey: c.isForeignKey\n\t\t}))\n\t};\n}\nvar load = async ({ params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst adapter = getAdapter(locals.schema);\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tconst row = await adapter.get(table.qualifiedName, id);\n\tconst fkLabels = await resolveFkLabels({\n\t\ttable,\n\t\trow,\n\t\tschema: locals.schema,\n\t\tloadRow: (qualifiedName, id) => locals.fkRowCache.get(qualifiedName, id, (qn, identifier) => adapter.get(qn, identifier).catch(() => null))\n\t});\n\treturn {\n\t\ttable: tableViewModel(table),\n\t\trow,\n\t\tfkLabels,\n\t\tid: encodeResourceId(id)\n\t};\n};\nvar actions = { delete: async ({ params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tawait getAdapter(locals.schema).delete(table.qualifiedName, id);\n\tthrow redirect(303, `/tables/${table.qualifiedName}`);\n} };\n//#endregion\nexport { actions, load };\n","import * as server from '../entries/pages/tables/_table_/_id_/_page.server.ts.js';\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/_id_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/[id]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/4.B99LqPAe.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/Cn0w88Fq.js\",\"_app/immutable/chunks/B1d2TdTR.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
2
  import { p as parseResourceId, e as encodeResourceId } from './resource-id-PDcQeAnc.js';
2
- import { g as getAdapter } from './adapter-1jZYeJkL.js';
3
- import { a as superValidate, z as zod, c as zodFromTable, b as buildMutationPayload } from './zod-from-table-D-zpiAdX.js';
3
+ import { l as loadInitialRelationOptions, e as ensureSelectedOptions } from './relation-options-Dzy9DaQG.js';
4
+ import { e as relationFieldConfigs, p as promoteCompositeMemberWidgets, a as demoteUnpickableRelations, r as readFormWithCompositePicks, f as superValidate, z as zod, g as zodFromTable, b as buildMutationPayload } from './composite-form-BHZcuFIS.js';
4
5
  import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
5
- import './internal-CCj4Us-1.js';
6
+ import './internal-BkKkeKsj.js';
6
7
  import 'node:module';
7
8
  import './dev-yFiAtg5l.js';
8
9
  import 'clsx';
9
10
  import './index-DBqjc0Yf.js';
10
- import './client-B9o82f8t.js';
11
+ import './client-DLR5dxwU.js';
11
12
  import './app-DST8OmzT.js';
12
13
  import 'zod/v4/core';
13
14
  import 'zod';
@@ -35,20 +36,32 @@ function tableViewModel(table) {
35
36
  var load = async ({ params, locals }) => {
36
37
  const table = findTable(locals.schema.tables, params.table);
37
38
  if (!table) throw error(404, `Unknown table: ${params.table}`);
39
+ const adapter = getAdapter(locals.schema);
38
40
  const id = parseResourceId(params.id, table.primaryKey);
39
- const form = await superValidate(await getAdapter(locals.schema).get(table.qualifiedName, id), zod(zodFromTable(table)));
41
+ const row = await adapter.get(table.qualifiedName, id);
42
+ const relations = relationFieldConfigs(table, locals.schema);
43
+ const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
44
+ const form = await superValidate(row, zod(zodFromTable(formTable)));
45
+ const initialOptions = await loadInitialRelationOptions(adapter, relations);
46
+ await ensureSelectedOptions(adapter, relations, row, initialOptions);
40
47
  return {
41
- table: tableViewModel(table),
48
+ table: tableViewModel(formTable),
42
49
  form,
43
- id: encodeResourceId(id)
50
+ id: encodeResourceId(id),
51
+ relations,
52
+ initialOptions
44
53
  };
45
54
  };
46
55
  var actions = { default: async ({ request, params, locals }) => {
47
56
  const table = findTable(locals.schema.tables, params.table);
48
57
  if (!table) throw error(404, `Unknown table: ${params.table}`);
49
- const form = await superValidate(request, zod(zodFromTable(table)));
58
+ const relations = relationFieldConfigs(table, locals.schema);
59
+ const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
60
+ const submission = await readFormWithCompositePicks(request, relations);
61
+ if (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });
62
+ const form = await superValidate(submission, zod(zodFromTable(formTable)));
50
63
  if (!form.valid) return fail(400, { form });
51
- const payload = buildMutationPayload(table, form.data);
64
+ const payload = buildMutationPayload(formTable, form.data, "update");
52
65
  const id = parseResourceId(params.id, table.primaryKey);
53
66
  await getAdapter(locals.schema).update(table.qualifiedName, id, payload);
54
67
  throw redirect(303, `/tables/${table.qualifiedName}/${encodeResourceId(id)}`);
@@ -62,11 +75,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
62
75
 
63
76
  const index = 5;
64
77
  let component_cache;
65
- const component = async () => component_cache ??= (await import('./_page.svelte-NvCEA5JB.js')).default;
78
+ const component = async () => component_cache ??= (await import('./_page.svelte-CDGnOeZp.js')).default;
66
79
  const server_id = "src/routes/tables/[table]/[id]/edit/+page.server.ts";
67
- const imports = ["_app/immutable/nodes/5.q_Qsfmij.js","_app/immutable/chunks/1PNfJiP5.js","_app/immutable/chunks/DhQvJhgX.js","_app/immutable/chunks/BatBMP3E.js","_app/immutable/chunks/Ds-FbTMg.js","_app/immutable/chunks/xihTtKlq.js"];
80
+ const imports = ["_app/immutable/nodes/5.DReWNUeS.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/DPra5YQV.js","_app/immutable/chunks/B1d2TdTR.js","_app/immutable/chunks/Cn0w88Fq.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js"];
68
81
  const stylesheets = [];
69
82
  const fonts = [];
70
83
 
71
84
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
72
- //# sourceMappingURL=5-DA-bCkUw.js.map
85
+ //# sourceMappingURL=5-CsUNrHuc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5-CsUNrHuc.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/edit/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/5.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../../chunks/adapter.js\";\nimport { n as parseResourceId, t as encodeResourceId } from \"../../../../../../chunks/resource-id.js\";\nimport { n as loadInitialRelationOptions, t as ensureSelectedOptions } from \"../../../../../../chunks/relation-options.js\";\nimport { a as promoteCompositeMemberWidgets, o as relationFieldConfigs, r as demoteUnpickableRelations, s as superValidate } from \"../../../../../../chunks/relation-field-config.js\";\nimport { a as zod, n as zodFromTable, r as buildMutationPayload, t as readFormWithCompositePicks } from \"../../../../../../chunks/composite-form.js\";\nimport { error, fail, redirect } from \"@sveltejs/kit\";\n//#region src/routes/tables/[table]/[id]/edit/+page.server.ts\nfunction findTable(tables, slug) {\n\treturn tables.find((t) => t.qualifiedName === slug) ?? null;\n}\nfunction tableViewModel(table) {\n\treturn {\n\t\tqualifiedName: table.qualifiedName,\n\t\tlabel: table.label,\n\t\tprimaryKey: table.primaryKey,\n\t\tcolumns: table.columns.map((c) => ({\n\t\t\tname: c.name,\n\t\t\tlabel: c.label,\n\t\t\twidget: c.widget,\n\t\t\tenumValues: c.enumValues ?? [],\n\t\t\tnullable: c.nullable,\n\t\t\treadonly: c.readonly || c.isPrimaryKey,\n\t\t\tisPrimaryKey: c.isPrimaryKey\n\t\t}))\n\t};\n}\nvar load = async ({ params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst adapter = getAdapter(locals.schema);\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tconst row = await adapter.get(table.qualifiedName, id);\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst form = await superValidate(row, zod(zodFromTable(formTable)));\n\tconst initialOptions = await loadInitialRelationOptions(adapter, relations);\n\tawait ensureSelectedOptions(adapter, relations, row, initialOptions);\n\treturn {\n\t\ttable: tableViewModel(formTable),\n\t\tform,\n\t\tid: encodeResourceId(id),\n\t\trelations,\n\t\tinitialOptions\n\t};\n};\nvar actions = { default: async ({ request, params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst submission = await readFormWithCompositePicks(request, relations);\n\tif (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });\n\tconst form = await superValidate(submission, zod(zodFromTable(formTable)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = buildMutationPayload(formTable, form.data, \"update\");\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tawait getAdapter(locals.schema).update(table.qualifiedName, id, payload);\n\tthrow redirect(303, `/tables/${table.qualifiedName}/${encodeResourceId(id)}`);\n} };\n//#endregion\nexport { actions, load };\n","import * as server from '../entries/pages/tables/_table_/_id_/edit/_page.server.ts.js';\n\nexport const index = 5;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/_id_/edit/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/[id]/edit/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/5.DReWNUeS.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/DPra5YQV.js\",\"_app/immutable/chunks/B1d2TdTR.js\",\"_app/immutable/chunks/Cn0w88Fq.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
2
  import { r as rowIdSegment } from './resource-id-PDcQeAnc.js';
2
- import { g as getAdapter } from './adapter-1jZYeJkL.js';
3
- import { a as superValidate, z as zod, c as zodFromTable, b as buildMutationPayload } from './zod-from-table-D-zpiAdX.js';
3
+ import { l as loadInitialRelationOptions } from './relation-options-Dzy9DaQG.js';
4
+ import { e as relationFieldConfigs, p as promoteCompositeMemberWidgets, a as demoteUnpickableRelations, r as readFormWithCompositePicks, f as superValidate, z as zod, g as zodFromTable, b as buildMutationPayload, d as dbCanSupplyColumn } from './composite-form-BHZcuFIS.js';
4
5
  import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
5
- import './internal-CCj4Us-1.js';
6
+ import './internal-BkKkeKsj.js';
6
7
  import 'node:module';
7
8
  import './dev-yFiAtg5l.js';
8
9
  import 'clsx';
9
10
  import './index-DBqjc0Yf.js';
10
- import './client-B9o82f8t.js';
11
+ import './client-DLR5dxwU.js';
11
12
  import './app-DST8OmzT.js';
12
13
  import 'zod/v4/core';
13
14
  import 'zod';
@@ -27,6 +28,7 @@ function tableViewModel(table) {
27
28
  widget: c.widget,
28
29
  enumValues: c.enumValues ?? [],
29
30
  nullable: c.nullable,
31
+ dbCanSupply: dbCanSupplyColumn(c),
30
32
  readonly: c.readonly || c.isPrimaryKey && c.defaultExpr !== null,
31
33
  isPrimaryKey: c.isPrimaryKey
32
34
  }))
@@ -35,18 +37,27 @@ function tableViewModel(table) {
35
37
  var load = async ({ params, locals }) => {
36
38
  const table = findTable(locals.schema.tables, params.table);
37
39
  if (!table) throw error(404, `Unknown table: ${params.table}`);
38
- const form = await superValidate(zod(zodFromTable(table)));
40
+ const relations = relationFieldConfigs(table, locals.schema);
41
+ const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
42
+ const form = await superValidate(zod(zodFromTable(formTable)));
43
+ const initialOptions = await loadInitialRelationOptions(getAdapter(locals.schema), relations);
39
44
  return {
40
- table: tableViewModel(table),
41
- form
45
+ table: tableViewModel(formTable),
46
+ form,
47
+ relations,
48
+ initialOptions
42
49
  };
43
50
  };
44
51
  var actions = { default: async ({ request, params, locals }) => {
45
52
  const table = findTable(locals.schema.tables, params.table);
46
53
  if (!table) throw error(404, `Unknown table: ${params.table}`);
47
- const form = await superValidate(request, zod(zodFromTable(table)));
54
+ const relations = relationFieldConfigs(table, locals.schema);
55
+ const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
56
+ const submission = await readFormWithCompositePicks(request, relations);
57
+ if (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });
58
+ const form = await superValidate(submission, zod(zodFromTable(formTable)));
48
59
  if (!form.valid) return fail(400, { form });
49
- const payload = buildMutationPayload(table, form.data);
60
+ const payload = buildMutationPayload(formTable, form.data);
50
61
  const segment = rowIdSegment(await getAdapter(locals.schema).create(table.qualifiedName, payload), table.primaryKey);
51
62
  throw redirect(303, segment !== null ? `/tables/${table.qualifiedName}/${segment}` : `/tables/${table.qualifiedName}`);
52
63
  } };
@@ -59,11 +70,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
59
70
 
60
71
  const index = 6;
61
72
  let component_cache;
62
- const component = async () => component_cache ??= (await import('./_page.svelte-CYEmRGgG.js')).default;
73
+ const component = async () => component_cache ??= (await import('./_page.svelte-DZ2Ayw0S.js')).default;
63
74
  const server_id = "src/routes/tables/[table]/new/+page.server.ts";
64
- const imports = ["_app/immutable/nodes/6.Ca5RA2Y5.js","_app/immutable/chunks/1PNfJiP5.js","_app/immutable/chunks/DhQvJhgX.js","_app/immutable/chunks/BatBMP3E.js","_app/immutable/chunks/Ds-FbTMg.js","_app/immutable/chunks/xihTtKlq.js"];
75
+ const imports = ["_app/immutable/nodes/6.k15tkojQ.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/DPra5YQV.js","_app/immutable/chunks/B1d2TdTR.js","_app/immutable/chunks/Cn0w88Fq.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js"];
65
76
  const stylesheets = [];
66
77
  const fonts = [];
67
78
 
68
79
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
69
- //# sourceMappingURL=6-DEjxcpBy.js.map
80
+ //# sourceMappingURL=6-DDoMrGFt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"6-DDoMrGFt.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/new/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../chunks/adapter.js\";\nimport { r as rowIdSegment } from \"../../../../../chunks/resource-id.js\";\nimport { n as loadInitialRelationOptions } from \"../../../../../chunks/relation-options.js\";\nimport { a as promoteCompositeMemberWidgets, o as relationFieldConfigs, r as demoteUnpickableRelations, s as superValidate } from \"../../../../../chunks/relation-field-config.js\";\nimport { a as zod, i as dbCanSupplyColumn, n as zodFromTable, r as buildMutationPayload, t as readFormWithCompositePicks } from \"../../../../../chunks/composite-form.js\";\nimport { error, fail, redirect } from \"@sveltejs/kit\";\n//#region src/routes/tables/[table]/new/+page.server.ts\nfunction findTable(tables, slug) {\n\treturn tables.find((t) => t.qualifiedName === slug) ?? null;\n}\nfunction tableViewModel(table) {\n\treturn {\n\t\tqualifiedName: table.qualifiedName,\n\t\tlabel: table.label,\n\t\tprimaryKey: table.primaryKey,\n\t\tcolumns: table.columns.map((c) => ({\n\t\t\tname: c.name,\n\t\t\tlabel: c.label,\n\t\t\twidget: c.widget,\n\t\t\tenumValues: c.enumValues ?? [],\n\t\t\tnullable: c.nullable,\n\t\t\tdbCanSupply: dbCanSupplyColumn(c),\n\t\t\treadonly: c.readonly || c.isPrimaryKey && c.defaultExpr !== null,\n\t\t\tisPrimaryKey: c.isPrimaryKey\n\t\t}))\n\t};\n}\nvar load = async ({ params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst form = await superValidate(zod(zodFromTable(formTable)));\n\tconst initialOptions = await loadInitialRelationOptions(getAdapter(locals.schema), relations);\n\treturn {\n\t\ttable: tableViewModel(formTable),\n\t\tform,\n\t\trelations,\n\t\tinitialOptions\n\t};\n};\nvar actions = { default: async ({ request, params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst submission = await readFormWithCompositePicks(request, relations);\n\tif (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });\n\tconst form = await superValidate(submission, zod(zodFromTable(formTable)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = buildMutationPayload(formTable, form.data);\n\tconst segment = rowIdSegment(await getAdapter(locals.schema).create(table.qualifiedName, payload), table.primaryKey);\n\tthrow redirect(303, segment !== null ? `/tables/${table.qualifiedName}/${segment}` : `/tables/${table.qualifiedName}`);\n} };\n//#endregion\nexport { actions, load };\n","import * as server from '../entries/pages/tables/_table_/new/_page.server.ts.js';\n\nexport const index = 6;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/new/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/new/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/6.k15tkojQ.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/DPra5YQV.js\",\"_app/immutable/chunks/B1d2TdTR.js\",\"_app/immutable/chunks/Cn0w88Fq.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
2
  import { p as parseListParamsFromUrl } from './list-params-Cw6PMHbk.js';
2
- import { g as getAdapter } from './adapter-1jZYeJkL.js';
3
3
  import { e as error } from './index-5kYmxIr9.js';
4
4
  import './index-DBqjc0Yf.js';
5
5
 
@@ -58,9 +58,9 @@ const index = 7;
58
58
  let component_cache;
59
59
  const component = async () => component_cache ??= (await import('./_page.svelte-Dabtpyl9.js')).default;
60
60
  const server_id = "src/routes/views/[view]/+page.server.ts";
61
- const imports = ["_app/immutable/nodes/7.mp1zOZZv.js","_app/immutable/chunks/1PNfJiP5.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/y9cSQmno.js"];
61
+ const imports = ["_app/immutable/nodes/7.CjEmXoAF.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DxikiVqj.js","_app/immutable/chunks/D5sfkRNZ.js"];
62
62
  const stylesheets = [];
63
63
  const fonts = [];
64
64
 
65
65
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
66
- //# sourceMappingURL=7-BFDTBBBE.js.map
66
+ //# sourceMappingURL=7-CKkRKfs8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7-CKkRKfs8.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/views/_view_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../chunks/adapter.js\";\nimport { t as parseListParamsFromUrl } from \"../../../../chunks/list-params.js\";\nimport { error } from \"@sveltejs/kit\";\n//#region src/lib/view/columns.ts\nvar DISPLAY_COLUMN_LIMIT = 5;\nvar TEXT_LIKE_TYPE_PREFIXES = [\n\t\"text\",\n\t\"character\",\n\t\"varchar\",\n\t\"citext\",\n\t\"name\",\n\t\"uuid\"\n];\nfunction pickViewDisplayColumns(view) {\n\treturn view.columns.slice(0, DISPLAY_COLUMN_LIMIT);\n}\nfunction pickViewSearchFields(view) {\n\treturn view.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);\n}\n//#endregion\n//#region src/routes/views/[view]/+page.server.ts\nvar load = async ({ params, locals, url }) => {\n\tconst view = locals.schema.views.find((v) => v.qualifiedName === params.view);\n\tif (!view) throw error(404, `Unknown view: ${params.view}`);\n\tconst displayColumns = pickViewDisplayColumns(view);\n\tconst listParams = parseListParamsFromUrl({\n\t\turl,\n\t\tsearchFields: pickViewSearchFields(view)\n\t});\n\tconst result = await getAdapter(locals.schema).list(view.qualifiedName, listParams);\n\treturn {\n\t\tview: {\n\t\t\tqualifiedName: view.qualifiedName,\n\t\t\tlabel: view.label,\n\t\t\tcolumns: displayColumns.map((c) => ({\n\t\t\t\tname: c.name,\n\t\t\t\tlabel: c.label\n\t\t\t}))\n\t\t},\n\t\tlist: result,\n\t\tlistParams: {\n\t\t\tsearch: listParams.search,\n\t\t\tsort: listParams.sort,\n\t\t\tpage: listParams.page,\n\t\t\tpageSize: listParams.pageSize\n\t\t}\n\t};\n};\n//#endregion\nexport { load };\n","import * as server from '../entries/pages/views/_view_/_page.server.ts.js';\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/views/_view_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/views/[view]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/7.CjEmXoAF.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/DxikiVqj.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;AAGA;AACA,IAAI,oBAAoB,GAAG,CAAC;AAC5B,IAAI,uBAAuB,GAAG;AAC9B,CAAC,MAAM;AACP,CAAC,WAAW;AACZ,CAAC,SAAS;AACV,CAAC,QAAQ;AACT,CAAC,MAAM;AACP,CAAC;AACD,CAAC;AACD,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACnD;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5I;AACA;AACA;AACA,IAAI,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AAC9C,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAAC;AAC9E,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC;AACpD,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC3C,EAAE,GAAG;AACL,EAAE,YAAY,EAAE,oBAAoB,CAAC,IAAI;AACzC,EAAE,CAAC;AACH,CAAC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AACpF,CAAC,OAAO;AACR,EAAE,IAAI,EAAE;AACR,GAAG,aAAa,EAAE,IAAI,CAAC,aAAa;AACpC,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,GAAG,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,KAAK,EAAE,CAAC,CAAC;AACb,IAAI,CAAC;AACL,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,UAAU,EAAE;AACd,GAAG,MAAM,EAAE,UAAU,CAAC,MAAM;AAC5B,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI;AACxB,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI;AACxB,GAAG,QAAQ,EAAE,UAAU,CAAC;AACxB;AACA,EAAE;AACF,CAAC;;;;;;;AC7CW,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA+C,CAAC,EAAE;AAE7G,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { q as escape_html, o as ensure_array_like, d as attr } from './dev-yFiAtg5l.js';
2
- import './internal-CCj4Us-1.js';
3
- import './client-B9o82f8t.js';
2
+ import './internal-BkKkeKsj.js';
3
+ import './client-DLR5dxwU.js';
4
4
  import 'clsx';
5
5
  import 'node:module';
6
6
  import './index-DBqjc0Yf.js';
@@ -83,4 +83,4 @@ function _page($$renderer, $$props) {
83
83
  }
84
84
 
85
85
  export { _page as default };
86
- //# sourceMappingURL=_page.svelte-CyAlYQ7a.js.map
86
+ //# sourceMappingURL=_page.svelte-BEtFIV7C.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_page.svelte-CyAlYQ7a.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like } from \"../../../../../chunks/dev.js\";\nimport \"../../../../../chunks/forms.js\";\n//#region src/lib/detail/format-cell.ts\nfunction formatCellValue(input) {\n\tconst { value, widget } = input;\n\tif (value === null || value === void 0) return \"\";\n\tswitch (widget) {\n\t\tcase \"boolean\": return value ? \"Yes\" : \"No\";\n\t\tcase \"date\": return formatDate(value);\n\t\tcase \"datetime\": return formatDateTime(value);\n\t\tcase \"json\":\n\t\t\tif (typeof value === \"object\") try {\n\t\t\t\treturn JSON.stringify(value, null, 2);\n\t\t\t} catch {\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\treturn String(value);\n\t\tdefault:\n\t\t\tif (typeof value === \"object\") try {\n\t\t\t\treturn JSON.stringify(value);\n\t\t\t} catch {\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\treturn String(value);\n\t}\n}\nfunction formatDate(value) {\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return String(value);\n\treturn d.toISOString().slice(0, 10);\n}\nfunction formatDateTime(value) {\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return String(value);\n\treturn d.toISOString().replace(\"T\", \" \").slice(0, 19);\n}\n//#endregion\n//#region src/routes/tables/[table]/[id]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(data.table.label)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(data.table.qualifiedName)} / ${escape_html(data.id)}</p> <dl class=\"space-y-4\"><!--[-->`);\n\t\tconst each_array = ensure_array_like(data.table.columns);\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet col = each_array[$$index];\n\t\t\tconst rawValue = data.row[col.name];\n\t\t\tconst fkLabel = data.fkLabels[col.name];\n\t\t\t$$renderer.push(`<div><dt class=\"text-sm font-medium text-muted-foreground\">${escape_html(col.label)}</dt> <dd class=\"mt-1 text-sm\">`);\n\t\t\tif (col.widget === \"json\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<pre class=\"overflow-x-auto rounded-md bg-muted p-2 font-mono text-xs\">${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))}</pre>`);\n\t\t\t} else if (col.widget === \"image-url\" && rawValue) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<img${attr(\"src\", String(rawValue))}${attr(\"alt\", col.label)} class=\"max-h-48 rounded-md border border-border object-contain\" loading=\"lazy\"/>`);\n\t\t\t} else if (rawValue === null || rawValue === void 0) {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<span class=\"text-muted-foreground\">—</span>`);\n\t\t\t} else if (fkLabel !== void 0 && fkLabel.label !== null) {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/tables/${fkLabel.referencedQualifiedName}/${fkLabel.value}`)} class=\"text-primary underline\">${escape_html(fkLabel.label)}</a> <span class=\"ml-1 text-xs text-muted-foreground\">(${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))})</span>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))}`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></dd></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></dl> <div class=\"mt-8 flex flex-wrap gap-3\"><a${attr(\"href\", `/tables/${data.table.qualifiedName}/${data.id}/edit`)} class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground\">Edit</a> <form method=\"POST\" action=\"?/delete\"><button type=\"submit\" class=\"rounded-md border border-destructive px-4 py-2 text-sm font-medium text-destructive\">Delete</button></form> <a${attr(\"href\", `/tables/${data.table.qualifiedName}`)} class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">Back</a></div>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_page.svelte-BEtFIV7C.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like } from \"../../../../../chunks/dev.js\";\nimport \"../../../../../chunks/forms.js\";\n//#region src/lib/detail/format-cell.ts\nfunction formatCellValue(input) {\n\tconst { value, widget } = input;\n\tif (value === null || value === void 0) return \"\";\n\tswitch (widget) {\n\t\tcase \"boolean\": return value ? \"Yes\" : \"No\";\n\t\tcase \"date\": return formatDate(value);\n\t\tcase \"datetime\": return formatDateTime(value);\n\t\tcase \"json\":\n\t\t\tif (typeof value === \"object\") try {\n\t\t\t\treturn JSON.stringify(value, null, 2);\n\t\t\t} catch {\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\treturn String(value);\n\t\tdefault:\n\t\t\tif (typeof value === \"object\") try {\n\t\t\t\treturn JSON.stringify(value);\n\t\t\t} catch {\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\treturn String(value);\n\t}\n}\nfunction formatDate(value) {\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return String(value);\n\treturn d.toISOString().slice(0, 10);\n}\nfunction formatDateTime(value) {\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return String(value);\n\treturn d.toISOString().replace(\"T\", \" \").slice(0, 19);\n}\n//#endregion\n//#region src/routes/tables/[table]/[id]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(data.table.label)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(data.table.qualifiedName)} / ${escape_html(data.id)}</p> <dl class=\"space-y-4\"><!--[-->`);\n\t\tconst each_array = ensure_array_like(data.table.columns);\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet col = each_array[$$index];\n\t\t\tconst rawValue = data.row[col.name];\n\t\t\tconst fkLabel = data.fkLabels[col.name];\n\t\t\t$$renderer.push(`<div><dt class=\"text-sm font-medium text-muted-foreground\">${escape_html(col.label)}</dt> <dd class=\"mt-1 text-sm\">`);\n\t\t\tif (col.widget === \"json\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<pre class=\"overflow-x-auto rounded-md bg-muted p-2 font-mono text-xs\">${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))}</pre>`);\n\t\t\t} else if (col.widget === \"image-url\" && rawValue) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<img${attr(\"src\", String(rawValue))}${attr(\"alt\", col.label)} class=\"max-h-48 rounded-md border border-border object-contain\" loading=\"lazy\"/>`);\n\t\t\t} else if (rawValue === null || rawValue === void 0) {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<span class=\"text-muted-foreground\">—</span>`);\n\t\t\t} else if (fkLabel !== void 0 && fkLabel.label !== null) {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/tables/${fkLabel.referencedQualifiedName}/${fkLabel.value}`)} class=\"text-primary underline\">${escape_html(fkLabel.label)}</a> <span class=\"ml-1 text-xs text-muted-foreground\">(${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))})</span>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))}`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></dd></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></dl> <div class=\"mt-8 flex flex-wrap gap-3\"><a${attr(\"href\", `/tables/${data.table.qualifiedName}/${data.id}/edit`)} class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground\">Edit</a> <form method=\"POST\" action=\"?/delete\"><button type=\"submit\" class=\"rounded-md border border-destructive px-4 py-2 text-sm font-medium text-destructive\">Delete</button></form> <a${attr(\"href\", `/tables/${data.table.qualifiedName}`)} class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">Back</a></div>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ import { q as escape_html, o as ensure_array_like, a6 as store_get, d as attr, a7 as store_mutate, m as derived, ab as unsubscribe_stores } from './dev-yFiAtg5l.js';
2
+ import { s as superForm } from './composite-form-BHZcuFIS.js';
3
+ import { R as Relation_select_composite_field, a as Relation_select_field, r as resolveWidget } from './widget-registry-hWgMHMd3.js';
4
+ import 'clsx';
5
+ import './internal-BkKkeKsj.js';
6
+ import 'node:module';
7
+ import './index-DBqjc0Yf.js';
8
+ import './client-DLR5dxwU.js';
9
+ import './app-DST8OmzT.js';
10
+ import './index-5kYmxIr9.js';
11
+ import 'zod/v4/core';
12
+ import 'zod';
13
+ import './resource-id-PDcQeAnc.js';
14
+
15
+ //#region src/routes/tables/[table]/[id]/edit/+page.svelte
16
+ function _page($$renderer, $$props) {
17
+ $$renderer.component(($$renderer) => {
18
+ var $$store_subs;
19
+ let { data } = $$props;
20
+ const relationByField = derived(() => new Map(data.relations.filter((r) => (r.fields ?? [r.field]).length === 1).map((r) => [r.field, r])));
21
+ const compositeLayout = derived(() => {
22
+ const hostByField = /* @__PURE__ */ new Map();
23
+ const memberFields = /* @__PURE__ */ new Set();
24
+ for (const config of data.relations) {
25
+ const fields = config.fields ?? [config.field];
26
+ if (fields.length < 2) continue;
27
+ const grouped = new Set(fields);
28
+ const ordered = data.table.columns.filter((c) => grouped.has(c.name)).map((c) => c.name);
29
+ if (ordered.length !== fields.length) continue;
30
+ hostByField.set(ordered[0], config);
31
+ for (const field of ordered.slice(1)) memberFields.add(field);
32
+ }
33
+ return {
34
+ hostByField,
35
+ memberFields
36
+ };
37
+ });
38
+ const { form, errors, submitting } = superForm(data.form, { dataType: "json" });
39
+ const relationForm = form;
40
+ function memberColumns(config) {
41
+ const grouped = new Set(config.fields ?? [config.field]);
42
+ return data.table.columns.filter((c) => grouped.has(c.name));
43
+ }
44
+ function applyComposite(config, components) {
45
+ const keyFields = config.keyFields ?? [config.field];
46
+ relationForm.update((current) => {
47
+ const next = { ...current };
48
+ keyFields.forEach((field, i) => {
49
+ next[field] = components === null ? "" : components[i];
50
+ });
51
+ return next;
52
+ });
53
+ }
54
+ let $$settled = true;
55
+ let $$inner_renderer;
56
+ function $$render_inner($$renderer) {
57
+ $$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">Edit ${escape_html(data.table.label)}</h1> <p class="mb-6 text-sm text-muted-foreground">${escape_html(data.table.qualifiedName)} / ${escape_html(data.id)}</p> <form method="POST" class="space-y-4"><!--[-->`);
58
+ const each_array = ensure_array_like(data.table.columns);
59
+ for (let $$index_2 = 0, $$length = each_array.length; $$index_2 < $$length; $$index_2++) {
60
+ let col = each_array[$$index_2];
61
+ const required = !col.nullable && !col.readonly && !col.isPrimaryKey;
62
+ const relation = relationByField().get(col.name);
63
+ const composite = compositeLayout().hostByField.get(col.name);
64
+ $$renderer.push(`<div>`);
65
+ if (compositeLayout().memberFields.has(col.name)) $$renderer.push("<!--[0-->");
66
+ else if (composite) {
67
+ $$renderer.push("<!--[1-->");
68
+ const members = memberColumns(composite);
69
+ const groupRequired = members.some((c) => !c.nullable && !c.readonly && !c.isPrimaryKey);
70
+ const groupReadonly = members.some((c) => c.readonly);
71
+ $$renderer.push(`<!---->`);
72
+ Relation_select_composite_field($$renderer, {
73
+ name: composite.field,
74
+ label: members.map((c) => c.label).join(", "),
75
+ resource: composite.resource,
76
+ labelField: composite.labelField,
77
+ searchFields: composite.searchFields,
78
+ initialOptions: data.initialOptions[composite.field] ?? [],
79
+ values: (composite.keyFields ?? [composite.field]).map((field) => store_get($$store_subs ??= {}, "$relationForm", relationForm)[field]),
80
+ onpick: (components) => applyComposite(composite, components),
81
+ required: groupRequired,
82
+ readonly: groupReadonly
83
+ });
84
+ $$renderer.push(`<!----> <!--[-->`);
85
+ const each_array_1 = ensure_array_like(members);
86
+ for (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {
87
+ let member = each_array_1[$$index];
88
+ $$renderer.push(`<input type="hidden"${attr("name", member.name)}${attr("value", store_get($$store_subs ??= {}, "$relationForm", relationForm)[member.name] === null || store_get($$store_subs ??= {}, "$relationForm", relationForm)[member.name] === void 0 ? "" : String(store_get($$store_subs ??= {}, "$relationForm", relationForm)[member.name]))}/>`);
89
+ }
90
+ $$renderer.push(`<!--]--> <!--[-->`);
91
+ const each_array_2 = ensure_array_like(members);
92
+ for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
93
+ let member = each_array_2[$$index_1];
94
+ if (store_get($$store_subs ??= {}, "$errors", errors)[member.name]) {
95
+ $$renderer.push("<!--[0-->");
96
+ $$renderer.push(`<p class="mt-1 text-sm text-destructive">${escape_html(member.label)}: ${escape_html(store_get($$store_subs ??= {}, "$errors", errors)[member.name])}</p>`);
97
+ } else $$renderer.push("<!--[-1-->");
98
+ $$renderer.push(`<!--]-->`);
99
+ }
100
+ $$renderer.push(`<!--]-->`);
101
+ } else if (col.widget === "relation-select" && relation) {
102
+ $$renderer.push("<!--[2-->");
103
+ $$renderer.push(`<!---->`);
104
+ Relation_select_field($$renderer, {
105
+ name: col.name,
106
+ label: col.label,
107
+ resource: relation.resource,
108
+ labelField: relation.labelField,
109
+ searchFields: relation.searchFields,
110
+ initialOptions: data.initialOptions[col.name] ?? [],
111
+ required,
112
+ readonly: col.readonly,
113
+ get value() {
114
+ return store_get($$store_subs ??= {}, "$relationForm", relationForm)[col.name];
115
+ },
116
+ set value($$value) {
117
+ store_mutate($$store_subs ??= {}, "$relationForm", relationForm, store_get($$store_subs ??= {}, "$relationForm", relationForm)[col.name] = $$value);
118
+ $$settled = false;
119
+ }
120
+ });
121
+ $$renderer.push(`<!---->`);
122
+ } else {
123
+ $$renderer.push("<!--[-1-->");
124
+ const Widget = resolveWidget(col.widget);
125
+ if (Widget) {
126
+ $$renderer.push("<!--[-->");
127
+ Widget($$renderer, {
128
+ name: col.name,
129
+ label: col.label,
130
+ options: col.enumValues,
131
+ required,
132
+ readonly: col.readonly,
133
+ get value() {
134
+ return store_get($$store_subs ??= {}, "$form", form)[col.name];
135
+ },
136
+ set value($$value) {
137
+ store_mutate($$store_subs ??= {}, "$form", form, store_get($$store_subs ??= {}, "$form", form)[col.name] = $$value);
138
+ $$settled = false;
139
+ }
140
+ });
141
+ $$renderer.push("<!--]-->");
142
+ } else {
143
+ $$renderer.push("<!--[!-->");
144
+ $$renderer.push("<!--]-->");
145
+ }
146
+ }
147
+ $$renderer.push(`<!--]--> `);
148
+ if (!composite && !compositeLayout().memberFields.has(col.name) && store_get($$store_subs ??= {}, "$errors", errors)[col.name]) {
149
+ $$renderer.push("<!--[0-->");
150
+ $$renderer.push(`<p class="mt-1 text-sm text-destructive">${escape_html(store_get($$store_subs ??= {}, "$errors", errors)[col.name])}</p>`);
151
+ } else $$renderer.push("<!--[-1-->");
152
+ $$renderer.push(`<!--]--></div>`);
153
+ }
154
+ $$renderer.push(`<!--]--> <div class="flex gap-3"><button type="submit"${attr("disabled", store_get($$store_subs ??= {}, "$submitting", submitting), true)} class="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50">${escape_html(store_get($$store_subs ??= {}, "$submitting", submitting) ? "Saving…" : "Save")}</button> <a${attr("href", `/tables/${data.table.qualifiedName}/${data.id}`)} class="rounded-md border border-border px-4 py-2 text-sm font-medium">Cancel</a></div></form>`);
155
+ }
156
+ do {
157
+ $$settled = true;
158
+ $$inner_renderer = $$renderer.copy();
159
+ $$render_inner($$inner_renderer);
160
+ } while (!$$settled);
161
+ $$renderer.subsume($$inner_renderer);
162
+ if ($$store_subs) unsubscribe_stores($$store_subs);
163
+ });
164
+ }
165
+
166
+ export { _page as default };
167
+ //# sourceMappingURL=_page.svelte-CDGnOeZp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-CDGnOeZp.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/edit/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, c as unsubscribe_stores, i as ensure_array_like, o as store_get, r as derived, s as store_mutate } from \"../../../../../../chunks/dev.js\";\nimport { l as superForm } from \"../../../../../../chunks/relation-field-config.js\";\nimport { n as Relation_select_field, r as Relation_select_composite_field, t as resolveWidget } from \"../../../../../../chunks/widget-registry.js\";\n//#region src/routes/tables/[table]/[id]/edit/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tvar $$store_subs;\n\t\tlet { data } = $$props;\n\t\tconst relationByField = derived(() => new Map(data.relations.filter((r) => (r.fields ?? [r.field]).length === 1).map((r) => [r.field, r])));\n\t\tconst compositeLayout = derived(() => {\n\t\t\tconst hostByField = /* @__PURE__ */ new Map();\n\t\t\tconst memberFields = /* @__PURE__ */ new Set();\n\t\t\tfor (const config of data.relations) {\n\t\t\t\tconst fields = config.fields ?? [config.field];\n\t\t\t\tif (fields.length < 2) continue;\n\t\t\t\tconst grouped = new Set(fields);\n\t\t\t\tconst ordered = data.table.columns.filter((c) => grouped.has(c.name)).map((c) => c.name);\n\t\t\t\tif (ordered.length !== fields.length) continue;\n\t\t\t\thostByField.set(ordered[0], config);\n\t\t\t\tfor (const field of ordered.slice(1)) memberFields.add(field);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\thostByField,\n\t\t\t\tmemberFields\n\t\t\t};\n\t\t});\n\t\tconst { form, errors, enhance, submitting } = superForm(data.form, { dataType: \"json\" });\n\t\tconst relationForm = form;\n\t\tfunction memberColumns(config) {\n\t\t\tconst grouped = new Set(config.fields ?? [config.field]);\n\t\t\treturn data.table.columns.filter((c) => grouped.has(c.name));\n\t\t}\n\t\tfunction applyComposite(config, components) {\n\t\t\tconst keyFields = config.keyFields ?? [config.field];\n\t\t\trelationForm.update((current) => {\n\t\t\t\tconst next = { ...current };\n\t\t\t\tkeyFields.forEach((field, i) => {\n\t\t\t\t\tnext[field] = components === null ? \"\" : components[i];\n\t\t\t\t});\n\t\t\t\treturn next;\n\t\t\t});\n\t\t}\n\t\tlet $$settled = true;\n\t\tlet $$inner_renderer;\n\t\tfunction $$render_inner($$renderer) {\n\t\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">Edit ${escape_html(data.table.label)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(data.table.qualifiedName)} / ${escape_html(data.id)}</p> <form method=\"POST\" class=\"space-y-4\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(data.table.columns);\n\t\t\tfor (let $$index_2 = 0, $$length = each_array.length; $$index_2 < $$length; $$index_2++) {\n\t\t\t\tlet col = each_array[$$index_2];\n\t\t\t\tconst required = !col.nullable && !col.readonly && !col.isPrimaryKey;\n\t\t\t\tconst relation = relationByField().get(col.name);\n\t\t\t\tconst composite = compositeLayout().hostByField.get(col.name);\n\t\t\t\t$$renderer.push(`<div>`);\n\t\t\t\tif (compositeLayout().memberFields.has(col.name)) $$renderer.push(\"<!--[0-->\");\n\t\t\t\telse if (composite) {\n\t\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t\tconst members = memberColumns(composite);\n\t\t\t\t\tconst groupRequired = members.some((c) => !c.nullable && !c.readonly && !c.isPrimaryKey);\n\t\t\t\t\tconst groupReadonly = members.some((c) => c.readonly);\n\t\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t\t\tRelation_select_composite_field($$renderer, {\n\t\t\t\t\t\tname: composite.field,\n\t\t\t\t\t\tlabel: members.map((c) => c.label).join(\", \"),\n\t\t\t\t\t\tresource: composite.resource,\n\t\t\t\t\t\tlabelField: composite.labelField,\n\t\t\t\t\t\tsearchFields: composite.searchFields,\n\t\t\t\t\t\tinitialOptions: data.initialOptions[composite.field] ?? [],\n\t\t\t\t\t\tvalues: (composite.keyFields ?? [composite.field]).map((field) => store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[field]),\n\t\t\t\t\t\tonpick: (components) => applyComposite(composite, components),\n\t\t\t\t\t\trequired: groupRequired,\n\t\t\t\t\t\treadonly: groupReadonly\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!----> <!--[-->`);\n\t\t\t\t\tconst each_array_1 = ensure_array_like(members);\n\t\t\t\t\tfor (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {\n\t\t\t\t\t\tlet member = each_array_1[$$index];\n\t\t\t\t\t\t$$renderer.push(`<input type=\"hidden\"${attr(\"name\", member.name)}${attr(\"value\", store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[member.name] === null || store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[member.name] === void 0 ? \"\" : String(store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[member.name]))}/>`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]--> <!--[-->`);\n\t\t\t\t\tconst each_array_2 = ensure_array_like(members);\n\t\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\t\tlet member = each_array_2[$$index_1];\n\t\t\t\t\t\tif (store_get($$store_subs ??= {}, \"$errors\", errors)[member.name]) {\n\t\t\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t\t\t$$renderer.push(`<p class=\"mt-1 text-sm text-destructive\">${escape_html(member.label)}: ${escape_html(store_get($$store_subs ??= {}, \"$errors\", errors)[member.name])}</p>`);\n\t\t\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t\t}\n\t\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\t} else if (col.widget === \"relation-select\" && relation) {\n\t\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t\t\tRelation_select_field($$renderer, {\n\t\t\t\t\t\tname: col.name,\n\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\tresource: relation.resource,\n\t\t\t\t\t\tlabelField: relation.labelField,\n\t\t\t\t\t\tsearchFields: relation.searchFields,\n\t\t\t\t\t\tinitialOptions: data.initialOptions[col.name] ?? [],\n\t\t\t\t\t\trequired,\n\t\t\t\t\t\treadonly: col.readonly,\n\t\t\t\t\t\tget value() {\n\t\t\t\t\t\t\treturn store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[col.name];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset value($$value) {\n\t\t\t\t\t\t\tstore_mutate($$store_subs ??= {}, \"$relationForm\", relationForm, store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[col.name] = $$value);\n\t\t\t\t\t\t\t$$settled = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\tconst Widget = resolveWidget(col.widget);\n\t\t\t\t\tif (Widget) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\t\t\tWidget($$renderer, {\n\t\t\t\t\t\t\tname: col.name,\n\t\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\t\toptions: col.enumValues,\n\t\t\t\t\t\t\trequired,\n\t\t\t\t\t\t\treadonly: col.readonly,\n\t\t\t\t\t\t\tget value() {\n\t\t\t\t\t\t\t\treturn store_get($$store_subs ??= {}, \"$form\", form)[col.name];\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tset value($$value) {\n\t\t\t\t\t\t\t\tstore_mutate($$store_subs ??= {}, \"$form\", form, store_get($$store_subs ??= {}, \"$form\", form)[col.name] = $$value);\n\t\t\t\t\t\t\t\t$$settled = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\tif (!composite && !compositeLayout().memberFields.has(col.name) && store_get($$store_subs ??= {}, \"$errors\", errors)[col.name]) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<p class=\"mt-1 text-sm text-destructive\">${escape_html(store_get($$store_subs ??= {}, \"$errors\", errors)[col.name])}</p>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <div class=\"flex gap-3\"><button type=\"submit\"${attr(\"disabled\", store_get($$store_subs ??= {}, \"$submitting\", submitting), true)} class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50\">${escape_html(store_get($$store_subs ??= {}, \"$submitting\", submitting) ? \"Saving…\" : \"Save\")}</button> <a${attr(\"href\", `/tables/${data.table.qualifiedName}/${data.id}`)} class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">Cancel</a></div></form>`);\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\tif ($$store_subs) unsubscribe_stores($$store_subs);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}