@kozou/svelte-ui 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/_app/immutable/assets/0.BpzpdRYx.css +2 -0
- package/build/client/_app/immutable/assets/0.BpzpdRYx.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BpzpdRYx.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{DxikiVqj.js → BAfs2EwQ.js} +1 -1
- package/build/client/_app/immutable/chunks/BAfs2EwQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/BAfs2EwQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{BgT5WiOF.js → ClT4djUO.js} +1 -1
- package/build/client/_app/immutable/chunks/ClT4djUO.js.br +0 -0
- package/build/client/_app/immutable/chunks/{BgT5WiOF.js.gz → ClT4djUO.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/CrFfElwr.js +1 -0
- package/build/client/_app/immutable/chunks/CrFfElwr.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrFfElwr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DHwlcjtp.js +214 -0
- package/build/client/_app/immutable/chunks/DHwlcjtp.js.br +0 -0
- package/build/client/_app/immutable/chunks/DHwlcjtp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{M-rQODG_.js → DqFR9xzq.js} +1 -1
- package/build/client/_app/immutable/chunks/DqFR9xzq.js.br +0 -0
- package/build/client/_app/immutable/chunks/DqFR9xzq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/POk9Ad1v.js +4 -0
- package/build/client/_app/immutable/chunks/POk9Ad1v.js.br +0 -0
- package/build/client/_app/immutable/chunks/POk9Ad1v.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.DX7U95N5.js +2 -0
- package/build/client/_app/immutable/entry/app.DX7U95N5.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DX7U95N5.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CTKpPXDp.js +1 -0
- package/build/client/_app/immutable/entry/start.CTKpPXDp.js.br +1 -0
- package/build/client/_app/immutable/entry/start.CTKpPXDp.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.BTi1ueXu.js → 0.ahUg4RPH.js} +1 -1
- package/build/client/_app/immutable/nodes/0.ahUg4RPH.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.ahUg4RPH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.BI5dO6h8.js → 1.BCx2aLZ9.js} +1 -1
- package/build/client/_app/immutable/nodes/1.BCx2aLZ9.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BCx2aLZ9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DXYbQoLe.js +1 -0
- package/build/client/_app/immutable/nodes/2.DXYbQoLe.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DXYbQoLe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D_kabCAZ.js +1 -0
- package/build/client/_app/immutable/nodes/3.D_kabCAZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D_kabCAZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.BfuWEZdX.js → 4.C486-zEy.js} +1 -1
- package/build/client/_app/immutable/nodes/4.C486-zEy.js.br +2 -0
- package/build/client/_app/immutable/nodes/4.C486-zEy.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.D1OoUXND.js +1 -0
- package/build/client/_app/immutable/nodes/5.D1OoUXND.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.D1OoUXND.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js +1 -0
- package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.cAEaWzyw.js +1 -0
- package/build/client/_app/immutable/nodes/7.cAEaWzyw.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.cAEaWzyw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.CjEmXoAF.js → 8.Cb70WGbk.js} +1 -1
- package/build/client/_app/immutable/nodes/8.Cb70WGbk.js.br +1 -0
- package/build/client/_app/immutable/nodes/8.Cb70WGbk.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-C4CgvBlc.js → 0-CTaiiMQp.js} +3 -3
- package/build/server/chunks/{0-C4CgvBlc.js.map → 0-CTaiiMQp.js.map} +1 -1
- package/build/server/chunks/{1-CVLmaMi2.js → 1-Dni7ax6A.js} +3 -3
- package/build/server/chunks/{1-CVLmaMi2.js.map → 1-Dni7ax6A.js.map} +1 -1
- package/build/server/chunks/{2-D9il_3ty.js → 2--1dA0mCa.js} +19 -5
- package/build/server/chunks/2--1dA0mCa.js.map +1 -0
- package/build/server/chunks/3-N0Oe_-32.js +144 -0
- package/build/server/chunks/3-N0Oe_-32.js.map +1 -0
- package/build/server/chunks/{3-DfrqlU53.js → 4-BB3nsMwf.js} +5 -5
- package/build/server/chunks/{3-DfrqlU53.js.map → 4-BB3nsMwf.js.map} +1 -1
- package/build/server/chunks/{4-Dc-NPvAO.js → 5-QdpSeSEB.js} +8 -6
- package/build/server/chunks/5-QdpSeSEB.js.map +1 -0
- package/build/server/chunks/{5-DvwPrYwd.js → 6-DQ9D4Rjj.js} +18 -15
- package/build/server/chunks/6-DQ9D4Rjj.js.map +1 -0
- package/build/server/chunks/{6-DxT9TB6A.js → 7-yY-k4F-J.js} +18 -15
- package/build/server/chunks/7-yY-k4F-J.js.map +1 -0
- package/build/server/chunks/{7-CKkRKfs8.js → 8-C6Rfqnpk.js} +5 -5
- package/build/server/chunks/{7-CKkRKfs8.js.map → 8-C6Rfqnpk.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-FkcquIeL.js → _page.svelte-6bUnnrWp.js} +9 -4
- package/build/server/chunks/_page.svelte-6bUnnrWp.js.map +1 -0
- package/build/server/chunks/_page.svelte-BAaP0Gbn.js +143 -0
- package/build/server/chunks/_page.svelte-BAaP0Gbn.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BN1au56r.js → _page.svelte-Cup_HkLy.js} +19 -3
- package/build/server/chunks/_page.svelte-Cup_HkLy.js.map +1 -0
- package/build/server/chunks/{_page.svelte-BGxCzjmZ.js → _page.svelte-D1coeZL7.js} +8 -7
- package/build/server/chunks/_page.svelte-D1coeZL7.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DvcE6zrM.js → _page.svelte-DsOlSzf6.js} +8 -7
- package/build/server/chunks/_page.svelte-DsOlSzf6.js.map +1 -0
- package/build/server/chunks/{_server.ts-C-Wy675T.js → _server.ts-DlnyELsA.js} +4 -4
- package/build/server/chunks/{_server.ts-C-Wy675T.js.map → _server.ts-DlnyELsA.js.map} +1 -1
- package/build/server/chunks/{adapter-CXNsjV1V.js → adapter-B1wOda2X.js} +13 -1
- package/build/server/chunks/adapter-B1wOda2X.js.map +1 -0
- package/build/server/chunks/{app-DST8OmzT.js → app-MIcRQ3KA.js} +2 -2
- package/build/server/chunks/{app-DST8OmzT.js.map → app-MIcRQ3KA.js.map} +1 -1
- package/build/server/chunks/{client-BfR0iysy.js → client-CF_AG7xO.js} +3 -3
- package/build/server/chunks/{client-BfR0iysy.js.map → client-CF_AG7xO.js.map} +1 -1
- package/build/server/chunks/{composite-form-DeAbT97s.js → composite-form-Khrcy6Jk.js} +83 -31
- package/build/server/chunks/composite-form-Khrcy6Jk.js.map +1 -0
- package/build/server/chunks/{error.svelte-CgmjtCM8.js → error.svelte-CrnPC1Ez.js} +6 -6
- package/build/server/chunks/{error.svelte-CgmjtCM8.js.map → error.svelte-CrnPC1Ez.js.map} +1 -1
- package/build/server/chunks/{hooks.server-BCX7tjO4.js → hooks.server-Oa_UD2Wo.js} +743 -13
- package/build/server/chunks/hooks.server-Oa_UD2Wo.js.map +1 -0
- package/build/server/chunks/{index-5kYmxIr9.js → index-CVekYGHP.js} +2 -2
- package/build/server/chunks/{index-5kYmxIr9.js.map → index-CVekYGHP.js.map} +1 -1
- package/build/server/chunks/index-DBqjc0Yf.js.map +1 -1
- package/build/server/chunks/{internal-D3PcExp3.js → internal-Z9Jwi6lX.js} +13 -13
- package/build/server/chunks/{internal-D3PcExp3.js.map → internal-Z9Jwi6lX.js.map} +1 -1
- package/build/server/chunks/privilege-readonly-CK4k2aYO.js +15 -0
- package/build/server/chunks/privilege-readonly-CK4k2aYO.js.map +1 -0
- package/build/server/chunks/{relation-options-Dzy9DaQG.js → relation-options-BQ3XnftO.js} +2 -2
- package/build/server/chunks/{relation-options-Dzy9DaQG.js.map → relation-options-BQ3XnftO.js.map} +1 -1
- package/build/server/chunks/relation-select-composite-field-D4LZijR_.js +101 -0
- package/build/server/chunks/relation-select-composite-field-D4LZijR_.js.map +1 -0
- package/build/server/chunks/{widget-registry-COKz4xxc.js → widget-registry-6ku8orXa.js} +3 -98
- package/build/server/chunks/widget-registry-6ku8orXa.js.map +1 -0
- package/build/server/index.js +32 -32
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +23 -15
- package/build/server/manifest.js.map +1 -1
- package/package.json +4 -4
- package/build/client/_app/immutable/assets/0._vgqT-Ja.css +0 -2
- package/build/client/_app/immutable/assets/0._vgqT-Ja.css.br +0 -0
- package/build/client/_app/immutable/assets/0._vgqT-Ja.css.gz +0 -0
- package/build/client/_app/immutable/chunks/0-MunKvN.js +0 -4
- package/build/client/_app/immutable/chunks/0-MunKvN.js.br +0 -0
- package/build/client/_app/immutable/chunks/0-MunKvN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BgT5WiOF.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrTaJnzY.js +0 -214
- package/build/client/_app/immutable/chunks/CrTaJnzY.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrTaJnzY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DxikiVqj.js.br +0 -0
- package/build/client/_app/immutable/chunks/DxikiVqj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/M-rQODG_.js.br +0 -0
- package/build/client/_app/immutable/chunks/M-rQODG_.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.ByhtJ88k.js +0 -2
- package/build/client/_app/immutable/entry/app.ByhtJ88k.js.br +0 -0
- package/build/client/_app/immutable/entry/app.ByhtJ88k.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.C_VgULzk.js +0 -1
- package/build/client/_app/immutable/entry/start.C_VgULzk.js.br +0 -0
- package/build/client/_app/immutable/entry/start.C_VgULzk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BI5dO6h8.js.br +0 -3
- package/build/client/_app/immutable/nodes/1.BI5dO6h8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js +0 -1
- package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.PUtoqAEs.js +0 -1
- package/build/client/_app/immutable/nodes/4.PUtoqAEs.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.PUtoqAEs.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CEXAqzYO.js +0 -1
- package/build/client/_app/immutable/nodes/5.CEXAqzYO.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CEXAqzYO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.4fTWRTA8.js +0 -1
- package/build/client/_app/immutable/nodes/6.4fTWRTA8.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.4fTWRTA8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.br +0 -1
- package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.gz +0 -0
- package/build/server/chunks/2-D9il_3ty.js.map +0 -1
- package/build/server/chunks/4-Dc-NPvAO.js.map +0 -1
- package/build/server/chunks/5-DvwPrYwd.js.map +0 -1
- package/build/server/chunks/6-DxT9TB6A.js.map +0 -1
- package/build/server/chunks/_page.svelte-BGxCzjmZ.js.map +0 -1
- package/build/server/chunks/_page.svelte-BN1au56r.js.map +0 -1
- package/build/server/chunks/_page.svelte-DvcE6zrM.js.map +0 -1
- package/build/server/chunks/_page.svelte-FkcquIeL.js.map +0 -1
- package/build/server/chunks/adapter-CXNsjV1V.js.map +0 -1
- package/build/server/chunks/composite-form-DeAbT97s.js.map +0 -1
- package/build/server/chunks/hooks.server-BCX7tjO4.js.map +0 -1
- package/build/server/chunks/widget-registry-COKz4xxc.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/lib/form/privilege-readonly.ts
|
|
2
|
+
function applyPrivilegeReadonly(table, mode) {
|
|
3
|
+
return {
|
|
4
|
+
...table,
|
|
5
|
+
columns: table.columns.map((c) => {
|
|
6
|
+
return (mode === "create" ? c.insertable === false : c.updatable === false) && !c.readonly ? {
|
|
7
|
+
...c,
|
|
8
|
+
readonly: true
|
|
9
|
+
} : c;
|
|
10
|
+
})
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { applyPrivilegeReadonly as a };
|
|
15
|
+
//# sourceMappingURL=privilege-readonly-CK4k2aYO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privilege-readonly-CK4k2aYO.js","sources":["../../../.svelte-kit/adapter-node/chunks/privilege-readonly.js"],"sourcesContent":["//#region src/lib/form/privilege-readonly.ts\nfunction applyPrivilegeReadonly(table, mode) {\n\treturn {\n\t\t...table,\n\t\tcolumns: table.columns.map((c) => {\n\t\t\treturn (mode === \"create\" ? c.insertable === false : c.updatable === false) && !c.readonly ? {\n\t\t\t\t...c,\n\t\t\t\treadonly: true\n\t\t\t} : c;\n\t\t})\n\t};\n}\n//#endregion\nexport { applyPrivilegeReadonly as t };\n"],"names":[],"mappings":"AAAA;AACA,SAAS,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7C,CAAC,OAAO;AACR,EAAE,GAAG,KAAK;AACV,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACpC,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG,CAAC,CAAC,UAAU,KAAK,KAAK,GAAG,CAAC,CAAC,SAAS,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG;AAChG,IAAI,GAAG,CAAC;AACR,IAAI,QAAQ,EAAE;AACd,IAAI,GAAG,CAAC;AACR,EAAE,CAAC;AACH,EAAE;AACF;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { e as encodeResourceId } from './resource-id-PDcQeAnc.js';
|
|
2
|
-
import { e as error } from './index-
|
|
2
|
+
import { e as error } from './index-CVekYGHP.js';
|
|
3
3
|
|
|
4
4
|
var MAX_RELATION_LIMIT = 100;
|
|
5
5
|
function clampLimit(raw) {
|
|
@@ -84,4 +84,4 @@ async function ensureSelectedOptions(adapter, relations, row, options) {
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
export { ensureSelectedOptions as e, loadInitialRelationOptions as l, searchRelationOptions as s };
|
|
87
|
-
//# sourceMappingURL=relation-options-
|
|
87
|
+
//# sourceMappingURL=relation-options-BQ3XnftO.js.map
|
package/build/server/chunks/{relation-options-Dzy9DaQG.js.map → relation-options-BQ3XnftO.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-options-
|
|
1
|
+
{"version":3,"file":"relation-options-BQ3XnftO.js","sources":["../../../.svelte-kit/adapter-node/chunks/relation-options.js"],"sourcesContent":["import { t as encodeResourceId } from \"./resource-id.js\";\nimport { error } from \"@sveltejs/kit\";\nvar MAX_RELATION_LIMIT = 100;\nfunction clampLimit(raw) {\n\tif (raw === null) return 20;\n\tconst parsed = Number.parseInt(raw, 10);\n\tif (!Number.isFinite(parsed) || parsed < 1) return 20;\n\treturn Math.min(parsed, MAX_RELATION_LIMIT);\n}\n/**\n* Validate a relation-options request against the schema and run the search.\n*\n* The target `resource` must be a known table and both `label` and every\n* `fields` entry must be real columns of that table, so a crafted request\n* cannot point the picker at an unknown resource or push arbitrary identifiers\n* into the adapter's query grammar. Throws a SvelteKit `error` (400/404) on a\n* bad request; the endpoint surfaces it as the HTTP status.\n*/\nasync function searchRelationOptions(schema, adapter, request) {\n\tconst { resource, label } = request;\n\tif (resource === null || resource.length === 0) throw error(400, \"relation-options requires a \\\"resource\\\" query parameter.\");\n\tif (label === null || label.length === 0) throw error(400, \"relation-options requires a \\\"label\\\" query parameter.\");\n\tconst target = schema.tables.find((t) => t.qualifiedName === resource);\n\tif (target === void 0) throw error(404, `Unknown relation target: ${resource}`);\n\tconst columnNames = new Set(target.columns.map((c) => c.name));\n\tif (!columnNames.has(label)) throw error(400, `Unknown label column \"${label}\" on \"${resource}\".`);\n\tconst searchFields = request.fields ? request.fields.split(\",\").map((field) => field.trim()).filter((field) => field.length > 0) : [];\n\tfor (const field of searchFields) if (!columnNames.has(field)) throw error(400, `Unknown search field \"${field}\" on \"${resource}\".`);\n\treturn adapter.searchRelation(resource, {\n\t\tquery: request.query ?? \"\",\n\t\tlabelField: label,\n\t\tsearchFields,\n\t\tlimit: clampLimit(request.limit)\n\t});\n}\nasync function loadInitialRelationOptions(adapter, relations) {\n\tconst entries = await Promise.all(relations.map(async (relation) => {\n\t\ttry {\n\t\t\tconst options = await adapter.searchRelation(relation.resource, {\n\t\t\t\tquery: \"\",\n\t\t\t\tlabelField: relation.labelField,\n\t\t\t\tsearchFields: relation.searchFields,\n\t\t\t\tlimit: 20\n\t\t\t});\n\t\t\treturn [relation.field, options];\n\t\t} catch {\n\t\t\treturn [relation.field, []];\n\t\t}\n\t}));\n\treturn Object.fromEntries(entries);\n}\n/** Ensure each relation's currently-stored value is selectable by prepending\n* it (with a resolved label) when the first page does not already include\n* it. A composite relation assembles its current value from every component\n* column — in key order, so it doubles as the target's item id — and is\n* skipped when any component is missing (a partially-null composite foreign\n* key is not a reference). Mutates `options` in place. */\nasync function ensureSelectedOptions(adapter, relations, row, options) {\n\tawait Promise.all(relations.map(async (relation) => {\n\t\tconst keyFields = relation.keyFields ?? [relation.field];\n\t\tconst components = [];\n\t\tfor (const field of keyFields) {\n\t\t\tconst value = row[field];\n\t\t\tif (value === null || value === void 0) return;\n\t\t\tif (typeof value !== \"string\" && typeof value !== \"number\") return;\n\t\t\tif (value === \"\") return;\n\t\t\tcomponents.push(value);\n\t\t}\n\t\tconst current = keyFields.length === 1 ? components[0] : components;\n\t\tconst currentKey = encodeResourceId(current);\n\t\tconst existing = options[relation.field] ?? [];\n\t\tif (existing.some((option) => encodeResourceId(option.id) === currentKey)) return;\n\t\tlet label = components.map(String).join(\", \");\n\t\ttry {\n\t\t\tconst projected = (await adapter.get(relation.resource, current))[relation.labelField];\n\t\t\tif (projected !== null && projected !== void 0) label = String(projected);\n\t\t} catch {}\n\t\toptions[relation.field] = [{\n\t\t\tid: current,\n\t\t\tlabel\n\t\t}, ...existing];\n\t}));\n}\n//#endregion\nexport { loadInitialRelationOptions as n, searchRelationOptions as r, ensureSelectedOptions as t };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { d as attr, q as escape_html, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
|
|
2
|
+
import { e as encodeResourceId } from './resource-id-PDcQeAnc.js';
|
|
3
|
+
import { c as createRelationSearch, f as fetchRelationOptions } from './widget-registry-6ku8orXa.js';
|
|
4
|
+
import { i as isPickableOption, c as compositeParamName, C as COMPOSITE_CLEAR_VALUE } from './composite-form-Khrcy6Jk.js';
|
|
5
|
+
|
|
6
|
+
//#region src/lib/form/widgets/relation-select-composite-field.svelte
|
|
7
|
+
function Relation_select_composite_field($$renderer, $$props) {
|
|
8
|
+
$$renderer.component(($$renderer) => {
|
|
9
|
+
/** Base for the select's DOM id (the relation's first column). */
|
|
10
|
+
/** "schema.table" the picker searches. */
|
|
11
|
+
/** Target column shown as each option's label. */
|
|
12
|
+
/** Target columns the substring search filters on. */
|
|
13
|
+
/** Server-rendered first page (plus the current value on edit) so the
|
|
14
|
+
* picker has rows before the browser issues any request. */
|
|
15
|
+
/** Current component values, in the target's primary-key declaration
|
|
16
|
+
* order (the order option-id components use). */
|
|
17
|
+
/** Receives the picked option's components (same order), or `null` when
|
|
18
|
+
* the operator clears an optional relation. */
|
|
19
|
+
let { name, label, resource, labelField, searchFields, initialOptions, values, onpick, required = false, readonly = false, limit = 20 } = $$props;
|
|
20
|
+
let options = initialOptions.filter(isPickableOption);
|
|
21
|
+
let query = "";
|
|
22
|
+
const known = /* @__PURE__ */ new Map();
|
|
23
|
+
function remember(option) {
|
|
24
|
+
const components = Array.isArray(option.id) ? option.id : [option.id];
|
|
25
|
+
known.set(encodeResourceId(option.id), {
|
|
26
|
+
label: option.label,
|
|
27
|
+
components
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
for (const option of initialOptions.filter(isPickableOption)) remember(option);
|
|
31
|
+
const selectedKey = derived(() => {
|
|
32
|
+
if (values.length > 0 && values.every((value) => value === "")) return COMPOSITE_CLEAR_VALUE;
|
|
33
|
+
const components = [];
|
|
34
|
+
for (const value of values) {
|
|
35
|
+
if (value === null || value === void 0) return "";
|
|
36
|
+
if (typeof value !== "string" && typeof value !== "number") return "";
|
|
37
|
+
components.push(value);
|
|
38
|
+
}
|
|
39
|
+
return encodeResourceId(components);
|
|
40
|
+
});
|
|
41
|
+
createRelationSearch({
|
|
42
|
+
adapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },
|
|
43
|
+
resource,
|
|
44
|
+
labelField,
|
|
45
|
+
searchFields,
|
|
46
|
+
limit
|
|
47
|
+
});
|
|
48
|
+
function handleChange(event) {
|
|
49
|
+
const key = event.target.value;
|
|
50
|
+
if (key === "__clear__") {
|
|
51
|
+
onpick(null);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (key === "") return;
|
|
55
|
+
const picked = known.get(key);
|
|
56
|
+
if (picked !== void 0) onpick(picked.components);
|
|
57
|
+
}
|
|
58
|
+
const selectId = derived(() => `relation-${name}`);
|
|
59
|
+
$$renderer.push(`<div class="block"><label${attr("for", selectId())} class="mb-1 block text-sm font-medium">${escape_html(label)}`);
|
|
60
|
+
if (required) {
|
|
61
|
+
$$renderer.push("<!--[0-->");
|
|
62
|
+
$$renderer.push(`<span class="text-destructive" aria-hidden="true">*</span>`);
|
|
63
|
+
} else $$renderer.push("<!--[-1-->");
|
|
64
|
+
$$renderer.push(`<!--]--></label> <input type="text" placeholder="Search…"${attr("aria-label", `Search ${label}`)}${attr("value", query)}${attr("disabled", readonly, true)} class="mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"/> `);
|
|
65
|
+
$$renderer.select({
|
|
66
|
+
id: selectId(),
|
|
67
|
+
name: compositeParamName(name),
|
|
68
|
+
required,
|
|
69
|
+
disabled: readonly,
|
|
70
|
+
value: selectedKey(),
|
|
71
|
+
onchange: handleChange,
|
|
72
|
+
class: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
|
|
73
|
+
}, ($$renderer) => {
|
|
74
|
+
$$renderer.option({
|
|
75
|
+
value: "",
|
|
76
|
+
disabled: true
|
|
77
|
+
}, ($$renderer) => {
|
|
78
|
+
$$renderer.push(`Select…`);
|
|
79
|
+
});
|
|
80
|
+
if (!required) {
|
|
81
|
+
$$renderer.push("<!--[0-->");
|
|
82
|
+
$$renderer.option({ value: COMPOSITE_CLEAR_VALUE }, ($$renderer) => {
|
|
83
|
+
$$renderer.push(`--`);
|
|
84
|
+
});
|
|
85
|
+
} else $$renderer.push("<!--[-1-->");
|
|
86
|
+
$$renderer.push(`<!--]--><!--[-->`);
|
|
87
|
+
const each_array = ensure_array_like(options);
|
|
88
|
+
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
89
|
+
let option = each_array[$$index];
|
|
90
|
+
$$renderer.option({ value: encodeResourceId(option.id) }, ($$renderer) => {
|
|
91
|
+
$$renderer.push(`${escape_html(option.label)}`);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
$$renderer.push(`<!--]-->`);
|
|
95
|
+
});
|
|
96
|
+
$$renderer.push(`</div>`);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export { Relation_select_composite_field as R };
|
|
101
|
+
//# sourceMappingURL=relation-select-composite-field-D4LZijR_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-select-composite-field-D4LZijR_.js","sources":["../../../.svelte-kit/adapter-node/chunks/relation-select-composite-field.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, r as derived } from \"./dev.js\";\nimport { t as encodeResourceId } from \"./resource-id.js\";\nimport { i as fetchRelationOptions, r as createRelationSearch } from \"./widget-registry.js\";\nimport { a as isPickableOption, r as compositeParamName, t as COMPOSITE_CLEAR_VALUE } from \"./relation-field-config.js\";\n//#region src/lib/form/widgets/relation-select-composite-field.svelte\nfunction Relation_select_composite_field($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** Base for the select's DOM id (the relation's first column). */\n\t\t/** \"schema.table\" the picker searches. */\n\t\t/** Target column shown as each option's label. */\n\t\t/** Target columns the substring search filters on. */\n\t\t/** Server-rendered first page (plus the current value on edit) so the\n\t\t* picker has rows before the browser issues any request. */\n\t\t/** Current component values, in the target's primary-key declaration\n\t\t* order (the order option-id components use). */\n\t\t/** Receives the picked option's components (same order), or `null` when\n\t\t* the operator clears an optional relation. */\n\t\tlet { name, label, resource, labelField, searchFields, initialOptions, values, onpick, required = false, readonly = false, limit = 20 } = $$props;\n\t\tlet options = initialOptions.filter(isPickableOption);\n\t\tlet query = \"\";\n\t\tconst known = /* @__PURE__ */ new Map();\n\t\tfunction remember(option) {\n\t\t\tconst components = Array.isArray(option.id) ? option.id : [option.id];\n\t\t\tknown.set(encodeResourceId(option.id), {\n\t\t\t\tlabel: option.label,\n\t\t\t\tcomponents\n\t\t\t});\n\t\t}\n\t\tfor (const option of initialOptions.filter(isPickableOption)) remember(option);\n\t\tconst selectedKey = derived(() => {\n\t\t\tif (values.length > 0 && values.every((value) => value === \"\")) return COMPOSITE_CLEAR_VALUE;\n\t\t\tconst components = [];\n\t\t\tfor (const value of values) {\n\t\t\t\tif (value === null || value === void 0) return \"\";\n\t\t\t\tif (typeof value !== \"string\" && typeof value !== \"number\") return \"\";\n\t\t\t\tcomponents.push(value);\n\t\t\t}\n\t\t\treturn encodeResourceId(components);\n\t\t});\n\t\tcreateRelationSearch({\n\t\t\tadapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },\n\t\t\tresource,\n\t\t\tlabelField,\n\t\t\tsearchFields,\n\t\t\tlimit\n\t\t});\n\t\tfunction handleChange(event) {\n\t\t\tconst key = event.target.value;\n\t\t\tif (key === \"__clear__\") {\n\t\t\t\tonpick(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (key === \"\") return;\n\t\t\tconst picked = known.get(key);\n\t\t\tif (picked !== void 0) onpick(picked.components);\n\t\t}\n\t\tconst selectId = derived(() => `relation-${name}`);\n\t\t$$renderer.push(`<div class=\"block\"><label${attr(\"for\", selectId())} class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></label> <input type=\"text\" placeholder=\"Search…\"${attr(\"aria-label\", `Search ${label}`)}${attr(\"value\", query)}${attr(\"disabled\", readonly, true)} class=\"mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/> `);\n\t\t$$renderer.select({\n\t\t\tid: selectId(),\n\t\t\tname: compositeParamName(name),\n\t\t\trequired,\n\t\t\tdisabled: readonly,\n\t\t\tvalue: selectedKey(),\n\t\t\tonchange: handleChange,\n\t\t\tclass: \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n\t\t}, ($$renderer) => {\n\t\t\t$$renderer.option({\n\t\t\t\tvalue: \"\",\n\t\t\t\tdisabled: true\n\t\t\t}, ($$renderer) => {\n\t\t\t\t$$renderer.push(`Select…`);\n\t\t\t});\n\t\t\tif (!required) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.option({ value: COMPOSITE_CLEAR_VALUE }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`--`);\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: encodeResourceId(option.id) }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option.label)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</div>`);\n\t});\n}\n//#endregion\nexport { Relation_select_composite_field as t };\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { e as bind_props, q as escape_html, d as attr, o as ensure_array_like, m as derived } from './dev-yFiAtg5l.js';
|
|
2
2
|
import { e as encodeResourceId } from './resource-id-PDcQeAnc.js';
|
|
3
|
-
import { i as isPickableOption, c as compositeParamName, C as COMPOSITE_CLEAR_VALUE } from './composite-form-DeAbT97s.js';
|
|
4
3
|
|
|
5
4
|
//#region src/lib/form/relation-options-client.ts
|
|
6
5
|
var RELATION_OPTIONS_PATH = "/relation-options";
|
|
@@ -72,100 +71,6 @@ function createRelationSearch(opts) {
|
|
|
72
71
|
};
|
|
73
72
|
}
|
|
74
73
|
//#endregion
|
|
75
|
-
//#region src/lib/form/widgets/relation-select-composite-field.svelte
|
|
76
|
-
function Relation_select_composite_field($$renderer, $$props) {
|
|
77
|
-
$$renderer.component(($$renderer) => {
|
|
78
|
-
/** Base for the select's DOM id (the relation's first column). */
|
|
79
|
-
/** "schema.table" the picker searches. */
|
|
80
|
-
/** Target column shown as each option's label. */
|
|
81
|
-
/** Target columns the substring search filters on. */
|
|
82
|
-
/** Server-rendered first page (plus the current value on edit) so the
|
|
83
|
-
* picker has rows before the browser issues any request. */
|
|
84
|
-
/** Current component values, in the target's primary-key declaration
|
|
85
|
-
* order (the order option-id components use). */
|
|
86
|
-
/** Receives the picked option's components (same order), or `null` when
|
|
87
|
-
* the operator clears an optional relation. */
|
|
88
|
-
let { name, label, resource, labelField, searchFields, initialOptions, values, onpick, required = false, readonly = false, limit = 20 } = $$props;
|
|
89
|
-
let options = initialOptions.filter(isPickableOption);
|
|
90
|
-
let query = "";
|
|
91
|
-
const known = /* @__PURE__ */ new Map();
|
|
92
|
-
function remember(option) {
|
|
93
|
-
const components = Array.isArray(option.id) ? option.id : [option.id];
|
|
94
|
-
known.set(encodeResourceId(option.id), {
|
|
95
|
-
label: option.label,
|
|
96
|
-
components
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
for (const option of initialOptions.filter(isPickableOption)) remember(option);
|
|
100
|
-
const selectedKey = derived(() => {
|
|
101
|
-
if (values.length > 0 && values.every((value) => value === "")) return COMPOSITE_CLEAR_VALUE;
|
|
102
|
-
const components = [];
|
|
103
|
-
for (const value of values) {
|
|
104
|
-
if (value === null || value === void 0) return "";
|
|
105
|
-
if (typeof value !== "string" && typeof value !== "number") return "";
|
|
106
|
-
components.push(value);
|
|
107
|
-
}
|
|
108
|
-
return encodeResourceId(components);
|
|
109
|
-
});
|
|
110
|
-
createRelationSearch({
|
|
111
|
-
adapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },
|
|
112
|
-
resource,
|
|
113
|
-
labelField,
|
|
114
|
-
searchFields,
|
|
115
|
-
limit
|
|
116
|
-
});
|
|
117
|
-
function handleChange(event) {
|
|
118
|
-
const key = event.target.value;
|
|
119
|
-
if (key === "__clear__") {
|
|
120
|
-
onpick(null);
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
if (key === "") return;
|
|
124
|
-
const picked = known.get(key);
|
|
125
|
-
if (picked !== void 0) onpick(picked.components);
|
|
126
|
-
}
|
|
127
|
-
const selectId = derived(() => `relation-${name}`);
|
|
128
|
-
$$renderer.push(`<div class="block"><label${attr("for", selectId())} class="mb-1 block text-sm font-medium">${escape_html(label)}`);
|
|
129
|
-
if (required) {
|
|
130
|
-
$$renderer.push("<!--[0-->");
|
|
131
|
-
$$renderer.push(`<span class="text-destructive" aria-hidden="true">*</span>`);
|
|
132
|
-
} else $$renderer.push("<!--[-1-->");
|
|
133
|
-
$$renderer.push(`<!--]--></label> <input type="text" placeholder="Search…"${attr("aria-label", `Search ${label}`)}${attr("value", query)}${attr("disabled", readonly, true)} class="mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm"/> `);
|
|
134
|
-
$$renderer.select({
|
|
135
|
-
id: selectId(),
|
|
136
|
-
name: compositeParamName(name),
|
|
137
|
-
required,
|
|
138
|
-
disabled: readonly,
|
|
139
|
-
value: selectedKey(),
|
|
140
|
-
onchange: handleChange,
|
|
141
|
-
class: "w-full rounded-md border border-input bg-background px-3 py-2 text-sm"
|
|
142
|
-
}, ($$renderer) => {
|
|
143
|
-
$$renderer.option({
|
|
144
|
-
value: "",
|
|
145
|
-
disabled: true
|
|
146
|
-
}, ($$renderer) => {
|
|
147
|
-
$$renderer.push(`Select…`);
|
|
148
|
-
});
|
|
149
|
-
if (!required) {
|
|
150
|
-
$$renderer.push("<!--[0-->");
|
|
151
|
-
$$renderer.option({ value: COMPOSITE_CLEAR_VALUE }, ($$renderer) => {
|
|
152
|
-
$$renderer.push(`--`);
|
|
153
|
-
});
|
|
154
|
-
} else $$renderer.push("<!--[-1-->");
|
|
155
|
-
$$renderer.push(`<!--]--><!--[-->`);
|
|
156
|
-
const each_array = ensure_array_like(options);
|
|
157
|
-
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
158
|
-
let option = each_array[$$index];
|
|
159
|
-
$$renderer.option({ value: encodeResourceId(option.id) }, ($$renderer) => {
|
|
160
|
-
$$renderer.push(`${escape_html(option.label)}`);
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
$$renderer.push(`<!--]-->`);
|
|
164
|
-
});
|
|
165
|
-
$$renderer.push(`</div>`);
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
//#endregion
|
|
169
74
|
//#region src/lib/form/widgets/relation-select.svelte
|
|
170
75
|
function Relation_select($$renderer, $$props) {
|
|
171
76
|
$$renderer.component(($$renderer) => {
|
|
@@ -478,5 +383,5 @@ function resolveWidget(widget) {
|
|
|
478
383
|
return widgetRegistry[widget] ?? Text;
|
|
479
384
|
}
|
|
480
385
|
|
|
481
|
-
export {
|
|
482
|
-
//# sourceMappingURL=widget-registry-
|
|
386
|
+
export { Relation_select_field as R, createRelationSearch as c, fetchRelationOptions as f, resolveWidget as r };
|
|
387
|
+
//# sourceMappingURL=widget-registry-6ku8orXa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-registry-6ku8orXa.js","sources":["../../../.svelte-kit/adapter-node/chunks/widget-registry.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, n as bind_props, r as derived } from \"./dev.js\";\nimport { t as encodeResourceId } from \"./resource-id.js\";\n//#region src/lib/form/relation-options-client.ts\nvar RELATION_OPTIONS_PATH = \"/relation-options\";\n/** Build the `/relation-options` query string for a relation search. */\nfunction relationOptionsUrl(resource, params) {\n\tconst query = new URLSearchParams();\n\tquery.set(\"resource\", resource);\n\tquery.set(\"label\", params.labelField);\n\tif (params.searchFields.length > 0) query.set(\"fields\", params.searchFields.join(\",\"));\n\tif (params.query.length > 0) query.set(\"q\", params.query);\n\tif (params.limit !== void 0) query.set(\"limit\", String(params.limit));\n\treturn `${RELATION_OPTIONS_PATH}?${query.toString()}`;\n}\nasync function fetchRelationOptions(fetchFn, resource, params) {\n\tconst response = await fetchFn(relationOptionsUrl(resource, params));\n\tif (!response.ok) return [];\n\tconst body = await response.json();\n\treturn Array.isArray(body.options) ? body.options : [];\n}\n//#endregion\n//#region src/lib/form/relation-search.ts\nvar DEFAULT_DEBOUNCE_MS = 200;\nvar CANCELLED_REASON = \"relation-search:cancelled\";\nvar RelationSearchCancelledError = class extends Error {\n\tconstructor() {\n\t\tsuper(CANCELLED_REASON);\n\t\tthis.name = \"RelationSearchCancelledError\";\n\t}\n};\nfunction createRelationSearch(opts) {\n\tconst debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;\n\tconst setTimeoutFn = opts.setTimeoutFn ?? globalThis.setTimeout;\n\tconst clearTimeoutFn = opts.clearTimeoutFn ?? globalThis.clearTimeout;\n\tlet pendingHandle = null;\n\tlet pendingReject = null;\n\tlet latestSeq = 0;\n\tfunction cancelInternal() {\n\t\tlatestSeq += 1;\n\t\tif (pendingHandle !== null) {\n\t\t\tclearTimeoutFn(pendingHandle);\n\t\t\tpendingHandle = null;\n\t\t}\n\t\tif (pendingReject !== null) {\n\t\t\tpendingReject(new RelationSearchCancelledError());\n\t\t\tpendingReject = null;\n\t\t}\n\t}\n\treturn {\n\t\tsearch(query) {\n\t\t\tcancelInternal();\n\t\t\tconst seq = latestSeq;\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpendingReject = reject;\n\t\t\t\tpendingHandle = setTimeoutFn(() => {\n\t\t\t\t\tpendingHandle = null;\n\t\t\t\t\tpendingReject = null;\n\t\t\t\t\topts.adapter.searchRelation(opts.resource, {\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tlabelField: opts.labelField,\n\t\t\t\t\t\tsearchFields: opts.searchFields,\n\t\t\t\t\t\tlimit: opts.limit\n\t\t\t\t\t}).then((rows) => seq === latestSeq ? resolve(rows) : reject(new RelationSearchCancelledError()), (err) => seq === latestSeq ? reject(err) : reject(new RelationSearchCancelledError()));\n\t\t\t\t}, debounceMs);\n\t\t\t});\n\t\t},\n\t\tcancel() {\n\t\t\tcancelInternal();\n\t\t}\n\t};\n}\n//#endregion\n//#region src/lib/form/widgets/relation-select.svelte\nfunction Relation_select($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, options, value = \"\", required = false, readonly = false, onsearch } = $$props;\n\t\tlet query = \"\";\n\t\tconst selectId = derived(() => `relation-${name}`);\n\t\t$$renderer.push(`<div class=\"block\"><label${attr(\"for\", selectId())} class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></label> `);\n\t\tif (onsearch) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<input type=\"text\" placeholder=\"Search…\"${attr(\"aria-label\", `Search ${label}`)}${attr(\"value\", query)}${attr(\"disabled\", readonly, true)} class=\"mb-2 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\t$$renderer.select({\n\t\t\tid: selectId(),\n\t\t\tname,\n\t\t\trequired,\n\t\t\tdisabled: readonly,\n\t\t\tvalue,\n\t\t\tclass: \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n\t\t}, ($$renderer) => {\n\t\t\tif (!required) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`--`);\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: option.id }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option.label)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</div>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/relation-select-field.svelte\nfunction Relation_select_field($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\t/** \"schema.table\" the picker searches. */\n\t\t/** Target column shown as each option's label. */\n\t\t/** Target columns the substring search filters on. */\n\t\t/** Server-rendered first page (plus the current value on edit) so the\n\t\t* picker has rows before the browser issues any request. */\n\t\tlet { name, label, resource, labelField, searchFields, initialOptions, value = \"\", required = false, readonly = false, limit = 20 } = $$props;\n\t\tlet options = [...initialOptions];\n\t\tconst known = /* @__PURE__ */ new Map();\n\t\tfor (const option of initialOptions) known.set(encodeResourceId(option.id), option.label);\n\t\tconst search = createRelationSearch({\n\t\t\tadapter: { searchRelation: (target, params) => fetchRelationOptions((url) => fetch(url), target, params) },\n\t\t\tresource,\n\t\t\tlabelField,\n\t\t\tsearchFields,\n\t\t\tlimit\n\t\t});\n\t\tfunction withSelected(results) {\n\t\t\tif (value === \"\" || value === null || value === void 0) return results;\n\t\t\tconst selected = value;\n\t\t\tconst selectedKey = encodeResourceId(selected);\n\t\t\tif (results.some((option) => encodeResourceId(option.id) === selectedKey)) return results;\n\t\t\tconst selectedLabel = known.get(selectedKey);\n\t\t\tif (selectedLabel === void 0) return results;\n\t\t\treturn [{\n\t\t\t\tid: selected,\n\t\t\t\tlabel: selectedLabel\n\t\t\t}, ...results];\n\t\t}\n\t\tasync function handleSearch(query) {\n\t\t\ttry {\n\t\t\t\tconst results = await search.search(query);\n\t\t\t\tfor (const option of results) known.set(encodeResourceId(option.id), option.label);\n\t\t\t\toptions = withSelected(results);\n\t\t\t} catch {}\n\t\t}\n\t\tlet $$settled = true;\n\t\tlet $$inner_renderer;\n\t\tfunction $$render_inner($$renderer) {\n\t\t\tRelation_select($$renderer, {\n\t\t\t\tname,\n\t\t\t\tlabel,\n\t\t\t\toptions,\n\t\t\t\trequired,\n\t\t\t\treadonly,\n\t\t\t\tonsearch: handleSearch,\n\t\t\t\tget value() {\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\tset value($$value) {\n\t\t\t\t\tvalue = $$value;\n\t\t\t\t\t$$settled = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tdo {\n\t\t\t$$settled = true;\n\t\t\t$$inner_renderer = $$renderer.copy();\n\t\t\t$$render_inner($$inner_renderer);\n\t\t} while (!$$settled);\n\t\t$$renderer.subsume($$inner_renderer);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/boolean.svelte\nfunction Boolean($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"flex items-center gap-2\"><input type=\"checkbox\"${attr(\"name\", name)}${attr(\"disabled\", readonly, true)}${attr(\"checked\", value, true)} class=\"h-4 w-4 rounded border border-input bg-background\"/> <span class=\"text-sm font-medium\">${escape_html(label)}</span></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/date.svelte\nfunction Date($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"date\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/datetime.svelte\nfunction Datetime($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"datetime-local\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/enum-select.svelte\nfunction Enum_select($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, options, value = \"\", required = false, readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> `);\n\t\t$$renderer.select({\n\t\t\tname,\n\t\t\trequired,\n\t\t\tdisabled: readonly,\n\t\t\tvalue,\n\t\t\tclass: \"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"\n\t\t}, ($$renderer) => {\n\t\t\tif (!required) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.option({ value: \"\" }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`--`);\n\t\t\t\t});\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(options);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet option = each_array[$$index];\n\t\t\t\t$$renderer.option({ value: option }, ($$renderer) => {\n\t\t\t\t\t$$renderer.push(`${escape_html(option)}`);\n\t\t\t\t});\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t});\n\t\t$$renderer.push(`</label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/image-url.svelte\nfunction Image_url($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"https://…\", readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"url\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/> `);\n\t\tif (value) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<img${attr(\"src\", value)}${attr(\"alt\", label)} class=\"mt-2 max-h-32 rounded-md border border-border object-contain\" loading=\"lazy\"/>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/json.svelte\nfunction Json($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = void 0, required = false, readonly = false } = $$props;\n\t\tfunction formatInitial(input) {\n\t\t\tif (input === void 0 || input === null) return \"\";\n\t\t\tif (typeof input === \"string\") return input;\n\t\t\ttry {\n\t\t\t\treturn JSON.stringify(input, null, 2);\n\t\t\t} catch {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t\tlet text = formatInitial(value);\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <textarea${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"readonly\", readonly, true)}${attr(\"rows\", 6)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs\">`);\n\t\tconst $$body = escape_html(text);\n\t\tif ($$body) $$renderer.push(`${$$body}`);\n\t\t$$renderer.push(`</textarea></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/number.svelte\nfunction Number($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"\", readonly = false, step = \"any\" } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"number\"${attr(\"name\", name)}${attr(\"step\", step)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/text.svelte\nfunction Text($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"\", readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"text\"${attr(\"name\", name)}${attr(\"value\", value)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/textarea.svelte\nfunction Textarea($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"\", readonly = false, rows = 4 } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <textarea${attr(\"name\", name)}${attr(\"rows\", rows)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)} class=\"w-full rounded-md border border-input bg-background px-3 py-2 text-sm\">`);\n\t\tconst $$body = escape_html(value);\n\t\tif ($$body) $$renderer.push(`${$$body}`);\n\t\t$$renderer.push(`</textarea></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widgets/uuid.svelte\nfunction Uuid($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { name, label, value = \"\", required = false, placeholder = \"00000000-0000-0000-0000-000000000000\", readonly = false } = $$props;\n\t\t$$renderer.push(`<label class=\"block\"><span class=\"mb-1 block text-sm font-medium\">${escape_html(label)}`);\n\t\tif (required) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<span class=\"text-destructive\" aria-hidden=\"true\">*</span>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></span> <input type=\"text\"${attr(\"name\", name)}${attr(\"required\", required, true)}${attr(\"placeholder\", placeholder)}${attr(\"readonly\", readonly, true)}${attr(\"value\", value)} pattern=\"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\" class=\"w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs\"/></label>`);\n\t\tbind_props($$props, { value });\n\t});\n}\n//#endregion\n//#region src/lib/form/widget-registry.ts\nvar widgetRegistry = {\n\ttext: Text,\n\ttextarea: Textarea,\n\tnumber: Number,\n\tcurrency: Number,\n\tboolean: Boolean,\n\tdate: Date,\n\tdatetime: Datetime,\n\t\"enum-select\": Enum_select,\n\t\"relation-select\": Relation_select,\n\tjson: Json,\n\t\"image-url\": Image_url,\n\tuuid: Uuid\n};\nfunction resolveWidget(widget) {\n\treturn widgetRegistry[widget] ?? Text;\n}\n//#endregion\nexport { fetchRelationOptions as i, Relation_select_field as n, createRelationSearch as r, resolveWidget as t };\n"],"names":[],"mappings":"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"}
|