@neovici/cosmoz-omnitable 14.21.2 → 14.22.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 (123) hide show
  1. package/dist/cosmoz-omnitable-column-amount.js +27 -29
  2. package/dist/cosmoz-omnitable-column-autocomplete.js +24 -28
  3. package/dist/cosmoz-omnitable-column-boolean.js +17 -25
  4. package/dist/cosmoz-omnitable-column-date.js +26 -28
  5. package/dist/cosmoz-omnitable-column-datetime.js +26 -28
  6. package/dist/cosmoz-omnitable-column-list-data.js +6 -8
  7. package/dist/cosmoz-omnitable-column-list-horizontal.js +15 -17
  8. package/dist/cosmoz-omnitable-column-list-mixin.js +15 -28
  9. package/dist/cosmoz-omnitable-column-list.js +19 -21
  10. package/dist/cosmoz-omnitable-column-mixin.js +8 -12
  11. package/dist/cosmoz-omnitable-column-number.js +27 -29
  12. package/dist/cosmoz-omnitable-column-time.js +24 -26
  13. package/dist/cosmoz-omnitable-column.js +11 -13
  14. package/dist/cosmoz-omnitable-columns.js +9 -11
  15. package/dist/cosmoz-omnitable-group-row.js +4 -6
  16. package/dist/cosmoz-omnitable-header-row.js +15 -17
  17. package/dist/cosmoz-omnitable-item-expand-line.js +5 -7
  18. package/dist/cosmoz-omnitable-item-expand.js +6 -8
  19. package/dist/cosmoz-omnitable-item-row.js +5 -7
  20. package/dist/cosmoz-omnitable-skeleton.js +6 -8
  21. package/dist/cosmoz-omnitable-styles.js +4 -7
  22. package/dist/cosmoz-omnitable.d.ts +1 -1
  23. package/dist/cosmoz-omnitable.d.ts.map +1 -1
  24. package/dist/cosmoz-omnitable.js +31 -37
  25. package/dist/grouped-list/cosmoz-grouped-list-row.js +2 -4
  26. package/dist/grouped-list/cosmoz-grouped-list.js +4 -6
  27. package/dist/grouped-list/index.js +1 -3
  28. package/dist/grouped-list/use-collapsible-items.d.ts +4 -4
  29. package/dist/grouped-list/use-collapsible-items.js +8 -12
  30. package/dist/grouped-list/use-cosmoz-grouped-list.d.ts +1 -1
  31. package/dist/grouped-list/use-cosmoz-grouped-list.js +19 -23
  32. package/dist/grouped-list/use-selected-items.d.ts +10 -10
  33. package/dist/grouped-list/use-selected-items.js +15 -19
  34. package/dist/grouped-list/use-weak-state.d.ts +3 -3
  35. package/dist/grouped-list/use-weak-state.js +6 -10
  36. package/dist/grouped-list/utils.js +1 -11
  37. package/dist/lib/compute-layout.js +7 -12
  38. package/dist/lib/cosmoz-omnitable-amount-range-input.js +14 -16
  39. package/dist/lib/cosmoz-omnitable-date-input-mixin.js +5 -9
  40. package/dist/lib/cosmoz-omnitable-date-range-input.js +12 -14
  41. package/dist/lib/cosmoz-omnitable-datetime-range-input.js +13 -15
  42. package/dist/lib/cosmoz-omnitable-number-range-input.js +12 -14
  43. package/dist/lib/cosmoz-omnitable-range-input-mixin.js +8 -12
  44. package/dist/lib/cosmoz-omnitable-resize-nub.js +5 -7
  45. package/dist/lib/cosmoz-omnitable-time-range-input.js +12 -14
  46. package/dist/lib/generic-sorter.js +1 -5
  47. package/dist/lib/icons.d.ts +4 -4
  48. package/dist/lib/icons.d.ts.map +1 -1
  49. package/dist/lib/icons.js +5 -8
  50. package/dist/lib/layout.js +2 -5
  51. package/dist/lib/polymer-haunted-render-mixin.js +6 -10
  52. package/dist/lib/render-footer.d.ts +1 -1
  53. package/dist/lib/render-footer.d.ts.map +1 -1
  54. package/dist/lib/render-footer.js +12 -16
  55. package/dist/lib/render-header.d.ts +1 -1
  56. package/dist/lib/render-header.d.ts.map +1 -1
  57. package/dist/lib/render-header.js +5 -9
  58. package/dist/lib/render-list.d.ts +1 -1
  59. package/dist/lib/render-list.d.ts.map +1 -1
  60. package/dist/lib/render-list.js +15 -19
  61. package/dist/lib/save-as-csv-action.js +3 -7
  62. package/dist/lib/save-as-xlsx-action.js +5 -9
  63. package/dist/lib/settings/cosmoz-omnitable-settings.js +33 -71
  64. package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts +3 -3
  65. package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts.map +1 -1
  66. package/dist/lib/settings/cosmoz-omnitable-sort-group.js +12 -19
  67. package/dist/lib/settings/drivers/context.d.ts +10 -2
  68. package/dist/lib/settings/drivers/context.d.ts.map +1 -1
  69. package/dist/lib/settings/drivers/context.js +6 -13
  70. package/dist/lib/settings/drivers/index.js +3 -25
  71. package/dist/lib/settings/drivers/local.js +1 -3
  72. package/dist/lib/settings/drivers/remote.js +1 -3
  73. package/dist/lib/settings/index.js +2 -9
  74. package/dist/lib/settings/normalize.js +10 -15
  75. package/dist/lib/settings/style.css.js +5 -8
  76. package/dist/lib/settings/use-saved-settings.d.ts +2 -2
  77. package/dist/lib/settings/use-saved-settings.js +9 -11
  78. package/dist/lib/settings/use-settings-ui.js +12 -14
  79. package/dist/lib/settings/use-settings.d.ts +12 -6
  80. package/dist/lib/settings/use-settings.d.ts.map +1 -1
  81. package/dist/lib/settings/use-settings.js +8 -46
  82. package/dist/lib/types.js +1 -2
  83. package/dist/lib/use-canvas-width.js +5 -9
  84. package/dist/lib/use-dom-columns.d.ts +1 -1
  85. package/dist/lib/use-dom-columns.d.ts.map +1 -1
  86. package/dist/lib/use-dom-columns.js +7 -11
  87. package/dist/lib/use-fast-layout.d.ts +1 -1
  88. package/dist/lib/use-fast-layout.js +18 -22
  89. package/dist/lib/use-footer.js +1 -5
  90. package/dist/lib/use-hash-state.js +11 -15
  91. package/dist/lib/use-header.js +5 -9
  92. package/dist/lib/use-layout.d.ts +1 -1
  93. package/dist/lib/use-layout.d.ts.map +1 -1
  94. package/dist/lib/use-layout.js +4 -8
  95. package/dist/lib/use-list.d.ts +10 -2
  96. package/dist/lib/use-list.d.ts.map +1 -1
  97. package/dist/lib/use-list.js +21 -25
  98. package/dist/lib/use-mini.d.ts +1 -1
  99. package/dist/lib/use-mini.js +5 -9
  100. package/dist/lib/use-omnitable.d.ts +10 -2
  101. package/dist/lib/use-omnitable.d.ts.map +1 -1
  102. package/dist/lib/use-omnitable.js +18 -22
  103. package/dist/lib/use-processed-items.d.ts +5 -3
  104. package/dist/lib/use-processed-items.d.ts.map +1 -1
  105. package/dist/lib/use-processed-items.js +23 -27
  106. package/dist/lib/use-public-interface.js +16 -20
  107. package/dist/lib/use-resizable-columns.js +4 -8
  108. package/dist/lib/use-sort-and-group-options.d.ts +25 -2
  109. package/dist/lib/use-sort-and-group-options.d.ts.map +1 -1
  110. package/dist/lib/use-sort-and-group-options.js +12 -16
  111. package/dist/lib/use-track-size.d.ts +1 -1
  112. package/dist/lib/use-track-size.d.ts.map +1 -1
  113. package/dist/lib/use-track-size.js +2 -6
  114. package/dist/lib/use-tween-array.js +10 -14
  115. package/dist/lib/utils-amount.js +29 -25
  116. package/dist/lib/utils-data.js +8 -12
  117. package/dist/lib/utils-date.js +38 -55
  118. package/dist/lib/utils-datetime.js +22 -32
  119. package/dist/lib/utils-number.js +24 -34
  120. package/dist/lib/utils-time.js +34 -46
  121. package/dist/lib/utils.js +2 -6
  122. package/dist/ui-helpers/cosmoz-clear-button.js +5 -7
  123. package/package.json +143 -134
@@ -1,12 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useList = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const when_js_1 = require("lit-html/directives/when.js");
6
- const template_1 = require("@neovici/cosmoz-utils/template");
7
- const utils_1 = require("./utils");
8
- const utils_data_1 = require("./utils-data");
9
- const arrow = (0, pion_1.html) `
1
+ import { html, useCallback, useEffect, useMemo, useRef } from '@pionjs/pion';
2
+ import { when } from 'lit-html/directives/when.js';
3
+ import { isEmpty } from '@neovici/cosmoz-utils/template';
4
+ import { indexSymbol } from './utils';
5
+ import { onItemChange as _onItemChange } from './utils-data';
6
+ const arrow = html `
10
7
  <svg
11
8
  viewBox="0 0 24 24"
12
9
  preserveAspectRatio="xMidYMid meet"
@@ -18,9 +15,9 @@ const arrow = (0, pion_1.html) `
18
15
  </svg>
19
16
  `;
20
17
  const _getGroupRowClasses = (folded) => folded ? 'groupRow groupRow-folded' : 'groupRow';
21
- const renderMinis = ({ item, index }) => (columns) => (0, when_js_1.when)(columns?.length > 0, () => (0, pion_1.html) `
18
+ const renderMinis = ({ item, index }) => (columns) => when(columns?.length > 0, () => html `
22
19
  <div class="itemRow-minis" part="item-minis">
23
- ${columns.map((column) => (0, pion_1.html) `<div
20
+ ${columns.map((column) => html `<div
24
21
  class="itemRow-mini"
25
22
  part="item-mini item-mini-${column.name}"
26
23
  >
@@ -31,17 +28,17 @@ const renderMinis = ({ item, index }) => (columns) => (0, when_js_1.when)(column
31
28
  </div>`)}
32
29
  </div>
33
30
  `);
34
- const renderItem = ({ columns, collapsedColumns, miniColumns, onItemClick, onCheckboxChange, dataIsValid, groupOnColumn, onItemChange, rowPartFn, }) => (item, index, { selected, expanded, toggleCollapse }) => (0, pion_1.html) `
31
+ const renderItem = ({ columns, collapsedColumns, miniColumns, onItemClick, onCheckboxChange, dataIsValid, groupOnColumn, onItemChange, rowPartFn, }) => (item, index, { selected, expanded, toggleCollapse }) => html `
35
32
  <div
36
33
  ?selected=${selected}
37
34
  part="${[
38
35
  'itemRow',
39
- `itemRow-${item[utils_1.indexSymbol]}`,
36
+ `itemRow-${item[indexSymbol]}`,
40
37
  rowPartFn?.(item, index),
41
38
  ]
42
39
  .filter(Boolean)
43
40
  .join(' ')}"
44
- .dataIndex=${item[utils_1.indexSymbol]}
41
+ .dataIndex=${item[indexSymbol]}
45
42
  .dataItem=${item}
46
43
  class="itemRow"
47
44
  @click=${onItemClick}
@@ -69,7 +66,7 @@ const renderItem = ({ columns, collapsedColumns, miniColumns, onItemClick, onChe
69
66
  </cosmoz-omnitable-item-row>
70
67
  <button
71
68
  class="expand"
72
- ?hidden="${(0, template_1.isEmpty)(collapsedColumns.length)}"
69
+ ?hidden="${isEmpty(collapsedColumns.length)}"
73
70
  ?aria-expanded="${expanded}"
74
71
  @click="${toggleCollapse}"
75
72
  >
@@ -89,9 +86,9 @@ const renderItem = ({ columns, collapsedColumns, miniColumns, onItemClick, onChe
89
86
  >
90
87
  </cosmoz-omnitable-item-expand>
91
88
  `;
92
- const renderGroup = ({ onCheckboxChange, dataIsValid, groupOnColumn }) => (item, index, { selected, folded, toggleFold }) => (0, pion_1.html) ` <div
89
+ const renderGroup = ({ onCheckboxChange, dataIsValid, groupOnColumn }) => (item, index, { selected, folded, toggleFold }) => html ` <div
93
90
  class="${_getGroupRowClasses(folded)}"
94
- part="groupRow groupRow-${item[utils_1.indexSymbol]}"
91
+ part="groupRow groupRow-${item[indexSymbol]}"
95
92
  >
96
93
  <input
97
94
  class="checkbox"
@@ -116,8 +113,8 @@ const renderGroup = ({ onCheckboxChange, dataIsValid, groupOnColumn }) => (item,
116
113
  ${arrow}
117
114
  </button>
118
115
  </div>`;
119
- const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedColumns, miniColumns, sortAndGroupOptions, rowPartFn, ...rest }) => {
120
- const { loading = false, displayEmptyGroups = false, compareItemsFn } = host, keyState = (0, pion_1.useRef)({ shiftKey: false, ctrlKey: false }), onCheckboxChange = (0, pion_1.useCallback)((event) => {
116
+ export const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedColumns, miniColumns, sortAndGroupOptions, rowPartFn, ...rest }) => {
117
+ const { loading = false, displayEmptyGroups = false, compareItemsFn } = host, keyState = useRef({ shiftKey: false, ctrlKey: false }), onCheckboxChange = useCallback((event) => {
121
118
  const item = event.target.dataItem, selected = event.target.checked;
122
119
  if (keyState.current.shiftKey) {
123
120
  host.shadowRoot
@@ -136,7 +133,7 @@ const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedC
136
133
  event.preventDefault();
137
134
  event.stopPropagation();
138
135
  }, []);
139
- (0, pion_1.useEffect)(() => {
136
+ useEffect(() => {
140
137
  const handler = ({ shiftKey, ctrlKey }) => {
141
138
  keyState.current = { shiftKey, ctrlKey };
142
139
  };
@@ -147,7 +144,7 @@ const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedC
147
144
  window.removeEventListener('keyup', handler);
148
145
  };
149
146
  }, []);
150
- const onItemClick = (0, pion_1.useCallback)((e) => {
147
+ const onItemClick = useCallback((e) => {
151
148
  const composedPath = e.composedPath(), path = composedPath.slice(0, composedPath.indexOf(e.currentTarget));
152
149
  if (path.find((e) => e.matches?.('a, .checkbox, .expand'))) {
153
150
  return;
@@ -161,7 +158,7 @@ const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedC
161
158
  },
162
159
  }));
163
160
  }, []);
164
- const { groupOnColumn } = sortAndGroupOptions, onItemChange = (0, pion_1.useCallback)((column, item) => (value) => (0, utils_data_1.onItemChange)(host, column, item, value), []);
161
+ const { groupOnColumn } = sortAndGroupOptions, onItemChange = useCallback((column, item) => (value) => _onItemChange(host, column, item, value), []);
165
162
  return {
166
163
  ...rest,
167
164
  processedItems,
@@ -171,7 +168,7 @@ const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedC
171
168
  compareItemsFn,
172
169
  displayEmptyGroups,
173
170
  error,
174
- renderItem: (0, pion_1.useMemo)(() => renderItem({
171
+ renderItem: useMemo(() => renderItem({
175
172
  columns,
176
173
  collapsedColumns,
177
174
  miniColumns,
@@ -191,12 +188,11 @@ const useList = ({ host, error, dataIsValid, processedItems, columns, collapsedC
191
188
  onItemChange,
192
189
  rowPartFn,
193
190
  ]),
194
- renderGroup: (0, pion_1.useMemo)(() => renderGroup({
191
+ renderGroup: useMemo(() => renderGroup({
195
192
  onCheckboxChange,
196
193
  dataIsValid,
197
194
  groupOnColumn,
198
195
  }), [onCheckboxChange, dataIsValid, groupOnColumn]),
199
196
  };
200
197
  };
201
- exports.useList = useList;
202
198
  //# sourceMappingURL=use-list.js.map
@@ -3,7 +3,7 @@ export function useMini({ host, canvasWidth, columns: _columns }: {
3
3
  canvasWidth: any;
4
4
  columns: any;
5
5
  }): {
6
- isMini: any;
6
+ isMini: boolean;
7
7
  miniColumn: any;
8
8
  miniColumns: any;
9
9
  };
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useMini = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const useMini = ({ host, canvasWidth, columns: _columns }) => {
1
+ import { useMemo, useEffect } from '@pionjs/pion';
2
+ export const useMini = ({ host, canvasWidth, columns: _columns }) => {
6
3
  const breakpoint = host.miniBreakpoint ?? 480;
7
- const isMiniSize = (0, pion_1.useMemo)(() => canvasWidth <= breakpoint, [canvasWidth, breakpoint]);
8
- const columns = (0, pion_1.useMemo)(() => isMiniSize
4
+ const isMiniSize = useMemo(() => canvasWidth <= breakpoint, [canvasWidth, breakpoint]);
5
+ const columns = useMemo(() => isMiniSize
9
6
  ? _columns
10
7
  ?.filter((c) => c.mini != null)
11
8
  .sort((a, b) => (a.mini ?? 0) - (b.mini ?? 0))
12
9
  : [], [_columns, isMiniSize]), [miniColumn, ...miniColumns] = columns ?? [], hasMiniColumn = !!miniColumn;
13
- (0, pion_1.useEffect)(() => {
10
+ useEffect(() => {
14
11
  host.toggleAttribute('mini', hasMiniColumn);
15
12
  }, [hasMiniColumn]);
16
13
  return {
@@ -19,5 +16,4 @@ const useMini = ({ host, canvasWidth, columns: _columns }) => {
19
16
  miniColumns,
20
17
  };
21
18
  };
22
- exports.useMini = useMini;
23
19
  //# sourceMappingURL=use-mini.js.map
@@ -16,8 +16,16 @@ export function useOmnitable(host: any): {
16
16
  compareItemsFn: any;
17
17
  displayEmptyGroups: any;
18
18
  error: any;
19
- renderItem: any;
20
- renderGroup: any;
19
+ renderItem: (item: any, index: any, { selected, expanded, toggleCollapse }: {
20
+ selected: any;
21
+ expanded: any;
22
+ toggleCollapse: any;
23
+ }) => import("lit-html").TemplateResult<1>;
24
+ renderGroup: (item: any, index: any, { selected, folded, toggleFold }: {
25
+ selected: any;
26
+ folded: any;
27
+ toggleFold: any;
28
+ }) => import("lit-html").TemplateResult<1>;
21
29
  };
22
30
  footer: {
23
31
  csvFilename: any;
@@ -1 +1 @@
1
- {"version":3,"file":"use-omnitable.d.ts","sourceRoot":"","sources":["../../src/lib/use-omnitable.js"],"names":[],"mappings":"AAUO;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwFN"}
1
+ {"version":3,"file":"use-omnitable.d.ts","sourceRoot":"","sources":["../../src/lib/use-omnitable.js"],"names":[],"mappings":"AAUO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwFN"}
@@ -1,34 +1,31 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useOmnitable = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const settings_1 = require("./settings");
6
- const use_fast_layout_1 = require("./use-fast-layout");
7
- const use_footer_1 = require("./use-footer");
8
- const use_header_1 = require("./use-header");
9
- const use_list_1 = require("./use-list");
10
- const use_processed_items_1 = require("./use-processed-items");
11
- const use_public_interface_1 = require("./use-public-interface");
12
- const use_sort_and_group_options_1 = require("./use-sort-and-group-options");
13
- const useOmnitable = (host) => {
14
- const { hashParam, settingsId, data, resizeSpeedFactor, noLocal, noLocalSort = noLocal, noLocalFilter = noLocal, error, rowPartFn, } = host, settingS = (0, settings_1.useSettings)({ settingsId, host }), { settings, setSettings, columns, resetRef } = settingS, sortAndGroupOptions = (0, use_sort_and_group_options_1.useSortAndGroupOptions)(columns, hashParam, settings, setSettings, resetRef),
1
+ import { useState } from '@pionjs/pion';
2
+ import { useSettings } from './settings';
3
+ import { useFastLayout } from './use-fast-layout';
4
+ import { useFooter } from './use-footer';
5
+ import { useHeader } from './use-header';
6
+ import { useList } from './use-list';
7
+ import { useProcessedItems } from './use-processed-items';
8
+ import { usePublicInterface } from './use-public-interface';
9
+ import { useSortAndGroupOptions } from './use-sort-and-group-options';
10
+ export const useOmnitable = (host) => {
11
+ const { hashParam, settingsId, data, resizeSpeedFactor, noLocal, noLocalSort = noLocal, noLocalFilter = noLocal, error, rowPartFn, } = host, settingS = useSettings({ settingsId, host }), { settings, setSettings, columns, resetRef } = settingS, sortAndGroupOptions = useSortAndGroupOptions(columns, hashParam, settings, setSettings, resetRef),
15
12
  // TODO: drop filterFunctions
16
- { processedItems, visibleData, filters, setFilterState, filterFunctions } = (0, use_processed_items_1.useProcessedItems)({
13
+ { processedItems, visibleData, filters, setFilterState, filterFunctions } = useProcessedItems({
17
14
  data,
18
15
  columns,
19
16
  hashParam,
20
17
  sortAndGroupOptions,
21
18
  noLocalSort,
22
19
  noLocalFilter,
23
- }), { isMini, collapsedColumns, miniColumns } = (0, use_fast_layout_1.useFastLayout)({
20
+ }), { isMini, collapsedColumns, miniColumns } = useFastLayout({
24
21
  host,
25
22
  columns,
26
23
  settings,
27
24
  setSettings,
28
25
  resizeSpeedFactor,
29
26
  sortAndGroupOptions,
30
- }), dataIsValid = data && Array.isArray(data) && data.length > 0, [selectedItems, setSelectedItems] = (0, pion_1.useState)([]);
31
- (0, use_public_interface_1.usePublicInterface)({
27
+ }), dataIsValid = data && Array.isArray(data) && data.length > 0, [selectedItems, setSelectedItems] = useState([]);
28
+ usePublicInterface({
32
29
  host,
33
30
  visibleData,
34
31
  sortedFilteredGroupedItems: processedItems,
@@ -40,7 +37,7 @@ const useOmnitable = (host) => {
40
37
  ...sortAndGroupOptions,
41
38
  });
42
39
  return {
43
- header: (0, use_header_1.useHeader)({
40
+ header: useHeader({
44
41
  host,
45
42
  selectedItems,
46
43
  sortAndGroupOptions,
@@ -55,7 +52,7 @@ const useOmnitable = (host) => {
55
52
  setFilterState,
56
53
  hideSelectAll: host.hideSelectAll === true,
57
54
  }),
58
- list: (0, use_list_1.useList)({
55
+ list: useList({
59
56
  host,
60
57
  error,
61
58
  dataIsValid,
@@ -67,12 +64,11 @@ const useOmnitable = (host) => {
67
64
  sortAndGroupOptions,
68
65
  rowPartFn,
69
66
  }),
70
- footer: (0, use_footer_1.useFooter)({
67
+ footer: useFooter({
71
68
  host,
72
69
  selectedItems,
73
70
  columns,
74
71
  }),
75
72
  };
76
73
  };
77
- exports.useOmnitable = useOmnitable;
78
74
  //# sourceMappingURL=use-omnitable.js.map
@@ -7,9 +7,11 @@ export function useProcessedItems({ data, columns, hashParam, sortAndGroupOption
7
7
  noLocalFilter: any;
8
8
  }): {
9
9
  processedItems: any;
10
- visibleData: any;
10
+ visibleData: any[];
11
11
  filters: any;
12
- filterFunctions: any;
13
- setFilterState: any;
12
+ filterFunctions: {
13
+ [k: string]: any;
14
+ };
15
+ setFilterState: (name: any, state: any) => any;
14
16
  };
15
17
  //# sourceMappingURL=use-processed-items.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-processed-items.d.ts","sourceRoot":"","sources":["../../src/lib/use-processed-items.js"],"names":[],"mappings":"AA+BO;;;;;;;;;;;;;EA8NN"}
1
+ {"version":3,"file":"use-processed-items.d.ts","sourceRoot":"","sources":["../../src/lib/use-processed-items.js"],"names":[],"mappings":"AA+BO;;;;;;;;;;;;;;;EA8NN"}
@@ -1,28 +1,25 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useProcessedItems = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const function_1 = require("@neovici/cosmoz-utils/function");
6
- const generic_sorter_1 = require("./generic-sorter");
7
- const use_dom_columns_1 = require("./use-dom-columns");
8
- const use_hash_state_1 = require("./use-hash-state");
9
- const utils_1 = require("./utils");
10
- const sortBy = (valueFn, descending) => (a, b) => (0, generic_sorter_1.genericSorter)(valueFn(a), valueFn(b)) * (descending ? -1 : 1), kebab = (input) => input.replace(/([a-z0-9])([A-Z])/gu, '$1-$2').toLowerCase(), notifyChanges = (column, changes) => {
1
+ import { useCallback, useEffect, useMemo } from '@pionjs/pion';
2
+ import { invoke } from '@neovici/cosmoz-utils/function';
3
+ import { genericSorter } from './generic-sorter';
4
+ import { columnSymbol } from './use-dom-columns';
5
+ import { useHashState } from './use-hash-state';
6
+ import { indexSymbol } from './utils';
7
+ const sortBy = (valueFn, descending) => (a, b) => genericSorter(valueFn(a), valueFn(b)) * (descending ? -1 : 1), kebab = (input) => input.replace(/([a-z0-9])([A-Z])/gu, '$1-$2').toLowerCase(), notifyChanges = (column, changes) => {
11
8
  if (!column || !changes) {
12
9
  return;
13
10
  }
14
11
  Object.entries(changes).forEach(([key, value]) => {
15
- column[use_dom_columns_1.columnSymbol].__ownChange = true;
16
- column[use_dom_columns_1.columnSymbol][key] = value;
17
- column[use_dom_columns_1.columnSymbol].__ownChange = false;
18
- column[use_dom_columns_1.columnSymbol].dispatchEvent(new CustomEvent(`${kebab(key)}-changed`, {
12
+ column[columnSymbol].__ownChange = true;
13
+ column[columnSymbol][key] = value;
14
+ column[columnSymbol].__ownChange = false;
15
+ column[columnSymbol].dispatchEvent(new CustomEvent(`${kebab(key)}-changed`, {
19
16
  bubbles: true,
20
17
  detail: { value },
21
18
  }));
22
19
  });
23
- }, assignIndex = (item, index) => Object.assign(item, { [utils_1.indexSymbol]: index }), unparsed = Symbol('unparsed');
24
- const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLocalSort, noLocalFilter, }) => {
25
- const { groupOnColumn, groupOnDescending, sortOnColumn, descending } = sortAndGroupOptions, write = (0, pion_1.useCallback)(([filter, value]) => {
20
+ }, assignIndex = (item, index) => Object.assign(item, { [indexSymbol]: index }), unparsed = Symbol('unparsed');
21
+ export const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLocalSort, noLocalFilter, }) => {
22
+ const { groupOnColumn, groupOnDescending, sortOnColumn, descending } = sortAndGroupOptions, write = useCallback(([filter, value]) => {
26
23
  const column = columns.find(({ name }) => name === filter);
27
24
  if (column == null) {
28
25
  return [filter, undefined];
@@ -31,7 +28,7 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
31
28
  filter,
32
29
  value.filter && column.serializeFilter(column, value.filter),
33
30
  ];
34
- }, [columns]), read = (0, pion_1.useCallback)(([filter, value]) => {
31
+ }, [columns]), read = useCallback(([filter, value]) => {
35
32
  const column = columns.find(({ name }) => name === filter);
36
33
  if (column == null) {
37
34
  return [filter, { [unparsed]: value }];
@@ -39,18 +36,18 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
39
36
  const state = { filter: column.deserializeFilter(column, value) };
40
37
  notifyChanges(column, state);
41
38
  return [filter, state];
42
- }, [columns]), [filters, setFilters] = (0, use_hash_state_1.useHashState)({}, hashParam, {
39
+ }, [columns]), [filters, setFilters] = useHashState({}, hashParam, {
43
40
  multi: true,
44
41
  suffix: '-filter--',
45
42
  write,
46
43
  read,
47
44
  }),
48
45
  // TODO: drop extra info from state
49
- setFilterState = (0, pion_1.useCallback)((name, state) => setFilters((filters) => {
50
- const newState = (0, function_1.invoke)(state, filters[name]);
46
+ setFilterState = useCallback((name, state) => setFilters((filters) => {
47
+ const newState = invoke(state, filters[name]);
51
48
  notifyChanges(columns.find((c) => c.name === name), newState);
52
49
  return { ...filters, [name]: { ...filters[name], ...newState } };
53
- }), [columns, setFilters]), filterValues = (0, pion_1.useMemo)(() => Object.values(filters).map((f) => f.filter), [filters]), filterFunctions = (0, pion_1.useMemo)(() => {
50
+ }), [columns, setFilters]), filterValues = useMemo(() => Object.values(filters).map((f) => f.filter), [filters]), filterFunctions = useMemo(() => {
54
51
  return Object.fromEntries(columns
55
52
  .map((col) => [
56
53
  col.name,
@@ -58,7 +55,7 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
58
55
  col.getFilterFn(col, filters[col.name]?.filter),
59
56
  ])
60
57
  .filter(([, fn]) => !!fn));
61
- }, [columns, ...filterValues]), filteredItems = (0, pion_1.useMemo)(() => {
58
+ }, [columns, ...filterValues]), filteredItems = useMemo(() => {
62
59
  if (!Array.isArray(data) || data.length === 0) {
63
60
  return [];
64
61
  }
@@ -68,7 +65,7 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
68
65
  return data.filter((item) => Object.values(filterFunctions).every((filterFn) => filterFn(item)));
69
66
  }, [data, filterFunctions, noLocalFilter]),
70
67
  // todo: extract function
71
- processedItems = (0, pion_1.useMemo)(() => {
68
+ processedItems = useMemo(() => {
72
69
  if (!noLocalSort &&
73
70
  !groupOnColumn &&
74
71
  sortOnColumn != null &&
@@ -110,7 +107,7 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
110
107
  sortOnColumn,
111
108
  descending,
112
109
  noLocalSort,
113
- ]), visibleData = (0, pion_1.useMemo)(() => {
110
+ ]), visibleData = useMemo(() => {
114
111
  let index = 0, groupIndex = 0;
115
112
  const result = [];
116
113
  processedItems.forEach((item) => {
@@ -129,7 +126,7 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
129
126
  }, [processedItems]);
130
127
  // parse un-parsed filter values
131
128
  // filters can be left un-parsed if a column was not defined when the URL is read
132
- (0, pion_1.useEffect)(() => {
129
+ useEffect(() => {
133
130
  setFilters((filters) => {
134
131
  const hasUnparsedFilters = Object.values(filters).some((value) => value[unparsed] != null);
135
132
  if (!hasUnparsedFilters) {
@@ -151,5 +148,4 @@ const useProcessedItems = ({ data, columns, hashParam, sortAndGroupOptions, noLo
151
148
  setFilterState,
152
149
  };
153
150
  };
154
- exports.useProcessedItems = useProcessedItems;
155
151
  //# sourceMappingURL=use-processed-items.js.map
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.usePublicInterface = void 0;
4
- const use_imperative_api_1 = require("@neovici/cosmoz-utils/hooks/use-imperative-api");
5
- const pion_1 = require("@pionjs/pion");
6
- const use_notify_property_1 = require("@neovici/cosmoz-utils/hooks/use-notify-property");
1
+ import { useImperativeApi } from '@neovici/cosmoz-utils/hooks/use-imperative-api';
2
+ import { useEffect, useMemo } from '@pionjs/pion';
3
+ import { useNotifyProperty } from '@neovici/cosmoz-utils/hooks/use-notify-property';
7
4
  const mkNapi = (host) => {
8
5
  const /**
9
6
  * Helper method to remove an item from `data`.
@@ -59,11 +56,11 @@ const mkNapi = (host) => {
59
56
  },
60
57
  };
61
58
  };
62
- const usePublicInterface = ({ host, visibleData, filters, ...api }) => {
63
- const { setFilterState } = api, napi = (0, pion_1.useMemo)(() => mkNapi(host), []);
64
- (0, use_imperative_api_1.useImperativeApi)(api, Object.values(api));
65
- (0, use_imperative_api_1.useImperativeApi)(napi, Object.values(napi));
66
- (0, pion_1.useEffect)(() => {
59
+ export const usePublicInterface = ({ host, visibleData, filters, ...api }) => {
60
+ const { setFilterState } = api, napi = useMemo(() => mkNapi(host), []);
61
+ useImperativeApi(api, Object.values(api));
62
+ useImperativeApi(napi, Object.values(napi));
63
+ useEffect(() => {
67
64
  const handler = (ev) => setFilterState(ev.detail.name, (state) => ({
68
65
  ...state,
69
66
  ...ev.detail.state,
@@ -71,16 +68,15 @@ const usePublicInterface = ({ host, visibleData, filters, ...api }) => {
71
68
  host.addEventListener('legacy-filter-changed', handler);
72
69
  return () => host.removeEventListener('legacy-filter-changed', handler);
73
70
  }, []);
74
- (0, use_notify_property_1.useNotifyProperty)('visibleData', visibleData);
75
- (0, use_notify_property_1.useNotifyProperty)('sortedFilteredGroupedItems', api.sortedFilteredGroupedItems);
76
- (0, use_notify_property_1.useNotifyProperty)('selectedItems', api.selectedItems);
77
- (0, use_notify_property_1.useNotifyProperty)('sortOn', api.sortOn);
78
- (0, use_notify_property_1.useNotifyProperty)('descending', api.descending);
79
- (0, use_notify_property_1.useNotifyProperty)('isMini', api.isMini);
80
- const filterValues = (0, pion_1.useMemo)(() => Object.fromEntries(Object.entries(filters)
71
+ useNotifyProperty('visibleData', visibleData);
72
+ useNotifyProperty('sortedFilteredGroupedItems', api.sortedFilteredGroupedItems);
73
+ useNotifyProperty('selectedItems', api.selectedItems);
74
+ useNotifyProperty('sortOn', api.sortOn);
75
+ useNotifyProperty('descending', api.descending);
76
+ useNotifyProperty('isMini', api.isMini);
77
+ const filterValues = useMemo(() => Object.fromEntries(Object.entries(filters)
81
78
  .filter(([, { filter }]) => filter !== undefined)
82
79
  .map(([key, { filter }]) => [key, filter])), [filters]);
83
- (0, use_notify_property_1.useNotifyProperty)('filters', filterValues, Object.values(filterValues));
80
+ useNotifyProperty('filters', filterValues, Object.values(filterValues));
84
81
  };
85
- exports.usePublicInterface = usePublicInterface;
86
82
  //# sourceMappingURL=use-public-interface.js.map
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useResizableColumns = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const useResizableColumns = ({ host, canvasWidth, layout, setSettings, }) => {
6
- const onColumnResizeRef = (0, pion_1.useRef)();
1
+ import { useEffect, useRef } from '@pionjs/pion';
2
+ export const useResizableColumns = ({ host, canvasWidth, layout, setSettings, }) => {
3
+ const onColumnResizeRef = useRef();
7
4
  onColumnResizeRef.current = (ev) => setSettings((settings) => {
8
5
  const config = settings.columns, { detail: { newWidth, column }, } = ev, columnIndex = config.findIndex((c) => c.name === column.name), newConfig = [], maxPriority = config.reduce((p, c) => Math.max(p, c.priority), -Infinity);
9
6
  for (let i = 0; i < layout.length; i++) {
@@ -32,11 +29,10 @@ const useResizableColumns = ({ host, canvasWidth, layout, setSettings, }) => {
32
29
  }
33
30
  return { ...settings, columns: newConfig };
34
31
  });
35
- (0, pion_1.useEffect)(() => {
32
+ useEffect(() => {
36
33
  const handler = (ev) => onColumnResizeRef.current(ev);
37
34
  host.addEventListener('column-resize', handler);
38
35
  return () => host.removeEventListener('column-resize', handler);
39
36
  }, []);
40
37
  };
41
- exports.useResizableColumns = useResizableColumns;
42
38
  //# sourceMappingURL=use-resizable-columns.js.map
@@ -1,3 +1,26 @@
1
- export function useSortAndGroupOptions(columns: any, hashParam: any, settings: any, setSettings: any, resetRef: any): any;
2
- export const SortAndGroupContext: any;
1
+ export function useSortAndGroupOptions(columns: any, hashParam: any, settings: any, setSettings: any, resetRef: any): {
2
+ sortAndGroup: {
3
+ groupOn: any;
4
+ setGroupOn: (value: any) => void;
5
+ groupOnDescending: any;
6
+ setGroupOnDescending: (value: any) => void;
7
+ sortOn: any;
8
+ setSortOn: (value: any) => void;
9
+ descending: any;
10
+ setDescending: (value: any) => void;
11
+ columns: any;
12
+ };
13
+ groupOnColumn: any;
14
+ sortOnColumn: any;
15
+ groupOn: any;
16
+ setGroupOn: (value: any) => void;
17
+ groupOnDescending: any;
18
+ setGroupOnDescending: (value: any) => void;
19
+ sortOn: any;
20
+ setSortOn: (value: any) => void;
21
+ descending: any;
22
+ setDescending: (value: any) => void;
23
+ columns: any;
24
+ };
25
+ export const SortAndGroupContext: import("@pionjs/pion/lib/create-context").Context<any>;
3
26
  //# sourceMappingURL=use-sort-and-group-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-sort-and-group-options.d.ts","sourceRoot":"","sources":["../../src/lib/use-sort-and-group-options.js"],"names":[],"mappings":"AAqBO,0HAiE+B;AAArC,sCAAqC"}
1
+ {"version":3,"file":"use-sort-and-group-options.d.ts","sourceRoot":"","sources":["../../src/lib/use-sort-and-group-options.js"],"names":[],"mappings":"AAqBO;;;;;;;;;;;;;;;;;;;;;;;EAiE+B;AAArC,yFAAqC"}
@@ -1,18 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SortAndGroupContext = exports.useSortAndGroupOptions = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const use_hash_state_1 = require("./use-hash-state");
6
- const parseBool = (bool) => [true, 'true', 1, 'yes', 'on'].includes(bool), boolParam = (p) => p === '' || (p == null ? undefined : parseBool(p)), useSettingsState = (setter, name, setSettings) => (0, pion_1.useCallback)((value) => {
1
+ import { useMemo, createContext, component, useContext, useCallback, useEffect, } from '@pionjs/pion';
2
+ import { useHashState } from './use-hash-state';
3
+ const parseBool = (bool) => [true, 'true', 1, 'yes', 'on'].includes(bool), boolParam = (p) => p === '' || (p == null ? undefined : parseBool(p)), useSettingsState = (setter, name, setSettings) => useCallback((value) => {
7
4
  setter(value);
8
5
  setSettings((s) => ({ ...s, [name]: value }));
9
6
  }, [setter, name, setSettings]);
10
- const useSortAndGroupOptions = (columns, hashParam, settings, setSettings, resetRef) => {
11
- const [sortOn, setSortOn] = (0, use_hash_state_1.useHashState)(settings.sortOn, hashParam, {
7
+ export const useSortAndGroupOptions = (columns, hashParam, settings, setSettings, resetRef) => {
8
+ const [sortOn, setSortOn] = useHashState(settings.sortOn, hashParam, {
12
9
  suffix: '-sortOn',
13
- }), [descending, setDescending] = (0, use_hash_state_1.useHashState)(boolParam(settings.descending), hashParam, { suffix: '-descending', read: boolParam }), [groupOn, setGroupOn] = (0, use_hash_state_1.useHashState)(settings.groupOn, hashParam, {
10
+ }), [descending, setDescending] = useHashState(boolParam(settings.descending), hashParam, { suffix: '-descending', read: boolParam }), [groupOn, setGroupOn] = useHashState(settings.groupOn, hashParam, {
14
11
  suffix: '-groupOn',
15
- }), [groupOnDescending, setGroupOnDescending] = (0, use_hash_state_1.useHashState)(boolParam(settings.groupOnDescending), hashParam, { suffix: '-groupOnDescending', read: boolParam }), sortOnColumn = (0, pion_1.useMemo)(() => columns.find((column) => column.name === sortOn), [columns, sortOn]), groupOnColumn = (0, pion_1.useMemo)(() => columns.find((column) => column.name === groupOn), [columns, groupOn]), sortAndGroup_ = {
12
+ }), [groupOnDescending, setGroupOnDescending] = useHashState(boolParam(settings.groupOnDescending), hashParam, { suffix: '-groupOnDescending', read: boolParam }), sortOnColumn = useMemo(() => columns.find((column) => column.name === sortOn), [columns, sortOn]), groupOnColumn = useMemo(() => columns.find((column) => column.name === groupOn), [columns, groupOn]), sortAndGroup_ = {
16
13
  groupOn,
17
14
  setGroupOn: useSettingsState(setGroupOn, 'groupOn', setSettings),
18
15
  groupOnDescending,
@@ -22,19 +19,18 @@ const useSortAndGroupOptions = (columns, hashParam, settings, setSettings, reset
22
19
  descending,
23
20
  setDescending: useSettingsState(setDescending, 'descending', setSettings),
24
21
  columns,
25
- }, sortAndGroup = (0, pion_1.useMemo)(() => sortAndGroup_, Object.values(sortAndGroup_)), setSG = (0, pion_1.useCallback)((c) => {
22
+ }, sortAndGroup = useMemo(() => sortAndGroup_, Object.values(sortAndGroup_)), setSG = useCallback((c) => {
26
23
  setSortOn(c.sortOn);
27
24
  setGroupOn(c.groupOn);
28
25
  setDescending(c.descending);
29
26
  setGroupOnDescending(c.groupOnDescending);
30
27
  }, []);
31
28
  // eslint-disable-next-line no-void
32
- (0, pion_1.useEffect)(() => void (resetRef.current = setSG), []);
29
+ useEffect(() => void (resetRef.current = setSG), []);
33
30
  return { ...sortAndGroup, sortAndGroup, groupOnColumn, sortOnColumn };
34
- };
35
- exports.useSortAndGroupOptions = useSortAndGroupOptions, exports.SortAndGroupContext = (0, pion_1.createContext)();
36
- customElements.define('sort-and-group-provider', exports.SortAndGroupContext.Provider);
37
- customElements.define('sort-and-group-consumer', (0, pion_1.component)(({ render }) => render((0, pion_1.useContext)(exports.SortAndGroupContext)), {
31
+ }, SortAndGroupContext = createContext();
32
+ customElements.define('sort-and-group-provider', SortAndGroupContext.Provider);
33
+ customElements.define('sort-and-group-consumer', component(({ render }) => render(useContext(SortAndGroupContext)), {
38
34
  useShadowDOM: false,
39
35
  }));
40
36
  //# sourceMappingURL=use-sort-and-group-options.js.map
@@ -1,2 +1,2 @@
1
- export function useTrackSize(host: any, setCanvasWidth: any): any;
1
+ export function useTrackSize(host: any, setCanvasWidth: any): void;
2
2
  //# sourceMappingURL=use-track-size.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-track-size.d.ts","sourceRoot":"","sources":["../../src/lib/use-track-size.js"],"names":[],"mappings":"AAEO,kEAoBA"}
1
+ {"version":3,"file":"use-track-size.d.ts","sourceRoot":"","sources":["../../src/lib/use-track-size.js"],"names":[],"mappings":"AAEO,mEAoBA"}
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useTrackSize = void 0;
4
- const pion_1 = require("@pionjs/pion");
5
- const useTrackSize = (host, setCanvasWidth) => (0, pion_1.useEffect)(() => {
1
+ import { useEffect } from '@pionjs/pion';
2
+ export const useTrackSize = (host, setCanvasWidth) => useEffect(() => {
6
3
  const onResize = ([entry]) => {
7
4
  if (entry.contentRect?.width === 0) {
8
5
  return;
@@ -15,5 +12,4 @@ const useTrackSize = (host, setCanvasWidth) => (0, pion_1.useEffect)(() => {
15
12
  observer.observe(host);
16
13
  return () => observer.unobserve(host);
17
14
  }, []);
18
- exports.useTrackSize = useTrackSize;
19
15
  //# sourceMappingURL=use-track-size.js.map