@kozou/svelte-ui 0.0.1 → 0.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.
- package/LICENSE +202 -0
- package/README.md +107 -1
- package/build/client/_app/immutable/assets/0.CZsFVllx.css +2 -0
- package/build/client/_app/immutable/assets/0.CZsFVllx.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CZsFVllx.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BpIM_fT8.js +2 -0
- package/build/client/_app/immutable/chunks/BpIM_fT8.js.br +0 -0
- package/build/client/_app/immutable/chunks/BpIM_fT8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4vVozd5.js +4 -0
- package/build/client/_app/immutable/chunks/C4vVozd5.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4vVozd5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cu9GwMht.js +214 -0
- package/build/client/_app/immutable/chunks/Cu9GwMht.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cu9GwMht.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQLVkJ9E.js +1 -0
- package/build/client/_app/immutable/chunks/DQLVkJ9E.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQLVkJ9E.js.gz +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js +1 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
- package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.D4C-SzYE.js +2 -0
- package/build/client/_app/immutable/entry/app.D4C-SzYE.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D4C-SzYE.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BgPykZWX.js +1 -0
- package/build/client/_app/immutable/entry/start.BgPykZWX.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BgPykZWX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Ct90k1ZK.js +1 -0
- package/build/client/_app/immutable/nodes/0.Ct90k1ZK.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Ct90k1ZK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.ByzpIkVa.js +1 -0
- package/build/client/_app/immutable/nodes/1.ByzpIkVa.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.ByzpIkVa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DKSRkbg2.js +1 -0
- package/build/client/_app/immutable/nodes/2.DKSRkbg2.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DKSRkbg2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BRseKH3J.js +1 -0
- package/build/client/_app/immutable/nodes/3.BRseKH3J.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BRseKH3J.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.hHssvcSO.js +1 -0
- package/build/client/_app/immutable/nodes/4.hHssvcSO.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.hHssvcSO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CfrPDIy5.js +1 -0
- package/build/client/_app/immutable/nodes/5.CfrPDIy5.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CfrPDIy5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.nxvsG8yx.js +1 -0
- package/build/client/_app/immutable/nodes/6.nxvsG8yx.js.br +3 -0
- package/build/client/_app/immutable/nodes/6.nxvsG8yx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.Bfhyc_gZ.js +1 -0
- package/build/client/_app/immutable/nodes/7.Bfhyc_gZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Bfhyc_gZ.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/env.js +94 -0
- package/build/handler.js +1494 -0
- package/build/index.js +345 -0
- package/build/server/chunks/0-BFDPzvW-.js +24 -0
- package/build/server/chunks/0-BFDPzvW-.js.map +1 -0
- package/build/server/chunks/1-Dmzzx_Xf.js +9 -0
- package/build/server/chunks/1-Dmzzx_Xf.js.map +1 -0
- package/build/server/chunks/2-B1IcZygX.js +35 -0
- package/build/server/chunks/2-B1IcZygX.js.map +1 -0
- package/build/server/chunks/3-BVIqnkRy.js +70 -0
- package/build/server/chunks/3-BVIqnkRy.js.map +1 -0
- package/build/server/chunks/4-BeHrsGek.js +103 -0
- package/build/server/chunks/4-BeHrsGek.js.map +1 -0
- package/build/server/chunks/5-Cw01QEjm.js +69 -0
- package/build/server/chunks/5-Cw01QEjm.js.map +1 -0
- package/build/server/chunks/6-DdCU04G4.js +70 -0
- package/build/server/chunks/6-DdCU04G4.js.map +1 -0
- package/build/server/chunks/7-BJeosbkA.js +66 -0
- package/build/server/chunks/7-BJeosbkA.js.map +1 -0
- package/build/server/chunks/_layout.svelte-ClzaQTuQ.js +15 -0
- package/build/server/chunks/_layout.svelte-ClzaQTuQ.js.map +1 -0
- package/build/server/chunks/_page.svelte-B8Bnkzob.js +78 -0
- package/build/server/chunks/_page.svelte-B8Bnkzob.js.map +1 -0
- package/build/server/chunks/_page.svelte-BN1au56r.js +51 -0
- package/build/server/chunks/_page.svelte-BN1au56r.js.map +1 -0
- package/build/server/chunks/_page.svelte-Bu4SlGir.js +86 -0
- package/build/server/chunks/_page.svelte-Bu4SlGir.js.map +1 -0
- package/build/server/chunks/_page.svelte-DHhstcmi.js +70 -0
- package/build/server/chunks/_page.svelte-DHhstcmi.js.map +1 -0
- package/build/server/chunks/_page.svelte-DKhYDtNl.js +86 -0
- package/build/server/chunks/_page.svelte-DKhYDtNl.js.map +1 -0
- package/build/server/chunks/_page.svelte-DYlwwhHn.js +70 -0
- package/build/server/chunks/_page.svelte-DYlwwhHn.js.map +1 -0
- package/build/server/chunks/adapter-DSZ-_PM_.js +273 -0
- package/build/server/chunks/adapter-DSZ-_PM_.js.map +1 -0
- package/build/server/chunks/app-DST8OmzT.js +12 -0
- package/build/server/chunks/app-DST8OmzT.js.map +1 -0
- package/build/server/chunks/client-Bcpj9QFB.js +69 -0
- package/build/server/chunks/client-Bcpj9QFB.js.map +1 -0
- package/build/server/chunks/dev-yFiAtg5l.js +4498 -0
- package/build/server/chunks/dev-yFiAtg5l.js.map +1 -0
- package/build/server/chunks/error.svelte-1lnafu4q.js +68 -0
- package/build/server/chunks/error.svelte-1lnafu4q.js.map +1 -0
- package/build/server/chunks/hooks.server-BBW_dqIs.js +14060 -0
- package/build/server/chunks/hooks.server-BBW_dqIs.js.map +1 -0
- package/build/server/chunks/index-5kYmxIr9.js +191 -0
- package/build/server/chunks/index-5kYmxIr9.js.map +1 -0
- package/build/server/chunks/index-DBqjc0Yf.js +77 -0
- package/build/server/chunks/index-DBqjc0Yf.js.map +1 -0
- package/build/server/chunks/internal-BrzrGF6g.js +1757 -0
- package/build/server/chunks/internal-BrzrGF6g.js.map +1 -0
- package/build/server/chunks/list-params-DjWk7B1o.js +44 -0
- package/build/server/chunks/list-params-DjWk7B1o.js.map +1 -0
- package/build/server/chunks/widget-registry-CYJ6dCZP.js +242 -0
- package/build/server/chunks/widget-registry-CYJ6dCZP.js.map +1 -0
- package/build/server/chunks/zod-from-table-Cqu9YCfY.js +6923 -0
- package/build/server/chunks/zod-from-table-Cqu9YCfY.js.map +1 -0
- package/build/server/index.js +4447 -0
- package/build/server/index.js.map +1 -0
- package/build/server/manifest.js +86 -0
- package/build/server/manifest.js.map +1 -0
- package/build/shims.js +32 -0
- package/package.json +71 -4
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { g as getAdapter } from './adapter-DSZ-_PM_.js';
|
|
2
|
+
import { a as superValidate, z as zod, c as zodFromTable, b as buildMutationPayload } from './zod-from-table-Cqu9YCfY.js';
|
|
3
|
+
import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
|
|
4
|
+
import './internal-BrzrGF6g.js';
|
|
5
|
+
import 'node:module';
|
|
6
|
+
import './dev-yFiAtg5l.js';
|
|
7
|
+
import 'clsx';
|
|
8
|
+
import './index-DBqjc0Yf.js';
|
|
9
|
+
import './client-Bcpj9QFB.js';
|
|
10
|
+
import './app-DST8OmzT.js';
|
|
11
|
+
import 'zod/v4/core';
|
|
12
|
+
import 'zod';
|
|
13
|
+
|
|
14
|
+
//#region src/routes/tables/[table]/[id]/edit/+page.server.ts
|
|
15
|
+
function findTable(tables, slug) {
|
|
16
|
+
return tables.find((t) => t.qualifiedName === slug) ?? null;
|
|
17
|
+
}
|
|
18
|
+
function tableViewModel(table) {
|
|
19
|
+
return {
|
|
20
|
+
qualifiedName: table.qualifiedName,
|
|
21
|
+
label: table.label,
|
|
22
|
+
primaryKey: table.primaryKey,
|
|
23
|
+
columns: table.columns.map((c) => ({
|
|
24
|
+
name: c.name,
|
|
25
|
+
label: c.label,
|
|
26
|
+
widget: c.widget,
|
|
27
|
+
enumValues: c.enumValues ?? [],
|
|
28
|
+
nullable: c.nullable,
|
|
29
|
+
readonly: c.readonly || c.isPrimaryKey,
|
|
30
|
+
isPrimaryKey: c.isPrimaryKey
|
|
31
|
+
}))
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
var load = async ({ params, locals }) => {
|
|
35
|
+
const table = findTable(locals.schema.tables, params.table);
|
|
36
|
+
if (!table) throw error(404, `Unknown table: ${params.table}`);
|
|
37
|
+
const form = await superValidate(await getAdapter().get(table.qualifiedName, params.id), zod(zodFromTable(table)));
|
|
38
|
+
return {
|
|
39
|
+
table: tableViewModel(table),
|
|
40
|
+
form,
|
|
41
|
+
id: params.id
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
var actions = { default: async ({ request, params, locals }) => {
|
|
45
|
+
const table = findTable(locals.schema.tables, params.table);
|
|
46
|
+
if (!table) throw error(404, `Unknown table: ${params.table}`);
|
|
47
|
+
const form = await superValidate(request, zod(zodFromTable(table)));
|
|
48
|
+
if (!form.valid) return fail(400, { form });
|
|
49
|
+
const payload = buildMutationPayload(table, form.data);
|
|
50
|
+
await getAdapter().update(table.qualifiedName, params.id, payload);
|
|
51
|
+
throw redirect(303, `/tables/${table.qualifiedName}/${params.id}`);
|
|
52
|
+
} };
|
|
53
|
+
|
|
54
|
+
var _page_server_ts = /*#__PURE__*/Object.freeze({
|
|
55
|
+
__proto__: null,
|
|
56
|
+
actions: actions,
|
|
57
|
+
load: load
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const index = 5;
|
|
61
|
+
let component_cache;
|
|
62
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-DHhstcmi.js')).default;
|
|
63
|
+
const server_id = "src/routes/tables/[table]/[id]/edit/+page.server.ts";
|
|
64
|
+
const imports = ["_app/immutable/nodes/5.CfrPDIy5.js","_app/immutable/chunks/BpIM_fT8.js","_app/immutable/chunks/Cu9GwMht.js","_app/immutable/chunks/C4vVozd5.js","_app/immutable/chunks/DQLVkJ9E.js","_app/immutable/chunks/xihTtKlq.js"];
|
|
65
|
+
const stylesheets = [];
|
|
66
|
+
const fonts = [];
|
|
67
|
+
|
|
68
|
+
export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
|
|
69
|
+
//# sourceMappingURL=5-Cw01QEjm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"5-Cw01QEjm.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 { t as superValidate } from \"../../../../../../chunks/dist.js\";\nimport { n as buildMutationPayload, r as zod, t as zodFromTable } from \"../../../../../../chunks/zod-from-table.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 form = await superValidate(await getAdapter().get(table.qualifiedName, params.id), zod(zodFromTable(table)));\n\treturn {\n\t\ttable: tableViewModel(table),\n\t\tform,\n\t\tid: params.id\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 form = await superValidate(request, zod(zodFromTable(table)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = buildMutationPayload(table, form.data);\n\tawait getAdapter().update(table.qualifiedName, params.id, payload);\n\tthrow redirect(303, `/tables/${table.qualifiedName}/${params.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.CfrPDIy5.js\",\"_app/immutable/chunks/BpIM_fT8.js\",\"_app/immutable/chunks/Cu9GwMht.js\",\"_app/immutable/chunks/C4vVozd5.js\",\"_app/immutable/chunks/DQLVkJ9E.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { g as getAdapter } from './adapter-DSZ-_PM_.js';
|
|
2
|
+
import { a as superValidate, z as zod, c as zodFromTable, b as buildMutationPayload } from './zod-from-table-Cqu9YCfY.js';
|
|
3
|
+
import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
|
|
4
|
+
import './internal-BrzrGF6g.js';
|
|
5
|
+
import 'node:module';
|
|
6
|
+
import './dev-yFiAtg5l.js';
|
|
7
|
+
import 'clsx';
|
|
8
|
+
import './index-DBqjc0Yf.js';
|
|
9
|
+
import './client-Bcpj9QFB.js';
|
|
10
|
+
import './app-DST8OmzT.js';
|
|
11
|
+
import 'zod/v4/core';
|
|
12
|
+
import 'zod';
|
|
13
|
+
|
|
14
|
+
//#region src/routes/tables/[table]/new/+page.server.ts
|
|
15
|
+
function findTable(tables, slug) {
|
|
16
|
+
return tables.find((t) => t.qualifiedName === slug) ?? null;
|
|
17
|
+
}
|
|
18
|
+
function tableViewModel(table) {
|
|
19
|
+
return {
|
|
20
|
+
qualifiedName: table.qualifiedName,
|
|
21
|
+
label: table.label,
|
|
22
|
+
primaryKey: table.primaryKey,
|
|
23
|
+
columns: table.columns.map((c) => ({
|
|
24
|
+
name: c.name,
|
|
25
|
+
label: c.label,
|
|
26
|
+
widget: c.widget,
|
|
27
|
+
enumValues: c.enumValues ?? [],
|
|
28
|
+
nullable: c.nullable,
|
|
29
|
+
readonly: c.readonly || c.isPrimaryKey && c.defaultExpr !== null,
|
|
30
|
+
isPrimaryKey: c.isPrimaryKey
|
|
31
|
+
}))
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
var load = async ({ params, locals }) => {
|
|
35
|
+
const table = findTable(locals.schema.tables, params.table);
|
|
36
|
+
if (!table) throw error(404, `Unknown table: ${params.table}`);
|
|
37
|
+
const form = await superValidate(zod(zodFromTable(table)));
|
|
38
|
+
return {
|
|
39
|
+
table: tableViewModel(table),
|
|
40
|
+
form
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
var actions = { default: async ({ request, params, locals }) => {
|
|
44
|
+
const table = findTable(locals.schema.tables, params.table);
|
|
45
|
+
if (!table) throw error(404, `Unknown table: ${params.table}`);
|
|
46
|
+
const form = await superValidate(request, zod(zodFromTable(table)));
|
|
47
|
+
if (!form.valid) return fail(400, { form });
|
|
48
|
+
const payload = buildMutationPayload(table, form.data);
|
|
49
|
+
const created = await getAdapter().create(table.qualifiedName, payload);
|
|
50
|
+
const pkField = table.primaryKey[0];
|
|
51
|
+
const id = pkField !== void 0 && created[pkField] !== void 0 ? String(created[pkField]) : "";
|
|
52
|
+
throw redirect(303, id.length > 0 ? `/tables/${table.qualifiedName}/${id}` : `/tables/${table.qualifiedName}`);
|
|
53
|
+
} };
|
|
54
|
+
|
|
55
|
+
var _page_server_ts = /*#__PURE__*/Object.freeze({
|
|
56
|
+
__proto__: null,
|
|
57
|
+
actions: actions,
|
|
58
|
+
load: load
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const index = 6;
|
|
62
|
+
let component_cache;
|
|
63
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-DYlwwhHn.js')).default;
|
|
64
|
+
const server_id = "src/routes/tables/[table]/new/+page.server.ts";
|
|
65
|
+
const imports = ["_app/immutable/nodes/6.nxvsG8yx.js","_app/immutable/chunks/BpIM_fT8.js","_app/immutable/chunks/Cu9GwMht.js","_app/immutable/chunks/C4vVozd5.js","_app/immutable/chunks/DQLVkJ9E.js","_app/immutable/chunks/xihTtKlq.js"];
|
|
66
|
+
const stylesheets = [];
|
|
67
|
+
const fonts = [];
|
|
68
|
+
|
|
69
|
+
export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
|
|
70
|
+
//# sourceMappingURL=6-DdCU04G4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"6-DdCU04G4.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 { t as superValidate } from \"../../../../../chunks/dist.js\";\nimport { n as buildMutationPayload, r as zod, t as zodFromTable } from \"../../../../../chunks/zod-from-table.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 form = await superValidate(zod(zodFromTable(table)));\n\treturn {\n\t\ttable: tableViewModel(table),\n\t\tform\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 form = await superValidate(request, zod(zodFromTable(table)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = buildMutationPayload(table, form.data);\n\tconst created = await getAdapter().create(table.qualifiedName, payload);\n\tconst pkField = table.primaryKey[0];\n\tconst id = pkField !== void 0 && created[pkField] !== void 0 ? String(created[pkField]) : \"\";\n\tthrow redirect(303, id.length > 0 ? `/tables/${table.qualifiedName}/${id}` : `/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.nxvsG8yx.js\",\"_app/immutable/chunks/BpIM_fT8.js\",\"_app/immutable/chunks/Cu9GwMht.js\",\"_app/immutable/chunks/C4vVozd5.js\",\"_app/immutable/chunks/DQLVkJ9E.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { g as getAdapter } from './adapter-DSZ-_PM_.js';
|
|
2
|
+
import { p as parseListParamsFromUrl } from './list-params-DjWk7B1o.js';
|
|
3
|
+
import { e as error } from './index-5kYmxIr9.js';
|
|
4
|
+
import './index-DBqjc0Yf.js';
|
|
5
|
+
|
|
6
|
+
//#region src/lib/view/columns.ts
|
|
7
|
+
var DISPLAY_COLUMN_LIMIT = 5;
|
|
8
|
+
var TEXT_LIKE_TYPE_PREFIXES = [
|
|
9
|
+
"text",
|
|
10
|
+
"character",
|
|
11
|
+
"varchar",
|
|
12
|
+
"citext",
|
|
13
|
+
"name",
|
|
14
|
+
"uuid"
|
|
15
|
+
];
|
|
16
|
+
function pickViewDisplayColumns(view) {
|
|
17
|
+
return view.columns.slice(0, DISPLAY_COLUMN_LIMIT);
|
|
18
|
+
}
|
|
19
|
+
function pickViewSearchFields(view) {
|
|
20
|
+
return view.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/routes/views/[view]/+page.server.ts
|
|
24
|
+
var load = async ({ params, locals, url }) => {
|
|
25
|
+
const view = locals.schema.views.find((v) => v.qualifiedName === params.view);
|
|
26
|
+
if (!view) throw error(404, `Unknown view: ${params.view}`);
|
|
27
|
+
const displayColumns = pickViewDisplayColumns(view);
|
|
28
|
+
const listParams = parseListParamsFromUrl({
|
|
29
|
+
url,
|
|
30
|
+
searchFields: pickViewSearchFields(view)
|
|
31
|
+
});
|
|
32
|
+
const result = await getAdapter().list(view.qualifiedName, listParams);
|
|
33
|
+
return {
|
|
34
|
+
view: {
|
|
35
|
+
qualifiedName: view.qualifiedName,
|
|
36
|
+
label: view.label,
|
|
37
|
+
columns: displayColumns.map((c) => ({
|
|
38
|
+
name: c.name,
|
|
39
|
+
label: c.label
|
|
40
|
+
}))
|
|
41
|
+
},
|
|
42
|
+
list: result,
|
|
43
|
+
listParams: {
|
|
44
|
+
search: listParams.search,
|
|
45
|
+
sort: listParams.sort,
|
|
46
|
+
page: listParams.page,
|
|
47
|
+
pageSize: listParams.pageSize
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var _page_server_ts = /*#__PURE__*/Object.freeze({
|
|
53
|
+
__proto__: null,
|
|
54
|
+
load: load
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const index = 7;
|
|
58
|
+
let component_cache;
|
|
59
|
+
const component = async () => component_cache ??= (await import('./_page.svelte-B8Bnkzob.js')).default;
|
|
60
|
+
const server_id = "src/routes/views/[view]/+page.server.ts";
|
|
61
|
+
const imports = ["_app/immutable/nodes/7.Bfhyc_gZ.js","_app/immutable/chunks/BpIM_fT8.js","_app/immutable/chunks/xihTtKlq.js"];
|
|
62
|
+
const stylesheets = [];
|
|
63
|
+
const fonts = [];
|
|
64
|
+
|
|
65
|
+
export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
|
|
66
|
+
//# sourceMappingURL=7-BJeosbkA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"7-BJeosbkA.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().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.Bfhyc_gZ.js\",\"_app/immutable/chunks/BpIM_fT8.js\",\"_app/immutable/chunks/xihTtKlq.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,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AACvE,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;AACxH,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { q as escape_html } from './dev-yFiAtg5l.js';
|
|
2
|
+
import 'clsx';
|
|
3
|
+
|
|
4
|
+
//#region src/routes/+layout.svelte
|
|
5
|
+
function _layout($$renderer, $$props) {
|
|
6
|
+
$$renderer.component(($$renderer) => {
|
|
7
|
+
let { data, children } = $$props;
|
|
8
|
+
$$renderer.push(`<div class="min-h-screen bg-background text-foreground"><header class="border-b border-border"><div class="mx-auto flex max-w-5xl items-center justify-between px-6 py-4"><a href="/" class="text-lg font-semibold">${escape_html(data.appName)}</a> <nav class="flex items-center gap-4 text-sm text-muted-foreground"><span>${escape_html(data.tableCount)} tables</span> <span aria-hidden="true">/</span> <span>${escape_html(data.viewCount)} views</span></nav></div></header> <main class="mx-auto max-w-5xl px-6 py-8">`);
|
|
9
|
+
children($$renderer);
|
|
10
|
+
$$renderer.push(`<!----></main></div>`);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { _layout as default };
|
|
15
|
+
//# sourceMappingURL=_layout.svelte-ClzaQTuQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_layout.svelte-ClzaQTuQ.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.svelte.js"],"sourcesContent":["import { H as escape_html } from \"../../chunks/dev.js\";\n//#region src/routes/+layout.svelte\nfunction _layout($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data, children } = $$props;\n\t\t$$renderer.push(`<div class=\"min-h-screen bg-background text-foreground\"><header class=\"border-b border-border\"><div class=\"mx-auto flex max-w-5xl items-center justify-between px-6 py-4\"><a href=\"/\" class=\"text-lg font-semibold\">${escape_html(data.appName)}</a> <nav class=\"flex items-center gap-4 text-sm text-muted-foreground\"><span>${escape_html(data.tableCount)} tables</span> <span aria-hidden=\"true\">/</span> <span>${escape_html(data.viewCount)} views</span></nav></div></header> <main class=\"mx-auto max-w-5xl px-6 py-8\">`);\n\t\tchildren($$renderer);\n\t\t$$renderer.push(`<!----></main></div>`);\n\t});\n}\n//#endregion\nexport { _layout as default };\n"],"names":[],"mappings":";;;AACA;AACA,SAAS,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;AACtC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO;AAClC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,oNAAoN,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,8EAA8E,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,uDAAuD,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,6EAA6E,CAAC,CAAC;AACphB,EAAE,QAAQ,CAAC,UAAU,CAAC;AACtB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { q as escape_html, d as attr, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
|
|
2
|
+
import 'clsx';
|
|
3
|
+
|
|
4
|
+
//#region src/routes/views/[view]/+page.svelte
|
|
5
|
+
function _page($$renderer, $$props) {
|
|
6
|
+
$$renderer.component(($$renderer) => {
|
|
7
|
+
let { data } = $$props;
|
|
8
|
+
const sortLookup = derived(() => new Map(data.listParams.sort.map((s) => [s.field, s.order])));
|
|
9
|
+
const totalPages = derived(() => Math.max(1, Math.ceil(data.list.total / data.list.pageSize)));
|
|
10
|
+
function buildHref(overrides) {
|
|
11
|
+
const params = new URLSearchParams();
|
|
12
|
+
if (data.listParams.search.length > 0) params.set("q", data.listParams.search);
|
|
13
|
+
if (data.listParams.sort.length > 0) params.set("sort", data.listParams.sort.map((s) => `${s.field}:${s.order}`).join(","));
|
|
14
|
+
if (data.listParams.page > 1) params.set("page", String(data.listParams.page));
|
|
15
|
+
if (data.listParams.pageSize !== 50) params.set("pageSize", String(data.listParams.pageSize));
|
|
16
|
+
for (const [key, value] of Object.entries(overrides)) if (value === null) params.delete(key);
|
|
17
|
+
else params.set(key, value);
|
|
18
|
+
const query = params.toString();
|
|
19
|
+
return query.length > 0 ? `?${query}` : ".";
|
|
20
|
+
}
|
|
21
|
+
function buildSortHref(field) {
|
|
22
|
+
return buildHref({
|
|
23
|
+
sort: `${field}:${sortLookup().get(field) === "asc" ? "desc" : "asc"}`,
|
|
24
|
+
page: null
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function formatCell(value) {
|
|
28
|
+
if (value === null || value === void 0) return "";
|
|
29
|
+
if (typeof value === "object") return JSON.stringify(value);
|
|
30
|
+
return String(value);
|
|
31
|
+
}
|
|
32
|
+
$$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">${escape_html(data.view.label)}</h1> <p class="mb-6 text-sm text-muted-foreground">${escape_html(data.view.qualifiedName)}</p> <form method="GET" class="mb-4 flex flex-wrap items-center gap-2"><input type="text" name="q"${attr("value", data.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></form> <div class="overflow-x-auto rounded-md border border-border"><table class="min-w-full text-sm"><thead class="bg-muted"><tr><!--[-->`);
|
|
33
|
+
const each_array = ensure_array_like(data.view.columns);
|
|
34
|
+
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
35
|
+
let col = each_array[$$index];
|
|
36
|
+
$$renderer.push(`<th class="px-3 py-2 text-left font-medium"><a${attr("href", buildSortHref(col.name))} class="hover:underline">${escape_html(col.label)} `);
|
|
37
|
+
if (sortLookup().has(col.name)) {
|
|
38
|
+
$$renderer.push("<!--[0-->");
|
|
39
|
+
$$renderer.push(`<span aria-hidden="true">${escape_html(sortLookup().get(col.name) === "asc" ? "↑" : "↓")}</span>`);
|
|
40
|
+
} else $$renderer.push("<!--[-1-->");
|
|
41
|
+
$$renderer.push(`<!--]--></a></th>`);
|
|
42
|
+
}
|
|
43
|
+
$$renderer.push(`<!--]--></tr></thead><tbody>`);
|
|
44
|
+
if (data.list.rows.length === 0) {
|
|
45
|
+
$$renderer.push("<!--[0-->");
|
|
46
|
+
$$renderer.push(`<tr><td${attr("colspan", data.view.columns.length)} class="px-3 py-6 text-center text-muted-foreground">No rows.</td></tr>`);
|
|
47
|
+
} else {
|
|
48
|
+
$$renderer.push("<!--[-1-->");
|
|
49
|
+
$$renderer.push(`<!--[-->`);
|
|
50
|
+
const each_array_1 = ensure_array_like(data.list.rows);
|
|
51
|
+
for (let idx = 0, $$length = each_array_1.length; idx < $$length; idx++) {
|
|
52
|
+
let row = each_array_1[idx];
|
|
53
|
+
$$renderer.push(`<tr class="border-t border-border"><!--[-->`);
|
|
54
|
+
const each_array_2 = ensure_array_like(data.view.columns);
|
|
55
|
+
for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
|
|
56
|
+
let col = each_array_2[$$index_1];
|
|
57
|
+
$$renderer.push(`<td class="px-3 py-2">${escape_html(formatCell(row[col.name]))}</td>`);
|
|
58
|
+
}
|
|
59
|
+
$$renderer.push(`<!--]--></tr>`);
|
|
60
|
+
}
|
|
61
|
+
$$renderer.push(`<!--]-->`);
|
|
62
|
+
}
|
|
63
|
+
$$renderer.push(`<!--]--></tbody></table></div> <nav class="mt-4 flex items-center justify-between text-sm"><span class="text-muted-foreground">Page ${escape_html(data.listParams.page)} of ${escape_html(totalPages())} (${escape_html(data.list.total)} total)</span> <div class="flex gap-2">`);
|
|
64
|
+
if (data.listParams.page > 1) {
|
|
65
|
+
$$renderer.push("<!--[0-->");
|
|
66
|
+
$$renderer.push(`<a${attr("href", buildHref({ page: String(data.listParams.page - 1) }))} class="rounded-md border border-border px-3 py-1">← Prev</a>`);
|
|
67
|
+
} else $$renderer.push("<!--[-1-->");
|
|
68
|
+
$$renderer.push(`<!--]--> `);
|
|
69
|
+
if (data.listParams.page < totalPages()) {
|
|
70
|
+
$$renderer.push("<!--[0-->");
|
|
71
|
+
$$renderer.push(`<a${attr("href", buildHref({ page: String(data.listParams.page + 1) }))} class="rounded-md border border-border px-3 py-1">Next →</a>`);
|
|
72
|
+
} else $$renderer.push("<!--[-1-->");
|
|
73
|
+
$$renderer.push(`<!--]--></div></nav>`);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export { _page as default };
|
|
78
|
+
//# sourceMappingURL=_page.svelte-B8Bnkzob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_page.svelte-B8Bnkzob.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/views/_view_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, r as derived } from \"../../../../chunks/dev.js\";\n//#region src/routes/views/[view]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\tconst sortLookup = derived(() => new Map(data.listParams.sort.map((s) => [s.field, s.order])));\n\t\tconst totalPages = derived(() => Math.max(1, Math.ceil(data.list.total / data.list.pageSize)));\n\t\tfunction buildHref(overrides) {\n\t\t\tconst params = new URLSearchParams();\n\t\t\tif (data.listParams.search.length > 0) params.set(\"q\", data.listParams.search);\n\t\t\tif (data.listParams.sort.length > 0) params.set(\"sort\", data.listParams.sort.map((s) => `${s.field}:${s.order}`).join(\",\"));\n\t\t\tif (data.listParams.page > 1) params.set(\"page\", String(data.listParams.page));\n\t\t\tif (data.listParams.pageSize !== 50) params.set(\"pageSize\", String(data.listParams.pageSize));\n\t\t\tfor (const [key, value] of Object.entries(overrides)) if (value === null) params.delete(key);\n\t\t\telse params.set(key, value);\n\t\t\tconst query = params.toString();\n\t\t\treturn query.length > 0 ? `?${query}` : \".\";\n\t\t}\n\t\tfunction buildSortHref(field) {\n\t\t\treturn buildHref({\n\t\t\t\tsort: `${field}:${sortLookup().get(field) === \"asc\" ? \"desc\" : \"asc\"}`,\n\t\t\t\tpage: null\n\t\t\t});\n\t\t}\n\t\tfunction formatCell(value) {\n\t\t\tif (value === null || value === void 0) return \"\";\n\t\t\tif (typeof value === \"object\") return JSON.stringify(value);\n\t\t\treturn String(value);\n\t\t}\n\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(data.view.label)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(data.view.qualifiedName)}</p> <form method=\"GET\" class=\"mb-4 flex flex-wrap items-center gap-2\"><input type=\"text\" name=\"q\"${attr(\"value\", data.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></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(data.view.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(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(`<!--]--></tr></thead><tbody>`);\n\t\tif (data.list.rows.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<tr><td${attr(\"colspan\", data.view.columns.length)} 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(data.list.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(data.view.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(`<!--]--></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(data.listParams.page)} of ${escape_html(totalPages())} (${escape_html(data.list.total)} total)</span> <div class=\"flex gap-2\">`);\n\t\tif (data.listParams.page > 1) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref({ page: String(data.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 (data.listParams.page < totalPages()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref({ page: String(data.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 { _page as default };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { o as ensure_array_like, d as attr, q as escape_html } from './dev-yFiAtg5l.js';
|
|
2
|
+
import 'clsx';
|
|
3
|
+
|
|
4
|
+
//#region src/routes/+page.svelte
|
|
5
|
+
function _page($$renderer, $$props) {
|
|
6
|
+
$$renderer.component(($$renderer) => {
|
|
7
|
+
let { data } = $$props;
|
|
8
|
+
$$renderer.push(`<h1 class="mb-6 text-2xl font-semibold">Dashboard</h1> <section class="mb-10"><h2 class="mb-3 text-lg font-semibold">Tables</h2> `);
|
|
9
|
+
if (data.dashboard.tables.length === 0) {
|
|
10
|
+
$$renderer.push("<!--[0-->");
|
|
11
|
+
$$renderer.push(`<p class="text-sm text-muted-foreground">No tables in the current schema.</p>`);
|
|
12
|
+
} else {
|
|
13
|
+
$$renderer.push("<!--[-1-->");
|
|
14
|
+
$$renderer.push(`<ul class="space-y-2"><!--[-->`);
|
|
15
|
+
const each_array = ensure_array_like(data.dashboard.tables);
|
|
16
|
+
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
17
|
+
let table = each_array[$$index];
|
|
18
|
+
$$renderer.push(`<li><a${attr("href", `/tables/${table.qualifiedName}`)} class="block rounded-md border border-border p-3 transition hover:bg-muted"><div class="font-medium">${escape_html(table.label)}</div> `);
|
|
19
|
+
if (table.description) {
|
|
20
|
+
$$renderer.push("<!--[0-->");
|
|
21
|
+
$$renderer.push(`<div class="text-sm text-muted-foreground">${escape_html(table.description)}</div>`);
|
|
22
|
+
} else $$renderer.push("<!--[-1-->");
|
|
23
|
+
$$renderer.push(`<!--]--></a></li>`);
|
|
24
|
+
}
|
|
25
|
+
$$renderer.push(`<!--]--></ul>`);
|
|
26
|
+
}
|
|
27
|
+
$$renderer.push(`<!--]--></section> <section><h2 class="mb-3 text-lg font-semibold">Views</h2> `);
|
|
28
|
+
if (data.dashboard.views.length === 0) {
|
|
29
|
+
$$renderer.push("<!--[0-->");
|
|
30
|
+
$$renderer.push(`<p class="text-sm text-muted-foreground">No views in the current schema.</p>`);
|
|
31
|
+
} else {
|
|
32
|
+
$$renderer.push("<!--[-1-->");
|
|
33
|
+
$$renderer.push(`<ul class="space-y-2"><!--[-->`);
|
|
34
|
+
const each_array_1 = ensure_array_like(data.dashboard.views);
|
|
35
|
+
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
|
|
36
|
+
let view = each_array_1[$$index_1];
|
|
37
|
+
$$renderer.push(`<li><a${attr("href", `/views/${view.qualifiedName}`)} class="block rounded-md border border-border p-3 transition hover:bg-muted"><div class="font-medium">${escape_html(view.label)}</div> `);
|
|
38
|
+
if (view.description) {
|
|
39
|
+
$$renderer.push("<!--[0-->");
|
|
40
|
+
$$renderer.push(`<div class="text-sm text-muted-foreground">${escape_html(view.description)}</div>`);
|
|
41
|
+
} else $$renderer.push("<!--[-1-->");
|
|
42
|
+
$$renderer.push(`<!--]--></a></li>`);
|
|
43
|
+
}
|
|
44
|
+
$$renderer.push(`<!--]--></ul>`);
|
|
45
|
+
}
|
|
46
|
+
$$renderer.push(`<!--]--></section>`);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { _page as default };
|
|
51
|
+
//# sourceMappingURL=_page.svelte-BN1au56r.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_page.svelte-BN1au56r.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like } from \"../../chunks/dev.js\";\n//#region src/routes/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\t$$renderer.push(`<h1 class=\"mb-6 text-2xl font-semibold\">Dashboard</h1> <section class=\"mb-10\"><h2 class=\"mb-3 text-lg font-semibold\">Tables</h2> `);\n\t\tif (data.dashboard.tables.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"text-sm text-muted-foreground\">No tables in the current schema.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ul class=\"space-y-2\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(data.dashboard.tables);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet table = each_array[$$index];\n\t\t\t\t$$renderer.push(`<li><a${attr(\"href\", `/tables/${table.qualifiedName}`)} class=\"block rounded-md border border-border p-3 transition hover:bg-muted\"><div class=\"font-medium\">${escape_html(table.label)}</div> `);\n\t\t\t\tif (table.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"text-sm text-muted-foreground\">${escape_html(table.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></a></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></section> <section><h2 class=\"mb-3 text-lg font-semibold\">Views</h2> `);\n\t\tif (data.dashboard.views.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"text-sm text-muted-foreground\">No views in the current schema.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ul class=\"space-y-2\"><!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(data.dashboard.views);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet view = each_array_1[$$index_1];\n\t\t\t\t$$renderer.push(`<li><a${attr(\"href\", `/views/${view.qualifiedName}`)} class=\"block rounded-md border border-border p-3 transition hover:bg-muted\"><div class=\"font-medium\">${escape_html(view.label)}</div> `);\n\t\t\t\tif (view.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"text-sm text-muted-foreground\">${escape_html(view.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></a></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></section>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { q as escape_html, d as attr, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
|
|
2
|
+
import 'clsx';
|
|
3
|
+
|
|
4
|
+
//#region src/routes/tables/[table]/+page.svelte
|
|
5
|
+
function _page($$renderer, $$props) {
|
|
6
|
+
$$renderer.component(($$renderer) => {
|
|
7
|
+
let { data } = $$props;
|
|
8
|
+
const sortLookup = derived(() => new Map(data.listParams.sort.map((s) => [s.field, s.order])));
|
|
9
|
+
const totalPages = derived(() => Math.max(1, Math.ceil(data.list.total / data.list.pageSize)));
|
|
10
|
+
function buildHref(overrides) {
|
|
11
|
+
const params = new URLSearchParams();
|
|
12
|
+
if (data.listParams.search.length > 0) params.set("q", data.listParams.search);
|
|
13
|
+
if (data.listParams.sort.length > 0) params.set("sort", data.listParams.sort.map((s) => `${s.field}:${s.order}`).join(","));
|
|
14
|
+
if (data.listParams.page > 1) params.set("page", String(data.listParams.page));
|
|
15
|
+
if (data.listParams.pageSize !== 50) params.set("pageSize", String(data.listParams.pageSize));
|
|
16
|
+
for (const [key, value] of Object.entries(overrides)) if (value === null) params.delete(key);
|
|
17
|
+
else params.set(key, value);
|
|
18
|
+
const query = params.toString();
|
|
19
|
+
return query.length > 0 ? `?${query}` : ".";
|
|
20
|
+
}
|
|
21
|
+
function buildSortHref(field) {
|
|
22
|
+
return buildHref({
|
|
23
|
+
sort: `${field}:${sortLookup().get(field) === "asc" ? "desc" : "asc"}`,
|
|
24
|
+
page: null
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function formatCell(value) {
|
|
28
|
+
if (value === null || value === void 0) return "";
|
|
29
|
+
if (typeof value === "object") return JSON.stringify(value);
|
|
30
|
+
return String(value);
|
|
31
|
+
}
|
|
32
|
+
function rowKey(row, idx) {
|
|
33
|
+
const pkField = data.table.primaryKey[0];
|
|
34
|
+
if (pkField !== void 0) {
|
|
35
|
+
const pkValue = row[pkField];
|
|
36
|
+
if (pkValue !== void 0 && pkValue !== null) return String(pkValue);
|
|
37
|
+
}
|
|
38
|
+
return String(idx);
|
|
39
|
+
}
|
|
40
|
+
$$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)}</p> <form method="GET" class="mb-4 flex flex-wrap items-center gap-2"><input type="text" name="q"${attr("value", data.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> <a${attr("href", `/tables/${data.table.qualifiedName}/new`)} class="rounded-md border border-border px-4 py-2 text-sm font-medium">+ New</a></form> <div class="overflow-x-auto rounded-md border border-border"><table class="min-w-full text-sm"><thead class="bg-muted"><tr><!--[-->`);
|
|
41
|
+
const each_array = ensure_array_like(data.table.columns);
|
|
42
|
+
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
43
|
+
let col = each_array[$$index];
|
|
44
|
+
$$renderer.push(`<th class="px-3 py-2 text-left font-medium"><a${attr("href", buildSortHref(col.name))} class="hover:underline">${escape_html(col.label)} `);
|
|
45
|
+
if (sortLookup().has(col.name)) {
|
|
46
|
+
$$renderer.push("<!--[0-->");
|
|
47
|
+
$$renderer.push(`<span aria-hidden="true">${escape_html(sortLookup().get(col.name) === "asc" ? "↑" : "↓")}</span>`);
|
|
48
|
+
} else $$renderer.push("<!--[-1-->");
|
|
49
|
+
$$renderer.push(`<!--]--></a></th>`);
|
|
50
|
+
}
|
|
51
|
+
$$renderer.push(`<!--]--><th class="px-3 py-2 text-left font-medium">Actions</th></tr></thead><tbody>`);
|
|
52
|
+
if (data.list.rows.length === 0) {
|
|
53
|
+
$$renderer.push("<!--[0-->");
|
|
54
|
+
$$renderer.push(`<tr><td${attr("colspan", data.table.columns.length + 1)} class="px-3 py-6 text-center text-muted-foreground">No rows.</td></tr>`);
|
|
55
|
+
} else {
|
|
56
|
+
$$renderer.push("<!--[-1-->");
|
|
57
|
+
$$renderer.push(`<!--[-->`);
|
|
58
|
+
const each_array_1 = ensure_array_like(data.list.rows);
|
|
59
|
+
for (let idx = 0, $$length = each_array_1.length; idx < $$length; idx++) {
|
|
60
|
+
let row = each_array_1[idx];
|
|
61
|
+
$$renderer.push(`<tr class="border-t border-border"><!--[-->`);
|
|
62
|
+
const each_array_2 = ensure_array_like(data.table.columns);
|
|
63
|
+
for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
|
|
64
|
+
let col = each_array_2[$$index_1];
|
|
65
|
+
$$renderer.push(`<td class="px-3 py-2">${escape_html(formatCell(row[col.name]))}</td>`);
|
|
66
|
+
}
|
|
67
|
+
$$renderer.push(`<!--]--><td class="px-3 py-2"><a${attr("href", `/tables/${data.table.qualifiedName}/${rowKey(row, idx)}`)} class="text-primary underline">View</a></td></tr>`);
|
|
68
|
+
}
|
|
69
|
+
$$renderer.push(`<!--]-->`);
|
|
70
|
+
}
|
|
71
|
+
$$renderer.push(`<!--]--></tbody></table></div> <nav class="mt-4 flex items-center justify-between text-sm"><span class="text-muted-foreground">Page ${escape_html(data.listParams.page)} of ${escape_html(totalPages())} (${escape_html(data.list.total)} total)</span> <div class="flex gap-2">`);
|
|
72
|
+
if (data.listParams.page > 1) {
|
|
73
|
+
$$renderer.push("<!--[0-->");
|
|
74
|
+
$$renderer.push(`<a${attr("href", buildHref({ page: String(data.listParams.page - 1) }))} class="rounded-md border border-border px-3 py-1">← Prev</a>`);
|
|
75
|
+
} else $$renderer.push("<!--[-1-->");
|
|
76
|
+
$$renderer.push(`<!--]--> `);
|
|
77
|
+
if (data.listParams.page < totalPages()) {
|
|
78
|
+
$$renderer.push("<!--[0-->");
|
|
79
|
+
$$renderer.push(`<a${attr("href", buildHref({ page: String(data.listParams.page + 1) }))} class="rounded-md border border-border px-3 py-1">Next →</a>`);
|
|
80
|
+
} else $$renderer.push("<!--[-1-->");
|
|
81
|
+
$$renderer.push(`<!--]--></div></nav>`);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { _page as default };
|
|
86
|
+
//# sourceMappingURL=_page.svelte-Bu4SlGir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_page.svelte-Bu4SlGir.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, r as derived } from \"../../../../chunks/dev.js\";\n//#region src/routes/tables/[table]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\tconst sortLookup = derived(() => new Map(data.listParams.sort.map((s) => [s.field, s.order])));\n\t\tconst totalPages = derived(() => Math.max(1, Math.ceil(data.list.total / data.list.pageSize)));\n\t\tfunction buildHref(overrides) {\n\t\t\tconst params = new URLSearchParams();\n\t\t\tif (data.listParams.search.length > 0) params.set(\"q\", data.listParams.search);\n\t\t\tif (data.listParams.sort.length > 0) params.set(\"sort\", data.listParams.sort.map((s) => `${s.field}:${s.order}`).join(\",\"));\n\t\t\tif (data.listParams.page > 1) params.set(\"page\", String(data.listParams.page));\n\t\t\tif (data.listParams.pageSize !== 50) params.set(\"pageSize\", String(data.listParams.pageSize));\n\t\t\tfor (const [key, value] of Object.entries(overrides)) if (value === null) params.delete(key);\n\t\t\telse params.set(key, value);\n\t\t\tconst query = params.toString();\n\t\t\treturn query.length > 0 ? `?${query}` : \".\";\n\t\t}\n\t\tfunction buildSortHref(field) {\n\t\t\treturn buildHref({\n\t\t\t\tsort: `${field}:${sortLookup().get(field) === \"asc\" ? \"desc\" : \"asc\"}`,\n\t\t\t\tpage: null\n\t\t\t});\n\t\t}\n\t\tfunction formatCell(value) {\n\t\t\tif (value === null || value === void 0) return \"\";\n\t\t\tif (typeof value === \"object\") return JSON.stringify(value);\n\t\t\treturn String(value);\n\t\t}\n\t\tfunction rowKey(row, idx) {\n\t\t\tconst pkField = data.table.primaryKey[0];\n\t\t\tif (pkField !== void 0) {\n\t\t\t\tconst pkValue = row[pkField];\n\t\t\t\tif (pkValue !== void 0 && pkValue !== null) return String(pkValue);\n\t\t\t}\n\t\t\treturn String(idx);\n\t\t}\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)}</p> <form method=\"GET\" class=\"mb-4 flex flex-wrap items-center gap-2\"><input type=\"text\" name=\"q\"${attr(\"value\", data.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> <a${attr(\"href\", `/tables/${data.table.qualifiedName}/new`)} class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">+ New</a></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(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\t$$renderer.push(`<th class=\"px-3 py-2 text-left font-medium\"><a${attr(\"href\", buildSortHref(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(`<!--]--><th class=\"px-3 py-2 text-left font-medium\">Actions</th></tr></thead><tbody>`);\n\t\tif (data.list.rows.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<tr><td${attr(\"colspan\", data.table.columns.length + 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(data.list.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(data.table.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(`<!--]--><td class=\"px-3 py-2\"><a${attr(\"href\", `/tables/${data.table.qualifiedName}/${rowKey(row, idx)}`)} class=\"text-primary underline\">View</a></td></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(data.listParams.page)} of ${escape_html(totalPages())} (${escape_html(data.list.total)} total)</span> <div class=\"flex gap-2\">`);\n\t\tif (data.listParams.page > 1) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref({ page: String(data.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 (data.listParams.page < totalPages()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref({ page: String(data.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 { _page as default };\n"],"names":[],"mappings":"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"}
|