@acorex/cdk 21.0.0-next.9 → 21.0.0-next51

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 (46) hide show
  1. package/accordion/index.d.ts +1 -0
  2. package/drag-drop/index.d.ts +57 -44
  3. package/drawer/index.d.ts +12 -9
  4. package/fesm2022/acorex-cdk-accordion.mjs +52 -67
  5. package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
  6. package/fesm2022/acorex-cdk-carousel.mjs +13 -10
  7. package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
  8. package/fesm2022/acorex-cdk-clipboard.mjs +6 -6
  9. package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
  10. package/fesm2022/acorex-cdk-common.mjs +104 -104
  11. package/fesm2022/acorex-cdk-common.mjs.map +1 -1
  12. package/fesm2022/acorex-cdk-dom.mjs +3 -3
  13. package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
  14. package/fesm2022/acorex-cdk-drag-drop.mjs +278 -85
  15. package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
  16. package/fesm2022/acorex-cdk-drawer.mjs +44 -33
  17. package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
  18. package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
  19. package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
  20. package/fesm2022/acorex-cdk-input-mask.mjs +5 -3
  21. package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
  22. package/fesm2022/acorex-cdk-list-navigation.mjs +39 -21
  23. package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
  24. package/fesm2022/acorex-cdk-outline.mjs +6 -6
  25. package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
  26. package/fesm2022/acorex-cdk-overlay.mjs +3 -3
  27. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  28. package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
  29. package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
  30. package/fesm2022/acorex-cdk-resizable.mjs +166 -118
  31. package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
  32. package/fesm2022/acorex-cdk-selection.mjs +10 -10
  33. package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
  34. package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
  35. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  36. package/fesm2022/acorex-cdk-sticky.mjs +3 -3
  37. package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
  38. package/fesm2022/acorex-cdk-uploader.mjs +746 -0
  39. package/fesm2022/acorex-cdk-uploader.mjs.map +1 -0
  40. package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
  41. package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
  42. package/list-navigation/index.d.ts +1 -0
  43. package/package.json +6 -2
  44. package/resizable/index.d.ts +19 -7
  45. package/uploader/README.md +3 -0
  46. package/uploader/index.d.ts +378 -0
@@ -3,6 +3,7 @@ import { AXHtmlUtil } from '@acorex/core/utils';
3
3
  import { isPlatformBrowser } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, ElementRef, NgZone, DOCUMENT, PLATFORM_ID, signal, model, output, Directive } from '@angular/core';
6
+ import { Subscription } from 'rxjs';
6
7
 
7
8
  class AXResizableDirective {
8
9
  constructor() {
@@ -12,12 +13,26 @@ class AXResizableDirective {
12
13
  this.document = inject(DOCUMENT);
13
14
  this.platformID = inject(PLATFORM_ID);
14
15
  this.isResizing = signal(false, ...(ngDevMode ? [{ debugName: "isResizing" }] : []));
16
+ this.initialElementWidth = 0;
17
+ this.startMoveWidth = 0;
18
+ this.subscriptions = new Subscription();
19
+ // Bound event handlers to maintain reference for cleanup
20
+ this.boundMouseDown = this.onMouseDown.bind(this);
21
+ this.boundMouseMove = this.onMouseMove.bind(this);
22
+ this.boundMouseUp = this.onMouseUp.bind(this);
23
+ this.boundMouseEnter = this.onMouseEnter.bind(this);
24
+ this.boundMouseLeave = this.onMouseLeave.bind(this);
25
+ this.boundDoubleClick = this.onDoubleClick.bind(this);
15
26
  this.resizeObserver = new ResizeObserver((entries) => {
16
- entries
17
- .filter((e) => e.target === this.el.nativeElement.parentElement)
18
- .forEach((i) => {
19
- this.maxWidth.set(i.contentRect.width);
20
- });
27
+ const parentElement = this.hostElement.parentElement;
28
+ if (!parentElement)
29
+ return;
30
+ for (const entry of entries) {
31
+ if (entry.target === parentElement && this.maxWidth() === Infinity) {
32
+ this.maxWidth.set(entry.contentRect.width);
33
+ break;
34
+ }
35
+ }
21
36
  });
22
37
  /** Define if directive is active or not */
23
38
  this.axResizable = model(true, ...(ngDevMode ? [{ debugName: "axResizable" }] : []));
@@ -38,57 +53,70 @@ class AXResizableDirective {
38
53
  /** Event emitted on double-click. */
39
54
  this.onResizingDblClick = output();
40
55
  this.isRTL = signal(AXHtmlUtil.isRtl(this.document.documentElement), ...(ngDevMode ? [{ debugName: "isRTL" }] : []));
41
- this.platformService.directionChange.subscribe((i) => {
56
+ this.isBrowser = isPlatformBrowser(this.platformID);
57
+ this.hostElement = this.el.nativeElement;
58
+ this.subscriptions.add(this.platformService.directionChange.subscribe((i) => {
42
59
  this.isRTL.set(i.data === 'rtl');
43
- });
60
+ if (this.resizeHandle) {
61
+ this.updateHandlePosition();
62
+ }
63
+ }));
44
64
  }
45
65
  ngAfterViewInit() {
46
- this.initialElementWidth = this.el.nativeElement.offsetWidth; // Store the initial width
47
- if (this.width() !== null) {
48
- this.el.nativeElement.style.width = `${this.width()}px`;
66
+ if (!this.isBrowser)
67
+ return;
68
+ this.initialElementWidth = this.hostElement.offsetWidth;
69
+ const initialWidth = this.width();
70
+ if (initialWidth !== null) {
71
+ this.hostElement.style.width = `${initialWidth}px`;
49
72
  }
50
73
  if (this.maxWidth() === Infinity) {
51
- const parentWidth = this.el.nativeElement.parentElement?.offsetWidth;
74
+ const parentWidth = this.hostElement.parentElement?.offsetWidth;
52
75
  if (parentWidth) {
53
76
  this.maxWidth.set(parentWidth);
54
77
  }
55
78
  }
56
- this.resizeObserver.observe(this.el.nativeElement.parentElement);
79
+ const parentElement = this.hostElement.parentElement;
80
+ if (parentElement) {
81
+ this.resizeObserver.observe(parentElement);
82
+ }
57
83
  this.createResizeHandle();
58
84
  this.setupResizableState();
59
85
  }
60
86
  ngOnDestroy() {
87
+ this.subscriptions.unsubscribe();
61
88
  this.resizeObserver.disconnect();
62
89
  this.cleanupEventListeners();
63
90
  }
64
- // ngDoCheck(): void {
65
- // console.log('check');
66
- // }
67
91
  setupResizableState() {
68
- this.axResizable.subscribe((isActive) => {
92
+ this.subscriptions.add(this.axResizable.subscribe((isActive) => {
69
93
  if (!isActive) {
70
- this.resetToInitialWidth(); // Reset width when disabled
71
- this.cleanupEventListeners(); // Remove event listeners
94
+ this.resetToInitialWidth();
95
+ this.cleanupEventListeners();
72
96
  }
73
97
  else {
74
- this.createResizeHandle(); // Re-enable functionality
98
+ this.createResizeHandle();
75
99
  }
76
- });
100
+ }));
77
101
  }
78
102
  createResizeHandle() {
79
- if (!this.axResizable())
80
- return; // Do nothing if directive is disabled
81
- this.el.nativeElement.style.position = 'relative';
103
+ if (!this.axResizable() || this.resizeHandle)
104
+ return;
105
+ this.hostElement.style.position = 'relative';
82
106
  this.resizeHandle = this.document.createElement('div');
83
107
  this.resizeHandle.classList.add('ax-resizable-handler');
84
- this.el.nativeElement.appendChild(this.resizeHandle);
85
- const isRTL = this.isRTL();
108
+ this.hostElement.appendChild(this.resizeHandle);
109
+ this.applyHandleStyles();
110
+ this.attachEventListeners();
111
+ }
112
+ applyHandleStyles() {
113
+ if (!this.resizeHandle)
114
+ return;
86
115
  Object.assign(this.resizeHandle.style, {
87
116
  width: STYLES.handlerWidth,
88
117
  backgroundColor: STYLES.backgroundColor,
89
118
  position: 'absolute',
90
119
  top: '0',
91
- [isRTL ? 'left' : 'right']: '0',
92
120
  bottom: '0',
93
121
  cursor: STYLES.cursor,
94
122
  zIndex: STYLES.zIndex,
@@ -96,145 +124,165 @@ class AXResizableDirective {
96
124
  borderRadius: STYLES.borderRadius,
97
125
  userSelect: 'none',
98
126
  });
127
+ this.updateHandlePosition();
128
+ }
129
+ updateHandlePosition() {
130
+ if (!this.resizeHandle)
131
+ return;
132
+ const isRTL = this.isRTL();
133
+ if (isRTL) {
134
+ this.resizeHandle.style.left = '0';
135
+ this.resizeHandle.style.right = '';
136
+ }
137
+ else {
138
+ this.resizeHandle.style.right = '0';
139
+ this.resizeHandle.style.left = '';
140
+ }
141
+ }
142
+ attachEventListeners() {
143
+ if (!this.resizeHandle)
144
+ return;
145
+ const handle = this.resizeHandle;
99
146
  this.zone.runOutsideAngular(() => {
100
- this.resizeHandle.addEventListener('mousedown', this.onMouseDown.bind(this));
101
- this.document.addEventListener('mousemove', this.onMouseMove.bind(this));
102
- this.document.addEventListener('mouseup', this.onMouseUp.bind(this));
103
- this.resizeHandle.addEventListener('mouseenter', this.onMouseEnter.bind(this));
104
- this.resizeHandle.addEventListener('mouseleave', this.onMouseLeave.bind(this));
105
- this.resizeHandle.addEventListener('dblclick', this.onDoubleClick.bind(this));
147
+ handle.addEventListener('mousedown', this.boundMouseDown);
148
+ handle.addEventListener('mouseenter', this.boundMouseEnter);
149
+ handle.addEventListener('mouseleave', this.boundMouseLeave);
150
+ handle.addEventListener('dblclick', this.boundDoubleClick);
151
+ this.document.addEventListener('mousemove', this.boundMouseMove);
152
+ this.document.addEventListener('mouseup', this.boundMouseUp);
106
153
  });
107
154
  }
108
155
  cleanupEventListeners() {
109
156
  if (this.resizeHandle) {
110
- this.resizeHandle.removeEventListener('mousedown', this.onMouseDown.bind(this));
111
- this.resizeHandle.removeEventListener('mouseenter', this.onMouseEnter.bind(this));
112
- this.resizeHandle.removeEventListener('mouseleave', this.onMouseLeave.bind(this));
113
- this.resizeHandle.removeEventListener('dblclick', this.onDoubleClick.bind(this));
114
- if (this.resizeHandle.parentElement) {
115
- this.resizeHandle.parentElement.removeChild(this.resizeHandle);
116
- }
157
+ this.resizeHandle.removeEventListener('mousedown', this.boundMouseDown);
158
+ this.resizeHandle.removeEventListener('mouseenter', this.boundMouseEnter);
159
+ this.resizeHandle.removeEventListener('mouseleave', this.boundMouseLeave);
160
+ this.resizeHandle.removeEventListener('dblclick', this.boundDoubleClick);
161
+ this.resizeHandle.remove();
162
+ this.resizeHandle = undefined;
117
163
  }
118
- this.document.removeEventListener('mousemove', this.onMouseMove.bind(this));
119
- this.document.removeEventListener('mouseup', this.onMouseUp.bind(this));
164
+ this.document.removeEventListener('mousemove', this.boundMouseMove);
165
+ this.document.removeEventListener('mouseup', this.boundMouseUp);
120
166
  this.document.body.style.cursor = '';
121
167
  }
122
168
  onMouseDown(event) {
123
- if (isPlatformBrowser(this.platformID)) {
124
- const handleRect = this.resizeHandle.getBoundingClientRect();
125
- if (event.clientX >= handleRect.left && event.clientX <= handleRect.right) {
126
- this.isResizing.set(true);
127
- this.document.body.style.cursor = STYLES.cursorActive;
128
- this.resizeHandle.style.backgroundColor = STYLES.backgroundColorActive;
129
- event.preventDefault();
130
- this.startMoveWidth = this.el.nativeElement.offsetWidth;
131
- this.onResizingStarted.emit({
132
- component: this,
133
- htmlElement: this.el.nativeElement,
134
- isUserInteraction: true,
135
- name: 'resizingStarted',
136
- value: this.el.nativeElement.offsetWidth,
137
- oldValue: this.el.nativeElement.offsetWidth,
138
- });
139
- }
140
- }
169
+ if (!this.resizeHandle)
170
+ return;
171
+ const handleRect = this.resizeHandle.getBoundingClientRect();
172
+ if (event.clientX < handleRect.left || event.clientX > handleRect.right)
173
+ return;
174
+ event.preventDefault();
175
+ this.isResizing.set(true);
176
+ this.document.body.style.cursor = STYLES.cursorActive;
177
+ this.resizeHandle.style.backgroundColor = STYLES.backgroundColorActive;
178
+ this.startMoveWidth = this.hostElement.offsetWidth;
179
+ this.zone.run(() => {
180
+ this.onResizingStarted.emit({
181
+ component: this,
182
+ htmlElement: this.hostElement,
183
+ isUserInteraction: true,
184
+ name: 'resizingStarted',
185
+ value: this.startMoveWidth,
186
+ oldValue: this.startMoveWidth,
187
+ });
188
+ });
141
189
  }
142
190
  onMouseMove(event) {
143
- if (this.isResizing() && isPlatformBrowser(this.platformID)) {
144
- const rect = this.el.nativeElement.getBoundingClientRect();
145
- const isRTL = this.isRTL();
146
- let newWidth;
147
- if (isRTL) {
148
- newWidth = rect.right - event.clientX;
149
- }
150
- else {
151
- newWidth = event.clientX - rect.left;
152
- }
153
- // Clamp the width to minWidth and maxWidth
154
- newWidth = Math.max(this.minWidth(), Math.min(newWidth, this.maxWidth()));
155
- // Update the width only if it has changed
156
- if (newWidth !== this.el.nativeElement.offsetWidth) {
157
- this.el.nativeElement.style.width = `${newWidth}px`;
158
- }
191
+ if (!this.isResizing())
192
+ return;
193
+ const rect = this.hostElement.getBoundingClientRect();
194
+ const isRTL = this.isRTL();
195
+ let newWidth = isRTL ? rect.right - event.clientX : event.clientX - rect.left;
196
+ newWidth = Math.max(this.minWidth(), Math.min(newWidth, this.maxWidth()));
197
+ if (newWidth !== this.hostElement.offsetWidth) {
198
+ this.hostElement.style.width = `${newWidth}px`;
159
199
  }
160
200
  }
161
201
  onMouseUp() {
162
- if (this.isResizing() && isPlatformBrowser(this.platformID)) {
163
- this.isResizing.set(false);
164
- this.document.body.style.cursor = '';
165
- this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;
202
+ if (!this.isResizing() || !this.resizeHandle)
203
+ return;
204
+ this.isResizing.set(false);
205
+ this.document.body.style.cursor = '';
206
+ this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;
207
+ const currentWidth = this.hostElement.offsetWidth;
208
+ this.zone.run(() => {
166
209
  this.onResizingEnded.emit({
167
210
  component: this,
168
- htmlElement: this.el.nativeElement,
211
+ htmlElement: this.hostElement,
169
212
  isUserInteraction: true,
170
213
  name: 'resizingEnded',
171
- value: this.el.nativeElement.offsetWidth,
214
+ value: currentWidth,
172
215
  oldValue: this.startMoveWidth,
173
216
  });
174
- }
217
+ });
175
218
  }
176
219
  onMouseEnter() {
177
- if (!this.isResizing()) {
220
+ if (!this.isResizing() && this.resizeHandle) {
178
221
  this.resizeHandle.style.backgroundColor = STYLES.backgroundColorHover;
179
222
  }
180
223
  }
181
224
  onMouseLeave() {
182
- if (!this.isResizing()) {
225
+ if (!this.isResizing() && this.resizeHandle) {
183
226
  this.resizeHandle.style.backgroundColor = STYLES.backgroundColor;
184
227
  }
185
228
  }
186
229
  onDoubleClick() {
187
- const elementWidth = this.el.nativeElement.offsetWidth;
188
- // const maxWidth = this.maxWidth();
189
- // const initialWidth = this.initialWidth() !== null ? this.initialWidth() : this.initialElementWidth;
230
+ const elementWidth = this.hostElement.offsetWidth;
231
+ const action = this.dblClickAction();
190
232
  let newWidth;
191
- if (this.dblClickAction() === 'reset') {
192
- newWidth = this.resetToInitialWidth();
193
- }
194
- else if (this.dblClickAction() === 'maximize') {
195
- newWidth = this.maximizeToMaxWidth();
233
+ switch (action) {
234
+ case 'reset':
235
+ newWidth = this.resetToInitialWidth();
236
+ break;
237
+ case 'maximize':
238
+ newWidth = this.maximizeToMaxWidth();
239
+ break;
240
+ case 'fit':
241
+ newWidth = this.fitToContent();
242
+ break;
243
+ default:
244
+ newWidth = elementWidth;
196
245
  }
197
- else {
198
- newWidth = this.fitToContent();
199
- }
200
- this.onResizingDblClick.emit({
201
- component: this,
202
- htmlElement: this.el.nativeElement,
203
- isUserInteraction: true,
204
- name: 'onResizingDblClick',
205
- oldValue: elementWidth,
206
- value: newWidth,
246
+ this.zone.run(() => {
247
+ this.onResizingDblClick.emit({
248
+ component: this,
249
+ htmlElement: this.hostElement,
250
+ isUserInteraction: true,
251
+ name: 'onResizingDblClick',
252
+ oldValue: elementWidth,
253
+ value: newWidth,
254
+ });
207
255
  });
208
256
  }
209
257
  resetToInitialWidth() {
210
- if (this.defaultWidth() !== null) {
211
- this.el.nativeElement.style.width = `${this.defaultWidth()}px`;
212
- return this.defaultWidth();
258
+ const defaultWidth = this.defaultWidth();
259
+ if (defaultWidth !== null) {
260
+ this.hostElement.style.width = `${defaultWidth}px`;
261
+ return defaultWidth;
213
262
  }
214
- else if (this.width() !== null) {
215
- this.el.nativeElement.style.width = `${this.width()}px`;
216
- return this.width();
217
- }
218
- else {
219
- this.el.nativeElement.style.width = `${this.initialElementWidth}px`;
220
- return this.initialElementWidth;
263
+ const initialWidth = this.width();
264
+ if (initialWidth !== null) {
265
+ this.hostElement.style.width = `${initialWidth}px`;
266
+ return initialWidth;
221
267
  }
268
+ this.hostElement.style.width = `${this.initialElementWidth}px`;
269
+ return this.initialElementWidth;
222
270
  }
223
271
  maximizeToMaxWidth() {
224
272
  const maxWidth = this.maxWidth();
225
273
  if (maxWidth !== Infinity) {
226
- this.el.nativeElement.style.width = `${maxWidth}px`;
274
+ this.hostElement.style.width = `${maxWidth}px`;
227
275
  }
228
276
  return maxWidth;
229
277
  }
230
278
  fitToContent() {
231
- this.el.nativeElement.style.width = 'fit-content';
232
- return this.el.nativeElement.clientWidth;
279
+ this.hostElement.style.width = 'fit-content';
280
+ return this.hostElement.clientWidth;
233
281
  }
234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: AXResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
235
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.6", type: AXResizableDirective, isStandalone: true, selector: "[axResizable]", inputs: { axResizable: { classPropertyName: "axResizable", publicName: "axResizable", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, dblClickAction: { classPropertyName: "dblClickAction", publicName: "dblClickAction", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: "defaultWidth", publicName: "defaultWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { axResizable: "axResizableChange", minWidth: "minWidthChange", maxWidth: "maxWidthChange", dblClickAction: "dblClickActionChange", width: "widthChange", defaultWidth: "defaultWidthChange", onResizingStarted: "onResizingStarted", onResizingEnded: "onResizingEnded", onResizingDblClick: "onResizingDblClick" }, ngImport: i0 }); }
282
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXResizableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
283
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.9", type: AXResizableDirective, isStandalone: true, selector: "[axResizable]", inputs: { axResizable: { classPropertyName: "axResizable", publicName: "axResizable", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, dblClickAction: { classPropertyName: "dblClickAction", publicName: "dblClickAction", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, defaultWidth: { classPropertyName: "defaultWidth", publicName: "defaultWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { axResizable: "axResizableChange", minWidth: "minWidthChange", maxWidth: "maxWidthChange", dblClickAction: "dblClickActionChange", width: "widthChange", defaultWidth: "defaultWidthChange", onResizingStarted: "onResizingStarted", onResizingEnded: "onResizingEnded", onResizingDblClick: "onResizingDblClick" }, ngImport: i0 }); }
236
284
  }
237
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.6", ngImport: i0, type: AXResizableDirective, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AXResizableDirective, decorators: [{
238
286
  type: Directive,
239
287
  args: [{
240
288
  selector: '[axResizable]',