json-renderers-build 1.2.1 → 1.3.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.
@@ -1,210 +1,210 @@
1
- const F = {
2
- version: "v2.0.0",
3
- description: "build table from store data and render to DOM uses json-to-spec, json-to-dom under the hood"
4
- }, O = (t) => {
5
- var e;
6
- typeof globalThis > "u" || !t || (globalThis.ks ?? (globalThis.ks = {}), (e = globalThis.ks).jsonRenderersBuild ?? (e.jsonRenderersBuild = {
7
- meta: F,
8
- renderToDom: t
9
- }));
10
- }, w = {
11
- version: "v32",
12
- description: "JSON-to-DOM engine with centralized traversal and responsibility-focused construction"
13
- }, R = ({ inFuncDefinition: t } = {}) => {
14
- if (typeof globalThis > "u" || !t) return;
15
- globalThis.ks ?? (globalThis.ks = {});
16
- const e = {
17
- meta: w,
18
- buildSpecElement: t
19
- };
20
- globalThis.ks.jsonToSpec = e;
21
- }, I = (t, e) => n(t, e), f = (t, e) => Array.isArray(t) ? t.map((r) => I(r, e)).flat(1 / 0).filter(Boolean) : [], E = (t, e) => {
22
- if ("source" in t && (t == null ? void 0 : t.source) in e) {
23
- const r = e[t == null ? void 0 : t.source];
24
- if (Array.isArray(r))
25
- return r.map((l) => {
26
- const o = t == null ? void 0 : t.template;
27
- if (o)
28
- return n(o, l);
29
- });
30
- }
31
- }, H = (t, e) => {
32
- let r = [];
33
- for (const [a, l] of Object.entries(e)) {
34
- const o = t == null ? void 0 : t.template;
35
- if (o) {
36
- const u = n(o, {
37
- key: a,
38
- value: l
39
- });
40
- r.push(u);
41
- }
42
- }
43
- return r;
44
- }, x = (t, e) => {
45
- if ("source" in t && (t == null ? void 0 : t.source) in e) {
46
- const r = e[t == null ? void 0 : t.source];
47
- if (Array.isArray(r))
48
- return r.map((l) => {
49
- const o = t == null ? void 0 : t.template;
50
- if (o)
51
- return n(o, l);
52
- });
53
- }
54
- }, L = (t, e) => {
55
- if ("operation" in t) {
56
- if (t.operation === "loopArray")
57
- return E(t, e);
58
- if (t.operation === "loopObject")
59
- return H(t, e);
60
- if (t.operation === "loopCollection")
61
- return x(t, e);
62
- }
63
- }, d = (t, e) => {
64
- if (typeof e == "string") return e;
65
- if (typeof t != "string") return t;
66
- if (t === "${value}")
67
- return e.value;
68
- const r = t.match(/^\$\{(.+?)\}$/);
69
- if (r) {
70
- const a = r[1];
71
- return (e == null ? void 0 : e[a]) ?? "";
72
- }
73
- return t;
74
- }, G = (t, e) => {
75
- let r = {};
76
- for (const [a, l] of Object.entries(t)) {
77
- const o = d(l, e);
78
- r[a] = o;
79
- }
80
- return r;
81
- }, M = (t, e) => {
82
- if ("tagName" in t) {
83
- if ("textContent" in t) {
84
- const r = d(t.textContent, e);
85
- t.textContent = r;
86
- }
87
- if ("attributes" in t) {
88
- const r = G(t.attributes, e);
89
- t.attributes = r;
90
- }
91
- }
92
- }, B = (t, e) => {
93
- if (!t || typeof t != "object" || Array.isArray(t)) return null;
94
- const r = structuredClone(t);
95
- if (!r) return null;
96
- if ("tagName" in r && M(r, e), "jsonToSpec" in r) {
97
- const a = r == null ? void 0 : r.jsonToSpec, l = L(a, e);
98
- Array.isArray(l) ? r.children = l : r.children = [l], delete r.jsonToSpec;
99
- }
100
- if (Array.isArray(r == null ? void 0 : r.children)) {
101
- const a = f(r == null ? void 0 : r.children, e);
102
- r.children = a;
103
- }
104
- return r;
105
- }, n = (t, e) => {
106
- if (t == null) return null;
107
- debugger;
108
- return typeof Node < "u" && t instanceof Node ? t : Array.isArray(t) ? f(t, e) : typeof t == "object" ? B(t, e) : typeof t == "string" || typeof t == "number" ? document.createTextNode(String(t)) : t;
109
- }, m = (t, e) => n(t, e);
110
- R({
111
- inFuncDefinition: m
112
- });
113
- const z = {
114
- default: {
115
- tagName: "table",
116
- attributes: {
117
- class: "table table-hover table-striped mb-0"
118
- },
119
- children: [
120
- {
121
- tagName: "thead",
122
- children: [
123
- {
124
- tagName: "tr",
125
- jsonToSpec: {
126
- operation: "loopCollection",
127
- source: "columns",
128
- template: {
129
- tagName: "th",
130
- textContent: "${title}"
131
- }
132
- },
133
- children: []
134
- }
135
- ]
136
- },
137
- {
138
- tagName: "tbody",
139
- jsonToSpec: {
140
- operation: "loopCollection",
141
- source: "data",
142
- template: {
143
- tagName: "tr",
144
- jsonToSpec: {
145
- operation: "loopObject",
146
- source: "data",
147
- template: {
148
- tagName: "td",
149
- textContent: "${value}"
150
- }
151
- },
152
- children: []
153
- }
154
- },
155
- children: []
156
- }
157
- ]
158
- }
159
- }, P = ({
160
- targetHtmlId: t,
161
- inTargetHtmlId: e,
162
- inColumns: r,
163
- inData: a
164
- } = {}) => {
165
- const l = a ?? [], o = r;
166
- return m(z.default, {
167
- columns: o,
168
- data: l
169
- });
170
- }, c = {
171
- table: P
172
- }, U = ({
173
- type: t = "table",
174
- targetHtmlId: e,
175
- data: r,
176
- classToApply: a,
177
- inTargetHtmlId: l,
178
- inData: o,
179
- columns: u,
180
- inColumns: y,
181
- colGroup: b,
182
- inColGroup: g,
183
- footerData: h,
184
- inFooterData: v,
185
- config: A,
186
- inConfig: j,
187
- variant: $,
188
- skeletonType: p,
189
- inSkeletonType: N,
190
- showLog: C = !1,
191
- inShowLog: k
192
- } = {}) => {
193
- const i = t, D = typeof i == "string" ? i.toLowerCase() : "table", s = c[D];
194
- return s ? s({
195
- targetHtmlId: l ?? e,
196
- inColumns: y ?? u,
197
- inData: o ?? r,
198
- inColGroup: g ?? b,
199
- inFooterData: v ?? h ?? [],
200
- inConfig: j ?? A ?? {},
201
- inSkeletonType: N ?? p ?? $ ?? "default",
202
- inShowLog: k ?? C ?? !1
203
- }) : (console.error(
204
- `[Renderer] Unknown renderer type "${i}". Available types: ${Object.keys(c).join(", ")}`
205
- ), null);
206
- };
207
- O(U);
208
- export {
209
- U as default
210
- };
1
+ const F = {
2
+ version: "v2.0.0",
3
+ description: "build table from store data and render to DOM uses json-to-spec, json-to-dom under the hood"
4
+ }, O = (t) => {
5
+ var e;
6
+ typeof globalThis > "u" || !t || (globalThis.ks ?? (globalThis.ks = {}), (e = globalThis.ks).jsonRenderersBuild ?? (e.jsonRenderersBuild = {
7
+ meta: F,
8
+ renderToDom: t
9
+ }));
10
+ }, w = {
11
+ version: "v32",
12
+ description: "JSON-to-DOM engine with centralized traversal and responsibility-focused construction"
13
+ }, R = ({ inFuncDefinition: t } = {}) => {
14
+ if (typeof globalThis > "u" || !t) return;
15
+ globalThis.ks ?? (globalThis.ks = {});
16
+ const e = {
17
+ meta: w,
18
+ buildSpecElement: t
19
+ };
20
+ globalThis.ks.jsonToSpec = e;
21
+ }, I = (t, e) => n(t, e), f = (t, e) => Array.isArray(t) ? t.map((r) => I(r, e)).flat(1 / 0).filter(Boolean) : [], E = (t, e) => {
22
+ if ("source" in t && (t == null ? void 0 : t.source) in e) {
23
+ const r = e[t == null ? void 0 : t.source];
24
+ if (Array.isArray(r))
25
+ return r.map((l) => {
26
+ const o = t == null ? void 0 : t.template;
27
+ if (o)
28
+ return n(o, l);
29
+ });
30
+ }
31
+ }, H = (t, e) => {
32
+ let r = [];
33
+ for (const [a, l] of Object.entries(e)) {
34
+ const o = t == null ? void 0 : t.template;
35
+ if (o) {
36
+ const u = n(o, {
37
+ key: a,
38
+ value: l
39
+ });
40
+ r.push(u);
41
+ }
42
+ }
43
+ return r;
44
+ }, x = (t, e) => {
45
+ if ("source" in t && (t == null ? void 0 : t.source) in e) {
46
+ const r = e[t == null ? void 0 : t.source];
47
+ if (Array.isArray(r))
48
+ return r.map((l) => {
49
+ const o = t == null ? void 0 : t.template;
50
+ if (o)
51
+ return n(o, l);
52
+ });
53
+ }
54
+ }, L = (t, e) => {
55
+ if ("operation" in t) {
56
+ if (t.operation === "loopArray")
57
+ return E(t, e);
58
+ if (t.operation === "loopObject")
59
+ return H(t, e);
60
+ if (t.operation === "loopCollection")
61
+ return x(t, e);
62
+ }
63
+ }, d = (t, e) => {
64
+ if (typeof e == "string") return e;
65
+ if (typeof t != "string") return t;
66
+ if (t === "${value}")
67
+ return e.value;
68
+ const r = t.match(/^\$\{(.+?)\}$/);
69
+ if (r) {
70
+ const a = r[1];
71
+ return (e == null ? void 0 : e[a]) ?? "";
72
+ }
73
+ return t;
74
+ }, G = (t, e) => {
75
+ let r = {};
76
+ for (const [a, l] of Object.entries(t)) {
77
+ const o = d(l, e);
78
+ r[a] = o;
79
+ }
80
+ return r;
81
+ }, M = (t, e) => {
82
+ if ("tagName" in t) {
83
+ if ("textContent" in t) {
84
+ const r = d(t.textContent, e);
85
+ t.textContent = r;
86
+ }
87
+ if ("attributes" in t) {
88
+ const r = G(t.attributes, e);
89
+ t.attributes = r;
90
+ }
91
+ }
92
+ }, B = (t, e) => {
93
+ if (!t || typeof t != "object" || Array.isArray(t)) return null;
94
+ const r = structuredClone(t);
95
+ if (!r) return null;
96
+ if ("tagName" in r && M(r, e), "jsonToSpec" in r) {
97
+ const a = r == null ? void 0 : r.jsonToSpec, l = L(a, e);
98
+ Array.isArray(l) ? r.children = l : r.children = [l], delete r.jsonToSpec;
99
+ }
100
+ if (Array.isArray(r == null ? void 0 : r.children)) {
101
+ const a = f(r == null ? void 0 : r.children, e);
102
+ r.children = a;
103
+ }
104
+ return r;
105
+ }, n = (t, e) => {
106
+ if (t == null) return null;
107
+ debugger;
108
+ return typeof Node < "u" && t instanceof Node ? t : Array.isArray(t) ? f(t, e) : typeof t == "object" ? B(t, e) : typeof t == "string" || typeof t == "number" ? document.createTextNode(String(t)) : t;
109
+ }, m = (t, e) => n(t, e);
110
+ R({
111
+ inFuncDefinition: m
112
+ });
113
+ const z = {
114
+ default: {
115
+ tagName: "table",
116
+ attributes: {
117
+ class: "table table-hover table-striped mb-0"
118
+ },
119
+ children: [
120
+ {
121
+ tagName: "thead",
122
+ children: [
123
+ {
124
+ tagName: "tr",
125
+ jsonToSpec: {
126
+ operation: "loopCollection",
127
+ source: "columns",
128
+ template: {
129
+ tagName: "th",
130
+ textContent: "${title}"
131
+ }
132
+ },
133
+ children: []
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ tagName: "tbody",
139
+ jsonToSpec: {
140
+ operation: "loopCollection",
141
+ source: "data",
142
+ template: {
143
+ tagName: "tr",
144
+ jsonToSpec: {
145
+ operation: "loopObject",
146
+ source: "data",
147
+ template: {
148
+ tagName: "td",
149
+ textContent: "${value}"
150
+ }
151
+ },
152
+ children: []
153
+ }
154
+ },
155
+ children: []
156
+ }
157
+ ]
158
+ }
159
+ }, P = ({
160
+ targetHtmlId: t,
161
+ inTargetHtmlId: e,
162
+ inColumns: r,
163
+ inData: a
164
+ } = {}) => {
165
+ const l = a ?? [], o = r;
166
+ return m(z.default, {
167
+ columns: o,
168
+ data: l
169
+ });
170
+ }, c = {
171
+ table: P
172
+ }, U = ({
173
+ type: t = "table",
174
+ targetHtmlId: e,
175
+ data: r,
176
+ classToApply: a,
177
+ inTargetHtmlId: l,
178
+ inData: o,
179
+ columns: u,
180
+ inColumns: y,
181
+ colGroup: b,
182
+ inColGroup: g,
183
+ footerData: h,
184
+ inFooterData: v,
185
+ config: A,
186
+ inConfig: j,
187
+ variant: $,
188
+ skeletonType: p,
189
+ inSkeletonType: N,
190
+ showLog: C = !1,
191
+ inShowLog: k
192
+ } = {}) => {
193
+ const i = t, D = typeof i == "string" ? i.toLowerCase() : "table", s = c[D];
194
+ return s ? s({
195
+ targetHtmlId: l ?? e,
196
+ inColumns: y ?? u,
197
+ inData: o ?? r,
198
+ inColGroup: g ?? b,
199
+ inFooterData: v ?? h ?? [],
200
+ inConfig: j ?? A ?? {},
201
+ inSkeletonType: N ?? p ?? $ ?? "default",
202
+ inShowLog: k ?? C ?? !1
203
+ }) : (console.error(
204
+ `[Renderer] Unknown renderer type "${i}". Available types: ${Object.keys(c).join(", ")}`
205
+ ), null);
206
+ };
207
+ O(U);
208
+ export {
209
+ U as default
210
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "json-renderers-build",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "Standalone, config-driven Table renderer built on top of json-to-dom",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
package/src/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./v2/index.js";
2
- export { default } from "./v2/index.js";
1
+ export * from "./v3/index.js";
2
+ export { default } from "./v3/index.js";
@@ -0,0 +1,20 @@
1
+ const deriveColumnsFromData = ({ inData = [] } = {}) => {
2
+ const localData = inData;
3
+
4
+ if (!Array.isArray(localData) || localData.length === 0) {
5
+ return [];
6
+ }
7
+
8
+ const firstRow = localData[0];
9
+ if (!firstRow || typeof firstRow !== "object") {
10
+ return [];
11
+ }
12
+
13
+ return Object.keys(firstRow).map(key => ({
14
+ key,
15
+ label: key
16
+ }));
17
+ };
18
+
19
+ export { deriveColumnsFromData };
20
+ export default deriveColumnsFromData;
@@ -0,0 +1,40 @@
1
+ import registerGlobal from "./registerGlobal.js";
2
+
3
+ import renderTable from "./table/index.js";
4
+ import renderSelect from "./select/index.js";
5
+
6
+ const RENDERER_MAP = {
7
+ table: renderTable,
8
+ select: renderSelect
9
+ };
10
+
11
+ const render = ({
12
+ type = "table",
13
+ data,
14
+ inData,
15
+ columns
16
+ } = {}) => {
17
+ const rawType = type;
18
+ const resolvedType = typeof rawType === "string" ? rawType.toLowerCase() : "table";
19
+ const renderer = RENDERER_MAP[resolvedType];
20
+
21
+ if (!renderer) {
22
+ console.error(
23
+ `[Renderer] Unknown renderer type "${rawType}". Available types: ${Object.keys(RENDERER_MAP).join(", ")}`
24
+ );
25
+ return null;
26
+ }
27
+
28
+ const localData = inData ?? data;
29
+ const localColumns = inColumns ?? columns;
30
+
31
+ // Default to table renderer
32
+ return renderer({
33
+ inColumns: localColumns,
34
+ inData: localData
35
+ });
36
+ };
37
+
38
+ registerGlobal(render);
39
+
40
+ export default render;
package/src/v3/meta.js ADDED
@@ -0,0 +1,6 @@
1
+ export const meta = {
2
+ version: "v3.0.0",
3
+ description: "build table from store data and render to DOM uses json-to-spec, json-to-dom under the hood"
4
+ };
5
+
6
+ export default meta;
@@ -0,0 +1,14 @@
1
+ import meta from "./meta.js";
2
+
3
+ export const registerGlobal = (inFuncDefinition) => {
4
+ if (typeof globalThis === "undefined" || !inFuncDefinition) return;
5
+
6
+ globalThis.ks ??= {};
7
+
8
+ globalThis.ks.jsonRenderersBuild ??= {
9
+ meta,
10
+ renderToDom: inFuncDefinition
11
+ };
12
+ };
13
+
14
+ export default registerGlobal;
@@ -0,0 +1,18 @@
1
+ import jsonToSpec from "json-to-spec";
2
+
3
+ import skeletonJson from './skeleton.json' with { type: 'json' };
4
+
5
+ // --- Story of Table Render ---
6
+ const startFunc = ({
7
+ inData,
8
+ } = {}) => {
9
+ const localData = inData ?? [];
10
+
11
+ let specAsJsonToDom = jsonToSpec(skeletonJson, {
12
+ arrayOfStrings: localData
13
+ });
14
+
15
+ return specAsJsonToDom;
16
+ };
17
+
18
+ export default startFunc;
@@ -0,0 +1,18 @@
1
+ {
2
+ "tagName": "select",
3
+ "attributes": {
4
+ "id": "LedgerName"
5
+ },
6
+ "jsonToSpec": {
7
+ "operation": "loopArray",
8
+ "source": "arrayOfStrings",
9
+ "template": {
10
+ "tagName": "option",
11
+ "attributes": {
12
+ "value": "${}"
13
+ },
14
+ "textContent": "${}"
15
+ }
16
+ },
17
+ "children": []
18
+ }
@@ -0,0 +1,20 @@
1
+ import jsonToSpec from "json-to-spec";
2
+
3
+ import skeletonJson from './skeleton.json' with { type: 'json' };
4
+
5
+ // --- Story of Table Render ---
6
+ const startFunc = ({
7
+ inColumns,
8
+ inData,
9
+ } = {}) => {
10
+ const localData = inData ?? [];
11
+ const localColumns = inColumns;
12
+
13
+ let specAsJsonToDom = jsonToSpec(skeletonJson.default, {
14
+ columns: localColumns, data: localData
15
+ });
16
+
17
+ return specAsJsonToDom;
18
+ };
19
+
20
+ export default startFunc;
@@ -0,0 +1,47 @@
1
+ {
2
+ "default": {
3
+ "tagName": "table",
4
+ "attributes": {
5
+ "class": "table table-hover table-striped mb-0"
6
+ },
7
+ "children": [
8
+ {
9
+ "tagName": "thead",
10
+ "children": [
11
+ {
12
+ "tagName": "tr",
13
+ "jsonToSpec": {
14
+ "operation": "loopCollection",
15
+ "source": "columns",
16
+ "template": {
17
+ "tagName": "th",
18
+ "textContent": "${title}"
19
+ }
20
+ },
21
+ "children": []
22
+ }
23
+ ]
24
+ },
25
+ {
26
+ "tagName": "tbody",
27
+ "jsonToSpec": {
28
+ "operation": "loopCollection",
29
+ "source": "data",
30
+ "template": {
31
+ "tagName": "tr",
32
+ "jsonToSpec": {
33
+ "operation": "loopObject",
34
+ "source": "data",
35
+ "template": {
36
+ "tagName": "td",
37
+ "textContent": "${value}"
38
+ }
39
+ },
40
+ "children": []
41
+ }
42
+ },
43
+ "children": []
44
+ }
45
+ ]
46
+ }
47
+ }