@panneau/lists 5.0.0-alpha.0 → 5.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +5 -1
  2. package/dist/ListView.css +16 -16
  3. package/dist/ListView.d.ts +7 -1
  4. package/dist/ListView.d.ts.map +1 -1
  5. package/dist/ListView.js +8 -5
  6. package/dist/ListView.js.map +1 -1
  7. package/dist/ListView.module.js +10 -10
  8. package/dist/actions/ActionButton.d.ts +4 -1
  9. package/dist/actions/ActionButton.d.ts.map +1 -1
  10. package/dist/actions/ActionButton.js +3 -3
  11. package/dist/actions/ActionButton.js.map +1 -1
  12. package/dist/actions/Actions.css +9 -9
  13. package/dist/actions/Actions.module.js +6 -6
  14. package/dist/actions/RowActions.d.ts +4 -1
  15. package/dist/actions/RowActions.d.ts.map +1 -1
  16. package/dist/actions/RowActions.js +37 -33
  17. package/dist/actions/RowActions.js.map +1 -1
  18. package/dist/actions/icons.d.ts +8 -3
  19. package/dist/actions/icons.d.ts.map +1 -1
  20. package/dist/actions/icons.js +11 -7
  21. package/dist/actions/icons.js.map +1 -1
  22. package/dist/displays/Displays.css +13 -13
  23. package/dist/displays/Displays.module.js +12 -12
  24. package/dist/displays/Displays.module.js.map +1 -1
  25. package/dist/filters/Filters.css +13 -13
  26. package/dist/filters/Filters.module.js +8 -8
  27. package/dist/filters/controls.d.ts +2 -2
  28. package/dist/filters/controls.d.ts.map +1 -1
  29. package/dist/filters/controls.js +145 -119
  30. package/dist/filters/controls.js.map +1 -1
  31. package/dist/filters/format.d.ts.map +1 -1
  32. package/dist/filters/format.js +4 -1
  33. package/dist/filters/format.js.map +1 -1
  34. package/dist/index.d.ts +1 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -1
  37. package/dist/layouts/CardsLayout.css +17 -11
  38. package/dist/layouts/CardsLayout.module.js +8 -8
  39. package/dist/layouts/CardsLayout.module.js.map +1 -1
  40. package/dist/layouts/ItemTitle.d.ts +1 -1
  41. package/dist/layouts/TableLayout.css +35 -35
  42. package/dist/layouts/TableLayout.module.js +12 -12
  43. package/dist/layouts/TableLayout.module.js.map +1 -1
  44. package/dist/layouts/link.css +3 -3
  45. package/dist/layouts/link.module.js +1 -1
  46. package/dist/query.d.ts +2 -2
  47. package/dist/query.d.ts.map +1 -1
  48. package/dist/query.js +7 -2
  49. package/dist/query.js.map +1 -1
  50. package/dist/toolbar/Toolbar.css +12 -12
  51. package/dist/toolbar/Toolbar.module.js +7 -7
  52. package/dist/types.d.ts +2 -1
  53. package/dist/types.d.ts.map +1 -1
  54. package/package.json +7 -7
@@ -1,25 +1,25 @@
1
- .panneau-scroller-dntHlH {
1
+ .panneau-table-layout-scroller {
2
2
  overflow-x: auto;
3
3
  border: var(--panneau-border-width) solid var(--panneau-color-border);
4
4
  border-radius: var(--panneau-radius-lg);
5
5
  background-color: var(--panneau-color-surface);
6
6
  }
7
7
 
8
- .panneau-table-adJh-G {
8
+ .panneau-table-layout-table {
9
9
  width: 100%;
10
10
  border-collapse: collapse;
11
11
  font-size: var(--panneau-font-size-md);
12
12
  }
13
13
 
14
- .panneau-table-adJh-G th,
15
- .panneau-table-adJh-G td {
16
- padding: var(--panneau-space-2) var(--panneau-space-3);
14
+ .panneau-table-layout-table th,
15
+ .panneau-table-layout-table td {
16
+ padding: var(--panneau-row-padding-y) var(--panneau-space-3);
17
17
  text-align: start;
18
18
  vertical-align: middle;
19
19
  border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);
20
20
  }
21
21
 
22
- .panneau-table-adJh-G th {
22
+ .panneau-table-layout-table th {
23
23
  font-size: var(--panneau-font-size-sm);
24
24
  font-weight: var(--panneau-font-weight-medium);
25
25
  color: var(--panneau-color-text-muted);
@@ -27,33 +27,33 @@
27
27
  background-color: var(--panneau-color-surface-sunken);
28
28
  }
29
29
 
30
- .panneau-table-adJh-G tbody tr:last-child td {
30
+ .panneau-table-layout-table tbody tr:last-child td {
31
31
  border-bottom: 0;
32
32
  }
33
33
 
34
- .panneau-table-adJh-G tbody tr[data-selected] {
34
+ .panneau-table-layout-table tbody tr[data-selected] {
35
35
  background-color: var(--panneau-color-accent-subtle);
36
36
  }
37
37
 
38
- .panneau-center-Fx-12L {
38
+ .panneau-table-layout-center {
39
39
  text-align: center !important;
40
40
  }
41
41
 
42
- .panneau-end-Jr3hRc {
42
+ .panneau-table-layout-end {
43
43
  text-align: end !important;
44
44
  }
45
45
 
46
- .panneau-check-E5-IqZ {
46
+ .panneau-table-layout-check {
47
47
  width: 1px;
48
48
  }
49
49
 
50
- .panneau-actionsCell-dzoCuU {
50
+ .panneau-table-layout-actions-cell {
51
51
  width: 1px;
52
52
  text-align: end !important;
53
53
  white-space: nowrap;
54
54
  }
55
55
 
56
- .panneau-sort-t4x1tD {
56
+ .panneau-table-layout-sort {
57
57
  display: inline-flex;
58
58
  align-items: center;
59
59
  gap: var(--panneau-space-1);
@@ -67,29 +67,29 @@
67
67
  cursor: pointer;
68
68
  }
69
69
 
70
- .panneau-sort-t4x1tD:hover {
70
+ .panneau-table-layout-sort:hover {
71
71
  color: var(--panneau-color-text);
72
72
  background-color: var(--panneau-color-hover);
73
73
  }
74
74
 
75
- .panneau-sort-t4x1tD:focus-visible {
75
+ .panneau-table-layout-sort:focus-visible {
76
76
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
77
77
  outline-offset: 1px;
78
78
  }
79
79
 
80
- .panneau-sortIcon-5pp-ve {
80
+ .panneau-table-layout-sort-icon {
81
81
  opacity: 0.5;
82
82
  }
83
83
 
84
- .panneau-sorted-a6Fwul .panneau-sortIcon-5pp-ve {
84
+ .panneau-table-layout-sorted .panneau-table-layout-sort-icon {
85
85
  opacity: 1;
86
86
  }
87
87
 
88
- .panneau-cellLabel-tiliX5 {
88
+ .panneau-table-layout-cell-label {
89
89
  display: none;
90
90
  }
91
91
 
92
- .panneau-visuallyHidden--8qvnp {
92
+ .panneau-table-layout-visually-hidden {
93
93
  position: absolute;
94
94
  width: 1px;
95
95
  height: 1px;
@@ -100,30 +100,30 @@
100
100
 
101
101
  /* Narrow lists (phones): each row is a block, with the label of each value next to it. */
102
102
  @container panneau-list (max-width: 40rem) {
103
- .panneau-scroller-dntHlH {
103
+ .panneau-table-layout-scroller {
104
104
  overflow: visible;
105
105
  background: none;
106
106
  border: 0;
107
107
  }
108
108
 
109
109
  /* The labels of the cells replace the headers, and the list's sort select their buttons. */
110
- .panneau-table-adJh-G thead {
110
+ .panneau-table-layout-table thead {
111
111
  display: none;
112
112
  }
113
113
 
114
- .panneau-table-adJh-G,
115
- .panneau-table-adJh-G tbody,
116
- .panneau-table-adJh-G tr,
117
- .panneau-table-adJh-G td {
114
+ .panneau-table-layout-table,
115
+ .panneau-table-layout-table tbody,
116
+ .panneau-table-layout-table tr,
117
+ .panneau-table-layout-table td {
118
118
  display: block;
119
119
  }
120
120
 
121
- .panneau-table-adJh-G tbody {
121
+ .panneau-table-layout-table tbody {
122
122
  display: grid;
123
123
  gap: var(--panneau-space-2);
124
124
  }
125
125
 
126
- .panneau-table-adJh-G tr {
126
+ .panneau-table-layout-table tr {
127
127
  position: relative;
128
128
  padding: var(--panneau-space-2) 0;
129
129
  background-color: var(--panneau-color-surface);
@@ -131,7 +131,7 @@
131
131
  border-radius: var(--panneau-radius-lg);
132
132
  }
133
133
 
134
- .panneau-table-adJh-G td {
134
+ .panneau-table-layout-table td {
135
135
  display: grid;
136
136
  grid-template-columns: minmax(5rem, 35%) 1fr;
137
137
  gap: var(--panneau-space-2);
@@ -140,36 +140,36 @@
140
140
  border: 0;
141
141
  }
142
142
 
143
- .panneau-table-adJh-G td.panneau-check-E5-IqZ,
144
- .panneau-table-adJh-G td.panneau-actionsCell-dzoCuU {
143
+ .panneau-table-layout-table td.panneau-table-layout-check,
144
+ .panneau-table-layout-table td.panneau-table-layout-actions-cell {
145
145
  display: flex;
146
146
  width: auto;
147
147
  }
148
148
 
149
- .panneau-table-adJh-G td.panneau-check-E5-IqZ {
149
+ .panneau-table-layout-table td.panneau-table-layout-check {
150
150
  position: absolute;
151
151
  top: var(--panneau-space-2);
152
152
  inset-inline-end: var(--panneau-space-2);
153
153
  padding: 0;
154
154
  }
155
155
 
156
- .panneau-table-adJh-G td.panneau-actionsCell-dzoCuU {
156
+ .panneau-table-layout-table td.panneau-table-layout-actions-cell {
157
157
  justify-content: flex-start;
158
158
  flex-wrap: wrap;
159
159
  padding-top: var(--panneau-space-2);
160
160
  }
161
161
 
162
- .panneau-table-adJh-G td.panneau-title-KEAnyJ {
162
+ .panneau-table-layout-table td.panneau-table-layout-title {
163
163
  display: block;
164
164
  padding-inline-end: var(--panneau-space-10);
165
165
  font-weight: var(--panneau-font-weight-medium);
166
166
  }
167
167
 
168
- .panneau-table-adJh-G td.panneau-title-KEAnyJ .panneau-cellLabel-tiliX5 {
168
+ .panneau-table-layout-table td.panneau-table-layout-title .panneau-table-layout-cell-label {
169
169
  display: none;
170
170
  }
171
171
 
172
- .panneau-cellLabel-tiliX5 {
172
+ .panneau-table-layout-cell-label {
173
173
  display: block;
174
174
  font-size: var(--panneau-font-size-sm);
175
175
  color: var(--panneau-color-text-muted);
@@ -1,17 +1,17 @@
1
1
  import "./TableLayout.css";
2
2
  //#region src/layouts/TableLayout.module.css
3
- var scroller = "panneau-scroller-dntHlH";
4
- var table = "panneau-table-adJh-G";
5
- var center = "panneau-center-Fx-12L";
6
- var end = "panneau-end-Jr3hRc";
7
- var check = "panneau-check-E5-IqZ";
8
- var actionsCell = "panneau-actionsCell-dzoCuU";
9
- var sort = "panneau-sort-t4x1tD";
10
- var sortIcon = "panneau-sortIcon-5pp-ve";
11
- var sorted = "panneau-sorted-a6Fwul";
12
- var cellLabel = "panneau-cellLabel-tiliX5";
13
- var visuallyHidden = "panneau-visuallyHidden--8qvnp";
14
- var title = "panneau-title-KEAnyJ";
3
+ var scroller = "panneau-table-layout-scroller";
4
+ var table = "panneau-table-layout-table";
5
+ var center = "panneau-table-layout-center";
6
+ var end = "panneau-table-layout-end";
7
+ var check = "panneau-table-layout-check";
8
+ var actionsCell = "panneau-table-layout-actions-cell";
9
+ var sort = "panneau-table-layout-sort";
10
+ var sortIcon = "panneau-table-layout-sort-icon";
11
+ var sorted = "panneau-table-layout-sorted";
12
+ var cellLabel = "panneau-table-layout-cell-label";
13
+ var visuallyHidden = "panneau-table-layout-visually-hidden";
14
+ var title = "panneau-table-layout-title";
15
15
  var TableLayout_module_default = {
16
16
  scroller,
17
17
  table,
@@ -1 +1 @@
1
- {"version":3,"file":"TableLayout.module.js","names":[],"sources":["../../src/layouts/TableLayout.module.css"],"sourcesContent":[".scroller {\n overflow-x: auto;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n background-color: var(--panneau-color-surface);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--panneau-font-size-md);\n}\n\n.table th,\n.table td {\n padding: var(--panneau-space-2) var(--panneau-space-3);\n text-align: start;\n vertical-align: middle;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.table th {\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n background-color: var(--panneau-color-surface-sunken);\n}\n\n.table tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.table tbody tr[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n}\n\n.center {\n text-align: center !important;\n}\n\n.end {\n text-align: end !important;\n}\n\n.check {\n width: 1px;\n}\n\n.actionsCell {\n width: 1px;\n text-align: end !important;\n white-space: nowrap;\n}\n\n.sort {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n margin: calc(-1 * var(--panneau-space-1)) calc(-1 * var(--panneau-space-2));\n padding: var(--panneau-space-1) var(--panneau-space-2);\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n border-radius: var(--panneau-radius-sm);\n cursor: pointer;\n}\n\n.sort:hover {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.sort:focus-visible {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.sortIcon {\n opacity: 0.5;\n}\n\n.sorted .sortIcon {\n opacity: 1;\n}\n\n.cellLabel {\n display: none;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Narrow lists (phones): each row is a block, with the label of each value next to it. */\n@container panneau-list (max-width: 40rem) {\n .scroller {\n overflow: visible;\n background: none;\n border: 0;\n }\n\n /* The labels of the cells replace the headers, and the list's sort select their buttons. */\n .table thead {\n display: none;\n }\n\n .table,\n .table tbody,\n .table tr,\n .table td {\n display: block;\n }\n\n .table tbody {\n display: grid;\n gap: var(--panneau-space-2);\n }\n\n .table tr {\n position: relative;\n padding: var(--panneau-space-2) 0;\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n }\n\n .table td {\n display: grid;\n grid-template-columns: minmax(5rem, 35%) 1fr;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-1) var(--panneau-space-3);\n text-align: start !important;\n border: 0;\n }\n\n .table td.check,\n .table td.actionsCell {\n display: flex;\n width: auto;\n }\n\n .table td.check {\n position: absolute;\n top: var(--panneau-space-2);\n inset-inline-end: var(--panneau-space-2);\n padding: 0;\n }\n\n .table td.actionsCell {\n justify-content: flex-start;\n flex-wrap: wrap;\n padding-top: var(--panneau-space-2);\n }\n\n .table td.title {\n display: block;\n padding-inline-end: var(--panneau-space-10);\n font-weight: var(--panneau-font-weight-medium);\n }\n\n .table td.title .cellLabel {\n display: none;\n }\n\n .cellLabel {\n display: block;\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"TableLayout.module.js","names":[],"sources":["../../src/layouts/TableLayout.module.css"],"sourcesContent":[".scroller {\n overflow-x: auto;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n background-color: var(--panneau-color-surface);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--panneau-font-size-md);\n}\n\n.table th,\n.table td {\n padding: var(--panneau-row-padding-y) var(--panneau-space-3);\n text-align: start;\n vertical-align: middle;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.table th {\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n background-color: var(--panneau-color-surface-sunken);\n}\n\n.table tbody tr:last-child td {\n border-bottom: 0;\n}\n\n.table tbody tr[data-selected] {\n background-color: var(--panneau-color-accent-subtle);\n}\n\n.center {\n text-align: center !important;\n}\n\n.end {\n text-align: end !important;\n}\n\n.check {\n width: 1px;\n}\n\n.actionsCell {\n width: 1px;\n text-align: end !important;\n white-space: nowrap;\n}\n\n.sort {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-1);\n margin: calc(-1 * var(--panneau-space-1)) calc(-1 * var(--panneau-space-2));\n padding: var(--panneau-space-1) var(--panneau-space-2);\n font: inherit;\n color: inherit;\n background: none;\n border: 0;\n border-radius: var(--panneau-radius-sm);\n cursor: pointer;\n}\n\n.sort:hover {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.sort:focus-visible {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.sortIcon {\n opacity: 0.5;\n}\n\n.sorted .sortIcon {\n opacity: 1;\n}\n\n.cellLabel {\n display: none;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n/* Narrow lists (phones): each row is a block, with the label of each value next to it. */\n@container panneau-list (max-width: 40rem) {\n .scroller {\n overflow: visible;\n background: none;\n border: 0;\n }\n\n /* The labels of the cells replace the headers, and the list's sort select their buttons. */\n .table thead {\n display: none;\n }\n\n .table,\n .table tbody,\n .table tr,\n .table td {\n display: block;\n }\n\n .table tbody {\n display: grid;\n gap: var(--panneau-space-2);\n }\n\n .table tr {\n position: relative;\n padding: var(--panneau-space-2) 0;\n background-color: var(--panneau-color-surface);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n }\n\n .table td {\n display: grid;\n grid-template-columns: minmax(5rem, 35%) 1fr;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-1) var(--panneau-space-3);\n text-align: start !important;\n border: 0;\n }\n\n .table td.check,\n .table td.actionsCell {\n display: flex;\n width: auto;\n }\n\n .table td.check {\n position: absolute;\n top: var(--panneau-space-2);\n inset-inline-end: var(--panneau-space-2);\n padding: 0;\n }\n\n .table td.actionsCell {\n justify-content: flex-start;\n flex-wrap: wrap;\n padding-top: var(--panneau-space-2);\n }\n\n .table td.title {\n display: block;\n padding-inline-end: var(--panneau-space-10);\n font-weight: var(--panneau-font-weight-medium);\n }\n\n .table td.title .cellLabel {\n display: none;\n }\n\n .cellLabel {\n display: block;\n font-size: var(--panneau-font-size-sm);\n color: var(--panneau-color-text-muted);\n }\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- .panneau-link-1crRKJ {
1
+ .panneau-link {
2
2
  color: inherit;
3
3
  font-weight: var(--panneau-font-weight-medium);
4
4
  text-decoration: none;
@@ -6,11 +6,11 @@
6
6
  cursor: pointer;
7
7
  }
8
8
 
9
- .panneau-link-1crRKJ:hover {
9
+ .panneau-link:hover {
10
10
  text-decoration: underline;
11
11
  }
12
12
 
13
- .panneau-link-1crRKJ[data-focus-visible] {
13
+ .panneau-link[data-focus-visible] {
14
14
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
15
15
  outline-offset: 2px;
16
16
  }
@@ -1,6 +1,6 @@
1
1
  import "./link.css";
2
2
  //#region src/layouts/link.module.css
3
- var link = "panneau-link-1crRKJ";
3
+ var link = "panneau-link";
4
4
  var link_module_default = { link };
5
5
  //#endregion
6
6
  export { link_module_default as default, link };
package/dist/query.d.ts CHANGED
@@ -14,8 +14,8 @@ export interface LocalQueryResult<T extends ListItem> {
14
14
  }
15
15
  /**
16
16
  * Applies a list query to items in memory, as a backend would: filters (the value, or one of the
17
- * values, matches as a string), search in every text value, sort, then the page. For a product
18
- * that has every item at hand.
17
+ * values, matches as a string; a range matches the values within its bounds), search in every text
18
+ * value, sort, then the page. For a product that has every item at hand.
19
19
  */
20
20
  export declare function applyListQuery<T extends ListItem>(items: readonly T[], query: ListQuery, options?: LocalQueryOptions): LocalQueryResult<T>;
21
21
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGpD,MAAM,WAAW,iBAAiB;IAC9B,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,QAAQ;IAChD,6BAA6B;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACjB;AAOD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAC7C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,iBAAsB,GAChC,gBAAgB,CAAC,CAAC,CAAC,CAuDrB"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGpD,MAAM,WAAW,iBAAiB;IAC9B,wEAAwE;IACxE,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAChC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,QAAQ;IAChD,6BAA6B;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACjB;AAOD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAC7C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,iBAAsB,GAChC,gBAAgB,CAAC,CAAC,CAAC,CA6DrB"}
package/dist/query.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { getColumnValue, toText } from "./values.js";
2
+ import { isFilterRange, matchesFilterRange } from "@panneau/protocol/runtime";
2
3
  //#region src/query.ts
3
4
  function valueOf(item, key, options) {
4
5
  const column = options.columns?.find((candidate) => candidate.id === key);
@@ -6,13 +7,17 @@ function valueOf(item, key, options) {
6
7
  }
7
8
  /**
8
9
  * Applies a list query to items in memory, as a backend would: filters (the value, or one of the
9
- * values, matches as a string), search in every text value, sort, then the page. For a product
10
- * that has every item at hand.
10
+ * values, matches as a string; a range matches the values within its bounds), search in every text
11
+ * value, sort, then the page. For a product that has every item at hand.
11
12
  */
12
13
  function applyListQuery(items, query, options = {}) {
13
14
  const locale = options.locale ?? "en";
14
15
  let result = [...items];
15
16
  Object.entries(query.filter ?? {}).forEach(([key, expected]) => {
17
+ if (isFilterRange(expected)) {
18
+ result = result.filter((item) => matchesFilterRange(valueOf(item, key, options), expected));
19
+ return;
20
+ }
16
21
  const accepted = (Array.isArray(expected) ? expected : [expected]).map(String);
17
22
  result = result.filter((item) => {
18
23
  const value = valueOf(item, key, options);
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","names":[],"sources":["../src/query.ts"],"sourcesContent":["import type { ListQuery } from '@panneau/protocol';\n\nimport type { ListColumn, ListItem } from './types';\nimport { getColumnValue, toText } from './values';\n\nexport interface LocalQueryOptions {\n /** The columns: values of localized fields are compared in `locale`. */\n columns?: readonly ListColumn[];\n /** Locale of localized values and of the text comparison. Defaults to `en`. */\n locale?: string;\n}\n\nexport interface LocalQueryResult<T extends ListItem> {\n /** The items of the page. */\n items: T[];\n /** How many items match the filters and the search, on every page. */\n total: number;\n}\n\nfunction valueOf(item: ListItem, key: string, options: LocalQueryOptions): unknown {\n const column = options.columns?.find((candidate) => candidate.id === key);\n return column !== undefined ? getColumnValue(item, column, options.locale ?? 'en') : item[key];\n}\n\n/**\n * Applies a list query to items in memory, as a backend would: filters (the value, or one of the\n * values, matches as a string), search in every text value, sort, then the page. For a product\n * that has every item at hand.\n */\nexport function applyListQuery<T extends ListItem>(\n items: readonly T[],\n query: ListQuery,\n options: LocalQueryOptions = {},\n): LocalQueryResult<T> {\n const locale = options.locale ?? 'en';\n let result = [...items];\n Object.entries(query.filter ?? {}).forEach(([key, expected]) => {\n const accepted = (Array.isArray(expected) ? expected : [expected]).map(String);\n result = result.filter((item) => {\n const value = valueOf(item, key, options);\n const values: unknown[] = Array.isArray(value) ? value : [value];\n return values.some((candidate) => {\n const id =\n candidate !== null && typeof candidate === 'object' && 'id' in candidate\n ? candidate.id\n : candidate;\n return accepted.includes(String(id));\n });\n });\n });\n const q = query.q?.trim().toLocaleLowerCase(locale) ?? '';\n if (q !== '') {\n result = result.filter((item) =>\n Object.entries(item)\n .filter(([key]) => key !== 'id' && key !== 'abilities' && key !== 'version')\n .some(([key]) =>\n toText(valueOf(item, key, options), locale)\n .toLocaleLowerCase(locale)\n .includes(q),\n ),\n );\n }\n const sort = query.sort ?? [];\n if (sort.length > 0) {\n const collator = new Intl.Collator(locale, { numeric: true, sensitivity: 'base' });\n result.sort((a, b) => {\n for (const part of sort) {\n const descending = part.startsWith('-');\n const key = descending ? part.slice(1) : part;\n const left = valueOf(a, key, options);\n const right = valueOf(b, key, options);\n const order =\n typeof left === 'number' && typeof right === 'number'\n ? left - right\n : compareText(toText(left, locale), toText(right, locale), collator);\n if (order !== 0) {\n return descending ? -order : order;\n }\n }\n return 0;\n });\n }\n const total = result.length;\n if (query.perPage !== undefined) {\n const page = query.page ?? 1;\n result = result.slice((page - 1) * query.perPage, page * query.perPage);\n }\n return { items: result, total };\n}\n\n/** Compares texts, empty ones last. */\nfunction compareText(left: string, right: string, collator: Intl.Collator): number {\n if (left === right) {\n return 0;\n }\n if (left === '') {\n return 1;\n }\n if (right === '') {\n return -1;\n }\n return collator.compare(left, right);\n}\n"],"mappings":";;AAmBA,SAAS,QAAQ,MAAgB,KAAa,SAAqC;CAC/E,MAAM,SAAS,QAAQ,SAAS,MAAM,cAAc,UAAU,OAAO,GAAG;CACxE,OAAO,WAAW,KAAA,IAAY,eAAe,MAAM,QAAQ,QAAQ,UAAU,IAAI,IAAI,KAAK;AAC9F;;;;;;AAOA,SAAgB,eACZ,OACA,OACA,UAA6B,CAAC,GACX;CACnB,MAAM,SAAS,QAAQ,UAAU;CACjC,IAAI,SAAS,CAAC,GAAG,KAAK;CACtB,OAAO,QAAQ,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,cAAc;EAC5D,MAAM,YAAY,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAA,CAAG,IAAI,MAAM;EAC7E,SAAS,OAAO,QAAQ,SAAS;GAC7B,MAAM,QAAQ,QAAQ,MAAM,KAAK,OAAO;GAExC,QAD0B,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAA,CACjD,MAAM,cAAc;IAC9B,MAAM,KACF,cAAc,QAAQ,OAAO,cAAc,YAAY,QAAQ,YACzD,UAAU,KACV;IACV,OAAO,SAAS,SAAS,OAAO,EAAE,CAAC;GACvC,CAAC;EACL,CAAC;CACL,CAAC;CACD,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,kBAAkB,MAAM,KAAK;CACvD,IAAI,MAAM,IACN,SAAS,OAAO,QAAQ,SACpB,OAAO,QAAQ,IAAI,CAAC,CACf,QAAQ,CAAC,SAAS,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,SAAS,CAAC,CAC3E,MAAM,CAAC,SACJ,OAAO,QAAQ,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC,CACtC,kBAAkB,MAAM,CAAC,CACzB,SAAS,CAAC,CACnB,CACR;CAEJ,MAAM,OAAO,MAAM,QAAQ,CAAA;CAC3B,IAAI,KAAK,SAAS,GAAG;EACjB,MAAM,WAAW,IAAI,KAAK,SAAS,QAAQ;GAAE,SAAS;GAAM,aAAa;EAAO,CAAC;EACjF,OAAO,MAAM,GAAG,MAAM;GAClB,KAAK,MAAM,QAAQ,MAAM;IACrB,MAAM,aAAa,KAAK,WAAW,GAAG;IACtC,MAAM,MAAM,aAAa,KAAK,MAAM,CAAC,IAAI;IACzC,MAAM,OAAO,QAAQ,GAAG,KAAK,OAAO;IACpC,MAAM,QAAQ,QAAQ,GAAG,KAAK,OAAO;IACrC,MAAM,QACF,OAAO,SAAS,YAAY,OAAO,UAAU,WACvC,OAAO,QACP,YAAY,OAAO,MAAM,MAAM,GAAG,OAAO,OAAO,MAAM,GAAG,QAAQ;IAC3E,IAAI,UAAU,GACV,OAAO,aAAa,CAAC,QAAQ;GAErC;GACA,OAAO;EACX,CAAC;CACL;CACA,MAAM,QAAQ,OAAO;CACrB,IAAI,MAAM,YAAY,KAAA,GAAW;EAC7B,MAAM,OAAO,MAAM,QAAQ;EAC3B,SAAS,OAAO,OAAO,OAAO,KAAK,MAAM,SAAS,OAAO,MAAM,OAAO;CAC1E;CACA,OAAO;EAAE,OAAO;EAAQ;CAAM;AAClC;;AAGA,SAAS,YAAY,MAAc,OAAe,UAAiC;CAC/E,IAAI,SAAS,OACT,OAAO;CAEX,IAAI,SAAS,IACT,OAAO;CAEX,IAAI,UAAU,IACV,OAAO;CAEX,OAAO,SAAS,QAAQ,MAAM,KAAK;AACvC"}
1
+ {"version":3,"file":"query.js","names":[],"sources":["../src/query.ts"],"sourcesContent":["import type { ListQuery } from '@panneau/protocol';\nimport { isFilterRange, matchesFilterRange } from '@panneau/protocol/runtime';\n\nimport type { ListColumn, ListItem } from './types';\nimport { getColumnValue, toText } from './values';\n\nexport interface LocalQueryOptions {\n /** The columns: values of localized fields are compared in `locale`. */\n columns?: readonly ListColumn[];\n /** Locale of localized values and of the text comparison. Defaults to `en`. */\n locale?: string;\n}\n\nexport interface LocalQueryResult<T extends ListItem> {\n /** The items of the page. */\n items: T[];\n /** How many items match the filters and the search, on every page. */\n total: number;\n}\n\nfunction valueOf(item: ListItem, key: string, options: LocalQueryOptions): unknown {\n const column = options.columns?.find((candidate) => candidate.id === key);\n return column !== undefined ? getColumnValue(item, column, options.locale ?? 'en') : item[key];\n}\n\n/**\n * Applies a list query to items in memory, as a backend would: filters (the value, or one of the\n * values, matches as a string; a range matches the values within its bounds), search in every text\n * value, sort, then the page. For a product that has every item at hand.\n */\nexport function applyListQuery<T extends ListItem>(\n items: readonly T[],\n query: ListQuery,\n options: LocalQueryOptions = {},\n): LocalQueryResult<T> {\n const locale = options.locale ?? 'en';\n let result = [...items];\n Object.entries(query.filter ?? {}).forEach(([key, expected]) => {\n if (isFilterRange(expected)) {\n result = result.filter((item) =>\n matchesFilterRange(valueOf(item, key, options), expected),\n );\n return;\n }\n const accepted = (Array.isArray(expected) ? expected : [expected]).map(String);\n result = result.filter((item) => {\n const value = valueOf(item, key, options);\n const values: unknown[] = Array.isArray(value) ? value : [value];\n return values.some((candidate) => {\n const id =\n candidate !== null && typeof candidate === 'object' && 'id' in candidate\n ? candidate.id\n : candidate;\n return accepted.includes(String(id));\n });\n });\n });\n const q = query.q?.trim().toLocaleLowerCase(locale) ?? '';\n if (q !== '') {\n result = result.filter((item) =>\n Object.entries(item)\n .filter(([key]) => key !== 'id' && key !== 'abilities' && key !== 'version')\n .some(([key]) =>\n toText(valueOf(item, key, options), locale)\n .toLocaleLowerCase(locale)\n .includes(q),\n ),\n );\n }\n const sort = query.sort ?? [];\n if (sort.length > 0) {\n const collator = new Intl.Collator(locale, { numeric: true, sensitivity: 'base' });\n result.sort((a, b) => {\n for (const part of sort) {\n const descending = part.startsWith('-');\n const key = descending ? part.slice(1) : part;\n const left = valueOf(a, key, options);\n const right = valueOf(b, key, options);\n const order =\n typeof left === 'number' && typeof right === 'number'\n ? left - right\n : compareText(toText(left, locale), toText(right, locale), collator);\n if (order !== 0) {\n return descending ? -order : order;\n }\n }\n return 0;\n });\n }\n const total = result.length;\n if (query.perPage !== undefined) {\n const page = query.page ?? 1;\n result = result.slice((page - 1) * query.perPage, page * query.perPage);\n }\n return { items: result, total };\n}\n\n/** Compares texts, empty ones last. */\nfunction compareText(left: string, right: string, collator: Intl.Collator): number {\n if (left === right) {\n return 0;\n }\n if (left === '') {\n return 1;\n }\n if (right === '') {\n return -1;\n }\n return collator.compare(left, right);\n}\n"],"mappings":";;;AAoBA,SAAS,QAAQ,MAAgB,KAAa,SAAqC;CAC/E,MAAM,SAAS,QAAQ,SAAS,MAAM,cAAc,UAAU,OAAO,GAAG;CACxE,OAAO,WAAW,KAAA,IAAY,eAAe,MAAM,QAAQ,QAAQ,UAAU,IAAI,IAAI,KAAK;AAC9F;;;;;;AAOA,SAAgB,eACZ,OACA,OACA,UAA6B,CAAC,GACX;CACnB,MAAM,SAAS,QAAQ,UAAU;CACjC,IAAI,SAAS,CAAC,GAAG,KAAK;CACtB,OAAO,QAAQ,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,cAAc;EAC5D,IAAI,cAAc,QAAQ,GAAG;GACzB,SAAS,OAAO,QAAQ,SACpB,mBAAmB,QAAQ,MAAM,KAAK,OAAO,GAAG,QAAQ,CAC5D;GACA;EACJ;EACA,MAAM,YAAY,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAA,CAAG,IAAI,MAAM;EAC7E,SAAS,OAAO,QAAQ,SAAS;GAC7B,MAAM,QAAQ,QAAQ,MAAM,KAAK,OAAO;GAExC,QAD0B,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAA,CACjD,MAAM,cAAc;IAC9B,MAAM,KACF,cAAc,QAAQ,OAAO,cAAc,YAAY,QAAQ,YACzD,UAAU,KACV;IACV,OAAO,SAAS,SAAS,OAAO,EAAE,CAAC;GACvC,CAAC;EACL,CAAC;CACL,CAAC;CACD,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,kBAAkB,MAAM,KAAK;CACvD,IAAI,MAAM,IACN,SAAS,OAAO,QAAQ,SACpB,OAAO,QAAQ,IAAI,CAAC,CACf,QAAQ,CAAC,SAAS,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,SAAS,CAAC,CAC3E,MAAM,CAAC,SACJ,OAAO,QAAQ,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC,CACtC,kBAAkB,MAAM,CAAC,CACzB,SAAS,CAAC,CACnB,CACR;CAEJ,MAAM,OAAO,MAAM,QAAQ,CAAA;CAC3B,IAAI,KAAK,SAAS,GAAG;EACjB,MAAM,WAAW,IAAI,KAAK,SAAS,QAAQ;GAAE,SAAS;GAAM,aAAa;EAAO,CAAC;EACjF,OAAO,MAAM,GAAG,MAAM;GAClB,KAAK,MAAM,QAAQ,MAAM;IACrB,MAAM,aAAa,KAAK,WAAW,GAAG;IACtC,MAAM,MAAM,aAAa,KAAK,MAAM,CAAC,IAAI;IACzC,MAAM,OAAO,QAAQ,GAAG,KAAK,OAAO;IACpC,MAAM,QAAQ,QAAQ,GAAG,KAAK,OAAO;IACrC,MAAM,QACF,OAAO,SAAS,YAAY,OAAO,UAAU,WACvC,OAAO,QACP,YAAY,OAAO,MAAM,MAAM,GAAG,OAAO,OAAO,MAAM,GAAG,QAAQ;IAC3E,IAAI,UAAU,GACV,OAAO,aAAa,CAAC,QAAQ;GAErC;GACA,OAAO;EACX,CAAC;CACL;CACA,MAAM,QAAQ,OAAO;CACrB,IAAI,MAAM,YAAY,KAAA,GAAW;EAC7B,MAAM,OAAO,MAAM,QAAQ;EAC3B,SAAS,OAAO,OAAO,OAAO,KAAK,MAAM,SAAS,OAAO,MAAM,OAAO;CAC1E;CACA,OAAO;EAAE,OAAO;EAAQ;CAAM;AAClC;;AAGA,SAAS,YAAY,MAAc,OAAe,UAAiC;CAC/E,IAAI,SAAS,OACT,OAAO;CAEX,IAAI,SAAS,IACT,OAAO;CAEX,IAAI,UAAU,IACV,OAAO;CAEX,OAAO,SAAS,QAAQ,MAAM,KAAK;AACvC"}
@@ -1,9 +1,9 @@
1
- .panneau-search-xZg66e {
1
+ .panneau-toolbar-search {
2
2
  width: 16rem;
3
3
  max-width: 100%;
4
4
  }
5
5
 
6
- .panneau-pagination-dNpeRL {
6
+ .panneau-toolbar-pagination {
7
7
  display: flex;
8
8
  flex-wrap: wrap;
9
9
  align-items: center;
@@ -13,17 +13,17 @@
13
13
  color: var(--panneau-color-text-muted);
14
14
  }
15
15
 
16
- .panneau-pages-e6sKuy {
16
+ .panneau-toolbar-pages {
17
17
  display: flex;
18
18
  align-items: center;
19
19
  gap: var(--panneau-space-2);
20
20
  }
21
21
 
22
- .panneau-perPage-U3R-no {
22
+ .panneau-toolbar-per-page {
23
23
  width: 6rem;
24
24
  }
25
25
 
26
- .panneau-layouts-VUhEzd {
26
+ .panneau-toolbar-layouts {
27
27
  display: inline-flex;
28
28
  padding: 2px;
29
29
  background-color: var(--panneau-color-surface-sunken);
@@ -31,7 +31,7 @@
31
31
  border-radius: var(--panneau-radius-md);
32
32
  }
33
33
 
34
- .panneau-layoutButton-B28Z38 {
34
+ .panneau-toolbar-layout-button {
35
35
  display: inline-flex;
36
36
  align-items: center;
37
37
  justify-content: center;
@@ -44,29 +44,29 @@
44
44
  cursor: pointer;
45
45
  }
46
46
 
47
- .panneau-layoutButton-B28Z38[data-hovered] {
47
+ .panneau-toolbar-layout-button[data-hovered] {
48
48
  color: var(--panneau-color-text);
49
49
  }
50
50
 
51
- .panneau-layoutButton-B28Z38[data-selected] {
51
+ .panneau-toolbar-layout-button[data-selected] {
52
52
  color: var(--panneau-color-text);
53
53
  background-color: var(--panneau-color-surface);
54
54
  box-shadow: var(--panneau-shadow-sm);
55
55
  }
56
56
 
57
- .panneau-layoutButton-B28Z38[data-focus-visible] {
57
+ .panneau-toolbar-layout-button[data-focus-visible] {
58
58
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
59
59
  outline-offset: 1px;
60
60
  }
61
61
 
62
- .panneau-sort-5bHxuN {
62
+ .panneau-toolbar-sort {
63
63
  width: 14rem;
64
64
  max-width: 100%;
65
65
  }
66
66
 
67
67
  @container panneau-list (max-width: 40rem) {
68
- .panneau-search-xZg66e,
69
- .panneau-sort-5bHxuN {
68
+ .panneau-toolbar-search,
69
+ .panneau-toolbar-sort {
70
70
  width: 100%;
71
71
  }
72
72
  }
@@ -1,12 +1,12 @@
1
1
  import "./Toolbar.css";
2
2
  //#region src/toolbar/Toolbar.module.css
3
- var search = "panneau-search-xZg66e";
4
- var pagination = "panneau-pagination-dNpeRL";
5
- var pages = "panneau-pages-e6sKuy";
6
- var perPage = "panneau-perPage-U3R-no";
7
- var layouts = "panneau-layouts-VUhEzd";
8
- var layoutButton = "panneau-layoutButton-B28Z38";
9
- var sort = "panneau-sort-5bHxuN";
3
+ var search = "panneau-toolbar-search";
4
+ var pagination = "panneau-toolbar-pagination";
5
+ var pages = "panneau-toolbar-pages";
6
+ var perPage = "panneau-toolbar-per-page";
7
+ var layouts = "panneau-toolbar-layouts";
8
+ var layoutButton = "panneau-toolbar-layout-button";
9
+ var sort = "panneau-toolbar-sort";
10
10
  var Toolbar_module_default = {
11
11
  search,
12
12
  pagination,
package/dist/types.d.ts CHANGED
@@ -55,7 +55,8 @@ export interface ListActionEvent {
55
55
  /**
56
56
  * Runs an action. Lists ask for confirmation first when the action has `confirm`. A returned
57
57
  * promise shows the action as pending until it settles; after a selection action succeeds, the
58
- * selection is cleared.
58
+ * selection is cleared, unless the handler gives `false` (the action didn't run, as when the user
59
+ * cancels its parameters). `useActionRunner()` of `@panneau/actions` is such a handler.
59
60
  */
60
61
  export type ListActionHandler = (event: ListActionEvent) => unknown;
61
62
  /** Props of a filter control. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/lists",
3
- "version": "5.0.0-alpha.0",
3
+ "version": "5.0.0-alpha.2",
4
4
  "description": "Lists of Panneau: columns with displays, table and cards layouts, sorting, filters, search, pagination, selection and actions, driven by the list state of @panneau/core.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -37,14 +37,14 @@
37
37
  "react-intl": "^12.0.0"
38
38
  },
39
39
  "dependencies": {
40
- "@panneau/core": "5.0.0-alpha.0",
41
- "@panneau/fields": "5.0.0-alpha.0",
42
- "@panneau/intl": "5.0.0-alpha.0",
43
- "@panneau/protocol": "5.0.0-alpha.0",
44
- "@panneau/ui": "5.0.0-alpha.0",
40
+ "@panneau/core": "5.0.0-alpha.2",
41
+ "@panneau/fields": "5.0.0-alpha.2",
42
+ "@panneau/intl": "5.0.0-alpha.2",
43
+ "@panneau/protocol": "5.0.0-alpha.2",
44
+ "@panneau/ui": "5.0.0-alpha.2",
45
45
  "lucide-react": "^1.57.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@panneau/data": "5.0.0-alpha.0"
48
+ "@panneau/data": "5.0.0-alpha.2"
49
49
  }
50
50
  }