datafolder 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +7 -2
  2. package/index.js +1 -1
  3. package/internal.md +121 -0
  4. package/package.json +8 -6
  5. package/scripts/airbnb.js +77 -72
  6. package/scripts/airbnb2.js +78 -73
  7. package/scripts/airbnb2_queries.js +181 -229
  8. package/scripts/airbnb_queries.js +214 -265
  9. package/scripts/convertBinFiles.js +47 -0
  10. package/scripts/downloadFile.js +41 -40
  11. package/scripts/express.js +44 -48
  12. package/scripts/fastify.js +71 -80
  13. package/scripts/flights.js +71 -75
  14. package/scripts/flights2.js +78 -81
  15. package/scripts/flights2_queries.js +417 -455
  16. package/scripts/flights_queries.js +381 -407
  17. package/src/QyAcl.d.ts +17 -0
  18. package/src/QyAcl.js +113 -116
  19. package/src/QyAclSaver.d.ts +4 -0
  20. package/src/QyAclSaver.js +3 -3
  21. package/src/QyAclSaver_Worker.d.ts +9 -0
  22. package/src/QyAclSaver_Worker.js +2 -4
  23. package/src/QyAclWriter.d.ts +5 -0
  24. package/src/QyBatch.d.ts +42 -0
  25. package/src/QyBatch.js +8 -8
  26. package/src/QyBinWriter.d.ts +15 -0
  27. package/src/QyCD.d.ts +37 -0
  28. package/src/QyCD.js +27 -16
  29. package/src/QyCache.d.ts +44 -0
  30. package/src/QyCache.js +71 -59
  31. package/src/QyCompressor.d.ts +9 -0
  32. package/src/QyCompressor.js +29 -29
  33. package/src/QyCompressor_Worker.d.ts +1 -0
  34. package/src/QyDB.d.ts +42 -0
  35. package/src/QyDB.js +13 -11
  36. package/src/QyDefaultOptions.d.ts +1 -0
  37. package/src/QyDefaultOptions.js +3 -0
  38. package/src/QyDir.d.ts +48 -0
  39. package/src/QyDir.js +41 -41
  40. package/src/QyFetch.d.ts +7 -0
  41. package/src/QyFetch.js +3 -4
  42. package/src/QyFile.d.ts +19 -0
  43. package/src/QyFile.js +35 -34
  44. package/src/QyFileContentUtils.d.ts +13 -0
  45. package/src/QyFileContentUtils.js +126 -126
  46. package/src/QyFileLogger.d.ts +11 -0
  47. package/src/QyIndex.d.ts +6 -0
  48. package/src/QyIndex.js +73 -75
  49. package/src/QyIndexPropTree.d.ts +7 -0
  50. package/src/QyIndexPropTree.js +24 -24
  51. package/src/QyIntersectNode.d.ts +7 -0
  52. package/src/QyIntersectNode.js +15 -15
  53. package/src/QyItem.d.ts +30 -0
  54. package/src/QyItem.js +32 -28
  55. package/src/QyJsonSaver.d.ts +6 -0
  56. package/src/QyKVData.d.ts +12 -0
  57. package/src/QyKVData.js +30 -20
  58. package/src/QyKVDataCleaner.d.ts +4 -0
  59. package/src/QyKVDataCleaner.js +1 -1
  60. package/src/QyKVDataCleaner_Worker.d.ts +13 -0
  61. package/src/QyKVDataCleaner_Worker.js +2 -4
  62. package/src/QyKVDataLoader.d.ts +9 -0
  63. package/src/QyKVDataLoader.js +11 -11
  64. package/src/QyKVDataSaver.d.ts +4 -0
  65. package/src/QyKVDataSaver.js +6 -6
  66. package/src/QyKVDataSaver_Worker.d.ts +13 -0
  67. package/src/QyKVDataSaver_Worker.js +11 -13
  68. package/src/QyLogFileSaver.d.ts +4 -0
  69. package/src/QyLogFileSaver.js +1 -1
  70. package/src/QyLogFileSaver_Worker.d.ts +8 -0
  71. package/src/QyLogFileSaver_Worker.js +2 -4
  72. package/src/QyLogger.d.ts +10 -0
  73. package/src/QyLogger.js +40 -40
  74. package/src/QyMessageWorker.d.ts +5 -0
  75. package/src/QyMessageWorker.js +7 -7
  76. package/src/QyMessager.d.ts +7 -0
  77. package/src/QyMessager.js +30 -27
  78. package/src/QyMessager_Run.d.ts +1 -0
  79. package/src/QyMessager_Run.js +11 -6
  80. package/src/QyMod.d.ts +1 -0
  81. package/src/QyMod.js +6 -6
  82. package/src/QyOpRunner.d.ts +10 -0
  83. package/src/QyOpRunner.js +39 -39
  84. package/src/QyQueue.d.ts +11 -0
  85. package/src/QySaver.d.ts +10 -0
  86. package/src/QySnapshotCompactor.d.ts +4 -0
  87. package/src/QySnapshotCompactor.js +1 -1
  88. package/src/QySnapshotCompactor_Worker.d.ts +11 -0
  89. package/src/QySnapshotCompactor_Worker.js +21 -22
  90. package/src/QySnapshotSaver.d.ts +4 -0
  91. package/src/QySnapshotSaver.js +1 -1
  92. package/src/QySnapshotSaver_Worker.d.ts +16 -0
  93. package/src/QySnapshotSaver_Worker.js +56 -53
  94. package/src/QySnapshots.d.ts +27 -0
  95. package/src/QySnapshots.js +74 -66
  96. package/src/QyStructure.d.ts +1 -0
  97. package/src/QyStructure.js +18 -18
  98. package/src/QyTrigger.d.ts +9 -0
  99. package/src/QyTrigger.js +30 -30
  100. package/src/QyUnionNode.d.ts +17 -0
  101. package/src/QyUnionNode.js +2 -2
  102. package/src/QyUtils.d.ts +53 -0
  103. package/src/QyUtils.js +140 -117
  104. package/src/QyWorker.d.ts +5 -0
  105. package/src/QyWorker.js +18 -18
  106. package/src/hackernews.d.ts +1 -0
  107. package/src/hackernews.js +59 -47
  108. package/src/rpc/getRpcFiles.js +1 -0
  109. package/src/rpc/getTriggerFiles.js +1 -0
  110. package/src/simulate.d.ts +1 -0
  111. package/src/simulate2.d.ts +1 -0
  112. package/src/soc_pokec.d.ts +1 -0
  113. package/src/soc_pokec.js +7 -7
  114. package/static/codemirror.bundle/editor.bundle.js +370 -166
  115. package/static/datafolderui/QyStyledElement.js +8 -17
  116. package/static/datafolderui/QyUIFolderViewer.js +230 -0
  117. package/static/datafolderui/QyUIUtils.js +5 -5
  118. package/static/datafolderui/code-mirror.js +7 -7
  119. package/static/datafolderui/display-tree.js +22 -58
  120. package/static/datafolderui/explore-tree.js +10 -10
  121. package/static/datafolderui/folder-tree.js +71 -2
  122. package/static/datafolderui/hscrpt.js +26 -7
  123. package/static/datafolderui/json-view.js +34 -3
  124. package/static/datafolderui/main-page.js +67 -36
  125. package/static/datafolderui/query-editor.js +9 -9
  126. package/static/datafolderui/rpc-editor.js +31 -0
  127. package/static/datafolderui/trigger-editor.js +33 -0
  128. package/data/sampleDataFolder/qykv/history/acl/1_acl.txt +0 -1
  129. package/data/sampleDataFolder/qykv/history/acl/2_acl.txt +0 -1
  130. package/data/sampleDataFolder/qykv/history/acl/3_acl.txt +0 -1
  131. package/data/sampleDataFolder/qykv/history/acl/4_acl.txt +0 -1
  132. package/data/sampleDataFolder/qykv/history/acl/5_acl.txt +0 -1
  133. package/data/sampleDataFolder/qykv/snapshot/1/1_pM.txt +0 -0
  134. package/data/sampleDataFolder/qykv/snapshot/1/1_prefixPM.txt +0 -0
  135. package/data/sampleDataFolder/qykv/snapshot/1/1_vL.txt +0 -10
  136. package/data/sampleDataFolder/qykv/snapshot/2/1_pM.txt +0 -0
  137. package/data/sampleDataFolder/qykv/snapshot/2/1_prefixPM.txt +0 -0
  138. package/data/sampleDataFolder/qykv/snapshot/2/1_vL.txt +0 -1
  139. package/data/sampleDataFolder/qykv/snapshot/3/1_pM.txt +0 -0
  140. package/data/sampleDataFolder/qykv/snapshot/3/1_prefixPM.txt +0 -0
  141. package/data/sampleDataFolder/qykv/snapshot/3/1_vL.txt +0 -1
  142. package/data/sampleDataFolder/qykv/snapshot/4/1_pM.txt +0 -0
  143. package/data/sampleDataFolder/qykv/snapshot/4/1_prefixPM.txt +0 -0
  144. package/data/sampleDataFolder/qykv/snapshot/4/1_vL.txt +0 -1
  145. package/data/sampleDataFolder/qykv/snapshot/4/2_pM.txt +0 -0
  146. package/data/sampleDataFolder/qykv/snapshot/4/2_prefixPM.txt +0 -0
  147. package/data/sampleDataFolder/qykv/snapshot/4/2_vL.txt +0 -9
  148. package/data/sampleDataFolder/qykv/snapshot/5/1_pM.txt +0 -0
  149. package/data/sampleDataFolder/qykv/snapshot/5/1_prefixPM.txt +0 -0
  150. package/data/sampleDataFolder/qykv/snapshot/5/1_vL.txt +0 -55
  151. package/data/sampleDataFolder/qykv/snapshot/info/1.json +0 -1
  152. package/data/sampleDataFolder/qykv/snapshot/info/2.json +0 -1
  153. package/data/sampleDataFolder/qykv/snapshot/info/3.json +0 -1
  154. package/data/sampleDataFolder/qykv/snapshot/info/4.json +0 -1
  155. package/data/sampleDataFolder/qykv/snapshot/info/5.json +0 -1
  156. package/data/sampleDataFolder/qylog/2026/02/15/08/change.txt +0 -58
  157. package/data/sampleDataFolder/qylog/2026/02/15/08/stderr.txt +0 -11
  158. package/data/sampleDataFolder/qylog/2026/02/15/08/stdout.txt +0 -36
  159. package/static/datafolderui/QyUIFolderTree.js +0 -179
@@ -1,30 +1,21 @@
1
1
  import {
2
- appendStyle as n
2
+ appendStyle as o
3
3
  } from "./QyUIUtils.js";
4
4
 
5
- class s extends HTMLElement {
5
+ class e extends HTMLElement {
6
6
  constructor(e, t) {
7
- super(), Array.isArray(e) && (t = e, e = void 0);
7
+ super();
8
8
  var r = this.attachShadow({
9
9
  mode: "open"
10
10
  });
11
- if (t) for (var s of t) {
12
- var o = document.createElement("link");
13
- o.setAttribute("rel", "stylesheet"), o.setAttribute("href", s), r.appendChild(o);
11
+ if (Array.isArray(e) && (t = e, e = void 0), t) for (var s of t) {
12
+ var a = document.createElement("link");
13
+ a.setAttribute("rel", "stylesheet"), a.setAttribute("href", s), r.appendChild(a);
14
14
  }
15
- e && n(r, e);
15
+ e && o(r, e);
16
16
  }
17
17
  }
18
18
 
19
- function e(e, t, r) {
20
- customElements.define(e, class extends s {
21
- constructor() {
22
- super(t, r);
23
- }
24
- });
25
- }
26
-
27
19
  export {
28
- s as QyStyledElement,
29
- e as defineStyledElement
20
+ e as QyStyledElement
30
21
  };
@@ -0,0 +1,230 @@
1
+ import {
2
+ w2layout as i
3
+ } from "../w2ui/src/w2compat.js";
4
+
5
+ import {
6
+ h as c
7
+ } from "./hscrpt.js";
8
+
9
+ import {
10
+ setHeight as n,
11
+ isNotNullObj as e
12
+ } from "./QyUIUtils.js";
13
+
14
+ import "./folder-tree.js";
15
+
16
+ import "./json-view.js";
17
+
18
+ import "./code-mirror.js";
19
+
20
+ let r = 0;
21
+
22
+ class t extends HTMLElement {
23
+ constructor() {
24
+ super();
25
+ }
26
+ connectedCallback() {
27
+ this.idCount = ++r, this.parentDiv = this.parentElement;
28
+ var e = new i({
29
+ box: this.parentDiv,
30
+ name: "layout_folderviewer_" + this.idCount,
31
+ panels: [ {
32
+ type: "left",
33
+ size: 300,
34
+ resizable: !0
35
+ }, {
36
+ type: "main"
37
+ }, {
38
+ type: "bottom",
39
+ size: 10
40
+ } ]
41
+ }), t = (e.el("left").append((t = this).toolbarDiv = c("div", {
42
+ classList: "btn-toolbar",
43
+ role: "toolbar",
44
+ style: "border-bottom: 1px solid #e4e4e4"
45
+ }, [ s(t), o() ]), (s => {
46
+ var e = c("folder-tree"), {
47
+ folderTreeDiv: t,
48
+ folderTree: i
49
+ } = e;
50
+ return i.on("select", e => {
51
+ if (!s.clickSrc) {
52
+ s.clickSrc = "folderTree";
53
+ var t = s, i = e, {
54
+ folderTree: r,
55
+ selectedHierarchy: o
56
+ } = t, r = r.hierarchy(i).reverse();
57
+ t.namePath = r.map(e => e.textContent), Object.assign(o, r);
58
+ {
59
+ var n = t;
60
+ let {
61
+ namePath: i,
62
+ pathUL: e
63
+ } = n, r = e.children, o = i.length, s = 0 < o;
64
+ for (let t = 0; t < o; ++t) {
65
+ if (t >= r.length) {
66
+ for (let e = t; e < o; ++e) ((s, n, e) => {
67
+ e = c("span", {
68
+ classList: "nav-link",
69
+ "data-bs-toggle": "tab",
70
+ role: "tab",
71
+ style: "cursor:pointer",
72
+ onclick: () => {
73
+ s.clickSrc || (s.clickSrc = "tab");
74
+ var t = n, {
75
+ clickSrc: e,
76
+ rootFolder: i,
77
+ selectedHierarchy: r,
78
+ folderTree: o
79
+ } = e = s;
80
+ i.parentElement.open = !0;
81
+ for (let e = 0; e < t; ++e) r[e].parentElement.open = !0;
82
+ i = r[t], "tab" == e && i.scrollIntoView({
83
+ block: "center"
84
+ }), o.select(i), "tab" == s.clickSrc && (s.clickSrc = void 0);
85
+ }
86
+ }, [ e ]), s.pathUL.append(c("li", {
87
+ classList: "nav-item"
88
+ }, [ e ]));
89
+ })(n, e, i[e]);
90
+ break;
91
+ }
92
+ var l = r[t].children[0], a = i[t];
93
+ l.innerText != a && (l.innerText = a, s = !1);
94
+ }
95
+ if (!s) for (;o < r.length; ) e.removeChild(e.lastElementChild);
96
+ 0 < o && r[o - 1].children[0].click();
97
+ }
98
+ }
99
+ s.selectedElement != e && (s.selectedElement = e, d(s)), "folderTree" == s.clickSrc && (s.clickSrc = void 0);
100
+ }), Object.assign(s, {
101
+ folderTree: i,
102
+ folderTreeDiv: t,
103
+ folder_tree: e
104
+ }), e;
105
+ })(this)), e.el("main"));
106
+ t.append(this.upperDiv = c("div", {
107
+ style: {
108
+ display: "flex",
109
+ "align-items": "center",
110
+ "justify-content": "space-between",
111
+ "margin-right": "1px"
112
+ }
113
+ }, [ this.pathUL = c("ul", {
114
+ classList: "nav nav-tabs"
115
+ }), c("div", {
116
+ classList: "btn-toolbar",
117
+ role: "toolbar"
118
+ }, [ s(self), o() ]) ]), this.contentDiv = c("div", [ this.json_view = c("json-view"), this.codeMirrorDiv = c("div", {
119
+ style: {
120
+ overflow: "auto"
121
+ }
122
+ }) ])), e.el("bottom").append(this.msgSpan = c("span")), Object.assign(this, {
123
+ layout: e,
124
+ mainDiv: t,
125
+ selectedHierarchy: {},
126
+ namePath: []
127
+ }), e.on("resize:done", () => this.onSizeChange());
128
+ }
129
+ get fileContentMap() {
130
+ return this.folder_tree.fileContentMap;
131
+ }
132
+ set fileContentMap(e) {
133
+ this.folder_tree.fileContentMap = e;
134
+ }
135
+ onSizeChange() {
136
+ var {
137
+ parentDiv: e,
138
+ folderTreeDiv: t,
139
+ json_view: i,
140
+ mainDiv: r,
141
+ contentDiv: o,
142
+ codeMirrorDiv: s
143
+ } = this;
144
+ n(e, document.body.clientHeight - e.offsetTop), n(t, r.clientHeight - t.offsetTop),
145
+ n(o, r.clientHeight - o.offsetTop), i.setHeight(o.clientHeight), n(s, o.clientHeight),
146
+ d(this);
147
+ }
148
+ showMsg(e) {
149
+ this.msgSpan.innerText = e;
150
+ }
151
+ showSelectedFile(o) {
152
+ o = this.folder_tree.fileContentMap[o.dataset.fileContentKey];
153
+ if (this.isTriggerEditor) {
154
+ var s = o;
155
+ let {
156
+ code_mirror: e,
157
+ code_mirror2: t,
158
+ json_view: i,
159
+ codeMirrorDiv: r
160
+ } = n = this;
161
+ i.hidden = !0, r.hidden = !1, e || n.codeMirrorDiv.append(e = n.code_mirror = c("code-mirror")),
162
+ t || n.codeMirrorDiv.append(t = n.code_mirror2 = c("code-mirror"));
163
+ var {
164
+ fileNamePath: n,
165
+ propNamePathList: s,
166
+ modCode: l
167
+ } = s;
168
+ e.text = JSON.stringify({
169
+ fileNamePath: n,
170
+ propNamePathList: s
171
+ }), t.text = l;
172
+ } else this.showContent(o);
173
+ }
174
+ showSelectedDir(e) {
175
+ "false" != e.parentElement.dataset.loaded ? this.showContent(e.dataset) : this.showContent("not loaded");
176
+ }
177
+ showContent(t) {
178
+ var {
179
+ json_view: i,
180
+ codeMirrorDiv: r
181
+ } = this;
182
+ if (e(t)) r.hidden = !0, i.hidden = !1, i.show(t); else {
183
+ r.hidden = !1, i.hidden = !0;
184
+ let e = this.code_mirror;
185
+ e || r.append(e = this.code_mirror = c("code-mirror", {
186
+ readOnly: !0
187
+ })), e.text = t;
188
+ }
189
+ }
190
+ resetPathTabs() {
191
+ this.pathUL.replaceChildren();
192
+ }
193
+ }
194
+
195
+ function d(e) {
196
+ var {
197
+ selectedElement: t,
198
+ json_view: i
199
+ } = e;
200
+ t ? (e = e, "file" == (t = t).dataset.type ? e.showSelectedFile(t) : e.showSelectedDir(t)) : i.clear();
201
+ }
202
+
203
+ function o() {
204
+ return c("div", {
205
+ classList: "btn-group btn-group-sm",
206
+ role: "group"
207
+ }, [ c("button", {
208
+ classList: "btn btn-outline-success",
209
+ type: "submit"
210
+ }, [ c("i", {
211
+ classList: "bi bi-search"
212
+ }) ]) ]);
213
+ }
214
+
215
+ function s(e) {
216
+ return c("div", {
217
+ classList: "input-group"
218
+ }, [ c("input", {
219
+ id: "searchInput_" + e.idCount,
220
+ type: "text",
221
+ classList: "form-control",
222
+ style: {
223
+ width: "150px"
224
+ }
225
+ }) ]);
226
+ }
227
+
228
+ export {
229
+ t as QyUIFolderViewer
230
+ };
@@ -1,9 +1,9 @@
1
1
  async function t(e, n, o) {
2
- var t = `/rpc/${e}?args=` + encodeURIComponent(JSON.stringify(n));
2
+ var t = "/rpc/" + e + (n ? "?args=" + encodeURIComponent(JSON.stringify(n)) : "");
3
3
  let i;
4
4
  if (o) {
5
5
  let t;
6
- "object" == typeof o ? (t = "application/json", o = JSON.stringify(o)) : t = "text/plain",
6
+ a(o) ? (t = "application/json", o = JSON.stringify(o)) : t = "text/plain",
7
7
  i = {
8
8
  method: "POST",
9
9
  headers: {
@@ -14,7 +14,7 @@ async function t(e, n, o) {
14
14
  }
15
15
  try {
16
16
  var r = await fetch(t, i);
17
- if (r.ok) return await r.json();
17
+ if (r.ok) return r.json();
18
18
  console.error("Response status: " + r.status);
19
19
  } catch (t) {
20
20
  console.error(`Calling ${e} with ${n} failed:`, t);
@@ -34,7 +34,7 @@ function o(t, e) {
34
34
  n.textContent = e, t.appendChild(n);
35
35
  }
36
36
 
37
- function i(t) {
37
+ function a(t) {
38
38
  return null != t && "object" == typeof t;
39
39
  }
40
40
 
@@ -43,5 +43,5 @@ export {
43
43
  e as setHeight,
44
44
  n as setWidth,
45
45
  o as appendStyle,
46
- i as isNotNullObj
46
+ a as isNotNullObj
47
47
  };
@@ -4,16 +4,16 @@ customElements.define("code-mirror", class extends HTMLElement {
4
4
  }
5
5
  compose() {
6
6
  var r, e;
7
- this.codemirror || ({
7
+ this.codeMirror || ({
8
8
  readOnly: r,
9
9
  changeCallback: e
10
- } = this, this.codemirror = createCodeMirror(this, r, e));
10
+ } = this, this.codeMirror = createCodeMirror(this, r, e));
11
11
  }
12
12
  get text() {
13
- return this.codemirror?.state.doc.toString() ?? "";
13
+ return this.codeMirror?.state.doc.toString() ?? "";
14
14
  }
15
15
  set text(r) {
16
- var e = this.codemirror;
16
+ var e = this.codeMirror;
17
17
  e && e.dispatch({
18
18
  changes: {
19
19
  from: 0,
@@ -23,13 +23,13 @@ customElements.define("code-mirror", class extends HTMLElement {
23
23
  });
24
24
  }
25
25
  get hidden() {
26
- return !!this.codemirror?.dom.hidden;
26
+ return !!this.codeMirror?.dom.hidden;
27
27
  }
28
28
  set hidden(r) {
29
- var e = this.codemirror;
29
+ var e = this.codeMirror;
30
30
  e && (e.dom.hidden = !!r);
31
31
  }
32
32
  clearHistory() {
33
- this.codemirror?.clearHistory();
33
+ this.codeMirror?.clearHistory();
34
34
  }
35
35
  });
@@ -3,72 +3,36 @@ import {
3
3
  } from "./hscrpt.js";
4
4
 
5
5
  import {
6
- QyUIFolderTree as e
7
- } from "./QyUIFolderTree.js";
6
+ QyUIFolderViewer as e
7
+ } from "./QyUIFolderViewer.js";
8
+
9
+ function o(e, t) {
10
+ var r = e.folder_tree, {
11
+ rootFolder: t,
12
+ folderTree: s
13
+ } = (r.constructFolderTree(t), r);
14
+ e.rootFolder = r.rootFolder, s.select(t);
15
+ }
8
16
 
9
17
  customElements.define("display-tree", class extends e {
10
18
  constructor() {
11
19
  super();
12
20
  }
13
21
  connectedCallback() {
14
- var e = (super.connectedCallback(), (e = this).toolbarDiv.append((e => e.countSpan = t("span", {
22
+ var e;
23
+ super.connectedCallback(), (e = this).toolbarDiv.append((e => e.countSpan = t("span", {
15
24
  classList: "btn btn-success ms-auto"
16
- }, [ "0" ]))(e)), this).folderTree;
17
- this.rootFolder = e.folder({
18
- name: "/",
19
- open: !0
20
- }), e.select(this.rootFolder);
25
+ }, [ "0" ]))(e)), o(this);
21
26
  }
22
27
  showTree(e, t) {
23
- var o = this, {
24
- rootFolder: r,
25
- countSpan: s,
26
- msgSpan: n
27
- } = (o.deleteJsonTree(), o);
28
- s.innerText = "0", n.innerText = "", r && (r.parentElement.remove(), Object.assign(o, {
29
- rootFolder: void 0,
30
- fileContentMap: {}
31
- })), this.resetPathTabs(), this.countSpan.innerText = t, this.msgSpan.innerText = "Total " + t,
32
- this.rootFolder = this.folderTree.folder({
33
- name: "/",
34
- open: !0
35
- }), function o(r, s, e) {
36
- let {
37
- folderTree: n,
38
- fileContentMap: l
39
- } = r;
40
- let a = s.dataset;
41
- let {
42
- fullPathHash: t,
43
- subdirMap: i,
44
- fileMap: d
45
- } = e;
46
- t && (a.fullPathHash = t);
47
- if (i) {
48
- let e = Object.keys(i).sort();
49
- for (var f of e) {
50
- let e = n.folder({
51
- name: f
52
- }, s);
53
- o(r, e, i[f]);
54
- }
55
- let t = e.length;
56
- 0 < t && (a.subdirCount = t);
57
- }
58
- if (d) {
59
- let e = Object.keys(d).sort();
60
- for (var h of e) {
61
- let {
62
- fileContent: e,
63
- fileContentKey: t
64
- } = d[h], o = n.file({
65
- name: h
66
- }, s);
67
- o.dataset.fileContentKey = t, l[t] = e;
68
- }
69
- let t = e.length;
70
- 0 < t && (a.fileCount = t);
71
- }
72
- }(this, this.rootFolder, e), this.folderTree.select(this.rootFolder), this.tree = e;
28
+ (r = this).json_view.clear();
29
+ var {
30
+ countSpan: r,
31
+ msgSpan: s
32
+ } = r, {
33
+ countSpan: r,
34
+ msgSpan: s
35
+ } = (r.innerText = "0", s.innerText = "", this.resetPathTabs(), this);
36
+ r.innerText = t, s.innerText = "Total " + t, o(this, e);
73
37
  }
74
38
  });
@@ -3,8 +3,8 @@ import {
3
3
  } from "./QyUIUtils.js";
4
4
 
5
5
  import {
6
- QyUIFolderTree as e
7
- } from "./QyUIFolderTree.js";
6
+ QyUIFolderViewer as e
7
+ } from "./QyUIFolderViewer.js";
8
8
 
9
9
  import {
10
10
  h as l
@@ -52,8 +52,8 @@ customElements.define("explore-tree", class extends e {
52
52
  this).folderTree, o = (t.on("fetch", async e => {
53
53
  var t = this, o = e, l = o.dataset, {
54
54
  namePath: n,
55
- folderTree: s,
56
- rootFolder: i,
55
+ folderTree: i,
56
+ rootFolder: s,
57
57
  showHiddenFolder: d
58
58
  } = t;
59
59
  if (n = await (e => f("getSubItems", {
@@ -67,15 +67,15 @@ customElements.define("explore-tree", class extends e {
67
67
  n && (l.fullPathHash = n);
68
68
  let e;
69
69
  if (0 < r.length) {
70
- for (var h of r) o == i && "%" == h ? e = !0 : s.asyncFolder({
70
+ for (var h of r) o == s && "%" == h ? e = !0 : i.asyncFolder({
71
71
  name: h
72
72
  }, o);
73
73
  l.subdirCount = r.length;
74
74
  }
75
- if (e && ((n = s.asyncFolder({
75
+ if (e && ((n = i.asyncFolder({
76
76
  name: "%"
77
77
  }, o)).parentElement.hidden = !d, t.rootHiddenFolder = n), 0 < a.length) {
78
- for (var c of a) s.file({
78
+ for (var c of a) i.file({
79
79
  name: c
80
80
  }, o);
81
81
  l.fileCount = a.length;
@@ -96,12 +96,12 @@ customElements.define("explore-tree", class extends e {
96
96
  namePath: l,
97
97
  fileContentMap: n
98
98
  } = this;
99
- let s;
100
- s = o.fileContentKey ? n[o.fileContentKey] : ({
99
+ let i;
100
+ i = o.fileContentKey ? n[o.fileContentKey] : ({
101
101
  fileContent: l,
102
102
  fileContentKey: t
103
103
  } = await f("getFileContent", {
104
104
  filePath: l
105
- }), n[o.fileContentKey = t] = l), e == this.selectedElement && this.showContent(s);
105
+ }), n[o.fileContentKey = t] = l), e == this.selectedElement && this.showContent(i);
106
106
  }
107
107
  });
@@ -1,5 +1,74 @@
1
1
  import {
2
- defineStyledElement as e
2
+ QyStyledElement as e
3
3
  } from "./QyStyledElement.js";
4
4
 
5
- e("folder-tree", [ "../tree.js/tree.css" ]);
5
+ import {
6
+ h as t
7
+ } from "./hscrpt.js";
8
+
9
+ customElements.define("folder-tree", class extends e {
10
+ constructor() {
11
+ super([ "../tree.js/tree.css" ]);
12
+ }
13
+ compose() {
14
+ var e = t("div", {
15
+ style: {
16
+ overflow: "auto"
17
+ }
18
+ });
19
+ this.shadowRoot.append(e), Object.assign(this, {
20
+ folderTreeDiv: e,
21
+ folderTree: new Tree(e, {
22
+ navigate: !0
23
+ }),
24
+ fileContentMap: {}
25
+ });
26
+ }
27
+ constructFolderTree(e) {
28
+ (t = (o = this).rootFolder) && (t.parentElement.remove(), Object.assign(o, {
29
+ rootFolder: void 0,
30
+ fileContentMap: {}
31
+ }));
32
+ var {
33
+ folderTree: t,
34
+ fileContentMap: o
35
+ } = this, r = this.rootFolder = t.folder({
36
+ name: "/",
37
+ open: !0
38
+ });
39
+ e && !function o(r, l, s, e) {
40
+ let n = s.dataset;
41
+ let {
42
+ fullPathHash: t,
43
+ subdirMap: a,
44
+ fileMap: f
45
+ } = e;
46
+ t && (n.fullPathHash = t);
47
+ if (a) {
48
+ let e = Object.keys(a).sort();
49
+ for (var i of e) {
50
+ let e = r.folder({
51
+ name: i
52
+ }, s);
53
+ o(r, l, e, a[i]);
54
+ }
55
+ let t = e.length;
56
+ 0 < t && (n.subdirCount = t);
57
+ }
58
+ if (f) {
59
+ let e = Object.keys(f).sort();
60
+ for (var d of e) {
61
+ let {
62
+ fileContent: e,
63
+ fileContentKey: t
64
+ } = f[d], o = r.file({
65
+ name: d
66
+ }, s);
67
+ o.dataset.fileContentKey = t, l[t] = e;
68
+ }
69
+ let t = e.length;
70
+ 0 < t && (n.fileCount = t);
71
+ }
72
+ }(t, o, r, e);
73
+ }
74
+ });
@@ -1,13 +1,32 @@
1
1
  function t(t, e, r) {
2
2
  Array.isArray(e) && (r = e, e = {});
3
- var s, i, o = document.createElement(t);
4
- for (s in e) {
5
- var a = e[s];
6
- if ("style" === s) o.style = "string" == typeof (i = a) ? i : Object.entries(i).map(([ t, e ]) => t + ":" + e).join(";"); else if ("classList" === s) o.classList = "string" == typeof (i = a) ? i : i.join(" "); else if (s.startsWith("data-") || s.startsWith("aria-")) o.setAttribute(s, a); else if ("attrs" === s) for (var n in a) o.setAttribute(n, a[n]); else if ("on" === s) for (var f in a) o.addEventListener(f, a[f]); else o[s] = a;
3
+ var a, s, o = document.createElement(t);
4
+ for (a in e) {
5
+ var i = e[a];
6
+ switch (a) {
7
+ case "style":
8
+ o.style = "string" == typeof (s = i) ? s : Object.entries(s).map(([ t, e ]) => t + ":" + e).join(";");
9
+ break;
10
+
11
+ case "classList":
12
+ o.classList = "string" == typeof (s = i) ? s : s.join(" ");
13
+ break;
14
+
15
+ case "attrs":
16
+ for (var n in i) o.setAttribute(n, i[n]);
17
+ break;
18
+
19
+ case "on":
20
+ for (var c in i) o.addEventListener(c, i[c]);
21
+ break;
22
+
23
+ default:
24
+ a.startsWith("data-") || a.startsWith("aria-") ? o.setAttribute(a, i) : o[a] = i;
25
+ }
7
26
  }
8
- if ("function" == typeof o.compose && o.compose(), r) {
9
- var l, c = o.shadowRoot || o;
10
- for (l of r.filter(t => null != t)) c.appendChild("string" == typeof l ? document.createTextNode(l) : l);
27
+ if (o.compose && "function" == typeof o.compose && o.compose(), r) {
28
+ var f, p = o.shadowRoot ?? o;
29
+ for (f of r.filter(t => null != t)) p.appendChild("string" == typeof f ? document.createTextNode(f) : f);
11
30
  }
12
31
  return o;
13
32
  }
@@ -1,8 +1,18 @@
1
1
  import {
2
- defineStyledElement as n
2
+ QyStyledElement as n
3
3
  } from "./QyStyledElement.js";
4
4
 
5
- n("json-view", `
5
+ import {
6
+ h as o
7
+ } from "./hscrpt.js";
8
+
9
+ import {
10
+ setHeight as e
11
+ } from "./QyUIUtils.js";
12
+
13
+ customElements.define("json-view", class extends n {
14
+ constructor() {
15
+ super(`
6
16
  .json-container {
7
17
  font-family: "Open Sans";
8
18
  font-size: 14px;
@@ -69,4 +79,25 @@ n("json-view", `
69
79
  border-width: 5px 0 5px 6px;
70
80
  border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) gray;
71
81
  }
72
- `);
82
+ `);
83
+ }
84
+ compose() {
85
+ this.shadowRoot.append(this.jsonViewDiv = o("div", {
86
+ style: {
87
+ overflow: "auto"
88
+ }
89
+ }));
90
+ }
91
+ setHeight(n) {
92
+ e(this.jsonViewDiv, n);
93
+ }
94
+ show(n) {
95
+ this.clear();
96
+ n = this.jsonTree = jsonview.create(n);
97
+ jsonview.render(n, this.jsonViewDiv), jsonview.expand(n);
98
+ }
99
+ clear() {
100
+ var n = this.jsonTree;
101
+ n && (jsonview.destroy(n), this.jsonTree = void 0);
102
+ }
103
+ });