@kozou/svelte-ui 0.2.1 → 1.1.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 (167) hide show
  1. package/README.md +28 -8
  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/BgT5WiOF.js +2 -0
  6. package/build/client/_app/immutable/chunks/BgT5WiOF.js.br +0 -0
  7. package/build/client/_app/immutable/chunks/BgT5WiOF.js.gz +0 -0
  8. package/build/client/_app/immutable/chunks/CCUVvlTa.js +214 -0
  9. package/build/client/_app/immutable/chunks/CCUVvlTa.js.br +0 -0
  10. package/build/client/_app/immutable/chunks/CCUVvlTa.js.gz +0 -0
  11. package/build/client/_app/immutable/chunks/D5sfkRNZ.js +1 -0
  12. package/build/client/_app/immutable/chunks/D5sfkRNZ.js.br +0 -0
  13. package/build/client/_app/immutable/chunks/D5sfkRNZ.js.gz +0 -0
  14. package/build/client/_app/immutable/chunks/{nlrTAAdT.js → DdJtfEcD.js} +3 -3
  15. package/build/client/_app/immutable/chunks/DdJtfEcD.js.br +0 -0
  16. package/build/client/_app/immutable/chunks/DdJtfEcD.js.gz +0 -0
  17. package/build/client/_app/immutable/chunks/{CNJ9qNKc.js → De8foa1z.js} +1 -1
  18. package/build/client/_app/immutable/chunks/De8foa1z.js.br +0 -0
  19. package/build/client/_app/immutable/chunks/De8foa1z.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.BkKlOvdn.js +2 -0
  24. package/build/client/_app/immutable/entry/app.BkKlOvdn.js.br +0 -0
  25. package/build/client/_app/immutable/entry/app.BkKlOvdn.js.gz +0 -0
  26. package/build/client/_app/immutable/entry/start.Cjh4JaF7.js +1 -0
  27. package/build/client/_app/immutable/entry/start.Cjh4JaF7.js.br +0 -0
  28. package/build/client/_app/immutable/entry/start.Cjh4JaF7.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.CrygsmaA.js +1 -0
  33. package/build/client/_app/immutable/nodes/1.CrygsmaA.js.br +0 -0
  34. package/build/client/_app/immutable/nodes/1.CrygsmaA.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.TqsoTNiI.js +1 -0
  42. package/build/client/_app/immutable/nodes/4.TqsoTNiI.js.br +0 -0
  43. package/build/client/_app/immutable/nodes/4.TqsoTNiI.js.gz +0 -0
  44. package/build/client/_app/immutable/nodes/5.6savDm4D.js +1 -0
  45. package/build/client/_app/immutable/nodes/5.6savDm4D.js.br +0 -0
  46. package/build/client/_app/immutable/nodes/5.6savDm4D.js.gz +0 -0
  47. package/build/client/_app/immutable/nodes/6.B6xlqPuj.js +1 -0
  48. package/build/client/_app/immutable/nodes/6.B6xlqPuj.js.br +0 -0
  49. package/build/client/_app/immutable/nodes/6.B6xlqPuj.js.gz +0 -0
  50. package/build/client/_app/immutable/nodes/{7.zir-jrfl.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-BYbo_Ryk.js → 1-B5tolhxt.js} +3 -3
  59. package/build/server/chunks/{1-BYbo_Ryk.js.map → 1-B5tolhxt.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-C50aWcyD.js → 3-DfrqlU53.js} +5 -5
  63. package/build/server/chunks/3-DfrqlU53.js.map +1 -0
  64. package/build/server/chunks/{4-C8kXW-9J.js → 4-D6Y076hP.js} +53 -8
  65. package/build/server/chunks/4-D6Y076hP.js.map +1 -0
  66. package/build/server/chunks/5-DOvvx6kj.js +85 -0
  67. package/build/server/chunks/5-DOvvx6kj.js.map +1 -0
  68. package/build/server/chunks/6-BJn_aKxy.js +79 -0
  69. package/build/server/chunks/6-BJn_aKxy.js.map +1 -0
  70. package/build/server/chunks/{7-BAhFrC8Z.js → 7-CKkRKfs8.js} +5 -5
  71. package/build/server/chunks/7-CKkRKfs8.js.map +1 -0
  72. package/build/server/chunks/{ListTable-BxIw_RVF.js → ListTable-CkfkQNdN.js} +3 -7
  73. package/build/server/chunks/ListTable-CkfkQNdN.js.map +1 -0
  74. package/build/server/chunks/{_page.svelte-hNlfE_-R.js → _page.svelte-BWAo_bI_.js} +3 -3
  75. package/build/server/chunks/{_page.svelte-hNlfE_-R.js.map → _page.svelte-BWAo_bI_.js.map} +1 -1
  76. package/build/server/chunks/_page.svelte-D_706hfC.js +167 -0
  77. package/build/server/chunks/_page.svelte-D_706hfC.js.map +1 -0
  78. package/build/server/chunks/{_page.svelte-CUhqt56V.js → _page.svelte-Dabtpyl9.js} +3 -2
  79. package/build/server/chunks/{_page.svelte-CUhqt56V.js.map → _page.svelte-Dabtpyl9.js.map} +1 -1
  80. package/build/server/chunks/_page.svelte-DpoimUgp.js +167 -0
  81. package/build/server/chunks/_page.svelte-DpoimUgp.js.map +1 -0
  82. package/build/server/chunks/{_page.svelte-CRH5Ib1y.js → _page.svelte-j2Tqrjlb.js} +3 -2
  83. package/build/server/chunks/{_page.svelte-CRH5Ib1y.js.map → _page.svelte-j2Tqrjlb.js.map} +1 -1
  84. package/build/server/chunks/_server.ts-C-Wy675T.js +19 -0
  85. package/build/server/chunks/_server.ts-C-Wy675T.js.map +1 -0
  86. package/build/server/chunks/{adapter-BGid8Q1v.js → adapter-CXNsjV1V.js} +97 -14
  87. package/build/server/chunks/adapter-CXNsjV1V.js.map +1 -0
  88. package/build/server/chunks/{client-PK7K0DFj.js → client-_87vxA9R.js} +2 -2
  89. package/build/server/chunks/{client-PK7K0DFj.js.map → client-_87vxA9R.js.map} +1 -1
  90. package/build/server/chunks/{zod-from-table-CCy3rZQi.js → composite-form-C6ci57iZ.js} +248 -6
  91. package/build/server/chunks/composite-form-C6ci57iZ.js.map +1 -0
  92. package/build/server/chunks/{error.svelte-CKswtdNj.js → error.svelte-CsN316oS.js} +3 -3
  93. package/build/server/chunks/{error.svelte-CKswtdNj.js.map → error.svelte-CsN316oS.js.map} +1 -1
  94. package/build/server/chunks/{hooks.server-_7e7MfY9.js → hooks.server-O5zJccZI.js} +36 -14
  95. package/build/server/chunks/hooks.server-O5zJccZI.js.map +1 -0
  96. package/build/server/chunks/{internal-BERZdLJL.js → internal-Cuea68jL.js} +3 -3
  97. package/build/server/chunks/{internal-BERZdLJL.js.map → internal-Cuea68jL.js.map} +1 -1
  98. package/build/server/chunks/relation-options-Dzy9DaQG.js +87 -0
  99. package/build/server/chunks/relation-options-Dzy9DaQG.js.map +1 -0
  100. package/build/server/chunks/resource-id-PDcQeAnc.js +41 -0
  101. package/build/server/chunks/resource-id-PDcQeAnc.js.map +1 -0
  102. package/build/server/chunks/{widget-registry-CYJ6dCZP.js → widget-registry-CohQ23di.js} +282 -42
  103. package/build/server/chunks/widget-registry-CohQ23di.js.map +1 -0
  104. package/build/server/index.js +1 -1
  105. package/build/server/manifest.js +16 -9
  106. package/build/server/manifest.js.map +1 -1
  107. package/package.json +5 -5
  108. package/build/client/_app/immutable/assets/0.B45CfnXC.css +0 -2
  109. package/build/client/_app/immutable/assets/0.B45CfnXC.css.br +0 -0
  110. package/build/client/_app/immutable/chunks/1PNfJiP5.js +0 -2
  111. package/build/client/_app/immutable/chunks/1PNfJiP5.js.br +0 -0
  112. package/build/client/_app/immutable/chunks/1PNfJiP5.js.gz +0 -0
  113. package/build/client/_app/immutable/chunks/CLOztVuN.js +0 -214
  114. package/build/client/_app/immutable/chunks/CLOztVuN.js.br +0 -0
  115. package/build/client/_app/immutable/chunks/CLOztVuN.js.gz +0 -0
  116. package/build/client/_app/immutable/chunks/CNJ9qNKc.js.br +0 -0
  117. package/build/client/_app/immutable/chunks/CNJ9qNKc.js.gz +0 -0
  118. package/build/client/_app/immutable/chunks/Cj8LiudX.js +0 -1
  119. package/build/client/_app/immutable/chunks/Cj8LiudX.js.br +0 -0
  120. package/build/client/_app/immutable/chunks/Cj8LiudX.js.gz +0 -0
  121. package/build/client/_app/immutable/chunks/nlrTAAdT.js.br +0 -0
  122. package/build/client/_app/immutable/chunks/nlrTAAdT.js.gz +0 -0
  123. package/build/client/_app/immutable/entry/app.Bv8sjgxu.js +0 -2
  124. package/build/client/_app/immutable/entry/app.Bv8sjgxu.js.br +0 -0
  125. package/build/client/_app/immutable/entry/app.Bv8sjgxu.js.gz +0 -0
  126. package/build/client/_app/immutable/entry/start.mcTncYkV.js +0 -1
  127. package/build/client/_app/immutable/entry/start.mcTncYkV.js.br +0 -0
  128. package/build/client/_app/immutable/entry/start.mcTncYkV.js.gz +0 -0
  129. package/build/client/_app/immutable/nodes/0.DAriStmJ.js +0 -1
  130. package/build/client/_app/immutable/nodes/0.DAriStmJ.js.br +0 -0
  131. package/build/client/_app/immutable/nodes/0.DAriStmJ.js.gz +0 -0
  132. package/build/client/_app/immutable/nodes/1.B_iETXYV.js +0 -1
  133. package/build/client/_app/immutable/nodes/1.B_iETXYV.js.br +0 -2
  134. package/build/client/_app/immutable/nodes/1.B_iETXYV.js.gz +0 -0
  135. package/build/client/_app/immutable/nodes/2.C3ChRVrO.js +0 -1
  136. package/build/client/_app/immutable/nodes/2.C3ChRVrO.js.br +0 -0
  137. package/build/client/_app/immutable/nodes/2.C3ChRVrO.js.gz +0 -0
  138. package/build/client/_app/immutable/nodes/3.CL9ksnmY.js +0 -1
  139. package/build/client/_app/immutable/nodes/3.CL9ksnmY.js.br +0 -0
  140. package/build/client/_app/immutable/nodes/3.CL9ksnmY.js.gz +0 -0
  141. package/build/client/_app/immutable/nodes/4.wRTS68Ip.js +0 -1
  142. package/build/client/_app/immutable/nodes/4.wRTS68Ip.js.br +0 -0
  143. package/build/client/_app/immutable/nodes/4.wRTS68Ip.js.gz +0 -0
  144. package/build/client/_app/immutable/nodes/5.sOvoAy14.js +0 -1
  145. package/build/client/_app/immutable/nodes/5.sOvoAy14.js.br +0 -0
  146. package/build/client/_app/immutable/nodes/5.sOvoAy14.js.gz +0 -0
  147. package/build/client/_app/immutable/nodes/6.QhxyVDh4.js +0 -1
  148. package/build/client/_app/immutable/nodes/6.QhxyVDh4.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/6.QhxyVDh4.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/7.zir-jrfl.js.br +0 -4
  151. package/build/client/_app/immutable/nodes/7.zir-jrfl.js.gz +0 -0
  152. package/build/server/chunks/3-C50aWcyD.js.map +0 -1
  153. package/build/server/chunks/4-C8kXW-9J.js.map +0 -1
  154. package/build/server/chunks/5-D-0L-X8y.js +0 -69
  155. package/build/server/chunks/5-D-0L-X8y.js.map +0 -1
  156. package/build/server/chunks/6-D-SbXeTH.js +0 -70
  157. package/build/server/chunks/6-D-SbXeTH.js.map +0 -1
  158. package/build/server/chunks/7-BAhFrC8Z.js.map +0 -1
  159. package/build/server/chunks/ListTable-BxIw_RVF.js.map +0 -1
  160. package/build/server/chunks/_page.svelte-6neDahmr.js +0 -70
  161. package/build/server/chunks/_page.svelte-6neDahmr.js.map +0 -1
  162. package/build/server/chunks/_page.svelte-rW7yzEet.js +0 -70
  163. package/build/server/chunks/_page.svelte-rW7yzEet.js.map +0 -1
  164. package/build/server/chunks/adapter-BGid8Q1v.js.map +0 -1
  165. package/build/server/chunks/hooks.server-_7e7MfY9.js.map +0 -1
  166. package/build/server/chunks/widget-registry-CYJ6dCZP.js.map +0 -1
  167. package/build/server/chunks/zod-from-table-CCy3rZQi.js.map +0 -1
@@ -1,4 +1,5 @@
1
- import { g as getAdapter } from './adapter-BGid8Q1v.js';
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
2
+ import { p as parseResourceId, e as encodeResourceId } from './resource-id-PDcQeAnc.js';
2
3
  import { e as error, r as redirect } from './index-5kYmxIr9.js';
3
4
  import './index-DBqjc0Yf.js';
4
5
 
@@ -7,7 +8,19 @@ async function resolveFkLabels(args) {
7
8
  const { table, row, schema, loadRow } = args;
8
9
  const out = {};
9
10
  const lookups = [];
11
+ const claims = /* @__PURE__ */ new Map();
10
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
+ }
11
24
  const rawValue = row[relation.field];
12
25
  if (rawValue === null || rawValue === void 0) continue;
13
26
  if (typeof rawValue !== "string" && typeof rawValue !== "number") continue;
@@ -34,6 +47,36 @@ async function resolveFkLabels(args) {
34
47
  await Promise.all(lookups);
35
48
  return out;
36
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
+ }
37
80
  function projectLabel(referencedTable, targetRow) {
38
81
  if (targetRow === null) return null;
39
82
  const display = referencedTable.displayField;
@@ -63,8 +106,9 @@ function tableViewModel(table) {
63
106
  var load = async ({ params, locals }) => {
64
107
  const table = findTable(locals.schema.tables, params.table);
65
108
  if (!table) throw error(404, `Unknown table: ${params.table}`);
66
- const adapter = getAdapter();
67
- const row = await adapter.get(table.qualifiedName, params.id);
109
+ const adapter = getAdapter(locals.schema);
110
+ const id = parseResourceId(params.id, table.primaryKey);
111
+ const row = await adapter.get(table.qualifiedName, id);
68
112
  const fkLabels = await resolveFkLabels({
69
113
  table,
70
114
  row,
@@ -75,13 +119,14 @@ var load = async ({ params, locals }) => {
75
119
  table: tableViewModel(table),
76
120
  row,
77
121
  fkLabels,
78
- id: params.id
122
+ id: encodeResourceId(id)
79
123
  };
80
124
  };
81
125
  var actions = { delete: async ({ params, locals }) => {
82
126
  const table = findTable(locals.schema.tables, params.table);
83
127
  if (!table) throw error(404, `Unknown table: ${params.table}`);
84
- await getAdapter().delete(table.qualifiedName, params.id);
128
+ const id = parseResourceId(params.id, table.primaryKey);
129
+ await getAdapter(locals.schema).delete(table.qualifiedName, id);
85
130
  throw redirect(303, `/tables/${table.qualifiedName}`);
86
131
  } };
87
132
 
@@ -93,11 +138,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
93
138
 
94
139
  const index = 4;
95
140
  let component_cache;
96
- const component = async () => component_cache ??= (await import('./_page.svelte-hNlfE_-R.js')).default;
141
+ const component = async () => component_cache ??= (await import('./_page.svelte-BWAo_bI_.js')).default;
97
142
  const server_id = "src/routes/tables/[table]/[id]/+page.server.ts";
98
- const imports = ["_app/immutable/nodes/4.wRTS68Ip.js","_app/immutable/chunks/1PNfJiP5.js","_app/immutable/chunks/CNJ9qNKc.js","_app/immutable/chunks/nlrTAAdT.js","_app/immutable/chunks/xihTtKlq.js"];
143
+ const imports = ["_app/immutable/nodes/4.TqsoTNiI.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/De8foa1z.js","_app/immutable/chunks/DdJtfEcD.js","_app/immutable/chunks/xihTtKlq.js"];
99
144
  const stylesheets = [];
100
145
  const fonts = [];
101
146
 
102
147
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
103
- //# sourceMappingURL=4-C8kXW-9J.js.map
148
+ //# sourceMappingURL=4-D6Y076hP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"4-D6Y076hP.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.TqsoTNiI.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/De8foa1z.js\",\"_app/immutable/chunks/DdJtfEcD.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
2
+ import { p as parseResourceId, e as encodeResourceId } from './resource-id-PDcQeAnc.js';
3
+ import { l as loadInitialRelationOptions, e as ensureSelectedOptions } from './relation-options-Dzy9DaQG.js';
4
+ import { a as relationFieldConfigs, p as promoteCompositeMemberWidgets, d as demoteUnpickableRelations, r as readFormWithCompositePicks, e as superValidate, z as zod, f as zodFromTable, b as buildMutationPayload } from './composite-form-C6ci57iZ.js';
5
+ import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
6
+ import './internal-Cuea68jL.js';
7
+ import 'node:module';
8
+ import './dev-yFiAtg5l.js';
9
+ import 'clsx';
10
+ import './index-DBqjc0Yf.js';
11
+ import './client-_87vxA9R.js';
12
+ import './app-DST8OmzT.js';
13
+ import 'zod/v4/core';
14
+ import 'zod';
15
+
16
+ //#region src/routes/tables/[table]/[id]/edit/+page.server.ts
17
+ function findTable(tables, slug) {
18
+ return tables.find((t) => t.qualifiedName === slug) ?? null;
19
+ }
20
+ function tableViewModel(table) {
21
+ return {
22
+ qualifiedName: table.qualifiedName,
23
+ label: table.label,
24
+ primaryKey: table.primaryKey,
25
+ columns: table.columns.map((c) => ({
26
+ name: c.name,
27
+ label: c.label,
28
+ widget: c.widget,
29
+ enumValues: c.enumValues ?? [],
30
+ nullable: c.nullable,
31
+ readonly: c.readonly || c.isPrimaryKey,
32
+ isPrimaryKey: c.isPrimaryKey
33
+ }))
34
+ };
35
+ }
36
+ var load = async ({ params, locals }) => {
37
+ const table = findTable(locals.schema.tables, params.table);
38
+ if (!table) throw error(404, `Unknown table: ${params.table}`);
39
+ const adapter = getAdapter(locals.schema);
40
+ const id = parseResourceId(params.id, table.primaryKey);
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);
47
+ return {
48
+ table: tableViewModel(formTable),
49
+ form,
50
+ id: encodeResourceId(id),
51
+ relations,
52
+ initialOptions
53
+ };
54
+ };
55
+ var actions = { default: async ({ request, params, locals }) => {
56
+ const table = findTable(locals.schema.tables, params.table);
57
+ if (!table) throw error(404, `Unknown table: ${params.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)));
63
+ if (!form.valid) return fail(400, { form });
64
+ const payload = buildMutationPayload(formTable, form.data, "update");
65
+ const id = parseResourceId(params.id, table.primaryKey);
66
+ await getAdapter(locals.schema).update(table.qualifiedName, id, payload);
67
+ throw redirect(303, `/tables/${table.qualifiedName}/${encodeResourceId(id)}`);
68
+ } };
69
+
70
+ var _page_server_ts = /*#__PURE__*/Object.freeze({
71
+ __proto__: null,
72
+ actions: actions,
73
+ load: load
74
+ });
75
+
76
+ const index = 5;
77
+ let component_cache;
78
+ const component = async () => component_cache ??= (await import('./_page.svelte-DpoimUgp.js')).default;
79
+ const server_id = "src/routes/tables/[table]/[id]/edit/+page.server.ts";
80
+ const imports = ["_app/immutable/nodes/5.6savDm4D.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/CCUVvlTa.js","_app/immutable/chunks/DdJtfEcD.js","_app/immutable/chunks/De8foa1z.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js"];
81
+ const stylesheets = [];
82
+ const fonts = [];
83
+
84
+ export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
85
+ //# sourceMappingURL=5-DOvvx6kj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5-DOvvx6kj.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 { i 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.6savDm4D.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/CCUVvlTa.js\",\"_app/immutable/chunks/DdJtfEcD.js\",\"_app/immutable/chunks/De8foa1z.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { g as getAdapter } from './adapter-CXNsjV1V.js';
2
+ import { r as rowIdSegment } from './resource-id-PDcQeAnc.js';
3
+ import { l as loadInitialRelationOptions } from './relation-options-Dzy9DaQG.js';
4
+ import { a as relationFieldConfigs, p as promoteCompositeMemberWidgets, d as demoteUnpickableRelations, r as readFormWithCompositePicks, e as superValidate, z as zod, f as zodFromTable, b as buildMutationPayload } from './composite-form-C6ci57iZ.js';
5
+ import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
6
+ import './internal-Cuea68jL.js';
7
+ import 'node:module';
8
+ import './dev-yFiAtg5l.js';
9
+ import 'clsx';
10
+ import './index-DBqjc0Yf.js';
11
+ import './client-_87vxA9R.js';
12
+ import './app-DST8OmzT.js';
13
+ import 'zod/v4/core';
14
+ import 'zod';
15
+
16
+ //#region src/routes/tables/[table]/new/+page.server.ts
17
+ function findTable(tables, slug) {
18
+ return tables.find((t) => t.qualifiedName === slug) ?? null;
19
+ }
20
+ function tableViewModel(table) {
21
+ return {
22
+ qualifiedName: table.qualifiedName,
23
+ label: table.label,
24
+ primaryKey: table.primaryKey,
25
+ columns: table.columns.map((c) => ({
26
+ name: c.name,
27
+ label: c.label,
28
+ widget: c.widget,
29
+ enumValues: c.enumValues ?? [],
30
+ nullable: c.nullable,
31
+ readonly: c.readonly || c.isPrimaryKey && c.defaultExpr !== null,
32
+ isPrimaryKey: c.isPrimaryKey
33
+ }))
34
+ };
35
+ }
36
+ var load = async ({ params, locals }) => {
37
+ const table = findTable(locals.schema.tables, params.table);
38
+ if (!table) throw error(404, `Unknown table: ${params.table}`);
39
+ const relations = relationFieldConfigs(table, locals.schema);
40
+ const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
41
+ const form = await superValidate(zod(zodFromTable(formTable)));
42
+ const initialOptions = await loadInitialRelationOptions(getAdapter(locals.schema), relations);
43
+ return {
44
+ table: tableViewModel(formTable),
45
+ form,
46
+ relations,
47
+ initialOptions
48
+ };
49
+ };
50
+ var actions = { default: async ({ request, params, locals }) => {
51
+ const table = findTable(locals.schema.tables, params.table);
52
+ if (!table) throw error(404, `Unknown table: ${params.table}`);
53
+ const relations = relationFieldConfigs(table, locals.schema);
54
+ const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
55
+ const submission = await readFormWithCompositePicks(request, relations);
56
+ if (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });
57
+ const form = await superValidate(submission, zod(zodFromTable(formTable)));
58
+ if (!form.valid) return fail(400, { form });
59
+ const payload = buildMutationPayload(formTable, form.data);
60
+ const segment = rowIdSegment(await getAdapter(locals.schema).create(table.qualifiedName, payload), table.primaryKey);
61
+ throw redirect(303, segment !== null ? `/tables/${table.qualifiedName}/${segment}` : `/tables/${table.qualifiedName}`);
62
+ } };
63
+
64
+ var _page_server_ts = /*#__PURE__*/Object.freeze({
65
+ __proto__: null,
66
+ actions: actions,
67
+ load: load
68
+ });
69
+
70
+ const index = 6;
71
+ let component_cache;
72
+ const component = async () => component_cache ??= (await import('./_page.svelte-D_706hfC.js')).default;
73
+ const server_id = "src/routes/tables/[table]/new/+page.server.ts";
74
+ const imports = ["_app/immutable/nodes/6.B6xlqPuj.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/CCUVvlTa.js","_app/immutable/chunks/DdJtfEcD.js","_app/immutable/chunks/De8foa1z.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js"];
75
+ const stylesheets = [];
76
+ const fonts = [];
77
+
78
+ export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
79
+ //# sourceMappingURL=6-BJn_aKxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"6-BJn_aKxy.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 { i 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]/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\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.B6xlqPuj.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/CCUVvlTa.js\",\"_app/immutable/chunks/DdJtfEcD.js\",\"_app/immutable/chunks/De8foa1z.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-BGid8Q1v.js';
3
3
  import { e as error } from './index-5kYmxIr9.js';
4
4
  import './index-DBqjc0Yf.js';
5
5
 
@@ -29,7 +29,7 @@ var load = async ({ params, locals, url }) => {
29
29
  url,
30
30
  searchFields: pickViewSearchFields(view)
31
31
  });
32
- const result = await getAdapter().list(view.qualifiedName, listParams);
32
+ const result = await getAdapter(locals.schema).list(view.qualifiedName, listParams);
33
33
  return {
34
34
  view: {
35
35
  qualifiedName: view.qualifiedName,
@@ -56,11 +56,11 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
56
56
 
57
57
  const index = 7;
58
58
  let component_cache;
59
- const component = async () => component_cache ??= (await import('./_page.svelte-CUhqt56V.js')).default;
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.zir-jrfl.js","_app/immutable/chunks/1PNfJiP5.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Cj8LiudX.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-BAhFrC8Z.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,4 +1,5 @@
1
1
  import { q as escape_html, d as attr, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
2
+ import { r as rowIdSegment } from './resource-id-PDcQeAnc.js';
2
3
 
3
4
  //#region src/lib/list/list-href.ts
4
5
  /** Rebuild the current list URL with `overrides` applied (a `null`
@@ -46,12 +47,7 @@ function ListTable($$renderer, $$props) {
46
47
  const sortLookup = derived(() => new Map(listParams.sort.map((s) => [s.field, s.order])));
47
48
  const totalPages = derived(() => Math.max(1, Math.ceil(total / listParams.pageSize)));
48
49
  function rowKey(row, idx) {
49
- const pkField = primaryKey[0];
50
- if (pkField !== void 0) {
51
- const pkValue = row[pkField];
52
- if (pkValue !== void 0 && pkValue !== null) return String(pkValue);
53
- }
54
- return String(idx);
50
+ return rowIdSegment(row, primaryKey) ?? String(idx);
55
51
  }
56
52
  $$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">${escape_html(title)}</h1> <p class="mb-6 text-sm text-muted-foreground">${escape_html(qualifiedName)}</p> <form method="GET" class="mb-4 flex flex-wrap items-center gap-2"><input type="text" name="q"${attr("value", listParams.search)} placeholder="Search…" class="min-w-0 flex-1 rounded-md border border-input bg-background px-3 py-2 text-sm"/> <button type="submit" class="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground">Search</button> `);
57
53
  if (!readonly && basePath) {
@@ -114,4 +110,4 @@ function ListTable($$renderer, $$props) {
114
110
  }
115
111
 
116
112
  export { ListTable as L };
117
- //# sourceMappingURL=ListTable-BxIw_RVF.js.map
113
+ //# sourceMappingURL=ListTable-CkfkQNdN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListTable-CkfkQNdN.js","sources":["../../../.svelte-kit/adapter-node/chunks/ListTable.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, r as derived } from \"./dev.js\";\nimport { r as rowIdSegment } from \"./resource-id.js\";\n//#region src/lib/list/list-href.ts\n/** Rebuild the current list URL with `overrides` applied (a `null`\n* override deletes that key). Mirrors the wire format parsed by\n* `parseListParamsFromUrl`; returns `.` when no params remain so the\n* link points at the bare route. */\nfunction buildHref(params, overrides = {}) {\n\tconst sp = new URLSearchParams();\n\tif (params.search.length > 0) sp.set(\"q\", params.search);\n\tif (params.sort.length > 0) sp.set(\"sort\", params.sort.map((s) => `${s.field}:${s.order}`).join(\",\"));\n\tif (params.page > 1) sp.set(\"page\", String(params.page));\n\tif (params.pageSize !== 50) sp.set(\"pageSize\", String(params.pageSize));\n\tfor (const [key, value] of Object.entries(overrides)) if (value === null) sp.delete(key);\n\telse sp.set(key, value);\n\tconst query = sp.toString();\n\treturn query.length > 0 ? `?${query}` : \".\";\n}\n/** Header link target that toggles the sort order for `field` (asc <->\n* desc, defaulting to asc) and resets back to page 1. */\nfunction buildSortHref(params, field) {\n\treturn buildHref(params, {\n\t\tsort: `${field}:${params.sort.find((s) => s.field === field)?.order === \"asc\" ? \"desc\" : \"asc\"}`,\n\t\tpage: null\n\t});\n}\n/** Stringify a cell value for the list table: objects render as JSON,\n* `null` / `undefined` render as the empty string. */\nfunction formatCell(value) {\n\tif (value === null || value === void 0) return \"\";\n\tif (typeof value === \"object\") return JSON.stringify(value);\n\treturn String(value);\n}\n//#endregion\n//#region src/lib/list/ListTable.svelte\nfunction ListTable($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Heading text (table / view label). */\n\t\t/** `schema.name`, shown under the heading. */\n\t\t/** Views render read-only: no \"+ New\", per-row links, or Actions\n\t\t* column. */\n\t\t/** Route base for the \"+ New\" and per-row links (e.g. `/tables/<qn>`);\n\t\t* used only when `readonly` is false. */\n\t\t/** Primary-key column names used to build the per-row link target. */\n\t\tlet { title, qualifiedName, columns, rows, total, listParams, readonly = false, basePath, primaryKey = [] } = $$props;\n\t\tconst sortLookup = derived(() => new Map(listParams.sort.map((s) => [s.field, s.order])));\n\t\tconst totalPages = derived(() => Math.max(1, Math.ceil(total / listParams.pageSize)));\n\t\tfunction rowKey(row, idx) {\n\t\t\treturn rowIdSegment(row, primaryKey) ?? String(idx);\n\t\t}\n\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(title)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(qualifiedName)}</p> <form method=\"GET\" class=\"mb-4 flex flex-wrap items-center gap-2\"><input type=\"text\" name=\"q\"${attr(\"value\", listParams.search)} placeholder=\"Search…\" class=\"min-w-0 flex-1 rounded-md border border-input bg-background px-3 py-2 text-sm\"/> <button type=\"submit\" class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground\">Search</button> `);\n\t\tif (!readonly && basePath) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", `${basePath}/new`)} class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">+ New</a>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></form> <div class=\"overflow-x-auto rounded-md border border-border\"><table class=\"min-w-full text-sm\"><thead class=\"bg-muted\"><tr><!--[-->`);\n\t\tconst each_array = ensure_array_like(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\t$$renderer.push(`<th class=\"px-3 py-2 text-left font-medium\"><a${attr(\"href\", buildSortHref(listParams, col.name))} class=\"hover:underline\">${escape_html(col.label)} `);\n\t\t\tif (sortLookup().has(col.name)) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span aria-hidden=\"true\">${escape_html(sortLookup().get(col.name) === \"asc\" ? \"↑\" : \"↓\")}</span>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></a></th>`);\n\t\t}\n\t\t$$renderer.push(`<!--]-->`);\n\t\tif (!readonly) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<th class=\"px-3 py-2 text-left font-medium\">Actions</th>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></tr></thead><tbody>`);\n\t\tif (rows.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<tr><td${attr(\"colspan\", columns.length + (readonly ? 0 : 1))} class=\"px-3 py-6 text-center text-muted-foreground\">No rows.</td></tr>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(rows);\n\t\t\tfor (let idx = 0, $$length = each_array_1.length; idx < $$length; idx++) {\n\t\t\t\tlet row = each_array_1[idx];\n\t\t\t\t$$renderer.push(`<tr class=\"border-t border-border\"><!--[-->`);\n\t\t\t\tconst each_array_2 = ensure_array_like(columns);\n\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\tlet col = each_array_2[$$index_1];\n\t\t\t\t\t$$renderer.push(`<td class=\"px-3 py-2\">${escape_html(formatCell(row[col.name]))}</td>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]-->`);\n\t\t\t\tif (!readonly && basePath) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<td class=\"px-3 py-2\"><a${attr(\"href\", `${basePath}/${rowKey(row, idx)}`)} class=\"text-primary underline\">View</a></td>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></tr>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></tbody></table></div> <nav class=\"mt-4 flex items-center justify-between text-sm\"><span class=\"text-muted-foreground\">Page ${escape_html(listParams.page)} of ${escape_html(totalPages())} (${escape_html(total)} total)</span> <div class=\"flex gap-2\">`);\n\t\tif (listParams.page > 1) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref(listParams, { page: String(listParams.page - 1) }))} class=\"rounded-md border border-border px-3 py-1\">← Prev</a>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (listParams.page < totalPages()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref(listParams, { page: String(listParams.page + 1) }))} class=\"rounded-md border border-border px-3 py-1\">Next →</a>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></nav>`);\n\t});\n}\n//#endregion\nexport { ListTable as t };\n"],"names":[],"mappings":"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"}
@@ -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-BERZdLJL.js';
3
- import './client-PK7K0DFj.js';
2
+ import './internal-Cuea68jL.js';
3
+ import './client-_87vxA9R.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-hNlfE_-R.js.map
86
+ //# sourceMappingURL=_page.svelte-BWAo_bI_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_page.svelte-hNlfE_-R.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-BWAo_bI_.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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"}