@universal-ember/table 3.0.0 → 3.0.1

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 (168) hide show
  1. package/dist/-private/-type-tests/plugin-properties.test.js +27 -0
  2. package/dist/-private/-type-tests/plugin-properties.test.js.map +1 -0
  3. package/dist/-private/-type-tests/plugin-with.test.js +20 -0
  4. package/dist/-private/-type-tests/plugin-with.test.js.map +1 -0
  5. package/dist/-private/-type-tests/plugins-accessors.test.js +36 -0
  6. package/dist/-private/-type-tests/plugins-accessors.test.js.map +1 -0
  7. package/dist/-private/-type-tests/plugins-signature-from.test.js +15 -0
  8. package/dist/-private/-type-tests/plugins-signature-from.test.js.map +1 -0
  9. package/dist/-private/-type-tests/plugins-signature-utils.test.js +36 -0
  10. package/dist/-private/-type-tests/plugins-signature-utils.test.js.map +1 -0
  11. package/dist/-private/-type-tests/table-api.test.js +17 -0
  12. package/dist/-private/-type-tests/table-api.test.js.map +1 -0
  13. package/dist/-private/-type-tests/table-config.test.js +55 -0
  14. package/dist/-private/-type-tests/table-config.test.js.map +1 -0
  15. package/dist/-private/column.js +62 -0
  16. package/dist/-private/column.js.map +1 -0
  17. package/dist/-private/ember-compat.js +17 -0
  18. package/dist/-private/ember-compat.js.map +1 -0
  19. package/dist/-private/interfaces/column.js +2 -0
  20. package/dist/-private/interfaces/column.js.map +1 -0
  21. package/dist/-private/interfaces/index.js +2 -0
  22. package/dist/-private/interfaces/index.js.map +1 -0
  23. package/dist/-private/interfaces/modifier.js +2 -0
  24. package/dist/-private/interfaces/modifier.js.map +1 -0
  25. package/dist/-private/interfaces/pagination.js +2 -0
  26. package/dist/-private/interfaces/pagination.js.map +1 -0
  27. package/dist/-private/interfaces/plugins.js +2 -0
  28. package/dist/-private/interfaces/plugins.js.map +1 -0
  29. package/dist/-private/interfaces/preferences.js +2 -0
  30. package/dist/-private/interfaces/preferences.js.map +1 -0
  31. package/dist/-private/interfaces/selection.js +2 -0
  32. package/dist/-private/interfaces/selection.js.map +1 -0
  33. package/dist/-private/interfaces/table.js +2 -0
  34. package/dist/-private/interfaces/table.js.map +1 -0
  35. package/dist/-private/js-helper.js +55 -0
  36. package/dist/-private/js-helper.js.map +1 -0
  37. package/dist/-private/preferences.js +143 -0
  38. package/dist/-private/preferences.js.map +1 -0
  39. package/dist/-private/private-types.js +2 -0
  40. package/dist/-private/private-types.js.map +1 -0
  41. package/dist/-private/row.js +51 -0
  42. package/dist/-private/row.js.map +1 -0
  43. package/dist/-private/table.js +273 -0
  44. package/dist/-private/table.js.map +1 -0
  45. package/dist/-private/utils.js +15 -0
  46. package/dist/-private/utils.js.map +1 -0
  47. package/dist/_rollupPluginBabelHelpers-BpiaYhlf.js +63 -0
  48. package/dist/_rollupPluginBabelHelpers-BpiaYhlf.js.map +1 -0
  49. package/dist/index.js +4 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/plugins/-private/base.js +524 -0
  52. package/dist/plugins/-private/base.js.map +1 -0
  53. package/dist/plugins/-private/utils.js +103 -0
  54. package/dist/plugins/-private/utils.js.map +1 -0
  55. package/dist/plugins/column-reordering/helpers.js +44 -0
  56. package/dist/plugins/column-reordering/helpers.js.map +1 -0
  57. package/dist/plugins/column-reordering/index.js +3 -0
  58. package/dist/plugins/column-reordering/index.js.map +1 -0
  59. package/dist/plugins/column-reordering/plugin.js +359 -0
  60. package/dist/plugins/column-reordering/plugin.js.map +1 -0
  61. package/dist/plugins/column-reordering/utils.js +34 -0
  62. package/dist/plugins/column-reordering/utils.js.map +1 -0
  63. package/dist/plugins/column-resizing/handle.js +241 -0
  64. package/dist/plugins/column-resizing/handle.js.map +1 -0
  65. package/dist/plugins/column-resizing/helpers.js +71 -0
  66. package/dist/plugins/column-resizing/helpers.js.map +1 -0
  67. package/dist/plugins/column-resizing/index.js +4 -0
  68. package/dist/plugins/column-resizing/index.js.map +1 -0
  69. package/dist/plugins/column-resizing/plugin.js +328 -0
  70. package/dist/plugins/column-resizing/plugin.js.map +1 -0
  71. package/dist/plugins/column-resizing/resize-observer.js +44 -0
  72. package/dist/plugins/column-resizing/resize-observer.js.map +1 -0
  73. package/dist/plugins/column-resizing/utils.js +44 -0
  74. package/dist/plugins/column-resizing/utils.js.map +1 -0
  75. package/dist/plugins/column-visibility/helpers.js +25 -0
  76. package/dist/plugins/column-visibility/helpers.js.map +1 -0
  77. package/dist/plugins/column-visibility/index.js +3 -0
  78. package/dist/plugins/column-visibility/index.js.map +1 -0
  79. package/dist/plugins/column-visibility/plugin.js +92 -0
  80. package/dist/plugins/column-visibility/plugin.js.map +1 -0
  81. package/dist/plugins/data-sorting/helpers.js +49 -0
  82. package/dist/plugins/data-sorting/helpers.js.map +1 -0
  83. package/dist/plugins/data-sorting/index.js +4 -0
  84. package/dist/plugins/data-sorting/index.js.map +1 -0
  85. package/dist/plugins/data-sorting/plugin.js +132 -0
  86. package/dist/plugins/data-sorting/plugin.js.map +1 -0
  87. package/dist/plugins/data-sorting/types.js +14 -0
  88. package/dist/plugins/data-sorting/types.js.map +1 -0
  89. package/dist/plugins/index.js +3 -0
  90. package/dist/plugins/index.js.map +1 -0
  91. package/dist/plugins/metadata/helpers.js +12 -0
  92. package/dist/plugins/metadata/helpers.js.map +1 -0
  93. package/dist/plugins/metadata/index.js +3 -0
  94. package/dist/plugins/metadata/index.js.map +1 -0
  95. package/dist/plugins/metadata/plugin.js +25 -0
  96. package/dist/plugins/metadata/plugin.js.map +1 -0
  97. package/dist/plugins/row-selection/helpers.js +10 -0
  98. package/dist/plugins/row-selection/helpers.js.map +1 -0
  99. package/dist/plugins/row-selection/index.js +3 -0
  100. package/dist/plugins/row-selection/index.js.map +1 -0
  101. package/dist/plugins/row-selection/plugin.js +118 -0
  102. package/dist/plugins/row-selection/plugin.js.map +1 -0
  103. package/dist/plugins/sticky-columns/helpers.js +49 -0
  104. package/dist/plugins/sticky-columns/helpers.js.map +1 -0
  105. package/dist/plugins/sticky-columns/index.js +3 -0
  106. package/dist/plugins/sticky-columns/index.js.map +1 -0
  107. package/dist/plugins/sticky-columns/plugin.js +139 -0
  108. package/dist/plugins/sticky-columns/plugin.js.map +1 -0
  109. package/dist/test-support/index.js +62 -0
  110. package/dist/test-support/index.js.map +1 -0
  111. package/dist/utils.js +77 -0
  112. package/dist/utils.js.map +1 -0
  113. package/package.json +3 -2
  114. package/src/-private/-type-tests/plugin-properties.test.ts +38 -0
  115. package/src/-private/-type-tests/plugin-with.test.ts +23 -0
  116. package/src/-private/-type-tests/plugins-accessors.test.ts +86 -0
  117. package/src/-private/-type-tests/plugins-signature-from.test.ts +66 -0
  118. package/src/-private/-type-tests/plugins-signature-utils.test.ts +154 -0
  119. package/src/-private/-type-tests/table-api.test.ts +20 -0
  120. package/src/-private/-type-tests/table-config.test.ts +70 -0
  121. package/src/-private/column.ts +67 -0
  122. package/src/-private/ember-compat.ts +26 -0
  123. package/src/-private/interfaces/column.ts +73 -0
  124. package/src/-private/interfaces/index.ts +7 -0
  125. package/src/-private/interfaces/modifier.ts +7 -0
  126. package/src/-private/interfaces/pagination.ts +13 -0
  127. package/src/-private/interfaces/plugins.ts +349 -0
  128. package/src/-private/interfaces/preferences.ts +82 -0
  129. package/src/-private/interfaces/selection.ts +38 -0
  130. package/src/-private/interfaces/table.ts +121 -0
  131. package/src/-private/js-helper.ts +65 -0
  132. package/src/-private/preferences.ts +176 -0
  133. package/src/-private/private-types.ts +8 -0
  134. package/src/-private/row.ts +66 -0
  135. package/src/-private/table.ts +310 -0
  136. package/src/-private/utils.ts +21 -0
  137. package/src/index.ts +25 -0
  138. package/src/plugins/-private/base.ts +836 -0
  139. package/src/plugins/-private/utils.ts +166 -0
  140. package/src/plugins/column-reordering/helpers.ts +50 -0
  141. package/src/plugins/column-reordering/index.ts +6 -0
  142. package/src/plugins/column-reordering/plugin.ts +489 -0
  143. package/src/plugins/column-reordering/utils.ts +48 -0
  144. package/src/plugins/column-resizing/handle.ts +280 -0
  145. package/src/plugins/column-resizing/helpers.ts +79 -0
  146. package/src/plugins/column-resizing/index.ts +7 -0
  147. package/src/plugins/column-resizing/plugin.ts +490 -0
  148. package/src/plugins/column-resizing/resize-observer.ts +48 -0
  149. package/src/plugins/column-resizing/utils.ts +54 -0
  150. package/src/plugins/column-visibility/helpers.ts +28 -0
  151. package/src/plugins/column-visibility/index.ts +6 -0
  152. package/src/plugins/column-visibility/plugin.ts +155 -0
  153. package/src/plugins/data-sorting/helpers.ts +56 -0
  154. package/src/plugins/data-sorting/index.ts +8 -0
  155. package/src/plugins/data-sorting/plugin.ts +222 -0
  156. package/src/plugins/data-sorting/types.ts +26 -0
  157. package/src/plugins/index.ts +20 -0
  158. package/src/plugins/metadata/helpers.ts +12 -0
  159. package/src/plugins/metadata/index.ts +7 -0
  160. package/src/plugins/metadata/plugin.ts +26 -0
  161. package/src/plugins/row-selection/helpers.ts +13 -0
  162. package/src/plugins/row-selection/index.ts +7 -0
  163. package/src/plugins/row-selection/plugin.ts +218 -0
  164. package/src/plugins/sticky-columns/helpers.ts +59 -0
  165. package/src/plugins/sticky-columns/index.ts +7 -0
  166. package/src/plugins/sticky-columns/plugin.ts +201 -0
  167. package/src/test-support/index.ts +76 -0
  168. package/src/utils.ts +85 -0
@@ -0,0 +1,241 @@
1
+ import { _ as _defineProperty } from '../../_rollupPluginBabelHelpers-BpiaYhlf.js';
2
+ import { registerDestructor } from '@ember/destroyable';
3
+ import { buildWaiter } from '@ember/test-waiters';
4
+ import Modifier from 'ember-modifier';
5
+ import { meta } from '../-private/base.js';
6
+ import { ColumnResizing } from './plugin.js';
7
+
8
+ const waiter = buildWaiter('ColumnResizing#ResizeHandle');
9
+
10
+ /**
11
+ * - why are mouse events used instead of drag events?
12
+ * - why not use the "draggable" attribute?
13
+ *
14
+ * It seems drag events are more for files and/or moving images around on a page
15
+ * dragging an image, for example, has a ghost of that image until it is dropped.
16
+ * The same thing happens with text.
17
+ * This prevents us from having total control of the styling of how dragging works.
18
+ *
19
+ *
20
+ *
21
+ */
22
+
23
+ class ResizeHandle extends Modifier {
24
+ constructor(...args) {
25
+ super(...args);
26
+ // Pointer
27
+ _defineProperty(this, "pointerStartX", 0);
28
+ _defineProperty(this, "pointerStartY", 0);
29
+ _defineProperty(this, "pointerX", 0);
30
+ _defineProperty(this, "pointerY", 0);
31
+ // Keyboard
32
+ _defineProperty(this, "keyDistance", 0);
33
+ // waiter
34
+ _defineProperty(this, "token", void 0);
35
+ _defineProperty(this, "isSetup", false);
36
+ _defineProperty(this, "setup", () => {
37
+ this.dragHandle.addEventListener('touchstart', this.dragStartHandler);
38
+ this.dragHandle.addEventListener('mousedown', this.dragStartHandler);
39
+ this.dragHandle.addEventListener('keydown', this.keyHandler);
40
+ registerDestructor(this, () => {
41
+ this.meta.isResizing = false;
42
+ if (this.token) {
43
+ waiter.endAsync(this.token);
44
+ this.token = undefined;
45
+ }
46
+ this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);
47
+ this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);
48
+ window.removeEventListener('touchmove', this.dragMove);
49
+ window.removeEventListener('touchend', this.dragEndHandler);
50
+ window.removeEventListener('mousemove', this.dragMove);
51
+ window.removeEventListener('mouseup', this.dragEndHandler);
52
+ this.dragHandle.removeEventListener('keydown', this.keyHandler);
53
+ });
54
+ });
55
+ _defineProperty(this, "setPosition", event => {
56
+ if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;
57
+ if ('TouchEvent' in window && event instanceof TouchEvent) {
58
+ const firstTouch = event.touches[0];
59
+ if (!firstTouch) return;
60
+ this.pointerX = firstTouch.clientX;
61
+ this.pointerY = firstTouch.clientY;
62
+ } else {
63
+ this.pointerX = event.clientX;
64
+ this.pointerY = event.clientY;
65
+ }
66
+ });
67
+ _defineProperty(this, "setStartPosition", event => {
68
+ if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;
69
+ if ('TouchEvent' in window && event instanceof TouchEvent) {
70
+ const firstTouch = event.touches[0];
71
+ if (!firstTouch) return;
72
+ this.pointerStartX = firstTouch.clientX;
73
+ this.pointerStartY = firstTouch.clientY;
74
+ } else {
75
+ this.pointerStartX = event.clientX;
76
+ this.pointerStartY = event.clientY;
77
+ }
78
+ });
79
+ /**
80
+ * queueUpdate takes an optional function argument that is called
81
+ * in the requestAnimationFrame callback _after_ the resize function.
82
+ *
83
+ * We can use this to ensure that preferences are only ever saved after
84
+ * we have completed column resizing.
85
+ *
86
+ * Because the requestAnimationFrame 'hides' these function calls from the
87
+ * the ember test waiter, we also ensure that we track them by also cancelling
88
+ * the waiter in the requestAnimationFrame callback.
89
+ */
90
+ _defineProperty(this, "queueUpdate", callback => {
91
+ if (this.dragFrame) {
92
+ cancelAnimationFrame(this.dragFrame);
93
+ }
94
+ this.dragFrame = requestAnimationFrame(() => {
95
+ this.meta.resize(this.pointerX - this.pointerStartX);
96
+ this.pointerStartX = this.pointerX;
97
+ if (callback) {
98
+ callback();
99
+ }
100
+ if (this.token) {
101
+ waiter.endAsync(this.token);
102
+ this.token = undefined;
103
+ }
104
+ });
105
+ });
106
+ _defineProperty(this, "dragEndHandler", () => {
107
+ this.meta.isResizing = false;
108
+ this.queueUpdate(this.meta.save);
109
+
110
+ /**
111
+ * No need to listen if we aren't dragging
112
+ */
113
+ window.removeEventListener('touchmove', this.dragMove);
114
+ window.removeEventListener('touchend', this.dragEndHandler);
115
+ window.removeEventListener('mousemove', this.dragMove);
116
+ window.removeEventListener('mouseup', this.dragEndHandler);
117
+ });
118
+ _defineProperty(this, "dragMove", event => {
119
+ if (!this.meta.isResizing) return;
120
+ this.setPosition(event);
121
+ this.queueUpdate();
122
+ });
123
+ _defineProperty(this, "dragStartHandler", event => {
124
+ if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;
125
+ this.meta.isResizing = true;
126
+ if (event.target !== this.dragHandle) return;
127
+ if (this.token) {
128
+ waiter.endAsync(this.token);
129
+ }
130
+ this.token = waiter.beginAsync();
131
+ this.setPosition(event);
132
+ this.setStartPosition(event);
133
+ window.addEventListener('touchend', this.dragEndHandler);
134
+ window.addEventListener('touchmove', this.dragMove);
135
+ window.addEventListener('mousemove', this.dragMove);
136
+ window.addEventListener('mouseup', this.dragEndHandler);
137
+ });
138
+ _defineProperty(this, "keyHandler", event => {
139
+ const deltaT = new Date().getTime() - this.lastKey;
140
+ const isRapid = deltaT < 50;
141
+ if (event.code === 'ArrowDown' || event.code === 'ArrowRight') {
142
+ this.keyDistance += isRapid ? 8 : 1;
143
+ this.lastKey = new Date().getTime();
144
+ }
145
+ if (event.code === 'ArrowUp' || event.code === 'ArrowLeft') {
146
+ this.keyDistance -= isRapid ? 8 : 1;
147
+ this.lastKey = new Date().getTime();
148
+ }
149
+ cancelAnimationFrame(this.keyFrame);
150
+ this.keyFrame = requestAnimationFrame(() => {
151
+ this.meta.resize(this.keyDistance);
152
+ this.keyDistance = 0;
153
+ });
154
+ });
155
+ }
156
+ modify(element, [column]) {
157
+ this.column = column;
158
+ this.meta = meta.forColumn(column, ColumnResizing);
159
+ this.dragHandle = element;
160
+ if (!this.isSetup) {
161
+ this.isSetup = true;
162
+ this.setup();
163
+ }
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Modifier to attach to the column resize handles.
169
+ * This provides both keyboard and mouse support for resizing columns.
170
+ * (provided the resize handle element is focusable -- so consider using
171
+ * a button for the resize element)
172
+ *
173
+ * @example
174
+ * ```js
175
+ * import Component from '@glimmer/component';
176
+ * import { meta } from '@universal-ember/table/plugins';
177
+ * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';
178
+ *
179
+ * export default class TableHead extends Component {
180
+ * /* ✂️ *\/
181
+ *
182
+ * <template>
183
+ * <thead>
184
+ * <tr>
185
+ * {{#each this.columns as |column|}}
186
+ * <th>
187
+ * <span>{{column.name}}</span>
188
+ * <button {{resizeHandle column}}></button>
189
+ * </th>
190
+ * {{/each}}
191
+ * </tr>
192
+ * </thead>
193
+ * </template>
194
+ * }
195
+ * ```
196
+ *
197
+ * Width and isResizing state is maintained on the "meta"
198
+ * class so that the users may choose per-column stylings for
199
+ * isResizing and dragging behaviors.
200
+ *
201
+ * For example, while dragging, the user may add a class based on the
202
+ * isDragging property.
203
+ *
204
+ * @example
205
+ * ```js
206
+ * import Component from '@glimmer/component';
207
+ * import { meta } from '@universal-ember/table/plugins';
208
+ * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';
209
+ *
210
+ * export default class TableHead extends Component {
211
+ * /* ✂️ *\/
212
+ *
213
+ * isDragging = (column) => {
214
+ * return meta.forColumn(column, ColumnResizing).isDragging;
215
+ * }
216
+ *
217
+ * <template>
218
+ * <thead>
219
+ * <tr>
220
+ * {{#each this.columns as |column|}}
221
+ * <th class="header {{if (this.isDragging column) 'blue'}}">
222
+ * <span>{{column.name}}</span>
223
+ * <button {{resizeHandle column}}></button>
224
+ * </th>
225
+ * {{/each}}
226
+ * </tr>
227
+ * </thead>
228
+ * </template>
229
+ * }
230
+ * ```
231
+ *
232
+ *
233
+ * @note
234
+ * The logic here is copied from the drag slider in
235
+ * https://limber.glimdown.com/
236
+ * See: "resize-handle" on Limber's GitHub
237
+ */
238
+ const resizeHandle = ResizeHandle;
239
+
240
+ export { resizeHandle };
241
+ //# sourceMappingURL=handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.js","sources":["../../../src/plugins/column-resizing/handle.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { buildWaiter } from '@ember/test-waiters';\n\nimport Modifier from 'ember-modifier';\n\nimport { meta } from '../-private/base.ts';\nimport { ColumnResizing } from './plugin.ts';\n\nimport type { ColumnMeta } from './plugin.ts';\nimport type { Column } from '../../-private/column.ts';\n\nconst waiter = buildWaiter('ColumnResizing#ResizeHandle');\n\n/**\n * - why are mouse events used instead of drag events?\n * - why not use the \"draggable\" attribute?\n *\n * It seems drag events are more for files and/or moving images around on a page\n * dragging an image, for example, has a ghost of that image until it is dropped.\n * The same thing happens with text.\n * This prevents us from having total control of the styling of how dragging works.\n *\n *\n *\n */\n\nclass ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {\n declare dragHandle: HTMLElement;\n declare column: Column;\n declare meta: ColumnMeta;\n\n // Pointer\n pointerStartX = 0;\n pointerStartY = 0;\n pointerX = 0;\n pointerY = 0;\n declare dragFrame: number;\n\n // Keyboard\n keyDistance = 0;\n declare keyFrame: number; // ha\n declare lastKey: number;\n\n // waiter\n token?: unknown;\n\n isSetup = false;\n modify(element: Element, [column]: [Column]) {\n this.column = column;\n this.meta = meta.forColumn(column, ColumnResizing);\n this.dragHandle = element as HTMLElement;\n\n if (!this.isSetup) {\n this.isSetup = true;\n this.setup();\n }\n }\n\n setup = () => {\n this.dragHandle.addEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.addEventListener('mousedown', this.dragStartHandler);\n this.dragHandle.addEventListener('keydown', this.keyHandler);\n\n registerDestructor(this, () => {\n this.meta.isResizing = false;\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n\n this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n this.dragHandle.removeEventListener('keydown', this.keyHandler);\n });\n };\n\n setPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n const firstTouch = event.touches[0];\n\n if (!firstTouch) return;\n\n this.pointerX = firstTouch.clientX;\n this.pointerY = firstTouch.clientY;\n } else {\n this.pointerX = event.clientX;\n this.pointerY = event.clientY;\n }\n };\n\n setStartPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n const firstTouch = event.touches[0];\n\n if (!firstTouch) return;\n\n this.pointerStartX = firstTouch.clientX;\n this.pointerStartY = firstTouch.clientY;\n } else {\n this.pointerStartX = event.clientX;\n this.pointerStartY = event.clientY;\n }\n };\n\n /**\n * queueUpdate takes an optional function argument that is called\n * in the requestAnimationFrame callback _after_ the resize function.\n *\n * We can use this to ensure that preferences are only ever saved after\n * we have completed column resizing.\n *\n * Because the requestAnimationFrame 'hides' these function calls from the\n * the ember test waiter, we also ensure that we track them by also cancelling\n * the waiter in the requestAnimationFrame callback.\n */\n queueUpdate = (callback?: () => void) => {\n if (this.dragFrame) {\n cancelAnimationFrame(this.dragFrame);\n }\n\n this.dragFrame = requestAnimationFrame(() => {\n this.meta.resize(this.pointerX - this.pointerStartX);\n this.pointerStartX = this.pointerX;\n\n if (callback) {\n callback();\n }\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n });\n };\n\n dragEndHandler = () => {\n this.meta.isResizing = false;\n\n this.queueUpdate(this.meta.save);\n\n /**\n * No need to listen if we aren't dragging\n */\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n };\n\n dragMove = (event: Event) => {\n if (!this.meta.isResizing) return;\n this.setPosition(event);\n this.queueUpdate();\n };\n\n dragStartHandler = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n this.meta.isResizing = true;\n if (event.target !== this.dragHandle) return;\n\n if (this.token) {\n waiter.endAsync(this.token);\n }\n\n this.token = waiter.beginAsync();\n\n this.setPosition(event);\n this.setStartPosition(event);\n\n window.addEventListener('touchend', this.dragEndHandler);\n window.addEventListener('touchmove', this.dragMove);\n window.addEventListener('mousemove', this.dragMove);\n window.addEventListener('mouseup', this.dragEndHandler);\n };\n\n keyHandler = (event: KeyboardEvent) => {\n const deltaT = new Date().getTime() - this.lastKey;\n const isRapid = deltaT < 50;\n\n if (event.code === 'ArrowDown' || event.code === 'ArrowRight') {\n this.keyDistance += isRapid ? 8 : 1;\n this.lastKey = new Date().getTime();\n }\n\n if (event.code === 'ArrowUp' || event.code === 'ArrowLeft') {\n this.keyDistance -= isRapid ? 8 : 1;\n this.lastKey = new Date().getTime();\n }\n\n cancelAnimationFrame(this.keyFrame);\n this.keyFrame = requestAnimationFrame(() => {\n this.meta.resize(this.keyDistance);\n\n this.keyDistance = 0;\n });\n };\n}\n\n/**\n * Modifier to attach to the column resize handles.\n * This provides both keyboard and mouse support for resizing columns.\n * (provided the resize handle element is focusable -- so consider using\n * a button for the resize element)\n *\n * @example\n * ```js\n * import Component from '@glimmer/component';\n * import { meta } from '@universal-ember/table/plugins';\n * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th>\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n * Width and isResizing state is maintained on the \"meta\"\n * class so that the users may choose per-column stylings for\n * isResizing and dragging behaviors.\n *\n * For example, while dragging, the user may add a class based on the\n * isDragging property.\n *\n * @example\n * ```js\n * import Component from '@glimmer/component';\n * import { meta } from '@universal-ember/table/plugins';\n * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * isDragging = (column) => {\n * return meta.forColumn(column, ColumnResizing).isDragging;\n * }\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th class=\"header {{if (this.isDragging column) 'blue'}}\">\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n *\n * @note\n * The logic here is copied from the drag slider in\n * https://limber.glimdown.com/\n * See: \"resize-handle\" on Limber's GitHub\n */\nexport const resizeHandle = ResizeHandle;\n"],"names":["waiter","buildWaiter","ResizeHandle","Modifier","constructor","args","_defineProperty","dragHandle","addEventListener","dragStartHandler","keyHandler","registerDestructor","meta","isResizing","token","endAsync","undefined","removeEventListener","window","dragMove","dragEndHandler","event","PointerEvent","MouseEvent","TouchEvent","firstTouch","touches","pointerX","clientX","pointerY","clientY","pointerStartX","pointerStartY","callback","dragFrame","cancelAnimationFrame","requestAnimationFrame","resize","queueUpdate","save","setPosition","target","beginAsync","setStartPosition","deltaT","Date","getTime","lastKey","isRapid","code","keyDistance","keyFrame","modify","element","column","forColumn","ColumnResizing","isSetup","setup","resizeHandle"],"mappings":"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CAACD,OAAO,GAAG,IAAIF,IAAI,EAAE,CAACC,OAAO,EAAE;AACrC;AAEAX,MAAAA,oBAAoB,CAAC,IAAI,CAACgB,QAAQ,CAAC;AACnC,MAAA,IAAI,CAACA,QAAQ,GAAGf,qBAAqB,CAAC,MAAM;QAC1C,IAAI,CAACxB,IAAI,CAACyB,MAAM,CAAC,IAAI,CAACa,WAAW,CAAC;QAElC,IAAI,CAACA,WAAW,GAAG,CAAC;AACtB,OAAC,CAAC;KACH,CAAA;AAAA;AA9JDE,EAAAA,MAAMA,CAACC,OAAgB,EAAE,CAACC,MAAM,CAAW,EAAE;IAC3C,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC1C,IAAI,GAAGA,IAAI,CAAC2C,SAAS,CAACD,MAAM,EAAEE,cAAc,CAAC;IAClD,IAAI,CAACjD,UAAU,GAAG8C,OAAsB;AAExC,IAAA,IAAI,CAAC,IAAI,CAACI,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG,IAAI;MACnB,IAAI,CAACC,KAAK,EAAE;AACd;AACF;AAsJF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAGzD;;;;"}
@@ -0,0 +1,71 @@
1
+ import { htmlSafe } from '@ember/template';
2
+ import { meta } from '../-private/base.js';
3
+ import { ColumnResizing } from './plugin.js';
4
+
5
+ /**
6
+ * The column actively being resized by the user.
7
+ *
8
+ * Note that during resizing, multiple columns are resized at once,
9
+ * dependending on the boundaries of the resize events.
10
+ *
11
+ * The other columns being resized as a consequence of "this" column will not
12
+ * be marked as isResizing, because this is a user-scoped question:
13
+ * "Is the user directly resizing this column?"
14
+ */
15
+ const isResizing = column => meta.forColumn(column, ColumnResizing).isResizing;
16
+
17
+ /**
18
+ * Does the column have room to shrink?
19
+ */
20
+ const canShrink = column => meta.forColumn(column, ColumnResizing).canShrink;
21
+
22
+ /**
23
+ * Does the column have a resize handle?
24
+ * The return value of this function can be determined by
25
+ * - if resizing is enabled for the column
26
+ * - if resizing is enabled for the whole table
27
+ * - or if we're asking about the first column (resize handles may only be "between" columns)
28
+ */
29
+ const hasResizeHandle = column => meta.forColumn(column, ColumnResizing).hasResizeHandle;
30
+
31
+ /**
32
+ * In this plugin (by default), styles are only applied to the headers automatically.
33
+ * in <Table> UIs, the header cells control the widths of all cells in that column.
34
+ * There are other kinds of tabular-like markup that may want to grab the widths of columns,
35
+ * because The Platform does not manage that automatically (like if divs and roles were used manually)
36
+ *
37
+ * This utility is meant to be applied to the `style` attribute of a particular td-like element.
38
+ */
39
+ const styleStringFor = column => {
40
+ const columnMeta = meta.forColumn(column, ColumnResizing);
41
+ let result = '';
42
+
43
+ /**
44
+ * Styles are applied regardless of the "table" being resizable or not
45
+ * because in non-<table> UIs, we need to ensure that all cells in a column
46
+ * have the same width
47
+ */
48
+ for (const [key, value] of Object.entries(columnMeta.style)) {
49
+ result += `${toStyle(key)}:${value};`;
50
+ }
51
+ result = ';' + result;
52
+ return htmlSafe(result);
53
+ };
54
+
55
+ /**
56
+ * the JS API for styles is camel case,
57
+ * but CSS is kebab-case. To save on complexity and
58
+ * amount of code, we have a super small conversion function
59
+ * for only the properties relevant to the sticky plugin.
60
+ */
61
+ const toStyle = key => {
62
+ switch (key) {
63
+ case 'minWidth':
64
+ return 'min-width';
65
+ default:
66
+ return key;
67
+ }
68
+ };
69
+
70
+ export { canShrink, hasResizeHandle, isResizing, styleStringFor };
71
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-resizing/helpers.ts"],"sourcesContent":["import { htmlSafe } from '@ember/template';\n\nimport { meta } from '../-private/base.ts';\nimport { ColumnResizing } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * The column actively being resized by the user.\n *\n * Note that during resizing, multiple columns are resized at once,\n * dependending on the boundaries of the resize events.\n *\n * The other columns being resized as a consequence of \"this\" column will not\n * be marked as isResizing, because this is a user-scoped question:\n * \"Is the user directly resizing this column?\"\n */\nexport const isResizing = (column: Column) =>\n meta.forColumn(column, ColumnResizing).isResizing;\n\n/**\n * Does the column have room to shrink?\n */\nexport const canShrink = (column: Column) =>\n meta.forColumn(column, ColumnResizing).canShrink;\n\n/**\n * Does the column have a resize handle?\n * The return value of this function can be determined by\n * - if resizing is enabled for the column\n * - if resizing is enabled for the whole table\n * - or if we're asking about the first column (resize handles may only be \"between\" columns)\n */\nexport const hasResizeHandle = (column: Column) =>\n meta.forColumn(column, ColumnResizing).hasResizeHandle;\n\n/**\n * In this plugin (by default), styles are only applied to the headers automatically.\n * in <Table> UIs, the header cells control the widths of all cells in that column.\n * There are other kinds of tabular-like markup that may want to grab the widths of columns,\n * because The Platform does not manage that automatically (like if divs and roles were used manually)\n *\n * This utility is meant to be applied to the `style` attribute of a particular td-like element.\n */\nexport const styleStringFor = <DataType = unknown>(\n column: Column<DataType>,\n): ReturnType<typeof htmlSafe> => {\n const columnMeta = meta.forColumn(column, ColumnResizing);\n\n let result = '';\n\n /**\n * Styles are applied regardless of the \"table\" being resizable or not\n * because in non-<table> UIs, we need to ensure that all cells in a column\n * have the same width\n */\n for (const [key, value] of Object.entries(columnMeta.style)) {\n result += `${toStyle(key)}:${value};`;\n }\n\n result = ';' + result;\n\n return htmlSafe(result);\n};\n\n/**\n * the JS API for styles is camel case,\n * but CSS is kebab-case. To save on complexity and\n * amount of code, we have a super small conversion function\n * for only the properties relevant to the sticky plugin.\n */\nconst toStyle = (key: string): string => {\n switch (key) {\n case 'minWidth':\n return 'min-width';\n default:\n return key;\n }\n};\n"],"names":["isResizing","column","meta","forColumn","ColumnResizing","canShrink","hasResizeHandle","styleStringFor","columnMeta","result","key","value","Object","entries","style","toStyle","htmlSafe"],"mappings":";;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,UAAU,GAAIC,MAAc,IACvCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACJ;;AAEzC;AACA;AACA;AACaK,MAAAA,SAAS,GAAIJ,MAAc,IACtCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,eAAe,GAAIL,MAAc,IAC5CC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACE;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,cAAc,GACzBN,MAAwB,IACQ;EAChC,MAAMO,UAAU,GAAGN,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC;EAEzD,IAAIK,MAAM,GAAG,EAAE;;AAEf;AACF;AACA;AACA;AACA;AACE,EAAA,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,UAAU,CAACM,KAAK,CAAC,EAAE;IAC3DL,MAAM,IAAI,GAAGM,OAAO,CAACL,GAAG,CAAC,CAAA,CAAA,EAAIC,KAAK,CAAG,CAAA,CAAA;AACvC;EAEAF,MAAM,GAAG,GAAG,GAAGA,MAAM;EAErB,OAAOO,QAAQ,CAACP,MAAM,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,OAAO,GAAIL,GAAW,IAAa;AACvC,EAAA,QAAQA,GAAG;AACT,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,WAAW;AACpB,IAAA;AACE,MAAA,OAAOA,GAAG;AACd;AACF,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ export { resizeHandle } from './handle.js';
2
+ export { canShrink, hasResizeHandle, isResizing, styleStringFor } from './helpers.js';
3
+ export { ColumnResizing, ColumnResizing as Plugin } from './plugin.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}