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