@neovici/cosmoz-queue 1.0.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 (143) hide show
  1. package/README.md +3 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +1 -0
  5. package/dist/queue/actions/index.d.ts +22 -0
  6. package/dist/queue/actions/index.d.ts.map +1 -0
  7. package/dist/queue/actions/index.js +20 -0
  8. package/dist/queue/icon.d.ts +2 -0
  9. package/dist/queue/icon.d.ts.map +1 -0
  10. package/dist/queue/icon.js +12 -0
  11. package/dist/queue/icons.d.ts +4 -0
  12. package/dist/queue/icons.d.ts.map +1 -0
  13. package/dist/queue/icons.js +61 -0
  14. package/dist/queue/index.d.ts +8 -0
  15. package/dist/queue/index.d.ts.map +1 -0
  16. package/dist/queue/index.js +5 -0
  17. package/dist/queue/item-click.d.ts +5 -0
  18. package/dist/queue/item-click.d.ts.map +1 -0
  19. package/dist/queue/item-click.js +15 -0
  20. package/dist/queue/list-core/column.d.ts +34 -0
  21. package/dist/queue/list-core/column.d.ts.map +1 -0
  22. package/dist/queue/list-core/column.js +10 -0
  23. package/dist/queue/list-core/index.d.ts +7 -0
  24. package/dist/queue/list-core/index.d.ts.map +1 -0
  25. package/dist/queue/list-core/index.js +6 -0
  26. package/dist/queue/list-core/list-core.d.ts +6 -0
  27. package/dist/queue/list-core/list-core.d.ts.map +1 -0
  28. package/dist/queue/list-core/list-core.js +6 -0
  29. package/dist/queue/list-core/render-generic-actions.d.ts +4 -0
  30. package/dist/queue/list-core/render-generic-actions.d.ts.map +1 -0
  31. package/dist/queue/list-core/render-generic-actions.js +14 -0
  32. package/dist/queue/list-core/render-list-core.d.ts +18 -0
  33. package/dist/queue/list-core/render-list-core.d.ts.map +1 -0
  34. package/dist/queue/list-core/render-list-core.js +42 -0
  35. package/dist/queue/list-core/style.css.d.ts +2 -0
  36. package/dist/queue/list-core/style.css.d.ts.map +1 -0
  37. package/dist/queue/list-core/style.css.js +20 -0
  38. package/dist/queue/list-core/use-inline-actions.d.ts +4 -0
  39. package/dist/queue/list-core/use-inline-actions.d.ts.map +1 -0
  40. package/dist/queue/list-core/use-inline-actions.js +10 -0
  41. package/dist/queue/list-core/use-list-core.d.ts +34 -0
  42. package/dist/queue/list-core/use-list-core.d.ts.map +1 -0
  43. package/dist/queue/list-core/use-list-core.js +36 -0
  44. package/dist/queue/list-core/use-list-state.d.ts +24 -0
  45. package/dist/queue/list-core/use-list-state.d.ts.map +1 -0
  46. package/dist/queue/list-core/use-list-state.js +25 -0
  47. package/dist/queue/list-core/use-more.d.ts +23 -0
  48. package/dist/queue/list-core/use-more.d.ts.map +1 -0
  49. package/dist/queue/list-core/use-more.js +41 -0
  50. package/dist/queue/omnitable.d.ts +19 -0
  51. package/dist/queue/omnitable.d.ts.map +1 -0
  52. package/dist/queue/omnitable.js +31 -0
  53. package/dist/queue/pagination.d.ts +5 -0
  54. package/dist/queue/pagination.d.ts.map +1 -0
  55. package/dist/queue/pagination.js +10 -0
  56. package/dist/queue/queue.d.ts +24 -0
  57. package/dist/queue/queue.d.ts.map +1 -0
  58. package/dist/queue/queue.js +58 -0
  59. package/dist/queue/render.d.ts +74 -0
  60. package/dist/queue/render.d.ts.map +1 -0
  61. package/dist/queue/render.js +134 -0
  62. package/dist/queue/style.d.ts +7 -0
  63. package/dist/queue/style.d.ts.map +1 -0
  64. package/dist/queue/style.js +182 -0
  65. package/dist/queue/test/__snapshots__/render.test.snap.d.ts +2 -0
  66. package/dist/queue/test/__snapshots__/render.test.snap.d.ts.map +1 -0
  67. package/dist/queue/test/__snapshots__/render.test.snap.js +64 -0
  68. package/dist/queue/test/item-click.test.d.ts +2 -0
  69. package/dist/queue/test/item-click.test.d.ts.map +1 -0
  70. package/dist/queue/test/item-click.test.js +28 -0
  71. package/dist/queue/test/render.test.d.ts +2 -0
  72. package/dist/queue/test/render.test.d.ts.map +1 -0
  73. package/dist/queue/test/render.test.js +27 -0
  74. package/dist/queue/test/use-pref.test.d.ts +2 -0
  75. package/dist/queue/test/use-pref.test.d.ts.map +1 -0
  76. package/dist/queue/test/use-pref.test.js +16 -0
  77. package/dist/queue/types.d.ts +10 -0
  78. package/dist/queue/types.d.ts.map +1 -0
  79. package/dist/queue/types.js +1 -0
  80. package/dist/queue/use-async-action.d.ts +15 -0
  81. package/dist/queue/use-async-action.d.ts.map +1 -0
  82. package/dist/queue/use-async-action.js +17 -0
  83. package/dist/queue/use-data-nav.d.ts +20 -0
  84. package/dist/queue/use-data-nav.d.ts.map +1 -0
  85. package/dist/queue/use-data-nav.js +59 -0
  86. package/dist/queue/use-data-service.d.ts +31 -0
  87. package/dist/queue/use-data-service.d.ts.map +1 -0
  88. package/dist/queue/use-data-service.js +26 -0
  89. package/dist/queue/use-fetch-actions.d.ts +42 -0
  90. package/dist/queue/use-fetch-actions.d.ts.map +1 -0
  91. package/dist/queue/use-fetch-actions.js +38 -0
  92. package/dist/queue/use-key-nav.d.ts +8 -0
  93. package/dist/queue/use-key-nav.d.ts.map +1 -0
  94. package/dist/queue/use-key-nav.js +49 -0
  95. package/dist/queue/use-list-sse.d.ts +42 -0
  96. package/dist/queue/use-list-sse.d.ts.map +1 -0
  97. package/dist/queue/use-list-sse.js +82 -0
  98. package/dist/queue/use-list.d.ts +33 -0
  99. package/dist/queue/use-list.d.ts.map +1 -0
  100. package/dist/queue/use-list.js +42 -0
  101. package/dist/queue/use-pref.d.ts +5 -0
  102. package/dist/queue/use-pref.d.ts.map +1 -0
  103. package/dist/queue/use-pref.js +11 -0
  104. package/dist/queue/use-queue.d.ts +132 -0
  105. package/dist/queue/use-queue.d.ts.map +1 -0
  106. package/dist/queue/use-queue.js +69 -0
  107. package/dist/queue/use-split.d.ts +8 -0
  108. package/dist/queue/use-split.d.ts.map +1 -0
  109. package/dist/queue/use-split.js +30 -0
  110. package/dist/queue/use-tabs.d.ts +54 -0
  111. package/dist/queue/use-tabs.d.ts.map +1 -0
  112. package/dist/queue/use-tabs.js +31 -0
  113. package/dist/queue/use-updates.d.ts +9 -0
  114. package/dist/queue/use-updates.d.ts.map +1 -0
  115. package/dist/queue/use-updates.js +17 -0
  116. package/dist/queue/util.d.ts +4 -0
  117. package/dist/queue/util.d.ts.map +1 -0
  118. package/dist/queue/util.js +16 -0
  119. package/dist/types/dialogable.d.ts +39 -0
  120. package/dist/types/dialogable.d.ts.map +1 -0
  121. package/dist/types/dialogable.js +5 -0
  122. package/dist/types/performable.d.ts +5 -0
  123. package/dist/types/performable.d.ts.map +1 -0
  124. package/dist/types/performable.js +1 -0
  125. package/dist/util/dom/active-element.d.ts +3 -0
  126. package/dist/util/dom/active-element.d.ts.map +1 -0
  127. package/dist/util/dom/active-element.js +11 -0
  128. package/dist/util/fetch/fetch.d.ts +41 -0
  129. package/dist/util/fetch/fetch.d.ts.map +1 -0
  130. package/dist/util/fetch/fetch.js +74 -0
  131. package/dist/util/fetch/url.d.ts +30 -0
  132. package/dist/util/fetch/url.d.ts.map +1 -0
  133. package/dist/util/fetch/url.js +29 -0
  134. package/dist/util/path.d.ts +42 -0
  135. package/dist/util/path.d.ts.map +1 -0
  136. package/dist/util/path.js +68 -0
  137. package/dist/util/polymer-property-changed-event.d.ts +6 -0
  138. package/dist/util/polymer-property-changed-event.d.ts.map +1 -0
  139. package/dist/util/polymer-property-changed-event.js +27 -0
  140. package/dist/util/test/path.test.d.ts +2 -0
  141. package/dist/util/test/path.test.d.ts.map +1 -0
  142. package/dist/util/test/path.test.js +99 -0
  143. package/package.json +113 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # cosmoz-queue
2
+
3
+ A pionjs component
@@ -0,0 +1,2 @@
1
+ export * from './queue';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './queue';
@@ -0,0 +1,22 @@
1
+ import type { Dialogable } from '../../types/dialogable.js';
2
+ import { nothing } from 'lit-html';
3
+ export declare const actionCount: <T>(items: T[], applicableItems?: T[]) => import("lit-html").TemplateResult<1> | undefined;
4
+ export interface ActionOpts<TItem extends object> {
5
+ items: TItem[];
6
+ open: <T extends object>(dialog: Dialogable<T>) => void;
7
+ slot?: string;
8
+ }
9
+ export interface DialogOpts<TItem extends object> {
10
+ items: TItem[];
11
+ title: string;
12
+ }
13
+ export interface Action<TItem extends object, TDialog extends object = object> {
14
+ title: () => string;
15
+ applicable?: (item: TItem) => boolean;
16
+ button?: (opts: Action<TItem, TDialog> & ActionOpts<TItem>) => unknown;
17
+ dialog: (opts: Omit<Action<TItem, TDialog>, 'title'> & DialogOpts<TItem>) => Dialogable<TDialog> | Promise<Dialogable<TDialog>>;
18
+ }
19
+ export declare const defaultButton: <TItem extends object, TDialog extends object = object>(opts: Action<TItem, TDialog> & ActionOpts<TItem>) => import("lit-html").TemplateResult<1> | typeof nothing;
20
+ export declare const action: <TItem extends object, TAction extends object>(action: Action<TItem, TAction>) => Action<TItem, TAction>;
21
+ export declare const renderActions: <TItem extends object, TDialog extends object = object>(opts: ActionOpts<TItem>) => (actions: Action<TItem, TDialog>[]) => unknown[];
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/queue/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAQ,OAAO,EAAE,MAAM,UAAU,CAAC;AAIzC,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,kBAAiB,CAAC,EAAU,qDAOrE,CAAC;AAEH,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,MAAM;IAC/C,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU,CAAC,KAAK,SAAS,MAAM;IAC/C,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,MAAM,CAAC,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM;IAC5E,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;IACvE,MAAM,EAAE,CACP,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,KAC3D,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;CACxD;AAED,eAAO,MAAM,aAAa,GACzB,KAAK,SAAS,MAAM,EACpB,OAAO,SAAS,MAAM,GAAG,MAAM,EAE/B,MAAM,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,0DAchD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,EAClE,QAAQ,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,2BACpB,CAAC;AAEZ,eAAO,MAAM,aAAa,GACxB,KAAK,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,EACrD,MAAM,UAAU,CAAC,KAAK,CAAC,MAEvB,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAGhC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { html, nothing } from 'lit-html';
2
+ import { ifDefined } from 'lit-html/directives/if-defined.js';
3
+ import { when } from 'lit-html/directives/when.js';
4
+ export const actionCount = (items, applicableItems = items) => when(applicableItems.length > 1, () => when(applicableItems.length === items.length, () => html `(${applicableItems.length})`, () => html `(${applicableItems.length}/${items.length})`));
5
+ export const defaultButton = (opts) => {
6
+ const { open, dialog, items, applicable, slot } = opts;
7
+ const title = opts.title();
8
+ const applicableItems = applicable ? items.filter(applicable) : items;
9
+ if (!applicableItems.length)
10
+ return nothing;
11
+ return html `<button
12
+ class="button"
13
+ slot="${ifDefined(slot)}"
14
+ @click=${async () => open(await dialog({ ...opts, items: applicableItems, title }))}
15
+ >
16
+ ${title} ${actionCount(items, applicableItems)}
17
+ </button>`;
18
+ };
19
+ export const action = (action) => action;
20
+ export const renderActions = (opts) => (actions) => actions.map((action) => (action.button ?? defaultButton)({ ...action, ...opts }));
@@ -0,0 +1,2 @@
1
+ export declare const arrow: import("lit-html").TemplateResult<1>;
2
+ //# sourceMappingURL=icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../src/queue/icon.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,sCAUjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { html } from 'lit-html';
2
+ export const arrow = html `
3
+ <svg
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="6"
6
+ height="10"
7
+ fill="none"
8
+ viewBox="0 0 6 10"
9
+ >
10
+ <path stroke="currentColor" stroke-linecap="round" d="m1 9 4-4-4-4" />
11
+ </svg>
12
+ `;
@@ -0,0 +1,4 @@
1
+ export declare const list: import("lit-html").TemplateResult<1>;
2
+ export declare const queue: import("lit-html").TemplateResult<1>;
3
+ export declare const split: import("lit-html").TemplateResult<1>;
4
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/queue/icons.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,sCAcV,CAAC;AAER,eAAO,MAAM,KAAK,sCAgBjB,CAAC;AAEF,eAAO,MAAM,KAAK,sCA2BjB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { html } from 'lit-html';
2
+ export const list = html ` <svg
3
+ width="18"
4
+ height="14"
5
+ viewBox="0 0 18 14"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ xmlns="http://www.w3.org/2000/svg"
9
+ >
10
+ <path
11
+ d="M1 2C1 1.44772 1.44772 1 2 1H16C16.5523 1 17 1.44772 17 2V4.57143C17 5.12371 16.5523 5.57143 16 5.57143H2C1.44772 5.57143 1 5.12371 1 4.57143V2Z"
12
+ stroke-width="1.5"
13
+ />
14
+ <line x1="1" y1="9.39288" x2="17" y2="9.39288" stroke-width="1.5" />
15
+ <line x1="1" y1="12.8214" x2="17" y2="12.8214" stroke-width="1.5" />
16
+ </svg>`;
17
+ export const queue = html `
18
+ <svg
19
+ width="22"
20
+ height="16"
21
+ viewBox="0 0 22 16"
22
+ fill="none"
23
+ stroke="currentColor"
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ >
26
+ <rect x="5.44409" y="1" width="11.1111" height="14" stroke-width="1.5" />
27
+ <path d="M18.7776 3.3335H20.9998V12.6668H18.7776" stroke-width="1.5" />
28
+ <path
29
+ d="M3.22217 12.6665L0.999946 12.6665L0.999947 3.33317L3.22217 3.33317"
30
+ stroke-width="1.5"
31
+ />
32
+ </svg>
33
+ `;
34
+ export const split = html `
35
+ <svg
36
+ width="19"
37
+ height="14"
38
+ viewBox="0 0 19 14"
39
+ fill="none"
40
+ stroke="currentColor"
41
+ xmlns="http://www.w3.org/2000/svg"
42
+ >
43
+ <rect x="10" y="1" width="8" height="12" stroke-width="1.5" />
44
+ <line
45
+ x1="7"
46
+ y1="12.1787"
47
+ x2="4.15643e-07"
48
+ y2="12.1787"
49
+ stroke-width="1.5"
50
+ />
51
+ <line x1="7" y1="8.75" x2="4.15643e-07" y2="8.75" stroke-width="1.5" />
52
+ <line
53
+ x1="7"
54
+ y1="5.17871"
55
+ x2="4.15643e-07"
56
+ y2="5.17871"
57
+ stroke-width="1.5"
58
+ />
59
+ <line x1="7" y1="1.75" x2="4.15643e-07" y2="1.75" stroke-width="1.5" />
60
+ </svg>
61
+ `;
@@ -0,0 +1,8 @@
1
+ export { default as useQueue } from './use-queue';
2
+ export { default as useDataService } from './use-data-service';
3
+ export { default as useAsyncAction } from './use-async-action';
4
+ export { touch } from './util';
5
+ export * from './render';
6
+ export type * from './types';
7
+ export type * from './use-queue';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,cAAc,UAAU,CAAC;AAEzB,mBAAmB,SAAS,CAAC;AAC7B,mBAAmB,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { default as useQueue } from './use-queue';
2
+ export { default as useDataService } from './use-data-service';
3
+ export { default as useAsyncAction } from './use-async-action';
4
+ export { touch } from './util';
5
+ export * from './render';
@@ -0,0 +1,5 @@
1
+ export declare const itemClick: ({ index, activate }: {
2
+ index: number;
3
+ activate: string | string[];
4
+ }) => <E extends KeyboardEvent | MouseEvent>(e: E) => void;
5
+ //# sourceMappingURL=item-click.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item-click.d.ts","sourceRoot":"","sources":["../../src/queue/item-click.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GACpB,qBAAqB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,MACnE,CAAC,SAAS,aAAa,GAAG,UAAU,EAAE,GAAG,CAAC,SAe1C,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const itemClick = ({ index, activate }) => (e) => {
2
+ if (e.ctrlKey || e.metaKey) {
3
+ return;
4
+ }
5
+ const clickEvent = new CustomEvent('omnitable-item-click', {
6
+ cancelable: true,
7
+ bubbles: true,
8
+ composed: true,
9
+ detail: { index, activate },
10
+ });
11
+ e.currentTarget?.dispatchEvent(clickEvent);
12
+ if (clickEvent.defaultPrevented) {
13
+ e.preventDefault();
14
+ }
15
+ };
@@ -0,0 +1,34 @@
1
+ import { LitRenderable } from '#cz/types/lit.ts';
2
+ export interface Render<T> {
3
+ (spec: T & {
4
+ name: string;
5
+ }): LitRenderable;
6
+ }
7
+ export interface Column<F, R = F> {
8
+ readonly order?: number;
9
+ readonly sort?: string;
10
+ readonly filter?: (f: F) => R;
11
+ readonly render: Render<Omit<Column<F, R>, 'render' | 'name' | 'filter'>>;
12
+ }
13
+ export interface NamedColumn<F, R> extends Column<F, R> {
14
+ name: string;
15
+ }
16
+ export type Columns<F = object> = {
17
+ [K in keyof F]: Column<F[K]>;
18
+ };
19
+ export declare const column: <F = never, R = F>(spec: Column<F, R>) => Column<F, R>;
20
+ type InferFilter<T> = T extends Column<infer F, any> ? F : never;
21
+ export type ColumnFilters<T> = T extends object ? {
22
+ [K in keyof T as InferFilter<T[K]> extends never ? never : K]?: InferFilter<T[K]>;
23
+ } : never;
24
+ type InferFilterResult<T> = T extends Column<any, infer F> ? F : never;
25
+ export type ColumnFilterResults<T> = T extends object ? {
26
+ [K in keyof T as InferFilterResult<T[K]> extends never ? never : K]: InferFilterResult<T[K]>;
27
+ } : never;
28
+ export type ColumnNames<T> = T extends object ? keyof T : never;
29
+ type Values<T> = T extends object ? T[keyof T][] : never;
30
+ export declare const mappedFilters: <T, C extends Columns<T>>(columns: C, filters?: ColumnFilters<C>) => Values<ColumnFilterResults<C>>;
31
+ type Unarray<T> = T extends readonly (infer E)[] ? (E extends readonly (infer B)[] ? B : E)[] : never;
32
+ export declare const flat: <T extends unknown[]>(arr: T) => Unarray<T>;
33
+ export {};
34
+ //# sourceMappingURL=column.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/column.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export const column = (spec) => spec;
2
+ export const mappedFilters = (columns, filters) => Object.entries(columns)
3
+ .map(([name, column]) => {
4
+ const filterValue = filters?.[name];
5
+ const filter = column.filter;
6
+ if (filter && filterValue != null)
7
+ return filter(filterValue);
8
+ })
9
+ .filter((v) => v != null);
10
+ export const flat = (arr) => arr.flat();
@@ -0,0 +1,7 @@
1
+ export * from './column';
2
+ export * from './list-core';
3
+ export * from './render-list-core';
4
+ export * from './style.css';
5
+ export * from './use-inline-actions';
6
+ export * from './use-list-core';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './column';
2
+ export * from './list-core';
3
+ export * from './render-list-core';
4
+ export * from './style.css';
5
+ export * from './use-inline-actions';
6
+ export * from './use-list-core';
@@ -0,0 +1,6 @@
1
+ import type { Columns } from './column';
2
+ import { RenderListCoreProps } from './render-list-core';
3
+ import { UseListCore } from './use-list-core';
4
+ export type ListCore<TColumns extends Columns, TParams extends object, TItem extends object> = UseListCore<TColumns, TParams, TItem> & RenderListCoreProps<TItem>;
5
+ export declare const listCore: <TColumns extends Columns, TParams extends object, TItem extends object>(props: ListCore<TColumns, TParams, TItem>) => import("@neovici/cosmoz-form").Renderable[];
6
+ //# sourceMappingURL=list-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-core.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/list-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAkB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAe,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,MAAM,QAAQ,CACnB,QAAQ,SAAS,OAAO,EACxB,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,IACjB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAEvE,eAAO,MAAM,QAAQ,GACpB,QAAQ,SAAS,OAAO,EACxB,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,EAEpB,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,gDAIzC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { renderListCore } from './render-list-core';
2
+ import { useListCore } from './use-list-core';
3
+ export const listCore = (props) => {
4
+ const list = useListCore(props);
5
+ return renderListCore({ ...props, ...list });
6
+ };
@@ -0,0 +1,4 @@
1
+ import { RowAction } from '#cz/cz-components/cz-actions';
2
+ import '@neovici/cosmoz-omnitable';
3
+ export declare const renderGenericActions: (genericActions$: Promise<RowAction[]>, slot?: string) => any;
4
+ //# sourceMappingURL=render-generic-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-generic-actions.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/render-generic-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,2BAA2B,CAAC;AAcnC,eAAO,MAAM,oBAAoB,GAChC,iBAAiB,OAAO,CAAC,SAAS,EAAE,CAAC,EACrC,aAAS,QAUR,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { czAction } from '#cz/cz-components/cz-actions';
2
+ import { errorIcon } from '#cz/cz-components/cz-attachments/icons/error.ts';
3
+ import '@neovici/cosmoz-omnitable';
4
+ import { html } from 'lit-html';
5
+ import { extract } from '../../utils';
6
+ const renderRowActions = (slot) => (rowActions) => rowActions.map(({ title, ids = {}, action }) => czAction({
7
+ slot,
8
+ action,
9
+ actionTitle: title,
10
+ objectIds: ids,
11
+ }));
12
+ export const renderGenericActions = (genericActions$, slot = '') => extract(genericActions$, renderRowActions(slot), () => html `<cosmoz-spinner slot="${slot}" unstyled></cosmoz-spinner>`, (e) => html `<span slot="${slot}" unstyled style="background: transparent"
13
+ >${errorIcon({ title: e.message ?? e })}</span
14
+ >`);
@@ -0,0 +1,18 @@
1
+ import '@neovici/cosmoz-omnitable';
2
+ import { Action } from '../actions';
3
+ import type { Columns } from './column';
4
+ import { UseListCoreResult } from './use-list-core';
5
+ export interface RenderListCoreProps<TItem extends object> {
6
+ settingsId: string;
7
+ exposedParts?: string;
8
+ hashParam?: string;
9
+ csvFilename?: string;
10
+ enabledColumns?: string[];
11
+ noLocal?: boolean;
12
+ actions?: Action<TItem, any>[];
13
+ }
14
+ export interface RenderListCore<TColumns extends Columns, TItem extends object> extends UseListCoreResult<TColumns, TItem>, RenderListCoreProps<TItem> {
15
+ }
16
+ export declare const renderColumns: <T extends Columns>(columns: T) => LitRenderable[];
17
+ export declare const renderListCore: <TColumns extends Columns, TItem extends object>({ settingsId, hashParam, enabledColumns, csvFilename, exposedParts, data$, noLocal, sortOn, setSortOn, descending, setDescending, groupOn, setGroupOn, selectedItems, setSelectedItems, setVisibleItems, setFilters, columns, actions, dialog, open, genericActions$, loadMore, }: RenderListCore<TColumns, TItem>) => import("@neovici/cosmoz-form").Renderable[];
18
+ //# sourceMappingURL=render-list-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-list-core.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/render-list-core.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAC;AAOnC,OAAO,EAAE,MAAM,EAAiB,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,mBAAmB,CAAC,KAAK,SAAS,MAAM;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,OAAO,EAAE,KAAK,SAAS,MAAM,CAC7E,SAAQ,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC;CAAG;AAE1E,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,OAAO,EAAE,SAAS,CAAC,oBAGzD,CAAC;AAEH,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,OAAO,EAAE,KAAK,SAAS,MAAM,EAAE,mRA6B5E,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,gDA0CjC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { renderLoadMore } from '#cz/render/load-more.ts';
2
+ import '@neovici/cosmoz-omnitable';
3
+ import { formDialog } from '@neovici/cosmoz-form';
4
+ import { lift } from '@pionjs/pion';
5
+ import { html } from 'lit-html';
6
+ import { guard } from 'lit-html/directives/guard.js';
7
+ import { until } from 'lit-html/directives/until.js';
8
+ import { when } from 'lit-html/directives/when.js';
9
+ import { renderActions } from '../actions';
10
+ import { renderGenericActions } from './render-generic-actions';
11
+ export const renderColumns = (columns) => Object.entries(columns).map(([name, column]) => column.render({ ...column, name }));
12
+ export const renderListCore = ({ settingsId, hashParam, enabledColumns, csvFilename, exposedParts, data$, noLocal = true, sortOn, setSortOn, descending, setDescending, groupOn, setGroupOn, selectedItems, setSelectedItems, setVisibleItems, setFilters, columns, actions, dialog, open, genericActions$, loadMore, }) => [
13
+ html `<cosmoz-omnitable
14
+ id="omnitable"
15
+ ?no-local=${noLocal}
16
+ .hashParam=${hashParam}
17
+ .data=${until(data$)}
18
+ .csvFilename=${csvFilename}
19
+ .enabledColumns=${enabledColumns}
20
+ ?loading=${until(Promise.resolve(data$).then(() => false, () => false), true)}
21
+ .compareItemsFn=${guard([], () => (a, b) => a.id === b.id)}
22
+ .settingsId=${settingsId}
23
+ exportparts=${exposedParts}
24
+ @visible-data-changed=${lift(setVisibleItems)}
25
+ @filters-changed=${lift(setFilters)}
26
+ .selectedItems=${selectedItems}
27
+ @selected-items-changed=${lift(setSelectedItems)}
28
+ .groupOn=${groupOn}
29
+ @group-on-changed=${lift(setGroupOn)}
30
+ .sortOn=${sortOn}
31
+ @sort-on-changed=${lift(setSortOn)}
32
+ descending=${descending}
33
+ @descending-changed=${lift(setDescending)}
34
+ >${[
35
+ renderColumns(columns),
36
+ when(actions, renderActions({ open, items: selectedItems, slot: 'actions' })),
37
+ renderGenericActions(genericActions$, 'actions'),
38
+ renderLoadMore({ data$, onMore: loadMore }),
39
+ ]}</cosmoz-omnitable
40
+ >`,
41
+ formDialog(dialog),
42
+ ];
@@ -0,0 +1,2 @@
1
+ export declare const style: string;
2
+ //# sourceMappingURL=style.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.css.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/style.css.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,KAAK,QAejB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { loadMoreStyle } from '#cz/render/load-more.ts';
2
+ import { style as statusStyle } from '#cz/render/status/index.ts';
3
+ import { bottomBarInfoStyles, buttonStyles, } from '#cz/styles/app/shared-styles';
4
+ import { css } from '@pionjs/pion';
5
+ export const style = css `
6
+ :host {
7
+ display: flex;
8
+ flex-direction: column;
9
+ flex: auto;
10
+ height: 100%;
11
+ }
12
+ #omnitable {
13
+ flex: auto;
14
+ min-height: 200px;
15
+ }
16
+ ${bottomBarInfoStyles}
17
+ ${buttonStyles}
18
+ ${statusStyle}
19
+ ${loadMoreStyle}
20
+ `;
@@ -0,0 +1,4 @@
1
+ import { Row } from '#components/cz-actions';
2
+ import { GenericActionsCallback } from './use-list-core';
3
+ export declare const useInlineActions: <TItem extends Row>(rowIdProperty: keyof TItem) => GenericActionsCallback<TItem>;
4
+ //# sourceMappingURL=use-inline-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-inline-actions.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/use-inline-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,GAAG,EACH,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,eAAO,MAAM,gBAAgB,GAAI,KAAK,SAAS,GAAG,EACjD,eAAe,MAAM,KAAK,KACxB,sBAAsB,CAAC,KAAK,CAa9B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { filterSimpleActions, getRowActions, } from '#components/cz-actions';
2
+ import { BootInfo } from '@neovici/core/context/boot-info.js';
3
+ import { useContext } from '@pionjs/pion';
4
+ export const useInlineActions = (rowIdProperty) => {
5
+ const boot = useContext(BootInfo);
6
+ return [
7
+ async ({ selectedItems }) => getRowActions(boot.reasonCodes, boot.actions, selectedItems, rowIdProperty, filterSimpleActions(boot)),
8
+ [boot],
9
+ ];
10
+ };
@@ -0,0 +1,34 @@
1
+ import { RowAction } from '#cz/cz-components/cz-actions/actions.ts';
2
+ import { useFormDialogable } from '@neovici/cosmoz-form';
3
+ import type { ColumnFilters, ColumnNames, Columns } from './column';
4
+ import { ListCoreState } from './use-list-state';
5
+ import { TList$ } from './use-more';
6
+ export interface ParamsOptions<C> {
7
+ descending?: boolean;
8
+ sortOn?: ColumnNames<C>;
9
+ columns: C;
10
+ filters?: ColumnFilters<C>;
11
+ }
12
+ export type GenericActionsCallback<TItem> = readonly [
13
+ (opts: {
14
+ selectedItems: TItem[];
15
+ }) => Promise<RowAction[]>,
16
+ readonly unknown[]
17
+ ];
18
+ export interface UseListCore<TColumns extends Columns, TParams extends object, TItem extends object> {
19
+ pageSize?: number;
20
+ params: readonly [(opts: ParamsOptions<TColumns>) => TParams, unknown[]];
21
+ columns: readonly [() => TColumns, unknown[]];
22
+ list$: readonly [TList$<TParams, TItem>, unknown[]];
23
+ genericActions$?: GenericActionsCallback<TItem>;
24
+ }
25
+ type UseFormDialogable = ReturnType<typeof useFormDialogable>;
26
+ export interface UseListCoreResult<TColumns extends Columns, TItem extends object> extends ListCoreState<TItem, TColumns>, Pick<UseFormDialogable, 'dialog' | 'open'> {
27
+ data$: PromiseLike<TItem[]>;
28
+ columns: TColumns;
29
+ loadMore: (() => void) | undefined;
30
+ genericActions$: Promise<RowAction[]>;
31
+ }
32
+ export declare const useListCore: <TColumns extends Columns, TParams extends object, TItem extends object>({ columns: _columns, params: __params, list$: _list$, genericActions$: _genericActions$, pageSize, }: UseListCore<TColumns, TParams, TItem>) => UseListCoreResult<TColumns, TItem>;
33
+ export {};
34
+ //# sourceMappingURL=use-list-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-list-core.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/use-list-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,aAAa,EAAoB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;CAC3B;AAED,MAAM,MAAM,sBAAsB,CAAC,KAAK,IAAI,SAAS;IACpD,CAAC,IAAI,EAAE;QAAE,aAAa,EAAE,KAAK,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;IAC1D,SAAS,OAAO,EAAE;CAClB,CAAC;AAEF,MAAM,WAAW,WAAW,CAC3B,QAAQ,SAAS,OAAO,EACxB,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,SAAS,CAAC,MAAM,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,eAAe,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;CAChD;AAED,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE9D,MAAM,WAAW,iBAAiB,CACjC,QAAQ,SAAS,OAAO,EACxB,KAAK,SAAS,MAAM,CAEpB,SACC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,EAC9B,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3C,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5B,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,eAAe,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACtC;AAYD,eAAO,MAAM,WAAW,GACvB,QAAQ,SAAS,OAAO,EACxB,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,EACnB,sGAMC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,KAAG,iBAAiB,CAC3D,QAAQ,EACR,KAAK,CAyCL,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { useCallback, useMemo } from '@pionjs/pion';
2
+ import { useFormDialogable } from '@neovici/cosmoz-form';
3
+ import { useListCoreState } from './use-list-state';
4
+ import { useMore } from './use-more';
5
+ const noGenericActions = [async () => [], []];
6
+ const useGenericActions$ = ([fn, values] = noGenericActions, selectedItems) => useMemo(async () => fn?.({ selectedItems }) ?? [], [...values, selectedItems]);
7
+ export const useListCore = ({ columns: _columns, params: __params, list$: _list$, genericActions$: _genericActions$, pageSize, }) => {
8
+ const state = useListCoreState();
9
+ const { filters, descending, sortOn, setTotalAvailable } = state;
10
+ const columns = useMemo(..._columns);
11
+ const _params = useCallback(...__params);
12
+ const { rtkn, dialog, open } = useFormDialogable();
13
+ const params = useMemo(() => _params({
14
+ filters,
15
+ descending,
16
+ sortOn,
17
+ columns,
18
+ }), [_params, filters, descending, sortOn, columns, rtkn]);
19
+ const list$ = useCallback(..._list$);
20
+ const { data$, loadMore } = useMore({
21
+ list$,
22
+ setTotalAvailable,
23
+ params,
24
+ pageSize,
25
+ });
26
+ const genericActions$ = useGenericActions$(_genericActions$, state.selectedItems);
27
+ return {
28
+ ...state,
29
+ data$,
30
+ columns,
31
+ dialog,
32
+ open,
33
+ loadMore,
34
+ genericActions$,
35
+ };
36
+ };
@@ -0,0 +1,24 @@
1
+ import { ColumnFilters, ColumnNames } from './column';
2
+ interface ListCoreDefaults<TColumns extends object> {
3
+ filters: ColumnFilters<TColumns>;
4
+ sortOn?: ColumnNames<TColumns>;
5
+ groupOn?: ColumnNames<TColumns>;
6
+ descending?: boolean;
7
+ }
8
+ export declare const useListCoreState: <TItem extends object, TColumns extends object>(defaults?: ListCoreDefaults<TColumns>) => {
9
+ filters: ColumnFilters<TColumns> | undefined;
10
+ setFilters: import("@pionjs/pion").StateUpdater<ColumnFilters<TColumns> | undefined>;
11
+ descending: boolean;
12
+ setDescending: import("@pionjs/pion").StateUpdater<boolean>;
13
+ sortOn: ColumnNames<TColumns> | undefined;
14
+ setSortOn: import("@pionjs/pion").StateUpdater<ColumnNames<TColumns> | undefined>;
15
+ groupOn: ColumnNames<TColumns> | undefined;
16
+ setGroupOn: import("@pionjs/pion").StateUpdater<ColumnNames<TColumns> | undefined>;
17
+ selectedItems: TItem[];
18
+ setSelectedItems: import("@pionjs/pion").StateUpdater<TItem[]>;
19
+ setVisibleItems: import("@pionjs/pion").StateUpdater<TItem[]>;
20
+ setTotalAvailable: import("@pionjs/pion").StateUpdater<number | undefined>;
21
+ };
22
+ export type ListCoreState<TItem extends object, TColumns extends object> = ReturnType<typeof useListCoreState<TItem, TColumns>>;
23
+ export {};
24
+ //# sourceMappingURL=use-list-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-list-state.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/use-list-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEtD,UAAU,gBAAgB,CAAC,QAAQ,SAAS,MAAM;IACjD,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,MAAM,EAC7E,WAAW,gBAAgB,CAAC,QAAQ,CAAC;;;;;;;;;;;;;CA+BrC,CAAC;AAEF,MAAM,MAAM,aAAa,CACxB,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,MAAM,IACpB,UAAU,CAAC,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { useProperty } from '@pionjs/pion';
2
+ export const useListCoreState = (defaults) => {
3
+ const [filters, setFilters] = useProperty('filters', () => defaults?.filters);
4
+ const [descending, setDescending] = useProperty('descending', () => defaults?.descending ?? false);
5
+ const [groupOn, setGroupOn] = useProperty('groupOn', () => defaults?.groupOn);
6
+ const [sortOn, setSortOn] = useProperty('sortOn', () => defaults?.sortOn);
7
+ const [, setVisibleItems] = useProperty('visibleItems', []);
8
+ const [selectedItems, setSelectedItems] = useProperty('selectedItems', []);
9
+ // TODO: use pagination
10
+ const [, setTotalAvailable] = useProperty('totalAvailable');
11
+ return {
12
+ filters,
13
+ setFilters,
14
+ descending,
15
+ setDescending,
16
+ sortOn,
17
+ setSortOn,
18
+ groupOn,
19
+ setGroupOn,
20
+ selectedItems,
21
+ setSelectedItems,
22
+ setVisibleItems,
23
+ setTotalAvailable,
24
+ };
25
+ };
@@ -0,0 +1,23 @@
1
+ import { StateUpdater } from '@pionjs/pion';
2
+ export interface TList$<TParams extends object, TItem extends object> {
3
+ (props: {
4
+ params: TParams;
5
+ page: number;
6
+ pageSize: number;
7
+ }): PromiseLike<{
8
+ items: TItem[];
9
+ total: number;
10
+ }>;
11
+ }
12
+ interface UseMore<TParams extends object, TItem extends object> {
13
+ pageSize?: number;
14
+ params: TParams;
15
+ list$: TList$<TParams, TItem>;
16
+ setTotalAvailable: StateUpdater<number | undefined>;
17
+ }
18
+ export declare const useMore: <TParams extends object, TItem extends object>({ params: _params, list$, pageSize, setTotalAvailable, }: UseMore<TParams, TItem>) => {
19
+ data$: PromiseLike<TItem[]>;
20
+ loadMore: (() => void) | undefined;
21
+ };
22
+ export {};
23
+ //# sourceMappingURL=use-more.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-more.d.ts","sourceRoot":"","sources":["../../../src/queue/list-core/use-more.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgC,MAAM,cAAc,CAAC;AAE1E,MAAM,WAAW,MAAM,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM;IACnE,CAAC,KAAK,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KACjB,GAAG,WAAW,CAAC;QAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,UAAU,OAAO,CAAC,OAAO,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,iBAAiB,EAAE,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACpD;AASD,eAAO,MAAM,OAAO,GAAI,OAAO,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,EAAE,0DAKnE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;;;CAuDzB,CAAC"}