@polygrid/core 1.0.1 → 1.0.2

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 (274) hide show
  1. package/package.json +39 -12
  2. package/postcss.config.cjs +3 -0
  3. package/src/api/index.ts +15 -0
  4. package/src/api/set-columns.ts +8 -0
  5. package/src/api/set-data.ts +8 -0
  6. package/src/api/set-grid-id.ts +7 -0
  7. package/src/engine/const/pg-css-class.ts +24 -0
  8. package/src/engine/core/grid-dom.ts +26 -0
  9. package/src/engine/core/grid.ts +77 -0
  10. package/src/engine/core/interfaces/grid-options.ts +8 -0
  11. package/src/engine/core/methods/add-dom-listener.ts +14 -0
  12. package/src/engine/core/methods/consume-options.ts +32 -0
  13. package/src/engine/core/methods/index.ts +2 -0
  14. package/src/engine/core/methods/normalize-rows.ts +5 -0
  15. package/src/engine/debug.config.ts +3 -0
  16. package/src/engine/rx-lite/core/observable.ts +29 -0
  17. package/src/engine/rx-lite/core/subject.ts +21 -0
  18. package/src/engine/rx-lite/interfaces/observable-like.ts +6 -0
  19. package/src/engine/rx-lite/interfaces/pipe-fn.ts +18 -0
  20. package/src/engine/rx-lite/operators/combine-latest-any.ts +51 -0
  21. package/src/engine/rx-lite/operators/combine-latest.ts +30 -0
  22. package/src/engine/rx-lite/operators/distinct-until-array-changed.ts +22 -0
  23. package/src/engine/rx-lite/operators/distinct-until-changed.ts +20 -0
  24. package/src/engine/rx-lite/operators/filter.ts +11 -0
  25. package/src/engine/rx-lite/operators/map.ts +9 -0
  26. package/src/engine/rx-lite/operators/select-keyed.ts +31 -0
  27. package/src/engine/rx-lite/operators/select.ts +26 -0
  28. package/src/engine/rx-lite/operators/skip.ts +18 -0
  29. package/src/engine/rx-lite/operators/takeuntil.ts +18 -0
  30. package/src/engine/rx-lite/types/operator.ts +3 -0
  31. package/src/engine/services/column/column.ts +30 -0
  32. package/src/engine/services/column/index.ts +1 -0
  33. package/src/engine/services/column/interfaces/column.ts +6 -0
  34. package/src/engine/services/column/methods/index.ts +2 -0
  35. package/src/engine/services/column/methods/resolve-column-widths.ts +46 -0
  36. package/src/engine/services/column/methods/set-columns.ts +28 -0
  37. package/{types/engine/services/column/types/column-width-state.d.ts → src/engine/services/column/types/column-width-state.ts} +1 -2
  38. package/src/engine/services/data/data.ts +27 -0
  39. package/src/engine/services/data/index.ts +1 -0
  40. package/src/engine/services/data/methods/index.ts +1 -0
  41. package/src/engine/services/data/methods/set-rows.ts +18 -0
  42. package/src/engine/services/layout/index.ts +1 -0
  43. package/src/engine/services/layout/layout.ts +100 -0
  44. package/src/engine/services/layout/methods/add-scroll-event-listeners.ts +38 -0
  45. package/src/engine/services/layout/methods/adjust-viewport.ts +66 -0
  46. package/src/engine/services/layout/methods/apply-column-widths.ts +17 -0
  47. package/src/engine/services/layout/methods/compute-column-widths.ts +23 -0
  48. package/src/engine/services/layout/methods/compute-total-row-height.ts +16 -0
  49. package/src/engine/services/layout/methods/index.ts +12 -0
  50. package/src/engine/services/layout/methods/initialize-layout-pipeline.ts +39 -0
  51. package/src/engine/services/layout/methods/resize-body.ts +15 -0
  52. package/src/engine/services/layout/methods/resize-v-scrollbar.ts +15 -0
  53. package/src/engine/services/layout/methods/set-cell-width.ts +21 -0
  54. package/src/engine/services/layout/methods/set-grid-id.ts +14 -0
  55. package/src/engine/services/layout/methods/set-up-resize-observer.ts +25 -0
  56. package/src/engine/services/layout/methods/update-column-widths.ts +28 -0
  57. package/src/engine/services/renderer/index.ts +1 -0
  58. package/src/engine/services/renderer/methods/index.ts +1 -0
  59. package/src/engine/services/renderer/methods/re-render-cells.ts +31 -0
  60. package/src/engine/services/renderer/parts/body/body.ts +34 -0
  61. package/src/engine/services/renderer/parts/body/cell.ts +12 -0
  62. package/src/engine/services/renderer/parts/body/row.ts +26 -0
  63. package/src/engine/services/renderer/parts/footer/footer-cells.ts +15 -0
  64. package/src/engine/services/renderer/parts/footer/footer.ts +24 -0
  65. package/src/engine/services/renderer/parts/grid/grid.ts +21 -0
  66. package/src/engine/services/renderer/parts/header/header-cells.ts +15 -0
  67. package/src/engine/services/renderer/parts/header/header.ts +24 -0
  68. package/src/engine/services/renderer/parts/root/root.ts +22 -0
  69. package/src/engine/services/renderer/parts/scrollbars/h-scrollbar.ts +21 -0
  70. package/src/engine/services/renderer/parts/scrollbars/v-scrollbar-bottom-corner.ts +8 -0
  71. package/src/engine/services/renderer/parts/scrollbars/v-scrollbar-spacer-bottom.ts +8 -0
  72. package/src/engine/services/renderer/parts/scrollbars/v-scrollbar-spacer-top.ts +8 -0
  73. package/src/engine/services/renderer/parts/scrollbars/v-scrollbar.ts +34 -0
  74. package/src/engine/services/renderer/parts/viewport/viewport.ts +32 -0
  75. package/src/engine/services/renderer/renderer.ts +23 -0
  76. package/src/engine/services/row/index.ts +1 -0
  77. package/src/engine/services/row/interfaces/row.ts +4 -0
  78. package/src/engine/services/row/methods/index.ts +0 -0
  79. package/src/engine/services/row/row.ts +10 -0
  80. package/src/engine/services/services.ts +26 -0
  81. package/src/engine/store/interfaces/grid-state.ts +20 -0
  82. package/src/engine/store/methods/create-initial-state.ts +20 -0
  83. package/src/engine/store/methods/create-tracked-proxy.ts +60 -0
  84. package/src/engine/store/methods/debug.ts +29 -0
  85. package/src/engine/store/store.ts +85 -0
  86. package/src/engine/store/types/state-key.ts +3 -0
  87. package/src/engine/store/types/store-mutation.ts +5 -0
  88. package/src/index.ts +1 -0
  89. package/src/styles/body.css +13 -0
  90. package/src/styles/cell.css +15 -0
  91. package/src/styles/footer.css +30 -0
  92. package/src/styles/grid.css +5 -0
  93. package/src/styles/header.css +25 -0
  94. package/src/styles/index.css +9 -0
  95. package/src/styles/root.css +12 -0
  96. package/src/styles/row.css +12 -0
  97. package/src/styles/scrollbar.css +50 -0
  98. package/src/styles/viewport.css +6 -0
  99. package/src/styles.d.ts +1 -0
  100. package/tsconfig.json +23 -0
  101. package/polygrid.css +0 -1
  102. package/polygrid.es.js +0 -658
  103. package/polygrid.umd.js +0 -1
  104. package/types/api/index.d.ts +0 -9
  105. package/types/api/index.d.ts.map +0 -1
  106. package/types/api/set-columns.d.ts +0 -4
  107. package/types/api/set-columns.d.ts.map +0 -1
  108. package/types/api/set-data.d.ts +0 -3
  109. package/types/api/set-data.d.ts.map +0 -1
  110. package/types/api/set-grid-id.d.ts +0 -3
  111. package/types/api/set-grid-id.d.ts.map +0 -1
  112. package/types/engine/const/pg-css-class.d.ts +0 -25
  113. package/types/engine/const/pg-css-class.d.ts.map +0 -1
  114. package/types/engine/core/grid-dom.d.ts +0 -23
  115. package/types/engine/core/grid-dom.d.ts.map +0 -1
  116. package/types/engine/core/grid.d.ts +0 -19
  117. package/types/engine/core/grid.d.ts.map +0 -1
  118. package/types/engine/core/interfaces/grid-options.d.ts +0 -8
  119. package/types/engine/core/interfaces/grid-options.d.ts.map +0 -1
  120. package/types/engine/core/methods/add-dom-listener.d.ts +0 -3
  121. package/types/engine/core/methods/add-dom-listener.d.ts.map +0 -1
  122. package/types/engine/core/methods/consume-options.d.ts +0 -4
  123. package/types/engine/core/methods/consume-options.d.ts.map +0 -1
  124. package/types/engine/core/methods/index.d.ts +0 -3
  125. package/types/engine/core/methods/index.d.ts.map +0 -1
  126. package/types/engine/core/methods/normalize-rows.d.ts +0 -3
  127. package/types/engine/core/methods/normalize-rows.d.ts.map +0 -1
  128. package/types/engine/debug.config.d.ts +0 -4
  129. package/types/engine/debug.config.d.ts.map +0 -1
  130. package/types/engine/rx-lite/core/observable.d.ts +0 -9
  131. package/types/engine/rx-lite/core/observable.d.ts.map +0 -1
  132. package/types/engine/rx-lite/core/subject.d.ts +0 -9
  133. package/types/engine/rx-lite/core/subject.d.ts.map +0 -1
  134. package/types/engine/rx-lite/interfaces/observable-like.d.ts +0 -6
  135. package/types/engine/rx-lite/interfaces/observable-like.d.ts.map +0 -1
  136. package/types/engine/rx-lite/interfaces/pipe-fn.d.ts +0 -9
  137. package/types/engine/rx-lite/interfaces/pipe-fn.d.ts.map +0 -1
  138. package/types/engine/rx-lite/operators/combine-latest-any.d.ts +0 -7
  139. package/types/engine/rx-lite/operators/combine-latest-any.d.ts.map +0 -1
  140. package/types/engine/rx-lite/operators/combine-latest.d.ts +0 -7
  141. package/types/engine/rx-lite/operators/combine-latest.d.ts.map +0 -1
  142. package/types/engine/rx-lite/operators/distinct-until-array-changed.d.ts +0 -4
  143. package/types/engine/rx-lite/operators/distinct-until-array-changed.d.ts.map +0 -1
  144. package/types/engine/rx-lite/operators/distinct-until-changed.d.ts +0 -3
  145. package/types/engine/rx-lite/operators/distinct-until-changed.d.ts.map +0 -1
  146. package/types/engine/rx-lite/operators/filter.d.ts +0 -3
  147. package/types/engine/rx-lite/operators/filter.d.ts.map +0 -1
  148. package/types/engine/rx-lite/operators/map.d.ts +0 -3
  149. package/types/engine/rx-lite/operators/map.d.ts.map +0 -1
  150. package/types/engine/rx-lite/operators/select-keyed.d.ts +0 -5
  151. package/types/engine/rx-lite/operators/select-keyed.d.ts.map +0 -1
  152. package/types/engine/rx-lite/operators/select.d.ts +0 -5
  153. package/types/engine/rx-lite/operators/select.d.ts.map +0 -1
  154. package/types/engine/rx-lite/operators/skip.d.ts +0 -3
  155. package/types/engine/rx-lite/operators/skip.d.ts.map +0 -1
  156. package/types/engine/rx-lite/operators/takeuntil.d.ts +0 -4
  157. package/types/engine/rx-lite/operators/takeuntil.d.ts.map +0 -1
  158. package/types/engine/rx-lite/types/operator.d.ts +0 -3
  159. package/types/engine/rx-lite/types/operator.d.ts.map +0 -1
  160. package/types/engine/services/column/column.d.ts +0 -18
  161. package/types/engine/services/column/column.d.ts.map +0 -1
  162. package/types/engine/services/column/index.d.ts +0 -2
  163. package/types/engine/services/column/index.d.ts.map +0 -1
  164. package/types/engine/services/column/interfaces/column.d.ts +0 -7
  165. package/types/engine/services/column/interfaces/column.d.ts.map +0 -1
  166. package/types/engine/services/column/methods/index.d.ts +0 -3
  167. package/types/engine/services/column/methods/index.d.ts.map +0 -1
  168. package/types/engine/services/column/methods/resolve-column-widths.d.ts +0 -3
  169. package/types/engine/services/column/methods/resolve-column-widths.d.ts.map +0 -1
  170. package/types/engine/services/column/methods/set-columns.d.ts +0 -4
  171. package/types/engine/services/column/methods/set-columns.d.ts.map +0 -1
  172. package/types/engine/services/column/types/column-width-state.d.ts.map +0 -1
  173. package/types/engine/services/data/data.d.ts +0 -15
  174. package/types/engine/services/data/data.d.ts.map +0 -1
  175. package/types/engine/services/data/index.d.ts +0 -2
  176. package/types/engine/services/data/index.d.ts.map +0 -1
  177. package/types/engine/services/data/methods/index.d.ts +0 -2
  178. package/types/engine/services/data/methods/index.d.ts.map +0 -1
  179. package/types/engine/services/data/methods/set-rows.d.ts +0 -4
  180. package/types/engine/services/data/methods/set-rows.d.ts.map +0 -1
  181. package/types/engine/services/layout/index.d.ts +0 -2
  182. package/types/engine/services/layout/index.d.ts.map +0 -1
  183. package/types/engine/services/layout/layout.d.ts +0 -34
  184. package/types/engine/services/layout/layout.d.ts.map +0 -1
  185. package/types/engine/services/layout/methods/add-scroll-event-listeners.d.ts +0 -3
  186. package/types/engine/services/layout/methods/add-scroll-event-listeners.d.ts.map +0 -1
  187. package/types/engine/services/layout/methods/adjust-viewport.d.ts +0 -4
  188. package/types/engine/services/layout/methods/adjust-viewport.d.ts.map +0 -1
  189. package/types/engine/services/layout/methods/apply-column-widths.d.ts +0 -4
  190. package/types/engine/services/layout/methods/apply-column-widths.d.ts.map +0 -1
  191. package/types/engine/services/layout/methods/compute-column-widths.d.ts +0 -4
  192. package/types/engine/services/layout/methods/compute-column-widths.d.ts.map +0 -1
  193. package/types/engine/services/layout/methods/compute-total-row-height.d.ts +0 -4
  194. package/types/engine/services/layout/methods/compute-total-row-height.d.ts.map +0 -1
  195. package/types/engine/services/layout/methods/index.d.ts +0 -13
  196. package/types/engine/services/layout/methods/index.d.ts.map +0 -1
  197. package/types/engine/services/layout/methods/initialize-layout-pipeline.d.ts +0 -4
  198. package/types/engine/services/layout/methods/initialize-layout-pipeline.d.ts.map +0 -1
  199. package/types/engine/services/layout/methods/resize-body.d.ts +0 -4
  200. package/types/engine/services/layout/methods/resize-body.d.ts.map +0 -1
  201. package/types/engine/services/layout/methods/resize-v-scrollbar.d.ts +0 -4
  202. package/types/engine/services/layout/methods/resize-v-scrollbar.d.ts.map +0 -1
  203. package/types/engine/services/layout/methods/set-cell-width.d.ts +0 -2
  204. package/types/engine/services/layout/methods/set-cell-width.d.ts.map +0 -1
  205. package/types/engine/services/layout/methods/set-grid-id.d.ts +0 -4
  206. package/types/engine/services/layout/methods/set-grid-id.d.ts.map +0 -1
  207. package/types/engine/services/layout/methods/set-up-resize-observer.d.ts +0 -4
  208. package/types/engine/services/layout/methods/set-up-resize-observer.d.ts.map +0 -1
  209. package/types/engine/services/layout/methods/update-column-widths.d.ts +0 -4
  210. package/types/engine/services/layout/methods/update-column-widths.d.ts.map +0 -1
  211. package/types/engine/services/renderer/index.d.ts +0 -2
  212. package/types/engine/services/renderer/index.d.ts.map +0 -1
  213. package/types/engine/services/renderer/methods/index.d.ts +0 -2
  214. package/types/engine/services/renderer/methods/index.d.ts.map +0 -1
  215. package/types/engine/services/renderer/methods/re-render-cells.d.ts +0 -4
  216. package/types/engine/services/renderer/methods/re-render-cells.d.ts.map +0 -1
  217. package/types/engine/services/renderer/parts/body/body.d.ts +0 -4
  218. package/types/engine/services/renderer/parts/body/body.d.ts.map +0 -1
  219. package/types/engine/services/renderer/parts/body/cell.d.ts +0 -3
  220. package/types/engine/services/renderer/parts/body/cell.d.ts.map +0 -1
  221. package/types/engine/services/renderer/parts/body/row.d.ts +0 -4
  222. package/types/engine/services/renderer/parts/body/row.d.ts.map +0 -1
  223. package/types/engine/services/renderer/parts/footer/footer-cells.d.ts +0 -3
  224. package/types/engine/services/renderer/parts/footer/footer-cells.d.ts.map +0 -1
  225. package/types/engine/services/renderer/parts/footer/footer.d.ts +0 -4
  226. package/types/engine/services/renderer/parts/footer/footer.d.ts.map +0 -1
  227. package/types/engine/services/renderer/parts/grid/grid.d.ts +0 -4
  228. package/types/engine/services/renderer/parts/grid/grid.d.ts.map +0 -1
  229. package/types/engine/services/renderer/parts/header/header-cells.d.ts +0 -3
  230. package/types/engine/services/renderer/parts/header/header-cells.d.ts.map +0 -1
  231. package/types/engine/services/renderer/parts/header/header.d.ts +0 -4
  232. package/types/engine/services/renderer/parts/header/header.d.ts.map +0 -1
  233. package/types/engine/services/renderer/parts/root/root.d.ts +0 -4
  234. package/types/engine/services/renderer/parts/root/root.d.ts.map +0 -1
  235. package/types/engine/services/renderer/parts/scrollbars/h-scrollbar.d.ts +0 -3
  236. package/types/engine/services/renderer/parts/scrollbars/h-scrollbar.d.ts.map +0 -1
  237. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar-bottom-corner.d.ts +0 -2
  238. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar-bottom-corner.d.ts.map +0 -1
  239. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar-spacer-bottom.d.ts +0 -2
  240. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar-spacer-bottom.d.ts.map +0 -1
  241. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar-spacer-top.d.ts +0 -2
  242. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar-spacer-top.d.ts.map +0 -1
  243. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar.d.ts +0 -3
  244. package/types/engine/services/renderer/parts/scrollbars/v-scrollbar.d.ts.map +0 -1
  245. package/types/engine/services/renderer/parts/viewport/viewport.d.ts +0 -4
  246. package/types/engine/services/renderer/parts/viewport/viewport.d.ts.map +0 -1
  247. package/types/engine/services/renderer/renderer.d.ts +0 -15
  248. package/types/engine/services/renderer/renderer.d.ts.map +0 -1
  249. package/types/engine/services/row/index.d.ts +0 -2
  250. package/types/engine/services/row/index.d.ts.map +0 -1
  251. package/types/engine/services/row/interfaces/row.d.ts +0 -5
  252. package/types/engine/services/row/interfaces/row.d.ts.map +0 -1
  253. package/types/engine/services/row/methods/index.d.ts +0 -2
  254. package/types/engine/services/row/methods/index.d.ts.map +0 -1
  255. package/types/engine/services/row/row.d.ts +0 -7
  256. package/types/engine/services/row/row.d.ts.map +0 -1
  257. package/types/engine/services/services.d.ts +0 -16
  258. package/types/engine/services/services.d.ts.map +0 -1
  259. package/types/engine/store/interfaces/grid-state.d.ts +0 -20
  260. package/types/engine/store/interfaces/grid-state.d.ts.map +0 -1
  261. package/types/engine/store/methods/create-initial-state.d.ts +0 -3
  262. package/types/engine/store/methods/create-initial-state.d.ts.map +0 -1
  263. package/types/engine/store/methods/create-tracked-proxy.d.ts +0 -3
  264. package/types/engine/store/methods/create-tracked-proxy.d.ts.map +0 -1
  265. package/types/engine/store/methods/debug.d.ts +0 -4
  266. package/types/engine/store/methods/debug.d.ts.map +0 -1
  267. package/types/engine/store/store.d.ts +0 -22
  268. package/types/engine/store/store.d.ts.map +0 -1
  269. package/types/engine/store/types/state-key.d.ts +0 -3
  270. package/types/engine/store/types/state-key.d.ts.map +0 -1
  271. package/types/engine/store/types/store-mutation.d.ts +0 -6
  272. package/types/engine/store/types/store-mutation.d.ts.map +0 -1
  273. package/types/index.d.ts +0 -4
  274. package/types/index.d.ts.map +0 -1
package/polygrid.es.js DELETED
@@ -1,658 +0,0 @@
1
- const d = {
2
- root: "pg-root",
3
- grid: "pg-grid",
4
- viewport: "pg-viewport",
5
- vScroll: "pg-v-scroll",
6
- vScrollSpacerTop: "pg-v-scroll-spacer-top",
7
- vScrollInner: "pg-v-scroll-inner",
8
- vScrollTrack: "pg-v-scroll-track",
9
- vScrollSpacerBottom: "pg-v-scroll-spacer-bottom",
10
- vScrollBottomCorner: "pg-v-scroll-bottom-corner",
11
- hScroll: "pg-h-scroll",
12
- hScrollInner: "pg-h-scroll-inner",
13
- hScrollTrack: "pg-h-scroll-track",
14
- headerViewport: "pg-header-viewport",
15
- header: "pg-header",
16
- headerCell: "pg-header-cell",
17
- bodyViewport: "pg-body-viewport",
18
- body: "pg-body",
19
- row: "pg-row",
20
- cell: "pg-cell",
21
- footerViewport: "pg-footer-viewport",
22
- footer: "pg-footer",
23
- footerCell: "pg-footer-cell"
24
- };
25
- function O(o, t) {
26
- const e = document.createElement("div");
27
- e.classList.add(d.cell);
28
- const r = o[t.field];
29
- return e.textContent = r != null ? String(r) : "", e;
30
- }
31
- function L(o, t, e) {
32
- const r = [], s = t.filter((i) => i.visible ?? !0);
33
- return o.forEach((i) => {
34
- const n = document.createElement("div");
35
- n.classList.add(d.row), n.style.height = e + "px", s.forEach((c) => {
36
- const l = O(i.data, c);
37
- n.appendChild(l);
38
- }), r.push(n);
39
- }), r;
40
- }
41
- function _(o, t) {
42
- const e = document.createElement("div");
43
- e.className = d.bodyViewport;
44
- const r = document.createElement("div");
45
- r.className = d.body, r.innerHTML = "";
46
- const s = o.getState().rows, i = o.getState().columns, n = o.getState().rowHeight, c = L(s, i, n), l = document.createDocumentFragment();
47
- for (const a of c)
48
- l.appendChild(a);
49
- return r.appendChild(l), e.appendChild(r), t.body = r, e;
50
- }
51
- function H(o, t) {
52
- const e = t.getState().columns.filter((r) => r.visible ?? !0);
53
- o.innerHTML = "", e.forEach((r, s) => {
54
- const i = document.createElement("div");
55
- i.className = d.footerCell, i.textContent = r.header, o.appendChild(i);
56
- });
57
- }
58
- function I(o, t) {
59
- const e = document.createElement("div");
60
- e.className = d.footerViewport;
61
- const r = document.createElement("div");
62
- return r.className = d.footer, H(r, o), e.appendChild(r), t.footer = r, e;
63
- }
64
- function T(o, t) {
65
- const e = t.getState().columns.filter((r) => r.visible ?? !0);
66
- o.innerHTML = "", e.forEach((r, s) => {
67
- const i = document.createElement("div");
68
- i.className = d.headerCell, i.textContent = r.header, o.appendChild(i);
69
- });
70
- }
71
- function A(o, t) {
72
- const e = document.createElement("div");
73
- e.className = d.headerViewport;
74
- const r = document.createElement("div");
75
- return r.className = d.header, T(r, o), e.appendChild(r), t.header = r, e;
76
- }
77
- function N(o) {
78
- const t = document.createElement("div");
79
- t.className = d.hScroll;
80
- const e = document.createElement("div");
81
- e.className = d.hScrollInner;
82
- const r = document.createElement("div");
83
- return r.className = d.hScrollTrack, t.appendChild(e), e.appendChild(r), o.hScrollInner = e, o.hScrollTrack = r, t;
84
- }
85
- function B(o, t) {
86
- const e = document.createElement("div");
87
- e.className = d.viewport;
88
- const r = A(o, t), s = _(o, t), i = I(o, t), n = N(t);
89
- return e.appendChild(r), e.appendChild(s), e.appendChild(i), e.appendChild(n), t.headerViewport = r, t.bodyViewport = s, t.footerViewport = i, t.hScrollbar = n, e;
90
- }
91
- function x() {
92
- const o = document.createElement("div");
93
- return o.className = d.vScrollBottomCorner, o;
94
- }
95
- function z() {
96
- const o = document.createElement("div");
97
- return o.className = d.vScrollSpacerBottom, o;
98
- }
99
- function P() {
100
- const o = document.createElement("div");
101
- return o.className = d.vScrollSpacerTop, o;
102
- }
103
- function k(o) {
104
- const t = document.createElement("div");
105
- t.className = d.vScroll;
106
- const e = document.createElement("div");
107
- e.className = d.vScrollInner;
108
- const r = document.createElement("div");
109
- r.className = d.vScrollTrack;
110
- const s = P(), i = z(), n = x();
111
- return t.appendChild(s), t.appendChild(e), t.appendChild(i), t.appendChild(n), e.appendChild(r), o.vScrollInner = e, o.vScrollSpacerTop = s, o.vScrollSpacerBottom = i, o.vScrollBottomCorner = n, o.vScrollTrack = r, t;
112
- }
113
- function D(o, t) {
114
- const e = document.createElement("div");
115
- e.className = d.grid;
116
- const r = B(o, t), s = k(t);
117
- return e.appendChild(r), e.appendChild(s), t.viewport = r, t.vScrollbar = s, e;
118
- }
119
- function G(o, t, e) {
120
- const r = document.createElement("div");
121
- r.className = d.root, r.id = o.getState().id;
122
- const s = D(o, e);
123
- r.appendChild(s), t.appendChild(r), e.root = r, e.grid = s;
124
- }
125
- function j() {
126
- return {
127
- id: "",
128
- columns: [],
129
- rows: [],
130
- rowHeight: 20,
131
- resolvedColumnWidths: [],
132
- columnWidthState: "NOT_SET",
133
- totalColumnWidth: 0,
134
- totalRowHeight: 0,
135
- viewportWidth: 0,
136
- viewportHeight: 0,
137
- rawViewportWidth: 0,
138
- rawViewportHeight: 0,
139
- showHScrollbar: !1,
140
- showVScrollbar: !1
141
- };
142
- }
143
- function W(o, t, e = [], r) {
144
- return new Proxy(o, {
145
- get(s, i, n) {
146
- const c = Reflect.get(s, i, n);
147
- if (c && typeof c == "object") {
148
- const l = e.concat(String(i));
149
- return W(c, t, l, r);
150
- }
151
- return c;
152
- },
153
- set(s, i, n, c) {
154
- const l = String(i), a = e.concat(l), u = U(a), g = M(t, a), $ = Reflect.set(s, i, n, c);
155
- return r.push({ path: u, from: g, to: n }), $;
156
- }
157
- });
158
- }
159
- function M(o, t) {
160
- let e = o;
161
- for (const r of t) {
162
- if (e == null) return;
163
- e = e[r];
164
- }
165
- return e;
166
- }
167
- function U(o) {
168
- return o.map((t) => /^\d+$/.test(t) ? `[${t}]` : t).join(".").replace(/\.\[/g, "[");
169
- }
170
- function F(o, t, e) {
171
- console.groupCollapsed(
172
- "%cPolyGridStore mutations",
173
- "color:#FF9800;font-weight:bold;"
174
- );
175
- for (const r of o)
176
- console.log(`Path: ${r.path}`), console.log("From:", r.from), console.log("To:", r.to);
177
- console.groupEnd();
178
- }
179
- class p {
180
- constructor(t) {
181
- this._subscribe = t;
182
- }
183
- subscribe(t, e) {
184
- const r = (s) => {
185
- e && console.log(
186
- `%cSubscription ${e ? `(${e})` : ""} reacted`,
187
- "color:#9C27B0;font-weight:bold;"
188
- ), t(s);
189
- };
190
- return this._subscribe(r);
191
- }
192
- pipe(...t) {
193
- let e = this;
194
- for (const r of t)
195
- e = r(e);
196
- return e;
197
- }
198
- }
199
- function K(o, t) {
200
- let e = t(o.getState());
201
- return new p((r) => {
202
- r(e);
203
- const s = (i) => {
204
- const n = t(i);
205
- Object.is(e, n) || (e = n, r(n));
206
- };
207
- return o.getSubscribers().add(s), () => o.getSubscribers().delete(s);
208
- });
209
- }
210
- function Y(o, t) {
211
- return new p((e) => {
212
- let r = t.map((i) => i(o.getState()));
213
- e(r);
214
- const s = t.map(
215
- (i, n) => o.select(i).subscribe((c) => {
216
- if (!Object.is(r[n], c)) {
217
- const l = [...r];
218
- l[n] = c, r = l, e(r);
219
- }
220
- })
221
- );
222
- return () => s.forEach((i) => i());
223
- });
224
- }
225
- function q(o, t) {
226
- return new p((e) => {
227
- const r = new Array(t.length), s = new Array(t.length).fill(!1), i = t.map((n, c) => {
228
- if (typeof n == "function") {
229
- const a = n;
230
- return r[c] = a(o.getState()), s[c] = !0, o.select(a).subscribe((u) => {
231
- r[c] = u, e([...r]);
232
- });
233
- }
234
- return n.subscribe((a) => {
235
- r[c] = a, s[c] = !0, s.every(Boolean) && e([...r]);
236
- });
237
- });
238
- return s.every(Boolean) && e([...r]), () => i.forEach((n) => n());
239
- });
240
- }
241
- function X(o, t, e) {
242
- let r = e(o.getState());
243
- return new p((s) => {
244
- const i = (n, c) => {
245
- if (!c.includes(t)) return;
246
- const l = e(n);
247
- Object.is(r, l) || (r = l, s(l));
248
- };
249
- return o.getSubscribers().add(i), () => o.getSubscribers().delete(i);
250
- });
251
- }
252
- class Z {
253
- constructor() {
254
- this.subscribers = /* @__PURE__ */ new Set(), this.state = j();
255
- }
256
- getState() {
257
- return this.state;
258
- }
259
- getSubscribers() {
260
- return this.subscribers;
261
- }
262
- update(t) {
263
- const e = this.state, r = { ...this.state }, s = [], i = W(r, e, [], s);
264
- t(i), s.length > 0 && F(s);
265
- const n = s.map((c) => c.path);
266
- this.state = r, this.emit(n);
267
- }
268
- subscribe(t) {
269
- return this.subscribers.add(t), () => this.subscribers.delete(t);
270
- }
271
- select(t) {
272
- return K(this, t);
273
- }
274
- selectKeyed(t, e) {
275
- return X(this, t, e);
276
- }
277
- combineLatest(t) {
278
- return Y(this, t);
279
- }
280
- combineLatestAny(t) {
281
- return q(this, t);
282
- }
283
- emit(t) {
284
- for (const e of this.subscribers)
285
- e(this.state, t);
286
- }
287
- }
288
- class J {
289
- constructor() {
290
- this.subscribers = /* @__PURE__ */ new Set(), this.pipe = p.prototype.pipe;
291
- }
292
- subscribe(t) {
293
- return this.subscribers.add(t), () => this.subscribers.delete(t);
294
- }
295
- next(t) {
296
- this.subscribers.forEach((e) => e(t));
297
- }
298
- complete() {
299
- this.subscribers.clear();
300
- }
301
- }
302
- function Q() {
303
- return (o) => new p((t) => {
304
- let e;
305
- return o.subscribe((r) => {
306
- e && e.length === r.length && e.every((s, i) => Object.is(s, r[i])) || (e = r, t(r));
307
- });
308
- });
309
- }
310
- function w(o = (t, e) => t === e) {
311
- return (t) => new p((e) => {
312
- let r = !1, s;
313
- return t.subscribe((i) => {
314
- (!r || !o(s, i)) && (r = !0, s = i, e(i));
315
- });
316
- });
317
- }
318
- function v(o) {
319
- return (t) => new p(
320
- (e) => t.subscribe((r) => {
321
- o(r) && e(r);
322
- })
323
- );
324
- }
325
- function b(o) {
326
- return (t) => new p(
327
- (e) => t.subscribe((r) => e(o(r)))
328
- );
329
- }
330
- function h(o) {
331
- return (t) => new p((e) => {
332
- const r = t.subscribe(e), s = o.subscribe(() => {
333
- r(), s();
334
- });
335
- return () => {
336
- r(), s();
337
- };
338
- });
339
- }
340
- function tt(o, t) {
341
- o.totalRowHeight$.pipe(h(t)).subscribe((e) => {
342
- o.store.update((r) => {
343
- r.totalRowHeight = e;
344
- });
345
- }, "SET-TOTALROWHEIGHT");
346
- }
347
- function et(o, t) {
348
- const e = o.gridDom;
349
- o.totalRowHeight$.pipe(h(t)).subscribe((r) => {
350
- e.vScrollTrack.style.height = `${r}px`;
351
- }, "RESIZE-V-SCROLLBAR");
352
- }
353
- function ot(o, t) {
354
- const e = o.gridDom;
355
- o.totalRowHeight$.pipe(h(t)).subscribe((r) => {
356
- e.body.style.height = `${r}px`;
357
- }, "RESIZE-BODY-HEIGHT");
358
- }
359
- function R(o) {
360
- return o.map((t, e) => ({ index: e, data: t }));
361
- }
362
- function rt(o, t) {
363
- o.update((i) => i.id = t.id);
364
- const e = t.columns;
365
- e && o.update((i) => {
366
- i.columns = e;
367
- });
368
- const r = t.data;
369
- r && o.update((i) => {
370
- i.rows = R(r);
371
- });
372
- const s = t.rowHeight;
373
- s && o.update((i) => {
374
- i.rowHeight = s;
375
- });
376
- }
377
- function S(o, t, e, r) {
378
- t.addEventListener(e, r), o.cleanups.push(() => {
379
- t.removeEventListener(e, r);
380
- });
381
- }
382
- function st(o) {
383
- const t = o.gridDom;
384
- S(t, t.vScrollInner, "scroll", () => {
385
- const e = t.vScrollInner.scrollTop;
386
- t.bodyViewport.scrollTop !== e && (t.bodyViewport.scrollTop = e);
387
- }), S(t, t.hScrollInner, "scroll", () => {
388
- const e = t.hScrollInner.scrollLeft;
389
- t.bodyViewport.scrollLeft !== e && (t.bodyViewport.scrollLeft = e), t.headerViewport.scrollLeft !== e && (t.headerViewport.scrollLeft = e), t.footerViewport.scrollLeft !== e && (t.footerViewport.scrollLeft = e);
390
- }), S(t, t.bodyViewport, "wheel", (e) => {
391
- e.deltaY !== 0 && (t.vScrollInner.scrollTop += e.deltaY), e.deltaX !== 0 && (t.hScrollInner.scrollLeft += e.deltaX), e.preventDefault();
392
- });
393
- }
394
- function C(o, t) {
395
- const e = o.filter((n) => n.width != null), r = o.filter((n) => n.width == null), s = e.reduce(
396
- (n, c) => n + c.width,
397
- 0
398
- );
399
- switch (e.length === o.length ? "ALL_SET" : e.length === 0 ? "NOT_SET" : "SOME_SET") {
400
- case "ALL_SET":
401
- if (s >= t)
402
- return o.map((c) => c.width);
403
- {
404
- const l = (t - s) / o.length;
405
- return o.map((a) => a.width + l);
406
- }
407
- case "SOME_SET":
408
- if (s >= t)
409
- return o.map((c) => c.width ?? 0);
410
- {
411
- const l = (t - s) / r.length;
412
- return o.map((a) => a.width ?? l);
413
- }
414
- case "NOT_SET":
415
- const n = t / o.length;
416
- return o.map(() => n);
417
- }
418
- }
419
- function y(o, t) {
420
- const e = o.header;
421
- e.replaceChildren(), T(e, t);
422
- const r = o.body;
423
- r.replaceChildren();
424
- const s = t.getState().rows, i = t.getState().columns, n = t.getState().rowHeight, c = L(s, i, n), l = document.createDocumentFragment();
425
- for (const g of c)
426
- l.appendChild(g);
427
- r.appendChild(l), o.body.querySelector(".pg-row:last-child")?.classList.toggle("last-row", !t.getState().showVScrollbar);
428
- const u = o.footer;
429
- u.replaceChildren(), H(u, t);
430
- }
431
- function E(o, t) {
432
- o.columns$.pipe(h(t)).subscribe((e) => {
433
- const r = o.gridDom;
434
- y(r, o.store);
435
- const s = o.store.getState(), i = e.filter((a) => a.visible ?? !0), n = s.viewportWidth, c = C(i, n), l = c.reduce((a, u) => a + u, 0);
436
- o.store.update((a) => {
437
- a.resolvedColumnWidths = c, a.totalColumnWidth = l;
438
- }), f(r, s, c);
439
- }, "SET-COLUMNS");
440
- }
441
- function it(o, t) {
442
- o.viewportWidth$.pipe(h(t)).subscribe((e) => {
443
- const r = o.store.getState().columns.filter((n) => n.visible ?? !0), s = C(r, e), i = s.reduce((n, c) => n + c, 0);
444
- o.store.update((n) => {
445
- n.resolvedColumnWidths = s, n.totalColumnWidth = i;
446
- });
447
- }, "RESOLVE-COLUMN-WIDTHS");
448
- }
449
- function m(o, t, e) {
450
- const r = o.children;
451
- for (let s = 0; s < t.length; s++) {
452
- const i = r[s];
453
- if (!i) continue;
454
- const n = t[s] + "px";
455
- i.style.width = n, i.style.minWidth = n, i.style.maxWidth = n, s === t.length - 1 && i.classList.toggle("last-cell", !e);
456
- }
457
- }
458
- function f(o, t, e) {
459
- m(o.header, e, t.showVScrollbar), m(o.footer, e, t.showVScrollbar), o.body.querySelectorAll(".pg-row").forEach((n) => {
460
- m(n, e, t.showVScrollbar);
461
- });
462
- const s = e.reduce((n, c) => n + c, 0);
463
- o.body.style.width = `${s}px`, o.header.style.width = `${s}px`, o.footer.style.width = `${s}px`, o.hScrollTrack.style.width = `${s}px`;
464
- const i = t.viewportWidth;
465
- o.viewport.style.width = `${i}px`;
466
- }
467
- function nt(o, t) {
468
- o.resolvedColWidths$.pipe(h(t)).subscribe((e) => {
469
- const r = o.gridDom, s = o.store.getState();
470
- f(r, s, e);
471
- }, "APPLY-COLUMN-WIDTHS");
472
- }
473
- function ct(o, t) {
474
- const e = o.gridDom;
475
- o.showVScrollbar$.pipe(h(t)).subscribe((r) => {
476
- o.store.update((i) => {
477
- i.showVScrollbar = r;
478
- }), e.vScrollbar.style.display = r ? "flex" : "none", e.body.querySelector(".pg-row:last-child")?.classList.toggle("last-row", !r);
479
- }, "SHOW-V-SCROLLBAR"), o.showHScrollbar$.pipe(h(t)).subscribe((r) => {
480
- o.store.update((s) => {
481
- s.showHScrollbar = r;
482
- }), e.hScrollbar.style.display = r ? "block" : "none", e.vScrollBottomCorner.style.display = r ? "block" : "none";
483
- }, "SHOW-H-SCROLLBAR"), o.adjustedViewportWidth$.pipe(
484
- h(t),
485
- b(
486
- ([r, s]) => s - (r ? 16 : 0)
487
- ),
488
- w(),
489
- // ignore initial invalid values (rawViewportWidth = 0)
490
- v((r) => r >= 0)
491
- ).subscribe((r) => {
492
- o.store.update((s) => {
493
- s.viewportWidth = r;
494
- });
495
- }), o.adjustedViewportHeight$.pipe(
496
- h(t),
497
- b(
498
- ([r, s]) => s - (r ? 16 : 0)
499
- ),
500
- w(),
501
- v((r) => r >= 0)
502
- ).subscribe((r) => {
503
- o.store.update((s) => {
504
- s.viewportHeight = r;
505
- });
506
- });
507
- }
508
- function lt(o, t) {
509
- o.computeTotalRowHeight(o, t), o.resizeVScrollbar(o, t), o.resizeBody(o, t), o.adjustViewport(o, t), o.computeColumnWidths(o, t), o.applyColumnWidths(o, t), o.addScrollEventListeners(o);
510
- }
511
- function at(o, t, e) {
512
- return new ResizeObserver((r) => {
513
- for (const s of r) {
514
- const i = s.contentRect.width, n = s.contentRect.height, c = t.headerViewport.getBoundingClientRect().height, l = t.footerViewport.getBoundingClientRect().height;
515
- e.update((a) => {
516
- a.viewportWidth = i, a.viewportHeight = n - c - l, a.rawViewportWidth = i, a.rawViewportHeight = n - c - l;
517
- });
518
- }
519
- });
520
- }
521
- function V(o, t) {
522
- const e = o.gridDom;
523
- o.grid, o.gridId$.pipe(h(t)).subscribe((r) => {
524
- e.root.id = r;
525
- }, "SET-GRID-ID");
526
- }
527
- class dt {
528
- constructor(t) {
529
- this.resizeVScrollbar = et, this.resizeBody = ot, this.computeTotalRowHeight = tt, this.addScrollEventListeners = st, this.computeColumnWidths = it, this.setCellWidth = m, this.applyColumnWidths = nt, this.adjustViewport = ct, this.initializeLayoutPipeline = lt, this.setUpResizeObserver = at, this.setGridId = V, this.updateColumnWidths = f, this.store = t._store, this.destroy$ = t._destroy$, this.gridDom = t._gridDom, this.grid = t, this.totalRowHeight$ = this.store.combineLatest([(e) => e.rows, (e) => e.rowHeight]).pipe(
530
- b(([e, r]) => e.length * r),
531
- w()
532
- ), this.viewportWidth$ = this.store.select((e) => e.viewportWidth).pipe(w()), this.resolvedColWidths$ = this.store.combineLatest([
533
- (e) => e.resolvedColumnWidths,
534
- (e) => e.viewportWidth,
535
- (e) => e.rawViewportWidth
536
- ]).pipe(
537
- v(
538
- ([e, r, s]) => r !== s
539
- ),
540
- b(([e]) => e),
541
- Q()
542
- ), this.showVScrollbar$ = this.store.combineLatest([(e) => e.totalRowHeight, (e) => e.rawViewportHeight]).pipe(
543
- b(
544
- ([e, r]) => e > r
545
- ),
546
- w()
547
- ), this.showHScrollbar$ = this.store.combineLatest([(e) => e.totalColumnWidth, (e) => e.rawViewportWidth]).pipe(
548
- b(
549
- ([e, r]) => e > r
550
- ),
551
- w()
552
- ), this.adjustedViewportWidth$ = this.store.combineLatestAny([
553
- this.showVScrollbar$,
554
- (e) => e.rawViewportWidth
555
- ]), this.adjustedViewportHeight$ = this.store.combineLatestAny([
556
- this.showHScrollbar$,
557
- (e) => e.rawViewportHeight
558
- ]);
559
- }
560
- initApiSubscriptions() {
561
- this.gridId$ = this.store.selectKeyed("id", (t) => t.id), V(this, this.destroy$);
562
- }
563
- }
564
- class ht {
565
- constructor(t) {
566
- this.resolveColumnWidths = C, this.setColumns = E, this.store = t._store, this.destroy$ = t._destroy$, this.gridDom = t._gridDom, this.grid = t;
567
- }
568
- initApiSubscriptions() {
569
- this.columns$ = this.store.selectKeyed("columns", (t) => t.columns), E(this, this.destroy$);
570
- }
571
- }
572
- class pt {
573
- constructor(t) {
574
- this.store = t._store;
575
- }
576
- }
577
- function ut(o, t) {
578
- o.rows$.pipe(h(t)).subscribe((e) => {
579
- const r = o.gridDom, s = o.store.getState(), i = s.resolvedColumnWidths;
580
- y(r, o.store), f(r, s, i);
581
- }, "SET-DATA");
582
- }
583
- class wt {
584
- constructor(t) {
585
- this.store = t._store, this.destroy$ = t._destroy$, this.gridDom = t._gridDom, this.grid = t;
586
- }
587
- initApiSubscriptions() {
588
- this.rows$ = this.store.selectKeyed("rows", (t) => t.rows), ut(this, this.destroy$);
589
- }
590
- }
591
- class bt {
592
- constructor(t) {
593
- this.reRenderCells = y, this.store = t._store, this.destroy$ = t._destroy$, this.gridDom = t._gridDom, this.grid = t;
594
- }
595
- initApiSubscriptions() {
596
- }
597
- }
598
- class mt {
599
- constructor(t) {
600
- this.grid = t, this.layout = new dt(this.grid), this.column = new ht(this.grid), this.row = new pt(this.grid), this.data = new wt(this.grid), this.renderer = new bt(this.grid);
601
- }
602
- }
603
- class ft {
604
- constructor() {
605
- this.cleanups = [];
606
- }
607
- }
608
- function gt(o, t) {
609
- o._store.update((e) => {
610
- e.columns = t;
611
- });
612
- }
613
- function St(o, t) {
614
- o._store.update((e) => {
615
- e.rows = R(t);
616
- });
617
- }
618
- function vt(o, t) {
619
- o._store.update((e) => {
620
- e.id = t;
621
- });
622
- }
623
- function Ct(o) {
624
- return {
625
- setGridId: (t) => vt(o, t),
626
- setData: (t) => St(o, t),
627
- setColumns: (t) => gt(o, t)
628
- };
629
- }
630
- class yt {
631
- constructor(t, e) {
632
- this.store = new Z(), this.gridDom = new ft(), this.destroy$ = new J(), this.services = new mt(this), rt(this.store, e), G(this.store, t, this.gridDom), this.resizeObserver = this.services.layout.setUpResizeObserver(
633
- this.resizeObserver,
634
- this.gridDom,
635
- this.store
636
- ), this.resizeObserver.observe(this.gridDom.grid), this.services.layout.initializeLayoutPipeline(
637
- this.services.layout,
638
- this.destroy$
639
- ), this.api = Ct(this), this.services.layout.initApiSubscriptions(), this.services.data.initApiSubscriptions(), this.services.column.initApiSubscriptions(), this.services.renderer.initApiSubscriptions(), console.log("PolyGrid initialized");
640
- }
641
- destroy() {
642
- this.destroy$.next(), this.destroy$.complete();
643
- for (const t of this.gridDom.cleanups)
644
- t();
645
- }
646
- get _store() {
647
- return this.store;
648
- }
649
- get _destroy$() {
650
- return this.destroy$;
651
- }
652
- get _gridDom() {
653
- return this.gridDom;
654
- }
655
- }
656
- export {
657
- yt as PolyGrid
658
- };
package/polygrid.umd.js DELETED
@@ -1 +0,0 @@
1
- (function(b,d){typeof exports=="object"&&typeof module<"u"?d(exports):typeof define=="function"&&define.amd?define(["exports"],d):(b=typeof globalThis<"u"?globalThis:b||self,d(b.PolyGrid={}))})(this,(function(b){"use strict";const d={root:"pg-root",grid:"pg-grid",viewport:"pg-viewport",vScroll:"pg-v-scroll",vScrollSpacerTop:"pg-v-scroll-spacer-top",vScrollInner:"pg-v-scroll-inner",vScrollTrack:"pg-v-scroll-track",vScrollSpacerBottom:"pg-v-scroll-spacer-bottom",vScrollBottomCorner:"pg-v-scroll-bottom-corner",hScroll:"pg-h-scroll",hScrollInner:"pg-h-scroll-inner",hScrollTrack:"pg-h-scroll-track",headerViewport:"pg-header-viewport",header:"pg-header",headerCell:"pg-header-cell",bodyViewport:"pg-body-viewport",body:"pg-body",row:"pg-row",cell:"pg-cell",footerViewport:"pg-footer-viewport",footer:"pg-footer",footerCell:"pg-footer-cell"};function O(o,t){const e=document.createElement("div");e.classList.add(d.cell);const r=o[t.field];return e.textContent=r!=null?String(r):"",e}function V(o,t,e){const r=[],s=t.filter(i=>i.visible??!0);return o.forEach(i=>{const n=document.createElement("div");n.classList.add(d.row),n.style.height=e+"px",s.forEach(c=>{const l=O(i.data,c);n.appendChild(l)}),r.push(n)}),r}function _(o,t){const e=document.createElement("div");e.className=d.bodyViewport;const r=document.createElement("div");r.className=d.body,r.innerHTML="";const s=o.getState().rows,i=o.getState().columns,n=o.getState().rowHeight,c=V(s,i,n),l=document.createDocumentFragment();for(const a of c)l.appendChild(a);return r.appendChild(l),e.appendChild(r),t.body=r,e}function L(o,t){const e=t.getState().columns.filter(r=>r.visible??!0);o.innerHTML="",e.forEach((r,s)=>{const i=document.createElement("div");i.className=d.footerCell,i.textContent=r.header,o.appendChild(i)})}function I(o,t){const e=document.createElement("div");e.className=d.footerViewport;const r=document.createElement("div");return r.className=d.footer,L(r,o),e.appendChild(r),t.footer=r,e}function T(o,t){const e=t.getState().columns.filter(r=>r.visible??!0);o.innerHTML="",e.forEach((r,s)=>{const i=document.createElement("div");i.className=d.headerCell,i.textContent=r.header,o.appendChild(i)})}function A(o,t){const e=document.createElement("div");e.className=d.headerViewport;const r=document.createElement("div");return r.className=d.header,T(r,o),e.appendChild(r),t.header=r,e}function N(o){const t=document.createElement("div");t.className=d.hScroll;const e=document.createElement("div");e.className=d.hScrollInner;const r=document.createElement("div");return r.className=d.hScrollTrack,t.appendChild(e),e.appendChild(r),o.hScrollInner=e,o.hScrollTrack=r,t}function B(o,t){const e=document.createElement("div");e.className=d.viewport;const r=A(o,t),s=_(o,t),i=I(o,t),n=N(t);return e.appendChild(r),e.appendChild(s),e.appendChild(i),e.appendChild(n),t.headerViewport=r,t.bodyViewport=s,t.footerViewport=i,t.hScrollbar=n,e}function P(){const o=document.createElement("div");return o.className=d.vScrollBottomCorner,o}function x(){const o=document.createElement("div");return o.className=d.vScrollSpacerBottom,o}function z(){const o=document.createElement("div");return o.className=d.vScrollSpacerTop,o}function k(o){const t=document.createElement("div");t.className=d.vScroll;const e=document.createElement("div");e.className=d.vScrollInner;const r=document.createElement("div");r.className=d.vScrollTrack;const s=z(),i=x(),n=P();return t.appendChild(s),t.appendChild(e),t.appendChild(i),t.appendChild(n),e.appendChild(r),o.vScrollInner=e,o.vScrollSpacerTop=s,o.vScrollSpacerBottom=i,o.vScrollBottomCorner=n,o.vScrollTrack=r,t}function D(o,t){const e=document.createElement("div");e.className=d.grid;const r=B(o,t),s=k(t);return e.appendChild(r),e.appendChild(s),t.viewport=r,t.vScrollbar=s,e}function G(o,t,e){const r=document.createElement("div");r.className=d.root,r.id=o.getState().id;const s=D(o,e);r.appendChild(s),t.appendChild(r),e.root=r,e.grid=s}function j(){return{id:"",columns:[],rows:[],rowHeight:20,resolvedColumnWidths:[],columnWidthState:"NOT_SET",totalColumnWidth:0,totalRowHeight:0,viewportWidth:0,viewportHeight:0,rawViewportWidth:0,rawViewportHeight:0,showHScrollbar:!1,showVScrollbar:!1}}function H(o,t,e=[],r){return new Proxy(o,{get(s,i,n){const c=Reflect.get(s,i,n);if(c&&typeof c=="object"){const l=e.concat(String(i));return H(c,t,l,r)}return c},set(s,i,n,c){const l=String(i),a=e.concat(l),u=U(a),E=M(t,a),Et=Reflect.set(s,i,n,c);return r.push({path:u,from:E,to:n}),Et}})}function M(o,t){let e=o;for(const r of t){if(e==null)return;e=e[r]}return e}function U(o){return o.map(t=>/^\d+$/.test(t)?`[${t}]`:t).join(".").replace(/\.\[/g,"[")}function F(o,t,e){console.groupCollapsed("%cPolyGridStore mutations","color:#FF9800;font-weight:bold;");for(const r of o)console.log(`Path: ${r.path}`),console.log("From:",r.from),console.log("To:",r.to);console.groupEnd()}class p{constructor(t){this._subscribe=t}subscribe(t,e){const r=s=>{e&&console.log(`%cSubscription ${e?`(${e})`:""} reacted`,"color:#9C27B0;font-weight:bold;"),t(s)};return this._subscribe(r)}pipe(...t){let e=this;for(const r of t)e=r(e);return e}}function K(o,t){let e=t(o.getState());return new p(r=>{r(e);const s=i=>{const n=t(i);Object.is(e,n)||(e=n,r(n))};return o.getSubscribers().add(s),()=>o.getSubscribers().delete(s)})}function Y(o,t){return new p(e=>{let r=t.map(i=>i(o.getState()));e(r);const s=t.map((i,n)=>o.select(i).subscribe(c=>{if(!Object.is(r[n],c)){const l=[...r];l[n]=c,r=l,e(r)}}));return()=>s.forEach(i=>i())})}function q(o,t){return new p(e=>{const r=new Array(t.length),s=new Array(t.length).fill(!1),i=t.map((n,c)=>{if(typeof n=="function"){const a=n;return r[c]=a(o.getState()),s[c]=!0,o.select(a).subscribe(u=>{r[c]=u,e([...r])})}return n.subscribe(a=>{r[c]=a,s[c]=!0,s.every(Boolean)&&e([...r])})});return s.every(Boolean)&&e([...r]),()=>i.forEach(n=>n())})}function X(o,t,e){let r=e(o.getState());return new p(s=>{const i=(n,c)=>{if(!c.includes(t))return;const l=e(n);Object.is(r,l)||(r=l,s(l))};return o.getSubscribers().add(i),()=>o.getSubscribers().delete(i)})}class Z{constructor(){this.subscribers=new Set,this.state=j()}getState(){return this.state}getSubscribers(){return this.subscribers}update(t){const e=this.state,r={...this.state},s=[],i=H(r,e,[],s);t(i),s.length>0&&F(s);const n=s.map(c=>c.path);this.state=r,this.emit(n)}subscribe(t){return this.subscribers.add(t),()=>this.subscribers.delete(t)}select(t){return K(this,t)}selectKeyed(t,e){return X(this,t,e)}combineLatest(t){return Y(this,t)}combineLatestAny(t){return q(this,t)}emit(t){for(const e of this.subscribers)e(this.state,t)}}class J{constructor(){this.subscribers=new Set,this.pipe=p.prototype.pipe}subscribe(t){return this.subscribers.add(t),()=>this.subscribers.delete(t)}next(t){this.subscribers.forEach(e=>e(t))}complete(){this.subscribers.clear()}}function Q(){return o=>new p(t=>{let e;return o.subscribe(r=>{e&&e.length===r.length&&e.every((s,i)=>Object.is(s,r[i]))||(e=r,t(r))})})}function w(o=(t,e)=>t===e){return t=>new p(e=>{let r=!1,s;return t.subscribe(i=>{(!r||!o(s,i))&&(r=!0,s=i,e(i))})})}function S(o){return t=>new p(e=>t.subscribe(r=>{o(r)&&e(r)}))}function f(o){return t=>new p(e=>t.subscribe(r=>e(o(r))))}function h(o){return t=>new p(e=>{const r=t.subscribe(e),s=o.subscribe(()=>{r(),s()});return()=>{r(),s()}})}function tt(o,t){o.totalRowHeight$.pipe(h(t)).subscribe(e=>{o.store.update(r=>{r.totalRowHeight=e})},"SET-TOTALROWHEIGHT")}function et(o,t){const e=o.gridDom;o.totalRowHeight$.pipe(h(t)).subscribe(r=>{e.vScrollTrack.style.height=`${r}px`},"RESIZE-V-SCROLLBAR")}function ot(o,t){const e=o.gridDom;o.totalRowHeight$.pipe(h(t)).subscribe(r=>{e.body.style.height=`${r}px`},"RESIZE-BODY-HEIGHT")}function W(o){return o.map((t,e)=>({index:e,data:t}))}function rt(o,t){o.update(i=>i.id=t.id);const e=t.columns;e&&o.update(i=>{i.columns=e});const r=t.data;r&&o.update(i=>{i.rows=W(r)});const s=t.rowHeight;s&&o.update(i=>{i.rowHeight=s})}function v(o,t,e,r){t.addEventListener(e,r),o.cleanups.push(()=>{t.removeEventListener(e,r)})}function st(o){const t=o.gridDom;v(t,t.vScrollInner,"scroll",()=>{const e=t.vScrollInner.scrollTop;t.bodyViewport.scrollTop!==e&&(t.bodyViewport.scrollTop=e)}),v(t,t.hScrollInner,"scroll",()=>{const e=t.hScrollInner.scrollLeft;t.bodyViewport.scrollLeft!==e&&(t.bodyViewport.scrollLeft=e),t.headerViewport.scrollLeft!==e&&(t.headerViewport.scrollLeft=e),t.footerViewport.scrollLeft!==e&&(t.footerViewport.scrollLeft=e)}),v(t,t.bodyViewport,"wheel",e=>{e.deltaY!==0&&(t.vScrollInner.scrollTop+=e.deltaY),e.deltaX!==0&&(t.hScrollInner.scrollLeft+=e.deltaX),e.preventDefault()})}function C(o,t){const e=o.filter(n=>n.width!=null),r=o.filter(n=>n.width==null),s=e.reduce((n,c)=>n+c.width,0);switch(e.length===o.length?"ALL_SET":e.length===0?"NOT_SET":"SOME_SET"){case"ALL_SET":if(s>=t)return o.map(c=>c.width);{const l=(t-s)/o.length;return o.map(a=>a.width+l)}case"SOME_SET":if(s>=t)return o.map(c=>c.width??0);{const l=(t-s)/r.length;return o.map(a=>a.width??l)}case"NOT_SET":const n=t/o.length;return o.map(()=>n)}}function y(o,t){const e=o.header;e.replaceChildren(),T(e,t);const r=o.body;r.replaceChildren();const s=t.getState().rows,i=t.getState().columns,n=t.getState().rowHeight,c=V(s,i,n),l=document.createDocumentFragment();for(const E of c)l.appendChild(E);r.appendChild(l),o.body.querySelector(".pg-row:last-child")?.classList.toggle("last-row",!t.getState().showVScrollbar);const u=o.footer;u.replaceChildren(),L(u,t)}function R(o,t){o.columns$.pipe(h(t)).subscribe(e=>{const r=o.gridDom;y(r,o.store);const s=o.store.getState(),i=e.filter(a=>a.visible??!0),n=s.viewportWidth,c=C(i,n),l=c.reduce((a,u)=>a+u,0);o.store.update(a=>{a.resolvedColumnWidths=c,a.totalColumnWidth=l}),g(r,s,c)},"SET-COLUMNS")}function it(o,t){o.viewportWidth$.pipe(h(t)).subscribe(e=>{const r=o.store.getState().columns.filter(n=>n.visible??!0),s=C(r,e),i=s.reduce((n,c)=>n+c,0);o.store.update(n=>{n.resolvedColumnWidths=s,n.totalColumnWidth=i})},"RESOLVE-COLUMN-WIDTHS")}function m(o,t,e){const r=o.children;for(let s=0;s<t.length;s++){const i=r[s];if(!i)continue;const n=t[s]+"px";i.style.width=n,i.style.minWidth=n,i.style.maxWidth=n,s===t.length-1&&i.classList.toggle("last-cell",!e)}}function g(o,t,e){m(o.header,e,t.showVScrollbar),m(o.footer,e,t.showVScrollbar),o.body.querySelectorAll(".pg-row").forEach(n=>{m(n,e,t.showVScrollbar)});const s=e.reduce((n,c)=>n+c,0);o.body.style.width=`${s}px`,o.header.style.width=`${s}px`,o.footer.style.width=`${s}px`,o.hScrollTrack.style.width=`${s}px`;const i=t.viewportWidth;o.viewport.style.width=`${i}px`}function nt(o,t){o.resolvedColWidths$.pipe(h(t)).subscribe(e=>{const r=o.gridDom,s=o.store.getState();g(r,s,e)},"APPLY-COLUMN-WIDTHS")}function ct(o,t){const e=o.gridDom;o.showVScrollbar$.pipe(h(t)).subscribe(r=>{o.store.update(i=>{i.showVScrollbar=r}),e.vScrollbar.style.display=r?"flex":"none",e.body.querySelector(".pg-row:last-child")?.classList.toggle("last-row",!r)},"SHOW-V-SCROLLBAR"),o.showHScrollbar$.pipe(h(t)).subscribe(r=>{o.store.update(s=>{s.showHScrollbar=r}),e.hScrollbar.style.display=r?"block":"none",e.vScrollBottomCorner.style.display=r?"block":"none"},"SHOW-H-SCROLLBAR"),o.adjustedViewportWidth$.pipe(h(t),f(([r,s])=>s-(r?16:0)),w(),S(r=>r>=0)).subscribe(r=>{o.store.update(s=>{s.viewportWidth=r})}),o.adjustedViewportHeight$.pipe(h(t),f(([r,s])=>s-(r?16:0)),w(),S(r=>r>=0)).subscribe(r=>{o.store.update(s=>{s.viewportHeight=r})})}function lt(o,t){o.computeTotalRowHeight(o,t),o.resizeVScrollbar(o,t),o.resizeBody(o,t),o.adjustViewport(o,t),o.computeColumnWidths(o,t),o.applyColumnWidths(o,t),o.addScrollEventListeners(o)}function dt(o,t,e){return new ResizeObserver(r=>{for(const s of r){const i=s.contentRect.width,n=s.contentRect.height,c=t.headerViewport.getBoundingClientRect().height,l=t.footerViewport.getBoundingClientRect().height;e.update(a=>{a.viewportWidth=i,a.viewportHeight=n-c-l,a.rawViewportWidth=i,a.rawViewportHeight=n-c-l})}})}function $(o,t){const e=o.gridDom;o.grid,o.gridId$.pipe(h(t)).subscribe(r=>{e.root.id=r},"SET-GRID-ID")}class at{constructor(t){this.resizeVScrollbar=et,this.resizeBody=ot,this.computeTotalRowHeight=tt,this.addScrollEventListeners=st,this.computeColumnWidths=it,this.setCellWidth=m,this.applyColumnWidths=nt,this.adjustViewport=ct,this.initializeLayoutPipeline=lt,this.setUpResizeObserver=dt,this.setGridId=$,this.updateColumnWidths=g,this.store=t._store,this.destroy$=t._destroy$,this.gridDom=t._gridDom,this.grid=t,this.totalRowHeight$=this.store.combineLatest([e=>e.rows,e=>e.rowHeight]).pipe(f(([e,r])=>e.length*r),w()),this.viewportWidth$=this.store.select(e=>e.viewportWidth).pipe(w()),this.resolvedColWidths$=this.store.combineLatest([e=>e.resolvedColumnWidths,e=>e.viewportWidth,e=>e.rawViewportWidth]).pipe(S(([e,r,s])=>r!==s),f(([e])=>e),Q()),this.showVScrollbar$=this.store.combineLatest([e=>e.totalRowHeight,e=>e.rawViewportHeight]).pipe(f(([e,r])=>e>r),w()),this.showHScrollbar$=this.store.combineLatest([e=>e.totalColumnWidth,e=>e.rawViewportWidth]).pipe(f(([e,r])=>e>r),w()),this.adjustedViewportWidth$=this.store.combineLatestAny([this.showVScrollbar$,e=>e.rawViewportWidth]),this.adjustedViewportHeight$=this.store.combineLatestAny([this.showHScrollbar$,e=>e.rawViewportHeight])}initApiSubscriptions(){this.gridId$=this.store.selectKeyed("id",t=>t.id),$(this,this.destroy$)}}class ht{constructor(t){this.resolveColumnWidths=C,this.setColumns=R,this.store=t._store,this.destroy$=t._destroy$,this.gridDom=t._gridDom,this.grid=t}initApiSubscriptions(){this.columns$=this.store.selectKeyed("columns",t=>t.columns),R(this,this.destroy$)}}class pt{constructor(t){this.store=t._store}}function ut(o,t){o.rows$.pipe(h(t)).subscribe(e=>{const r=o.gridDom,s=o.store.getState(),i=s.resolvedColumnWidths;y(r,o.store),g(r,s,i)},"SET-DATA")}class bt{constructor(t){this.store=t._store,this.destroy$=t._destroy$,this.gridDom=t._gridDom,this.grid=t}initApiSubscriptions(){this.rows$=this.store.selectKeyed("rows",t=>t.rows),ut(this,this.destroy$)}}class wt{constructor(t){this.reRenderCells=y,this.store=t._store,this.destroy$=t._destroy$,this.gridDom=t._gridDom,this.grid=t}initApiSubscriptions(){}}class ft{constructor(t){this.grid=t,this.layout=new at(this.grid),this.column=new ht(this.grid),this.row=new pt(this.grid),this.data=new bt(this.grid),this.renderer=new wt(this.grid)}}class mt{constructor(){this.cleanups=[]}}function gt(o,t){o._store.update(e=>{e.columns=t})}function St(o,t){o._store.update(e=>{e.rows=W(t)})}function vt(o,t){o._store.update(e=>{e.id=t})}function Ct(o){return{setGridId:t=>vt(o,t),setData:t=>St(o,t),setColumns:t=>gt(o,t)}}class yt{constructor(t,e){this.store=new Z,this.gridDom=new mt,this.destroy$=new J,this.services=new ft(this),rt(this.store,e),G(this.store,t,this.gridDom),this.resizeObserver=this.services.layout.setUpResizeObserver(this.resizeObserver,this.gridDom,this.store),this.resizeObserver.observe(this.gridDom.grid),this.services.layout.initializeLayoutPipeline(this.services.layout,this.destroy$),this.api=Ct(this),this.services.layout.initApiSubscriptions(),this.services.data.initApiSubscriptions(),this.services.column.initApiSubscriptions(),this.services.renderer.initApiSubscriptions(),console.log("PolyGrid initialized")}destroy(){this.destroy$.next(),this.destroy$.complete();for(const t of this.gridDom.cleanups)t()}get _store(){return this.store}get _destroy$(){return this.destroy$}get _gridDom(){return this.gridDom}}b.PolyGrid=yt,Object.defineProperty(b,Symbol.toStringTag,{value:"Module"})}));
@@ -1,9 +0,0 @@
1
- import { PolyGrid } from '../engine/core/grid';
2
- import { PolyGridColumn } from '../engine/services/column/interfaces/column';
3
- export type PolyGridApi = ReturnType<typeof createApi>;
4
- export declare function createApi(grid: PolyGrid): {
5
- setGridId: (id: string) => void;
6
- setData: (data: any[]) => void;
7
- setColumns: (columns: PolyGridColumn[]) => void;
8
- };
9
- //# sourceMappingURL=index.d.ts.map