exploreda 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +144 -0
  2. package/dist/ExplorEda.cjs +4608 -10858
  3. package/dist/ExplorEda.cjs.map +1 -1
  4. package/dist/ExplorEda.css +2332 -1653
  5. package/dist/ExplorEda.css.map +1 -1
  6. package/dist/ExplorEda.d.cts +125 -278
  7. package/dist/ExplorEda.d.ts +125 -278
  8. package/dist/ExplorEda.js +4521 -10782
  9. package/dist/ExplorEda.js.map +1 -1
  10. package/dist/calculations.cjs +18 -0
  11. package/dist/calculations.cjs.map +1 -0
  12. package/dist/calculations.d.cts +63 -0
  13. package/dist/calculations.d.ts +63 -0
  14. package/dist/calculations.js +3 -0
  15. package/dist/calculations.js.map +1 -0
  16. package/dist/charts/bar.cjs +27 -0
  17. package/dist/charts/bar.cjs.map +1 -0
  18. package/dist/charts/bar.d.cts +2 -0
  19. package/dist/charts/bar.d.ts +2 -0
  20. package/dist/charts/bar.js +18 -0
  21. package/dist/charts/bar.js.map +1 -0
  22. package/dist/charts/box-plot.cjs +26 -0
  23. package/dist/charts/box-plot.cjs.map +1 -0
  24. package/dist/charts/box-plot.d.cts +2 -0
  25. package/dist/charts/box-plot.d.ts +2 -0
  26. package/dist/charts/box-plot.js +17 -0
  27. package/dist/charts/box-plot.js.map +1 -0
  28. package/dist/charts/color-legend.cjs +22 -0
  29. package/dist/charts/color-legend.cjs.map +1 -0
  30. package/dist/charts/color-legend.d.cts +2 -0
  31. package/dist/charts/color-legend.d.ts +2 -0
  32. package/dist/charts/color-legend.js +13 -0
  33. package/dist/charts/color-legend.js.map +1 -0
  34. package/dist/charts/data-table.cjs +22 -0
  35. package/dist/charts/data-table.cjs.map +1 -0
  36. package/dist/charts/data-table.d.cts +2 -0
  37. package/dist/charts/data-table.d.ts +2 -0
  38. package/dist/charts/data-table.js +13 -0
  39. package/dist/charts/data-table.js.map +1 -0
  40. package/dist/charts/line.cjs +30 -0
  41. package/dist/charts/line.cjs.map +1 -0
  42. package/dist/charts/line.d.cts +2 -0
  43. package/dist/charts/line.d.ts +2 -0
  44. package/dist/charts/line.js +17 -0
  45. package/dist/charts/line.js.map +1 -0
  46. package/dist/charts/markdown.cjs +16 -0
  47. package/dist/charts/markdown.cjs.map +1 -0
  48. package/dist/charts/markdown.css +77 -0
  49. package/dist/charts/markdown.css.map +1 -0
  50. package/dist/charts/markdown.d.cts +2 -0
  51. package/dist/charts/markdown.d.ts +2 -0
  52. package/dist/charts/markdown.js +7 -0
  53. package/dist/charts/markdown.js.map +1 -0
  54. package/dist/charts/pivot-table.cjs +23 -0
  55. package/dist/charts/pivot-table.cjs.map +1 -0
  56. package/dist/charts/pivot-table.d.cts +2 -0
  57. package/dist/charts/pivot-table.d.ts +2 -0
  58. package/dist/charts/pivot-table.js +14 -0
  59. package/dist/charts/pivot-table.js.map +1 -0
  60. package/dist/charts/row.cjs +27 -0
  61. package/dist/charts/row.cjs.map +1 -0
  62. package/dist/charts/row.d.cts +6 -0
  63. package/dist/charts/row.d.ts +6 -0
  64. package/dist/charts/row.js +18 -0
  65. package/dist/charts/row.js.map +1 -0
  66. package/dist/charts/scatter.cjs +24 -0
  67. package/dist/charts/scatter.cjs.map +1 -0
  68. package/dist/charts/scatter.d.cts +2 -0
  69. package/dist/charts/scatter.d.ts +2 -0
  70. package/dist/charts/scatter.js +15 -0
  71. package/dist/charts/scatter.js.map +1 -0
  72. package/dist/charts/summary-table.cjs +19 -0
  73. package/dist/charts/summary-table.cjs.map +1 -0
  74. package/dist/charts/summary-table.d.cts +2 -0
  75. package/dist/charts/summary-table.d.ts +2 -0
  76. package/dist/charts/summary-table.js +10 -0
  77. package/dist/charts/summary-table.js.map +1 -0
  78. package/dist/charts/three-d-scatter.cjs +24 -0
  79. package/dist/charts/three-d-scatter.cjs.map +1 -0
  80. package/dist/charts/three-d-scatter.d.cts +6 -0
  81. package/dist/charts/three-d-scatter.d.ts +6 -0
  82. package/dist/charts/three-d-scatter.js +15 -0
  83. package/dist/charts/three-d-scatter.js.map +1 -0
  84. package/dist/chunk-3PGYFLE3.cjs +499 -0
  85. package/dist/chunk-3PGYFLE3.cjs.map +1 -0
  86. package/dist/chunk-4HNDKMWF.js +167 -0
  87. package/dist/chunk-4HNDKMWF.js.map +1 -0
  88. package/dist/chunk-4QNENKTV.cjs +1214 -0
  89. package/dist/chunk-4QNENKTV.cjs.map +1 -0
  90. package/dist/chunk-54M32JJB.js +132 -0
  91. package/dist/chunk-54M32JJB.js.map +1 -0
  92. package/dist/chunk-5B23JVH3.cjs +2238 -0
  93. package/dist/chunk-5B23JVH3.cjs.map +1 -0
  94. package/dist/chunk-5LH6NSNL.js +456 -0
  95. package/dist/chunk-5LH6NSNL.js.map +1 -0
  96. package/dist/chunk-6DOKKCJ5.cjs +313 -0
  97. package/dist/chunk-6DOKKCJ5.cjs.map +1 -0
  98. package/dist/chunk-6HZX5CBT.cjs +1074 -0
  99. package/dist/chunk-6HZX5CBT.cjs.map +1 -0
  100. package/dist/chunk-6U5DOIQM.js +1071 -0
  101. package/dist/chunk-6U5DOIQM.js.map +1 -0
  102. package/dist/chunk-7GBZIK2R.cjs +80 -0
  103. package/dist/chunk-7GBZIK2R.cjs.map +1 -0
  104. package/dist/chunk-7PTJNIOD.js +520 -0
  105. package/dist/chunk-7PTJNIOD.js.map +1 -0
  106. package/dist/chunk-AHZYQ7FN.js +319 -0
  107. package/dist/chunk-AHZYQ7FN.js.map +1 -0
  108. package/dist/chunk-AOODAOL4.cjs +55 -0
  109. package/dist/chunk-AOODAOL4.cjs.map +1 -0
  110. package/dist/chunk-ASKFIRMC.cjs +165 -0
  111. package/dist/chunk-ASKFIRMC.cjs.map +1 -0
  112. package/dist/chunk-B7OQUBH4.cjs +171 -0
  113. package/dist/chunk-B7OQUBH4.cjs.map +1 -0
  114. package/dist/chunk-BIMEHDLB.js +72 -0
  115. package/dist/chunk-BIMEHDLB.js.map +1 -0
  116. package/dist/chunk-C62KHV7S.js +1225 -0
  117. package/dist/chunk-C62KHV7S.js.map +1 -0
  118. package/dist/chunk-C7GQT65O.cjs +1119 -0
  119. package/dist/chunk-C7GQT65O.cjs.map +1 -0
  120. package/dist/chunk-CGDWDV4Z.js +1211 -0
  121. package/dist/chunk-CGDWDV4Z.js.map +1 -0
  122. package/dist/chunk-CJQQFNEY.js +69 -0
  123. package/dist/chunk-CJQQFNEY.js.map +1 -0
  124. package/dist/chunk-DHYLSXNR.js +964 -0
  125. package/dist/chunk-DHYLSXNR.js.map +1 -0
  126. package/dist/chunk-DKFA4KOJ.cjs +87 -0
  127. package/dist/chunk-DKFA4KOJ.cjs.map +1 -0
  128. package/dist/chunk-DS5BS7PP.cjs +357 -0
  129. package/dist/chunk-DS5BS7PP.cjs.map +1 -0
  130. package/dist/chunk-EGMFQSGK.js +909 -0
  131. package/dist/chunk-EGMFQSGK.js.map +1 -0
  132. package/dist/chunk-EU5EFHO5.cjs +53 -0
  133. package/dist/chunk-EU5EFHO5.cjs.map +1 -0
  134. package/dist/chunk-FM46QSDM.js +837 -0
  135. package/dist/chunk-FM46QSDM.js.map +1 -0
  136. package/dist/chunk-GV2LRR32.cjs +843 -0
  137. package/dist/chunk-GV2LRR32.cjs.map +1 -0
  138. package/dist/chunk-H3XKFSA5.cjs +322 -0
  139. package/dist/chunk-H3XKFSA5.cjs.map +1 -0
  140. package/dist/chunk-H5AVMMCE.js +347 -0
  141. package/dist/chunk-H5AVMMCE.js.map +1 -0
  142. package/dist/chunk-JDMUN4VK.cjs +986 -0
  143. package/dist/chunk-JDMUN4VK.cjs.map +1 -0
  144. package/dist/chunk-JNO7OXCC.js +2171 -0
  145. package/dist/chunk-JNO7OXCC.js.map +1 -0
  146. package/dist/chunk-JQMG4ZR7.js +111 -0
  147. package/dist/chunk-JQMG4ZR7.js.map +1 -0
  148. package/dist/chunk-L2Q2R43U.cjs +118 -0
  149. package/dist/chunk-L2Q2R43U.cjs.map +1 -0
  150. package/dist/chunk-LBTZVERO.js +466 -0
  151. package/dist/chunk-LBTZVERO.js.map +1 -0
  152. package/dist/chunk-LUUGGTTK.cjs +1227 -0
  153. package/dist/chunk-LUUGGTTK.cjs.map +1 -0
  154. package/dist/chunk-MEEPH7ZC.cjs +911 -0
  155. package/dist/chunk-MEEPH7ZC.cjs.map +1 -0
  156. package/dist/chunk-MJPDJ5AS.js +184 -0
  157. package/dist/chunk-MJPDJ5AS.js.map +1 -0
  158. package/dist/chunk-MJROUIDZ.cjs +219 -0
  159. package/dist/chunk-MJROUIDZ.cjs.map +1 -0
  160. package/dist/chunk-MUWSBYJS.js +528 -0
  161. package/dist/chunk-MUWSBYJS.js.map +1 -0
  162. package/dist/chunk-NDF5LCST.js +1088 -0
  163. package/dist/chunk-NDF5LCST.js.map +1 -0
  164. package/dist/chunk-NGWTPED4.js +311 -0
  165. package/dist/chunk-NGWTPED4.js.map +1 -0
  166. package/dist/chunk-PP4VCONW.js +739 -0
  167. package/dist/chunk-PP4VCONW.js.map +1 -0
  168. package/dist/chunk-PRMC2A6P.cjs +488 -0
  169. package/dist/chunk-PRMC2A6P.cjs.map +1 -0
  170. package/dist/chunk-PST6UU6S.cjs +742 -0
  171. package/dist/chunk-PST6UU6S.cjs.map +1 -0
  172. package/dist/chunk-Q7LK2UWH.js +33 -0
  173. package/dist/chunk-Q7LK2UWH.js.map +1 -0
  174. package/dist/chunk-SFV5LZPD.js +162 -0
  175. package/dist/chunk-SFV5LZPD.js.map +1 -0
  176. package/dist/chunk-SKXGYJJG.cjs +370 -0
  177. package/dist/chunk-SKXGYJJG.cjs.map +1 -0
  178. package/dist/chunk-SWLNKY6R.js +477 -0
  179. package/dist/chunk-SWLNKY6R.js.map +1 -0
  180. package/dist/chunk-TGVLNHUB.cjs +483 -0
  181. package/dist/chunk-TGVLNHUB.cjs.map +1 -0
  182. package/dist/chunk-TLLRW6S3.js +74 -0
  183. package/dist/chunk-TLLRW6S3.js.map +1 -0
  184. package/dist/chunk-TRAIXZ6M.cjs +140 -0
  185. package/dist/chunk-TRAIXZ6M.cjs.map +1 -0
  186. package/dist/chunk-U74A5VK5.cjs +74 -0
  187. package/dist/chunk-U74A5VK5.cjs.map +1 -0
  188. package/dist/chunk-UAVDLBTA.cjs +74 -0
  189. package/dist/chunk-UAVDLBTA.cjs.map +1 -0
  190. package/dist/chunk-UJWS6TRV.js +354 -0
  191. package/dist/chunk-UJWS6TRV.js.map +1 -0
  192. package/dist/chunk-UUJMUPB3.cjs +531 -0
  193. package/dist/chunk-UUJMUPB3.cjs.map +1 -0
  194. package/dist/chunk-VTKHZIJB.cjs +549 -0
  195. package/dist/chunk-VTKHZIJB.cjs.map +1 -0
  196. package/dist/chunk-YXPAWUXO.js +51 -0
  197. package/dist/chunk-YXPAWUXO.js.map +1 -0
  198. package/dist/chunk-ZD64SCZB.js +80 -0
  199. package/dist/chunk-ZD64SCZB.js.map +1 -0
  200. package/dist/core.cjs +28 -0
  201. package/dist/core.cjs.map +1 -0
  202. package/dist/core.d.cts +22 -0
  203. package/dist/core.d.ts +22 -0
  204. package/dist/core.js +3 -0
  205. package/dist/core.js.map +1 -0
  206. package/dist/dataLayerState-B4XmQjQN.d.cts +258 -0
  207. package/dist/dataLayerState-B4XmQjQN.d.ts +258 -0
  208. package/package.json +32 -52
@@ -0,0 +1,51 @@
1
+ import { dateTimestamp, categoryIncludes } from './chunk-JNO7OXCC.js';
2
+
3
+ // src/hooks/applyFilter.ts
4
+ function applyFilter(value, filter) {
5
+ switch (filter.type) {
6
+ case "value":
7
+ return categoryIncludes(filter.values, value);
8
+ case "range":
9
+ if (typeof value === "number" || typeof value === "string" && value.trim() !== "") {
10
+ const number = Number(value);
11
+ if (!Number.isFinite(number)) {
12
+ return false;
13
+ }
14
+ return (filter.min === void 0 || number >= filter.min) && (filter.max === void 0 || number <= filter.max);
15
+ }
16
+ break;
17
+ case "text":
18
+ if (typeof value === "string") {
19
+ const lower = value.toLowerCase();
20
+ const search = filter.value.toLowerCase();
21
+ switch (filter.operator) {
22
+ case "contains":
23
+ return lower.includes(search);
24
+ case "equals":
25
+ return lower === search;
26
+ case "startsWith":
27
+ return lower.startsWith(search);
28
+ case "endsWith":
29
+ return lower.endsWith(search);
30
+ }
31
+ }
32
+ break;
33
+ case "date-range": {
34
+ if (typeof value !== "string") {
35
+ return false;
36
+ }
37
+ const timestamp = dateTimestamp(value);
38
+ if (Number.isNaN(timestamp)) {
39
+ return false;
40
+ }
41
+ const min = filter.min === void 0 ? void 0 : dateTimestamp(filter.min);
42
+ const max = filter.max === void 0 ? void 0 : filter.max.length === 10 ? dateTimestamp(`${filter.max}T23:59:59.999Z`) : dateTimestamp(filter.max);
43
+ return (min === void 0 || !Number.isNaN(min) && timestamp >= min) && (max === void 0 || !Number.isNaN(max) && timestamp <= max);
44
+ }
45
+ }
46
+ return false;
47
+ }
48
+
49
+ export { applyFilter };
50
+ //# sourceMappingURL=chunk-YXPAWUXO.js.map
51
+ //# sourceMappingURL=chunk-YXPAWUXO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/applyFilter.ts"],"names":[],"mappings":";;;AAIO,SAAS,WAAA,CAAY,OAAc,MAAyB,EAAA;AACjE,EAAA,QAAQ,OAAO,IAAM;AAAA,IACnB,KAAK,OAAA;AACH,MAAO,OAAA,gBAAA,CAAiB,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC9C,KAAK,OAAA;AACH,MACE,IAAA,OAAO,UAAU,QAChB,IAAA,OAAO,UAAU,QAAY,IAAA,KAAA,CAAM,IAAK,EAAA,KAAM,EAC/C,EAAA;AACA,QAAM,MAAA,MAAA,GAAS,OAAO,KAAK,CAAA;AAC3B,QAAA,IAAI,CAAC,MAAA,CAAO,QAAS,CAAA,MAAM,CAAG,EAAA;AAC5B,UAAO,OAAA,KAAA;AAAA;AAET,QACG,OAAA,CAAA,MAAA,CAAO,GAAQ,KAAA,MAAA,IAAa,MAAU,IAAA,MAAA,CAAO,SAC7C,MAAO,CAAA,GAAA,KAAQ,MAAa,IAAA,MAAA,IAAU,MAAO,CAAA,GAAA,CAAA;AAAA;AAGlD,MAAA;AAAA,IACF,KAAK,MAAA;AACH,MAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,QAAM,MAAA,KAAA,GAAQ,MAAM,WAAY,EAAA;AAChC,QAAM,MAAA,MAAA,GAAS,MAAO,CAAA,KAAA,CAAM,WAAY,EAAA;AAExC,QAAA,QAAQ,OAAO,QAAU;AAAA,UACvB,KAAK,UAAA;AACH,YAAO,OAAA,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA,UAC9B,KAAK,QAAA;AACH,YAAA,OAAO,KAAU,KAAA,MAAA;AAAA,UACnB,KAAK,YAAA;AACH,YAAO,OAAA,KAAA,CAAM,WAAW,MAAM,CAAA;AAAA,UAChC,KAAK,UAAA;AACH,YAAO,OAAA,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA;AAChC;AAEF,MAAA;AAAA,IACF,KAAK,YAAc,EAAA;AACjB,MAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,QAAO,OAAA,KAAA;AAAA;AAGT,MAAM,MAAA,SAAA,GAAY,cAAc,KAAK,CAAA;AACrC,MAAI,IAAA,MAAA,CAAO,KAAM,CAAA,SAAS,CAAG,EAAA;AAC3B,QAAO,OAAA,KAAA;AAAA;AAGT,MAAA,MAAM,MACJ,MAAO,CAAA,GAAA,KAAQ,SAAY,MAAY,GAAA,aAAA,CAAc,OAAO,GAAG,CAAA;AACjE,MAAA,MAAM,MACJ,MAAO,CAAA,GAAA,KAAQ,MACX,GAAA,MAAA,GACA,OAAO,GAAI,CAAA,MAAA,KAAW,EACpB,GAAA,aAAA,CAAc,GAAG,MAAO,CAAA,GAAG,gBAAgB,CAC3C,GAAA,aAAA,CAAc,OAAO,GAAG,CAAA;AAEhC,MAAA,OAAA,CACG,QAAQ,MAAc,IAAA,CAAC,MAAO,CAAA,KAAA,CAAM,GAAG,CAAK,IAAA,SAAA,IAAa,GACzD,MAAA,GAAA,KAAQ,UAAc,CAAC,MAAA,CAAO,KAAM,CAAA,GAAG,KAAK,SAAa,IAAA,GAAA,CAAA;AAAA;AAE9D;AAGF,EAAO,OAAA,KAAA;AACT","file":"chunk-YXPAWUXO.js","sourcesContent":["import { dateTimestamp } from \"@/lib/dateTime\";\nimport { categoryIncludes } from \"@/lib/categories\";\nimport { datum, Filter } from \"@/types/FilterTypes\";\n\nexport function applyFilter(value: datum, filter: Filter): boolean {\n switch (filter.type) {\n case \"value\":\n return categoryIncludes(filter.values, value);\n case \"range\":\n if (\n typeof value === \"number\" ||\n (typeof value === \"string\" && value.trim() !== \"\")\n ) {\n const number = Number(value);\n if (!Number.isFinite(number)) {\n return false;\n }\n return (\n (filter.min === undefined || number >= filter.min) &&\n (filter.max === undefined || number <= filter.max)\n );\n }\n break;\n case \"text\":\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n const search = filter.value.toLowerCase();\n\n switch (filter.operator) {\n case \"contains\":\n return lower.includes(search);\n case \"equals\":\n return lower === search;\n case \"startsWith\":\n return lower.startsWith(search);\n case \"endsWith\":\n return lower.endsWith(search);\n }\n }\n break;\n case \"date-range\": {\n if (typeof value !== \"string\") {\n return false;\n }\n\n const timestamp = dateTimestamp(value);\n if (Number.isNaN(timestamp)) {\n return false;\n }\n\n const min =\n filter.min === undefined ? undefined : dateTimestamp(filter.min);\n const max =\n filter.max === undefined\n ? undefined\n : filter.max.length === 10\n ? dateTimestamp(`${filter.max}T23:59:59.999Z`)\n : dateTimestamp(filter.max);\n\n return (\n (min === undefined || (!Number.isNaN(min) && timestamp >= min)) &&\n (max === undefined || (!Number.isNaN(max) && timestamp <= max))\n );\n }\n }\n\n return false;\n}\n"]}
@@ -0,0 +1,80 @@
1
+ import { useDataLayer } from './chunk-JNO7OXCC.js';
2
+ import { useMemo } from 'react';
3
+
4
+ function useGetColumnData(field) {
5
+ const getColumnData = useDataLayer((s) => s.getColumnData);
6
+ const nonce = useDataLayer((s) => s.nonce);
7
+ return useMemo(() => {
8
+ return getColumnData(field);
9
+ }, [nonce, field, getColumnData]);
10
+ }
11
+ function useGetColumnDataForIds(field, ids) {
12
+ const getColumnData = useDataLayer((s) => s.getColumnData);
13
+ const nonce = useDataLayer((s) => s.nonce);
14
+ return useMemo(() => {
15
+ const data = getColumnData(field);
16
+ if (!ids) {
17
+ return Object.values(data);
18
+ }
19
+ return ids.map((id) => data[id]);
20
+ }, [nonce, field, getColumnData, ids]);
21
+ }
22
+ function useGetColumnDataForMultipleIds(fields, ids) {
23
+ const getColumnData = useDataLayer((s) => s.getColumnData);
24
+ const nonce = useDataLayer((s) => s.nonce);
25
+ return useMemo(() => {
26
+ if (!fields) {
27
+ return {};
28
+ }
29
+ const result = {};
30
+ for (const field of fields) {
31
+ const data = getColumnData(field);
32
+ if (!ids) {
33
+ result[field] = Object.values(data);
34
+ } else {
35
+ result[field] = ids.map((id) => data[id]);
36
+ }
37
+ }
38
+ return result;
39
+ }, [nonce, fields, getColumnData, ids]);
40
+ }
41
+ var EMPTY_DATA = [];
42
+ function useGetLiveData(settings, field, facetIds) {
43
+ const liveItems = useDataLayer((state) => state.getLiveItems(settings));
44
+ const liveIdsPerFacet = useMemo(() => {
45
+ if (!liveItems) {
46
+ return [];
47
+ }
48
+ const facetIdSet = new Set(facetIds);
49
+ const liveIds = liveItems.items.filter((c) => c.value > 0).filter(
50
+ (c) => facetIds && facetIds.length > 0 ? facetIdSet.has(c.key) : true
51
+ ).map((d) => d.key);
52
+ return liveIds;
53
+ }, [facetIds, liveItems]);
54
+ const data = useGetColumnDataForIds(field, liveIdsPerFacet);
55
+ if (!field) {
56
+ return EMPTY_DATA;
57
+ }
58
+ return data;
59
+ }
60
+ function useGetLiveIds(settings, facetIds) {
61
+ const liveItems = useDataLayer((state) => state.getLiveItems(settings));
62
+ return useMemo(() => {
63
+ if (!liveItems) {
64
+ return [];
65
+ }
66
+ const facetIdSet = new Set(facetIds);
67
+ return liveItems.items.filter((c) => c.value > 0).filter(
68
+ (c) => facetIds && facetIds.length > 0 ? facetIdSet.has(c.key) : true
69
+ ).map((d) => d.key);
70
+ }, [facetIds, liveItems]);
71
+ }
72
+ function useGetAllIds() {
73
+ const data = useDataLayer((s) => s.data);
74
+ const allIds = useMemo(() => data.map((row) => row.__ID), [data]);
75
+ return allIds;
76
+ }
77
+
78
+ export { useGetAllIds, useGetColumnData, useGetColumnDataForIds, useGetColumnDataForMultipleIds, useGetLiveData, useGetLiveIds };
79
+ //# sourceMappingURL=chunk-ZD64SCZB.js.map
80
+ //# sourceMappingURL=chunk-ZD64SCZB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/charts/useGetColumnData.tsx","../src/components/charts/useGetLiveData.tsx"],"names":["useMemo"],"mappings":"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","file":"chunk-ZD64SCZB.js","sourcesContent":["import { IdType, useDataLayer } from \"@/providers/DataLayerProvider\";\nimport type { datum } from \"@/types/ChartTypes\";\nimport { useMemo } from \"react\";\n\nexport function useGetColumnData(field: string | undefined) {\n const getColumnData = useDataLayer((s) => s.getColumnData);\n const nonce = useDataLayer((s) => s.nonce);\n\n return useMemo(() => {\n return getColumnData(field);\n // include the nonce since it tracks updates\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [nonce, field, getColumnData]);\n}\n\nexport function useGetColumnDataForIds(\n field: string | undefined,\n ids?: IdType[]\n) {\n const getColumnData = useDataLayer((s) => s.getColumnData);\n const nonce = useDataLayer((s) => s.nonce);\n\n return useMemo(() => {\n const data = getColumnData(field);\n\n if (!ids) {\n return Object.values(data);\n }\n\n return ids.map((id) => data[id]);\n\n // include the nonce since it tracks updates\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [nonce, field, getColumnData, ids]);\n}\n\nexport function useGetColumnDataForMultipleIds(\n fields: string[] | undefined,\n ids?: IdType[]\n) {\n const getColumnData = useDataLayer((s) => s.getColumnData);\n const nonce = useDataLayer((s) => s.nonce);\n\n return useMemo(() => {\n if (!fields) {\n return {};\n }\n\n const result: Record<string, datum[]> = {};\n\n for (const field of fields) {\n const data = getColumnData(field);\n\n if (!ids) {\n result[field] = Object.values(data);\n } else {\n result[field] = ids.map((id) => data[id]);\n }\n }\n\n return result;\n // include the nonce since it tracks updates\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [nonce, fields, getColumnData, ids]);\n}\n","import { IdType, useDataLayer } from \"@/providers/DataLayerProvider\";\nimport { ChartSettings } from \"@/types/ChartTypes\";\nimport type { datum } from \"@/types/ChartTypes\";\nimport { useMemo } from \"react\";\nimport { useGetColumnDataForIds } from \"./useGetColumnData\";\n\nconst EMPTY_DATA: datum[] = [];\n\nexport function useGetLiveData(\n settings: ChartSettings,\n field: string | undefined,\n facetIds?: IdType[]\n) {\n const liveItems = useDataLayer((state) => state.getLiveItems(settings));\n\n const liveIdsPerFacet = useMemo(() => {\n if (!liveItems) {\n return [];\n }\n\n const facetIdSet = new Set(facetIds);\n\n const liveIds = liveItems.items\n .filter((c) => c.value > 0)\n .filter((c) =>\n facetIds && facetIds.length > 0 ? facetIdSet.has(c.key) : true\n )\n .map((d) => d.key);\n\n return liveIds;\n }, [facetIds, liveItems]);\n\n const data = useGetColumnDataForIds(field, liveIdsPerFacet);\n\n if (!field) {\n return EMPTY_DATA;\n }\n\n return data;\n}\n\nexport function useGetLiveIds(settings: ChartSettings, facetIds?: IdType[]) {\n const liveItems = useDataLayer((state) => state.getLiveItems(settings));\n return useMemo(() => {\n if (!liveItems) {\n return [];\n }\n\n const facetIdSet = new Set(facetIds);\n return liveItems.items\n .filter((c) => c.value > 0)\n .filter((c) =>\n facetIds && facetIds.length > 0 ? facetIdSet.has(c.key) : true\n )\n .map((d) => d.key);\n }, [facetIds, liveItems]);\n}\n\nexport function useGetAllIds() {\n const data = useDataLayer((s) => s.data);\n\n const allIds = useMemo(() => data.map((row) => row.__ID), [data]);\n\n return allIds;\n}\n"]}
package/dist/core.cjs ADDED
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var chunk7GBZIK2R_cjs = require('./chunk-7GBZIK2R.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "ChartRegistryImpl", {
8
+ enumerable: true,
9
+ get: function () { return chunk7GBZIK2R_cjs.ChartRegistryImpl; }
10
+ });
11
+ Object.defineProperty(exports, "chartRegistry", {
12
+ enumerable: true,
13
+ get: function () { return chunk7GBZIK2R_cjs.chartRegistry; }
14
+ });
15
+ Object.defineProperty(exports, "getChartDefinition", {
16
+ enumerable: true,
17
+ get: function () { return chunk7GBZIK2R_cjs.getChartDefinition; }
18
+ });
19
+ Object.defineProperty(exports, "registerChart", {
20
+ enumerable: true,
21
+ get: function () { return chunk7GBZIK2R_cjs.registerChart; }
22
+ });
23
+ Object.defineProperty(exports, "useChartDefinition", {
24
+ enumerable: true,
25
+ get: function () { return chunk7GBZIK2R_cjs.useChartDefinition; }
26
+ });
27
+ //# sourceMappingURL=core.cjs.map
28
+ //# sourceMappingURL=core.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"core.cjs"}
@@ -0,0 +1,22 @@
1
+ import { C as ChartSettings, a as ChartDefinition, b as ChartType } from './dataLayerState-B4XmQjQN.cjs';
2
+ import 'three';
3
+
4
+ interface ChartRegistry {
5
+ register<TSettings extends ChartSettings>(definition: ChartDefinition<TSettings>): void;
6
+ get(type: ChartType): ChartDefinition<ChartSettings> | undefined;
7
+ getAll(): ChartDefinition<ChartSettings>[];
8
+ has(type: ChartType): boolean;
9
+ }
10
+ declare class ChartRegistryImpl implements ChartRegistry {
11
+ private definitions;
12
+ register<TSettings extends ChartSettings>(definition: ChartDefinition<TSettings>): void;
13
+ get(type: ChartType): ChartDefinition<ChartSettings> | undefined;
14
+ getAll(): ChartDefinition<ChartSettings>[];
15
+ has(type: ChartType): boolean;
16
+ }
17
+ declare const chartRegistry: ChartRegistryImpl;
18
+ declare function registerChart<TSettings extends ChartSettings>(definition: ChartDefinition<TSettings>): void;
19
+ declare function getChartDefinition(type: ChartType): ChartDefinition<ChartSettings>;
20
+ declare function useChartDefinition(type: ChartType): ChartDefinition<ChartSettings>;
21
+
22
+ export { type ChartRegistry, ChartRegistryImpl, chartRegistry, getChartDefinition, registerChart, useChartDefinition };
package/dist/core.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { C as ChartSettings, a as ChartDefinition, b as ChartType } from './dataLayerState-B4XmQjQN.js';
2
+ import 'three';
3
+
4
+ interface ChartRegistry {
5
+ register<TSettings extends ChartSettings>(definition: ChartDefinition<TSettings>): void;
6
+ get(type: ChartType): ChartDefinition<ChartSettings> | undefined;
7
+ getAll(): ChartDefinition<ChartSettings>[];
8
+ has(type: ChartType): boolean;
9
+ }
10
+ declare class ChartRegistryImpl implements ChartRegistry {
11
+ private definitions;
12
+ register<TSettings extends ChartSettings>(definition: ChartDefinition<TSettings>): void;
13
+ get(type: ChartType): ChartDefinition<ChartSettings> | undefined;
14
+ getAll(): ChartDefinition<ChartSettings>[];
15
+ has(type: ChartType): boolean;
16
+ }
17
+ declare const chartRegistry: ChartRegistryImpl;
18
+ declare function registerChart<TSettings extends ChartSettings>(definition: ChartDefinition<TSettings>): void;
19
+ declare function getChartDefinition(type: ChartType): ChartDefinition<ChartSettings>;
20
+ declare function useChartDefinition(type: ChartType): ChartDefinition<ChartSettings>;
21
+
22
+ export { type ChartRegistry, ChartRegistryImpl, chartRegistry, getChartDefinition, registerChart, useChartDefinition };
package/dist/core.js ADDED
@@ -0,0 +1,3 @@
1
+ export { ChartRegistryImpl, chartRegistry, getChartDefinition, registerChart, useChartDefinition } from './chunk-TLLRW6S3.js';
2
+ //# sourceMappingURL=core.js.map
3
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"core.js"}
@@ -0,0 +1,258 @@
1
+ import * as THREE from 'three';
2
+
3
+ interface FilterBase {
4
+ type: string;
5
+ field: string;
6
+ }
7
+ interface ValueFilter extends FilterBase {
8
+ type: "value";
9
+ values: Array<datum$1>;
10
+ }
11
+ interface RangeFilter extends FilterBase {
12
+ type: "range";
13
+ min?: number;
14
+ max?: number;
15
+ }
16
+ interface TextFilter extends FilterBase {
17
+ type: "text";
18
+ operator: "contains" | "equals" | "startsWith" | "endsWith";
19
+ value: string;
20
+ }
21
+ interface DateRangeFilter extends FilterBase {
22
+ type: "date-range";
23
+ min?: string;
24
+ max?: string;
25
+ }
26
+ type Filter = ValueFilter | RangeFilter | TextFilter | DateRangeFilter;
27
+ type datum$1 = string | number | boolean | null | undefined;
28
+
29
+ interface BarChartSettings extends BaseChartSettings {
30
+ type: "bar";
31
+ binCount?: number;
32
+ forceString?: boolean;
33
+ aggregateId?: string;
34
+ filters: Filter[];
35
+ }
36
+ declare const barChartDefinition: ChartDefinition<BarChartSettings>;
37
+
38
+ interface DataTableSettings extends BaseChartSettings {
39
+ type: "data-table";
40
+ columns: Array<{
41
+ id: string;
42
+ field: string;
43
+ width?: number;
44
+ }>;
45
+ sortBy?: string;
46
+ sortDirection: "asc" | "desc";
47
+ filters: Filter[];
48
+ globalSearch: string;
49
+ }
50
+ declare const dataTableDefinition: ChartDefinition<DataTableSettings>;
51
+
52
+ interface MarkdownSettings extends BaseChartSettings {
53
+ type: "markdown";
54
+ content: string;
55
+ }
56
+ declare const markdownDefinition: ChartDefinition<MarkdownSettings>;
57
+
58
+ interface PivotTableSettings extends BaseChartSettings {
59
+ type: "pivot";
60
+ rowFields: string[];
61
+ columnField: string;
62
+ valueFields: Array<{
63
+ field: string;
64
+ aggregation: "sum" | "count" | "avg" | "min" | "max" | "median" | "mode" | "stddev" | "variance" | "countUnique" | "singleValue";
65
+ label?: string;
66
+ }>;
67
+ }
68
+ declare const pivotTableDefinition: ChartDefinition<PivotTableSettings>;
69
+
70
+ interface ScatterPlotSettings extends BaseChartSettings {
71
+ type: "scatter";
72
+ pointSize?: number;
73
+ pointOpacity?: number;
74
+ xField: string;
75
+ yField: string;
76
+ filters: Filter[];
77
+ }
78
+ declare const scatterPlotDefinition: ChartDefinition<ScatterPlotSettings>;
79
+
80
+ interface SummaryTableSettings extends BaseChartSettings {
81
+ type: "summary";
82
+ }
83
+ declare const summaryTableDefinition: ChartDefinition<SummaryTableSettings>;
84
+
85
+ interface ThreeDScatterSettings extends BaseChartSettings {
86
+ type: "3d-scatter";
87
+ xField: string;
88
+ yField: string;
89
+ zField: string;
90
+ colorField: string | undefined;
91
+ sizeField?: string;
92
+ cameraPosition: THREE.Vector3;
93
+ cameraTarget: THREE.Vector3;
94
+ pointSize: number;
95
+ pointOpacity: number;
96
+ showGrid: boolean;
97
+ showAxes: boolean;
98
+ xAxis: AxisSettings & {
99
+ zoomLevel: number;
100
+ };
101
+ yAxis: AxisSettings & {
102
+ zoomLevel: number;
103
+ };
104
+ zAxis: AxisSettings & {
105
+ zoomLevel: number;
106
+ };
107
+ }
108
+
109
+ interface BoxPlotStyleSettings {
110
+ boxFill: string;
111
+ boxStroke: string;
112
+ boxStrokeWidth: number;
113
+ medianStroke: string;
114
+ medianStrokeWidth: number;
115
+ whiskerStroke: string;
116
+ whiskerStrokeWidth: number;
117
+ outlierSize: number;
118
+ outlierStroke: string;
119
+ outlierFill: string;
120
+ }
121
+ interface BoxPlotSettings extends BaseChartSettings {
122
+ type: "boxplot";
123
+ whiskerType: "tukey" | "minmax" | "stdDev";
124
+ showOutliers: boolean;
125
+ violinOverlay: boolean;
126
+ beeSwarmOverlay: boolean;
127
+ styles: BoxPlotStyleSettings;
128
+ filters: Filter[];
129
+ sortBy: "median" | "label";
130
+ violinBandwidth: number;
131
+ autoBandwidth: boolean;
132
+ }
133
+ declare const boxPlotDefinition: ChartDefinition<BoxPlotSettings>;
134
+
135
+ interface SeriesSettings {
136
+ showPoints: boolean;
137
+ pointSize: number;
138
+ pointOpacity: number;
139
+ lineWidth: number;
140
+ lineOpacity: number;
141
+ lineColor?: string;
142
+ lineStyle: "solid" | "dashed" | "dotted";
143
+ useRightAxis: boolean;
144
+ }
145
+ interface LineChartSettings extends BaseChartSettings {
146
+ type: "line";
147
+ xField: string;
148
+ seriesField: string[];
149
+ seriesSettings: Record<string, SeriesSettings>;
150
+ styles: {
151
+ curveType: "linear" | "monotoneX" | "step";
152
+ };
153
+ showXGrid: boolean;
154
+ showYGrid: boolean;
155
+ showLegend: boolean;
156
+ legendPosition: "top" | "right" | "bottom" | "left";
157
+ }
158
+ declare const DEFAULT_SERIES_SETTINGS: SeriesSettings;
159
+ declare const lineChartDefinition: ChartDefinition<LineChartSettings>;
160
+
161
+ interface ColorLegendSettings extends BaseChartSettings {
162
+ type: "color-legend";
163
+ fields: string[];
164
+ numericalBreakpoints: number;
165
+ wrap: boolean;
166
+ }
167
+ declare const colorLegendDefinition: ChartDefinition<ColorLegendSettings>;
168
+
169
+ interface ChartLayout {
170
+ x: number;
171
+ y: number;
172
+ w: number;
173
+ h: number;
174
+ }
175
+ interface BaseFacetSettings {
176
+ enabled: boolean;
177
+ type: "grid" | "wrap";
178
+ /** Ordered facet IDs to display. Undefined shows all; [] shows none. */
179
+ visibleFacetIds?: string[];
180
+ }
181
+ interface GridFacetSettings extends BaseFacetSettings {
182
+ type: "grid";
183
+ rowVariable: string;
184
+ columnVariable: string;
185
+ }
186
+ interface WrapFacetSettings extends BaseFacetSettings {
187
+ type: "wrap";
188
+ rowVariable: string;
189
+ columnCount: number;
190
+ }
191
+ type FacetSettings = GridFacetSettings | WrapFacetSettings;
192
+ interface AxisSettings {
193
+ title?: string;
194
+ scaleType?: "linear" | "log" | "time" | "band" | "symlog";
195
+ grid?: boolean;
196
+ min?: number;
197
+ max?: number;
198
+ }
199
+ interface MarginSettings {
200
+ top: number;
201
+ right: number;
202
+ bottom: number;
203
+ left: number;
204
+ }
205
+ interface BaseChartSettings {
206
+ id: string;
207
+ title: string;
208
+ type: string;
209
+ field: string;
210
+ layout: ChartLayout;
211
+ colorScaleId: string | undefined;
212
+ colorField: string | undefined;
213
+ facet: FacetSettings;
214
+ xAxis: AxisSettings;
215
+ yAxis: AxisSettings;
216
+ margin: MarginSettings;
217
+ filters: Filter[];
218
+ xAxisLabel: string;
219
+ yAxisLabel: string;
220
+ xGridLines: number;
221
+ yGridLines: number;
222
+ }
223
+ interface RowChartSettings extends BaseChartSettings {
224
+ type: "row";
225
+ minRowHeight: number;
226
+ maxRowHeight: number;
227
+ }
228
+ type ChartSettings = RowChartSettings | BarChartSettings | ScatterPlotSettings | PivotTableSettings | ThreeDScatterSettings | SummaryTableSettings | DataTableSettings | MarkdownSettings | BoxPlotSettings | LineChartSettings | ColorLegendSettings;
229
+ type ChartType = ChartSettings["type"];
230
+ interface ChartSettingsPanelProps<TSettings extends BaseChartSettings = BaseChartSettings> {
231
+ settings: TSettings;
232
+ onSettingsChange: (settings: TSettings) => void;
233
+ }
234
+ interface BaseChartProps<TSettings extends BaseChartSettings = BaseChartSettings> {
235
+ settings: TSettings;
236
+ width: number;
237
+ height: number;
238
+ facetIds?: IdType[];
239
+ toolbarTarget?: HTMLElement | null;
240
+ }
241
+ type datum = string | number | boolean | null | undefined;
242
+ interface ChartDefinition<TSettings extends BaseChartSettings = BaseChartSettings> {
243
+ type: TSettings["type"];
244
+ name: string;
245
+ description: string;
246
+ icon: React.ComponentType<{
247
+ className?: string;
248
+ }>;
249
+ component: React.ComponentType<BaseChartProps<TSettings>>;
250
+ settingsPanel: React.ComponentType<ChartSettingsPanelProps<TSettings>>;
251
+ createDefaultSettings: (layout: ChartLayout, field?: string) => TSettings;
252
+ validateSettings: (settings: TSettings) => boolean;
253
+ getFilterFunction: (settings: TSettings, fieldGetter: (name: string) => Record<IdType, datum>) => (d: IdType) => boolean;
254
+ }
255
+
256
+ type IdType = number;
257
+
258
+ export { type BarChartSettings as B, type ChartSettings as C, type DataTableSettings as D, type Filter as F, type LineChartSettings as L, type MarkdownSettings as M, type PivotTableSettings as P, type RowChartSettings as R, type ScatterPlotSettings as S, type ThreeDScatterSettings as T, type ChartDefinition as a, type ChartType as b, barChartDefinition as c, type datum as d, dataTableDefinition as e, type SummaryTableSettings as f, summaryTableDefinition as g, type BoxPlotStyleSettings as h, type BoxPlotSettings as i, boxPlotDefinition as j, type SeriesSettings as k, DEFAULT_SERIES_SETTINGS as l, markdownDefinition as m, lineChartDefinition as n, type ColorLegendSettings as o, pivotTableDefinition as p, colorLegendDefinition as q, scatterPlotDefinition as s };