@slickgrid-universal/custom-tooltip-plugin 3.7.0 → 4.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{commonjs → cjs}/slickCustomTooltip.js +55 -65
- package/dist/cjs/slickCustomTooltip.js.map +1 -0
- package/dist/esm/slickCustomTooltip.js +56 -66
- package/dist/esm/slickCustomTooltip.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/slickCustomTooltip.d.ts +5 -4
- package/dist/types/slickCustomTooltip.d.ts.map +1 -1
- package/package.json +7 -6
- package/dist/commonjs/slickCustomTooltip.js.map +0 -1
- /package/dist/{commonjs → cjs}/index.js +0 -0
- /package/dist/{commonjs → cjs}/index.js.map +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SlickCustomTooltip = void 0;
|
|
4
4
|
const common_1 = require("@slickgrid-universal/common");
|
|
5
|
+
const utils_1 = require("@slickgrid-universal/utils");
|
|
5
6
|
/**
|
|
6
7
|
* A plugin to add Custom Tooltip when hovering a cell, it subscribes to the cell "onMouseEnter" and "onMouseLeave" events.
|
|
7
8
|
* The "customTooltip" is defined in the Column Definition OR Grid Options (the first found will have priority over the second)
|
|
@@ -28,6 +29,7 @@ const common_1 = require("@slickgrid-universal/common");
|
|
|
28
29
|
*/
|
|
29
30
|
class SlickCustomTooltip {
|
|
30
31
|
constructor() {
|
|
32
|
+
this.name = 'CustomTooltip';
|
|
31
33
|
this._cellType = 'slick-cell';
|
|
32
34
|
this._rxjs = null;
|
|
33
35
|
this._sharedService = null;
|
|
@@ -40,8 +42,7 @@ class SlickCustomTooltip {
|
|
|
40
42
|
regularTooltipWhiteSpace: 'pre-line',
|
|
41
43
|
whiteSpace: 'normal',
|
|
42
44
|
};
|
|
43
|
-
this.
|
|
44
|
-
this._eventHandler = new Slick.EventHandler();
|
|
45
|
+
this._eventHandler = new common_1.SlickEventHandler();
|
|
45
46
|
}
|
|
46
47
|
get addonOptions() {
|
|
47
48
|
return this._addonOptions;
|
|
@@ -53,20 +54,18 @@ class SlickCustomTooltip {
|
|
|
53
54
|
return this._cellAddonOptions;
|
|
54
55
|
}
|
|
55
56
|
get className() {
|
|
56
|
-
|
|
57
|
-
return (_b = (_a = this._cellAddonOptions) === null || _a === void 0 ? void 0 : _a.className) !== null && _b !== void 0 ? _b : 'slick-custom-tooltip';
|
|
57
|
+
return this._cellAddonOptions?.className ?? 'slick-custom-tooltip';
|
|
58
58
|
}
|
|
59
59
|
get dataView() {
|
|
60
60
|
return this._grid.getData() || {};
|
|
61
61
|
}
|
|
62
62
|
/** Getter for the Grid Options pulled through the Grid Object */
|
|
63
63
|
get gridOptions() {
|
|
64
|
-
return this._grid
|
|
64
|
+
return this._grid?.getOptions() || {};
|
|
65
65
|
}
|
|
66
66
|
/** Getter for the grid uid */
|
|
67
67
|
get gridUid() {
|
|
68
|
-
|
|
69
|
-
return ((_a = this._grid) === null || _a === void 0 ? void 0 : _a.getUID()) || '';
|
|
68
|
+
return this._grid?.getUID() || '';
|
|
70
69
|
}
|
|
71
70
|
get gridUidSelector() {
|
|
72
71
|
return this.gridUid ? `.${this.gridUid}` : '';
|
|
@@ -78,11 +77,10 @@ class SlickCustomTooltip {
|
|
|
78
77
|
this._rxjs = rxjs;
|
|
79
78
|
}
|
|
80
79
|
init(grid, containerService) {
|
|
81
|
-
var _a, _b;
|
|
82
80
|
this._grid = grid;
|
|
83
81
|
this._rxjs = containerService.get('RxJsFacade');
|
|
84
82
|
this._sharedService = containerService.get('SharedService');
|
|
85
|
-
this._addonOptions = { ...this._defaultOptions, ...(
|
|
83
|
+
this._addonOptions = { ...this._defaultOptions, ...(this._sharedService?.gridOptions?.customTooltip) };
|
|
86
84
|
this._eventHandler
|
|
87
85
|
.subscribe(grid.onMouseEnter, this.handleOnMouseEnter.bind(this))
|
|
88
86
|
.subscribe(grid.onHeaderMouseEnter, (e, args) => this.handleOnHeaderMouseEnterByType(e, args, 'slick-header-column'))
|
|
@@ -102,11 +100,10 @@ class SlickCustomTooltip {
|
|
|
102
100
|
* When using async process, it will also cancel any opened Promise/Observable that might still be pending.
|
|
103
101
|
*/
|
|
104
102
|
hideTooltip() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
(_b = this._observable$) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
103
|
+
this._cancellablePromise?.cancel();
|
|
104
|
+
this._observable$?.unsubscribe();
|
|
108
105
|
const prevTooltip = document.body.querySelector(`.${this.className}${this.gridUidSelector}`);
|
|
109
|
-
prevTooltip
|
|
106
|
+
prevTooltip?.remove();
|
|
110
107
|
}
|
|
111
108
|
getOptions() {
|
|
112
109
|
return this._addonOptions;
|
|
@@ -122,10 +119,9 @@ class SlickCustomTooltip {
|
|
|
122
119
|
* (unless a new prop name is provided) to provice as dataContext object to the asyncPostFormatter.
|
|
123
120
|
*/
|
|
124
121
|
asyncProcessCallback(asyncResult, cell, value, columnDef, dataContext) {
|
|
125
|
-
var _a, _b, _c;
|
|
126
122
|
this.hideTooltip();
|
|
127
|
-
const itemWithAsyncData = { ...dataContext, [
|
|
128
|
-
if (
|
|
123
|
+
const itemWithAsyncData = { ...dataContext, [this.addonOptions?.asyncParamsPropName ?? '__params']: asyncResult };
|
|
124
|
+
if (this._cellAddonOptions?.useRegularTooltip) {
|
|
129
125
|
this.renderRegularTooltip(this._cellAddonOptions.asyncPostFormatter, cell, value, columnDef, itemWithAsyncData);
|
|
130
126
|
}
|
|
131
127
|
else {
|
|
@@ -134,14 +130,13 @@ class SlickCustomTooltip {
|
|
|
134
130
|
}
|
|
135
131
|
/** depending on the selector type, execute the necessary handler code */
|
|
136
132
|
handleOnHeaderMouseEnterByType(event, args, selector) {
|
|
137
|
-
var _a, _b, _c;
|
|
138
133
|
this._cellType = selector;
|
|
139
134
|
// before doing anything, let's remove any previous tooltip before
|
|
140
135
|
// and cancel any opened Promise/Observable when using async
|
|
141
136
|
this.hideTooltip();
|
|
142
137
|
const cell = {
|
|
143
138
|
row: -1, // negative row to avoid pulling any dataContext while rendering
|
|
144
|
-
cell: this._grid.getColumns().findIndex((col) =>
|
|
139
|
+
cell: this._grid.getColumns().findIndex((col) => (args?.column?.id ?? '') === col.id)
|
|
145
140
|
};
|
|
146
141
|
const columnDef = args.column;
|
|
147
142
|
const item = {};
|
|
@@ -154,15 +149,15 @@ class SlickCustomTooltip {
|
|
|
154
149
|
args.dataContext = item;
|
|
155
150
|
args.grid = this._grid;
|
|
156
151
|
args.type = isHeaderRowType ? 'header-row' : 'header';
|
|
157
|
-
this._cellAddonOptions = { ...this._addonOptions, ...(columnDef
|
|
158
|
-
if (
|
|
152
|
+
this._cellAddonOptions = { ...this._addonOptions, ...(columnDef?.customTooltip) };
|
|
153
|
+
if (columnDef?.disableTooltip || (typeof this._cellAddonOptions?.usabilityOverride === 'function' && !this._cellAddonOptions.usabilityOverride(args))) {
|
|
159
154
|
return;
|
|
160
155
|
}
|
|
161
156
|
if (columnDef && event.target) {
|
|
162
157
|
this._cellNodeElm = event.target.closest(`.${selector}`);
|
|
163
158
|
const formatter = isHeaderRowType ? this._cellAddonOptions.headerRowFormatter : this._cellAddonOptions.headerFormatter;
|
|
164
|
-
if (
|
|
165
|
-
const formatterOrText = !isHeaderRowType ? columnDef.name :
|
|
159
|
+
if (this._cellAddonOptions?.useRegularTooltip || !formatter) {
|
|
160
|
+
const formatterOrText = !isHeaderRowType ? columnDef.name : this._cellAddonOptions?.useRegularTooltip ? null : formatter;
|
|
166
161
|
this.renderRegularTooltip(formatterOrText, cell, null, columnDef, item);
|
|
167
162
|
}
|
|
168
163
|
else if (this._cellNodeElm && typeof formatter === 'function') {
|
|
@@ -171,38 +166,37 @@ class SlickCustomTooltip {
|
|
|
171
166
|
}
|
|
172
167
|
}
|
|
173
168
|
async handleOnMouseEnter(event) {
|
|
174
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
175
169
|
this._cellType = 'slick-cell';
|
|
176
170
|
// before doing anything, let's remove any previous tooltip before
|
|
177
171
|
// and cancel any opened Promise/Observable when using async
|
|
178
172
|
this.hideTooltip();
|
|
179
173
|
if (event && this._grid) {
|
|
180
174
|
// get cell only when it's possible (ie, Composite Editor will not be able to get cell and so it will never show any tooltip)
|
|
181
|
-
const targetClassName =
|
|
175
|
+
const targetClassName = event?.target?.closest('.slick-cell')?.className;
|
|
182
176
|
const cell = (targetClassName && /l\d+/.exec(targetClassName || '')) ? this._grid.getCellFromEvent(event) : null;
|
|
183
177
|
if (cell) {
|
|
184
178
|
const item = this.dataView ? this.dataView.getItem(cell.row) : this._grid.getDataItem(cell.row);
|
|
185
179
|
const columnDef = this._grid.getColumns()[cell.cell];
|
|
186
180
|
this._cellNodeElm = this._grid.getCellNode(cell.row, cell.cell);
|
|
187
181
|
if (item && columnDef) {
|
|
188
|
-
this._cellAddonOptions = { ...this._addonOptions, ...(columnDef
|
|
189
|
-
if (
|
|
182
|
+
this._cellAddonOptions = { ...this._addonOptions, ...(columnDef?.customTooltip) };
|
|
183
|
+
if (columnDef?.disableTooltip || (typeof this._cellAddonOptions?.usabilityOverride === 'function' && !this._cellAddonOptions.usabilityOverride({ cell: cell.cell, row: cell.row, dataContext: item, column: columnDef, grid: this._grid, type: 'cell' }))) {
|
|
190
184
|
return;
|
|
191
185
|
}
|
|
192
186
|
const value = item.hasOwnProperty(columnDef.field) ? item[columnDef.field] : null;
|
|
193
187
|
// when cell is currently lock for editing, we'll force a tooltip title search
|
|
194
188
|
const cellValue = this._grid.getEditorLock().isActive() ? null : value;
|
|
195
189
|
// when there aren't any formatter OR when user specifically want to use a regular tooltip (via "title" attribute)
|
|
196
|
-
if ((this._cellAddonOptions.useRegularTooltip && !
|
|
190
|
+
if ((this._cellAddonOptions.useRegularTooltip && !this._cellAddonOptions?.asyncProcess) || !this._cellAddonOptions?.formatter) {
|
|
197
191
|
this.renderRegularTooltip(columnDef.formatter, cell, cellValue, columnDef, item);
|
|
198
192
|
}
|
|
199
193
|
else {
|
|
200
194
|
// when we aren't using regular tooltip and we do have a tooltip formatter, let's render it
|
|
201
|
-
if (typeof
|
|
195
|
+
if (typeof this._cellAddonOptions?.formatter === 'function') {
|
|
202
196
|
this.renderTooltipFormatter(this._cellAddonOptions.formatter, cell, cellValue, columnDef, item);
|
|
203
197
|
}
|
|
204
198
|
// when tooltip is an Async (delayed, e.g. with a backend API call)
|
|
205
|
-
if (typeof
|
|
199
|
+
if (typeof this._cellAddonOptions?.asyncProcess === 'function') {
|
|
206
200
|
const asyncProcess = this._cellAddonOptions.asyncProcess(cell.row, cell.cell, value, columnDef, item, this._grid);
|
|
207
201
|
if (!this._cellAddonOptions.asyncPostFormatter) {
|
|
208
202
|
console.error(`[Slickgrid-Universal] when using "asyncProcess" with Custom Tooltip, you must also provide an "asyncPostFormatter" formatter.`);
|
|
@@ -219,7 +213,7 @@ class SlickCustomTooltip {
|
|
|
219
213
|
}
|
|
220
214
|
});
|
|
221
215
|
}
|
|
222
|
-
else if (
|
|
216
|
+
else if (this._rxjs?.isObservable(asyncProcess)) {
|
|
223
217
|
const rxjs = this._rxjs;
|
|
224
218
|
this._observable$ = asyncProcess
|
|
225
219
|
.pipe(
|
|
@@ -238,9 +232,9 @@ class SlickCustomTooltip {
|
|
|
238
232
|
*/
|
|
239
233
|
parseFormatterAndSanitize(formatterOrText, cell, value, columnDef, item) {
|
|
240
234
|
if (typeof formatterOrText === 'function') {
|
|
241
|
-
const
|
|
242
|
-
const formatterText = (
|
|
243
|
-
return (0, common_1.sanitizeTextByAvailableSanitizer)(this.gridOptions, formatterText);
|
|
235
|
+
const tooltipResult = formatterOrText(cell.row, cell.cell, value, columnDef, item, this._grid);
|
|
236
|
+
const formatterText = (0, utils_1.isPrimitiveOrHTML)(tooltipResult) ? tooltipResult : tooltipResult.html || tooltipResult.text;
|
|
237
|
+
return (0, common_1.sanitizeTextByAvailableSanitizer)(this.gridOptions, (formatterText instanceof HTMLElement ? formatterText.textContent : formatterText) || '');
|
|
244
238
|
}
|
|
245
239
|
else if (typeof formatterOrText === 'string') {
|
|
246
240
|
return (0, common_1.sanitizeTextByAvailableSanitizer)(this.gridOptions, formatterOrText);
|
|
@@ -253,31 +247,30 @@ class SlickCustomTooltip {
|
|
|
253
247
|
* also clear the "title" attribute from the grid div text content so that it won't show also as a 2nd browser tooltip
|
|
254
248
|
*/
|
|
255
249
|
renderRegularTooltip(formatterOrText, cell, value, columnDef, item) {
|
|
256
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
257
250
|
const tmpDiv = document.createElement('div');
|
|
258
|
-
tmpDiv
|
|
259
|
-
let tooltipText =
|
|
251
|
+
this._grid.applyHtmlCode(tmpDiv, this.parseFormatterAndSanitize(formatterOrText, cell, value, columnDef, item));
|
|
252
|
+
let tooltipText = columnDef?.toolTip ?? '';
|
|
260
253
|
let tmpTitleElm;
|
|
261
254
|
if (!tooltipText) {
|
|
262
|
-
if (this._cellType === 'slick-cell' && this._cellNodeElm && (this._cellNodeElm.clientWidth < this._cellNodeElm.scrollWidth) && !
|
|
263
|
-
tooltipText =
|
|
264
|
-
if (
|
|
255
|
+
if (this._cellType === 'slick-cell' && this._cellNodeElm && (this._cellNodeElm.clientWidth < this._cellNodeElm.scrollWidth) && !this._cellAddonOptions?.useRegularTooltipFromFormatterOnly) {
|
|
256
|
+
tooltipText = this._cellNodeElm.textContent?.trim() ?? '';
|
|
257
|
+
if (this._cellAddonOptions?.tooltipTextMaxLength && tooltipText.length > this._cellAddonOptions?.tooltipTextMaxLength) {
|
|
265
258
|
tooltipText = tooltipText.substring(0, this._cellAddonOptions.tooltipTextMaxLength - 3) + '...';
|
|
266
259
|
}
|
|
267
260
|
tmpTitleElm = this._cellNodeElm;
|
|
268
261
|
}
|
|
269
262
|
else {
|
|
270
|
-
if (
|
|
263
|
+
if (this._cellAddonOptions?.useRegularTooltipFromFormatterOnly) {
|
|
271
264
|
tmpTitleElm = tmpDiv.querySelector('[title], [data-slick-tooltip]');
|
|
272
265
|
}
|
|
273
266
|
else {
|
|
274
|
-
tmpTitleElm = (0, common_1.
|
|
275
|
-
if ((!tmpTitleElm || !(0, common_1.
|
|
267
|
+
tmpTitleElm = (0, common_1.findFirstAttribute)(this._cellNodeElm, ['title', 'data-slick-tooltip']) ? this._cellNodeElm : tmpDiv.querySelector('[title], [data-slick-tooltip]');
|
|
268
|
+
if ((!tmpTitleElm || !(0, common_1.findFirstAttribute)(tmpTitleElm, ['title', 'data-slick-tooltip'])) && this._cellNodeElm) {
|
|
276
269
|
tmpTitleElm = this._cellNodeElm.querySelector('[title], [data-slick-tooltip]');
|
|
277
270
|
}
|
|
278
271
|
}
|
|
279
|
-
if (!tooltipText || (typeof formatterOrText === 'function' &&
|
|
280
|
-
tooltipText = (0, common_1.
|
|
272
|
+
if (!tooltipText || (typeof formatterOrText === 'function' && this._cellAddonOptions?.useRegularTooltipFromFormatterOnly)) {
|
|
273
|
+
tooltipText = (0, common_1.findFirstAttribute)(tmpTitleElm, ['title', 'data-slick-tooltip']) || '';
|
|
281
274
|
}
|
|
282
275
|
}
|
|
283
276
|
}
|
|
@@ -288,7 +281,6 @@ class SlickCustomTooltip {
|
|
|
288
281
|
this.swapAndClearTitleAttribute(tmpTitleElm, tooltipText);
|
|
289
282
|
}
|
|
290
283
|
renderTooltipFormatter(formatter, cell, value, columnDef, item, tooltipText, inputTitleElm) {
|
|
291
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
292
284
|
// create the tooltip DOM element with the text returned by the Formatter
|
|
293
285
|
this._tooltipElm = (0, common_1.createDomElement)('div', { className: this.className });
|
|
294
286
|
this._tooltipElm.classList.add(this.gridUid);
|
|
@@ -298,27 +290,27 @@ class SlickCustomTooltip {
|
|
|
298
290
|
// that can happen when user has a formatter but is currently editing and in that case we want the new value
|
|
299
291
|
// ie: when user is currently editing and uses the Slider, when dragging its value is changing, so we wish to use the editing value instead of the previous cell value.
|
|
300
292
|
if (value === null || value === undefined) {
|
|
301
|
-
const tmpTitleElm =
|
|
302
|
-
value = (0, common_1.
|
|
293
|
+
const tmpTitleElm = this._cellNodeElm?.querySelector('[title], [data-slick-tooltip]');
|
|
294
|
+
value = (0, common_1.findFirstAttribute)(tmpTitleElm, ['title', 'data-slick-tooltip']) || value;
|
|
303
295
|
}
|
|
304
296
|
let outputText = tooltipText || this.parseFormatterAndSanitize(formatter, cell, value, columnDef, item) || '';
|
|
305
|
-
outputText = (
|
|
297
|
+
outputText = (this._cellAddonOptions?.tooltipTextMaxLength && outputText.length > this._cellAddonOptions.tooltipTextMaxLength) ? outputText.substring(0, this._cellAddonOptions.tooltipTextMaxLength - 3) + '...' : outputText;
|
|
306
298
|
let finalOutputText = '';
|
|
307
|
-
if (!tooltipText ||
|
|
299
|
+
if (!tooltipText || this._cellAddonOptions?.renderRegularTooltipAsHtml) {
|
|
308
300
|
finalOutputText = (0, common_1.sanitizeTextByAvailableSanitizer)(this.gridOptions, outputText);
|
|
309
|
-
this._tooltipElm
|
|
310
|
-
this._tooltipElm.style.whiteSpace =
|
|
301
|
+
this._grid.applyHtmlCode(this._tooltipElm, finalOutputText);
|
|
302
|
+
this._tooltipElm.style.whiteSpace = this._cellAddonOptions?.whiteSpace ?? this._defaultOptions.whiteSpace;
|
|
311
303
|
}
|
|
312
304
|
else {
|
|
313
305
|
finalOutputText = outputText || '';
|
|
314
306
|
this._tooltipElm.textContent = finalOutputText;
|
|
315
|
-
this._tooltipElm.style.whiteSpace =
|
|
307
|
+
this._tooltipElm.style.whiteSpace = this._cellAddonOptions?.regularTooltipWhiteSpace ?? this._defaultOptions.regularTooltipWhiteSpace; // use `pre` so that sequences of white space are collapsed. Lines are broken at newline characters
|
|
316
308
|
}
|
|
317
309
|
// optional max height/width of the tooltip container
|
|
318
|
-
if (
|
|
310
|
+
if (this._cellAddonOptions?.maxHeight) {
|
|
319
311
|
this._tooltipElm.style.maxHeight = `${this._cellAddonOptions.maxHeight}px`;
|
|
320
312
|
}
|
|
321
|
-
if (
|
|
313
|
+
if (this._cellAddonOptions?.maxWidth) {
|
|
322
314
|
this._tooltipElm.style.maxWidth = `${this._cellAddonOptions.maxWidth}px`;
|
|
323
315
|
}
|
|
324
316
|
// when do have text to show, then append the new tooltip to the html body & reposition the tooltip
|
|
@@ -327,7 +319,7 @@ class SlickCustomTooltip {
|
|
|
327
319
|
// reposition the tooltip on top of the cell that triggered the mouse over event
|
|
328
320
|
this.reposition(cell);
|
|
329
321
|
// user could optionally hide the tooltip arrow (we can simply update the CSS variables, that's the only way we have to update CSS pseudo)
|
|
330
|
-
if (!
|
|
322
|
+
if (!this._cellAddonOptions?.hideArrow) {
|
|
331
323
|
this._tooltipElm.classList.add('tooltip-arrow');
|
|
332
324
|
}
|
|
333
325
|
// also clear any "title" attribute to avoid showing a 2nd browser tooltip
|
|
@@ -342,29 +334,28 @@ class SlickCustomTooltip {
|
|
|
342
334
|
* Same goes for the top/bottom position, Most of the time positioning the tooltip to the "top" but if we are hovering a cell at the top of the grid and there's no room to display it then we might need to reposition to "bottom" instead.
|
|
343
335
|
*/
|
|
344
336
|
reposition(cell) {
|
|
345
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
346
337
|
if (this._tooltipElm) {
|
|
347
338
|
this._cellNodeElm = this._cellNodeElm || this._grid.getCellNode(cell.row, cell.cell);
|
|
348
|
-
const cellPosition = (0, common_1.
|
|
339
|
+
const cellPosition = (0, common_1.getOffset)(this._cellNodeElm) || { top: 0, left: 0 };
|
|
349
340
|
const cellContainerWidth = this._cellNodeElm.offsetWidth;
|
|
350
341
|
const calculatedTooltipHeight = this._tooltipElm.getBoundingClientRect().height;
|
|
351
342
|
const calculatedTooltipWidth = this._tooltipElm.getBoundingClientRect().width;
|
|
352
343
|
const calculatedBodyWidth = document.body.offsetWidth || window.innerWidth;
|
|
353
344
|
// first calculate the default (top/left) position
|
|
354
|
-
let newPositionTop = (cellPosition.top || 0) - this._tooltipElm.offsetHeight - (
|
|
355
|
-
let newPositionLeft = (cellPosition.left || 0) - (
|
|
345
|
+
let newPositionTop = (cellPosition.top || 0) - this._tooltipElm.offsetHeight - (this._cellAddonOptions?.offsetTopBottom ?? 0);
|
|
346
|
+
let newPositionLeft = (cellPosition.left || 0) - (this._cellAddonOptions?.offsetRight ?? 0);
|
|
356
347
|
// user could explicitely use a "left-align" arrow position, (when user knows his column is completely on the right in the grid)
|
|
357
348
|
// or when using "auto" and we detect not enough available space then we'll position to the "left" of the cell
|
|
358
349
|
// NOTE the class name is for the arrow and is inverse compare to the tooltip itself, so if user ask for "left-align", then the arrow will in fact be "arrow-right-align"
|
|
359
|
-
const position =
|
|
350
|
+
const position = this._cellAddonOptions?.position ?? 'auto';
|
|
360
351
|
if (position === 'center') {
|
|
361
|
-
newPositionLeft += (cellContainerWidth / 2) - (calculatedTooltipWidth / 2) + (
|
|
352
|
+
newPositionLeft += (cellContainerWidth / 2) - (calculatedTooltipWidth / 2) + (this._cellAddonOptions?.offsetRight ?? 0);
|
|
362
353
|
this._tooltipElm.classList.remove('arrow-left-align');
|
|
363
354
|
this._tooltipElm.classList.remove('arrow-right-align');
|
|
364
355
|
this._tooltipElm.classList.add('arrow-center-align');
|
|
365
356
|
}
|
|
366
357
|
else if (position === 'right-align' || ((position === 'auto' || position !== 'left-align') && (newPositionLeft + calculatedTooltipWidth) > calculatedBodyWidth)) {
|
|
367
|
-
newPositionLeft -= (calculatedTooltipWidth - cellContainerWidth - (
|
|
358
|
+
newPositionLeft -= (calculatedTooltipWidth - cellContainerWidth - (this._cellAddonOptions?.offsetLeft ?? 0));
|
|
368
359
|
this._tooltipElm.classList.remove('arrow-center-align');
|
|
369
360
|
this._tooltipElm.classList.remove('arrow-left-align');
|
|
370
361
|
this._tooltipElm.classList.add('arrow-right-align');
|
|
@@ -377,7 +368,7 @@ class SlickCustomTooltip {
|
|
|
377
368
|
// do the same calculation/reposition with top/bottom (default is top of the cell or in other word starting from the cell going down)
|
|
378
369
|
// NOTE the class name is for the arrow and is inverse compare to the tooltip itself, so if user ask for "bottom", then the arrow will in fact be "arrow-top"
|
|
379
370
|
if (position === 'bottom' || ((position === 'auto' || position !== 'top') && calculatedTooltipHeight > (0, common_1.calculateAvailableSpace)(this._cellNodeElm).top)) {
|
|
380
|
-
newPositionTop = (cellPosition.top || 0) + (
|
|
371
|
+
newPositionTop = (cellPosition.top || 0) + (this.gridOptions.rowHeight ?? 0) + (this._cellAddonOptions?.offsetTopBottom ?? 0);
|
|
381
372
|
this._tooltipElm.classList.remove('arrow-down');
|
|
382
373
|
this._tooltipElm.classList.add('arrow-up');
|
|
383
374
|
}
|
|
@@ -395,10 +386,9 @@ class SlickCustomTooltip {
|
|
|
395
386
|
* from the grid div text content so that it won't show also as a 2nd browser tooltip
|
|
396
387
|
*/
|
|
397
388
|
swapAndClearTitleAttribute(inputTitleElm, tooltipText) {
|
|
398
|
-
var _a;
|
|
399
389
|
// the title attribute might be directly on the slick-cell container element (when formatter returns a result object)
|
|
400
390
|
// OR in a child element (most commonly as a custom formatter)
|
|
401
|
-
const titleElm = inputTitleElm || (this._cellNodeElm && ((this._cellNodeElm.hasAttribute('title') && this._cellNodeElm.getAttribute('title')) ? this._cellNodeElm :
|
|
391
|
+
const titleElm = inputTitleElm || (this._cellNodeElm && ((this._cellNodeElm.hasAttribute('title') && this._cellNodeElm.getAttribute('title')) ? this._cellNodeElm : this._cellNodeElm?.querySelector('[title]')));
|
|
402
392
|
// flip tooltip text from `title` to `data-slick-tooltip`
|
|
403
393
|
if (titleElm) {
|
|
404
394
|
titleElm.setAttribute('data-slick-tooltip', tooltipText || '');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slickCustomTooltip.js","sourceRoot":"","sources":["../../src/slickCustomTooltip.ts"],"names":[],"mappings":";;;AAiBA,wDASqC;AACrC,sDAA+D;AAI/D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,kBAAkB;IAwB7B;QAvBA,SAAI,GAAoB,eAAwB,CAAC;QAKvC,cAAS,GAAa,YAAY,CAAC;QAGnC,UAAK,GAAuB,IAAI,CAAC;QACjC,mBAAc,GAA0B,IAAI,CAAC;QAE7C,oBAAe,GAAG;YAC1B,SAAS,EAAE,sBAAsB;YACjC,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,KAAK;YAChB,wBAAwB,EAAE,UAAU;YACpC,UAAU,EAAE,QAAQ;SACE,CAAC;QAKvB,IAAI,CAAC,aAAa,GAAG,IAAI,0BAAiB,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,iBAAiB,EAAE,SAAS,IAAI,sBAAsB,CAAC;IACrE,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAiB,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,iEAAiE;IACjE,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAgB,CAAC;IACtD,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,eAAe,CAAC,IAAgB;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,IAAe,EAAE,gBAAkC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAa,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAgB,eAAe,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,aAAa,CAAC,EAAyB,CAAC;QAC9H,IAAI,CAAC,aAAa;aACf,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAA6B,CAAC;aAC5F,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;aACpH,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;aAC1H,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAA6B,CAAC;aACrF,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAA6B,CAAC;aAC3F,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAA6B,CAAC,CAAC;IACpG,CAAC;IAED,OAAO;QACL,4DAA4D;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7F,WAAW,EAAE,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,UAA+B;QACxC,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,UAAU,EAAyB,CAAC;IACvF,CAAC;IAED,KAAK;IACL,sBAAsB;IACtB,wBAAwB;IAExB;;;OAGG;IACO,oBAAoB,CAAC,WAAgB,EAAE,IAAmC,EAAE,KAAU,EAAE,SAAiB,EAAE,WAAgB;QACnI,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,iBAAiB,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,IAAI,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;QAClH,IAAI,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,iBAAkB,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACnH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAkB,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACrH,CAAC;IACH,CAAC;IAED,yEAAyE;IAC/D,8BAA8B,CAAC,KAA+B,EAAE,IAAS,EAAE,QAAkB;QACrG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,IAAI,GAAG;YACX,GAAG,EAAE,CAAC,CAAC,EAAE,gEAAgE;YACzE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;SACtF,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,eAAe,GAAG,QAAQ,KAAK,wBAAwB,CAAC;QAE9D,uFAAuF;QACvF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtD,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,EAAyB,CAAC;QACzG,IAAI,SAAS,EAAE,cAAc,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACtJ,OAAO;QACT,CAAC;QAED,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAI,KAAK,CAAC,MAAyB,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAmB,CAAC;YAC/F,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;YAEvH,IAAI,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC5D,MAAM,eAAe,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzH,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1E,CAAC;iBAAM,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;gBAChE,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAES,KAAK,CAAC,kBAAkB,CAAC,KAA+B;QAChE,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;QAE9B,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,6HAA6H;YAC7H,MAAM,eAAe,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;YACzE,MAAM,IAAI,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEjH,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAmB,CAAC;gBAElF,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;oBACtB,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,EAAyB,CAAC;oBAEzG,IAAI,SAAS,EAAE,cAAc,IAAI,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;wBAC1P,OAAO;oBACT,CAAC;oBAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAElF,8EAA8E;oBAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;oBAEvE,kHAAkH;oBAClH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC;wBAC9H,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBACnF,CAAC;yBAAM,CAAC;wBACN,2FAA2F;wBAC3F,IAAI,OAAO,IAAI,CAAC,iBAAiB,EAAE,SAAS,KAAK,UAAU,EAAE,CAAC;4BAC5D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;wBAClG,CAAC;wBAED,mEAAmE;wBACnE,IAAI,OAAO,IAAI,CAAC,iBAAiB,EAAE,YAAY,KAAK,UAAU,EAAE,CAAC;4BAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;4BAClH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC;gCAC/C,OAAO,CAAC,KAAK,CAAC,+HAA+H,CAAC,CAAC;4BACjJ,CAAC;4BAED,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;gCACpC,iJAAiJ;gCACjJ,IAAI,CAAC,mBAAmB,GAAG,IAAA,2BAAkB,EAAC,YAAY,CAAC,CAAC;gCAC5D,IAAI,CAAC,mBAAmB,CAAC,OAAO;qCAC7B,IAAI,CAAC,CAAC,WAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;qCAChG,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;oCACtB,sJAAsJ;oCACtJ,IAAI,CAAC,CAAC,KAAK,YAAY,2BAAkB,CAAC,EAAE,CAAC;wCAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oCACvB,CAAC;gCACH,CAAC,CAAC,CAAC;4BACP,CAAC;iCAAM,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;gCAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAmB,CAAC;gCACtC,IAAI,CAAC,YAAY,GAAI,YAA2C;qCAC7D,IAAI;gCACH,kLAAkL;gCAClL,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CACtD,CAAC,SAAS,CACT,CAAC,WAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAC1F,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CACrC,CAAC;4BACN,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,yBAAyB,CAAC,eAA+C,EAAE,IAAoC,EAAE,KAAU,EAAE,SAAiB,EAAE,IAAa;QACrK,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/F,MAAM,aAAa,GAAG,IAAA,yBAAiB,EAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAE,aAAyC,CAAC,IAAI,IAAK,aAAyC,CAAC,IAAI,CAAC;YAC5K,OAAO,IAAA,yCAAgC,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,YAAY,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,aAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;QAChK,CAAC;aAAM,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,IAAA,yCAAgC,EAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACO,oBAAoB,CAAC,eAA+C,EAAE,IAAoC,EAAE,KAAU,EAAE,SAAiB,EAAE,IAAS;QAC5J,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;QAEhH,IAAI,WAAW,GAAG,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC;QAC3C,IAAI,WAA8C,CAAC;QAEnD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,kCAAkC,EAAE,CAAC;gBAC3L,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAC1D,IAAI,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,IAAI,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;oBACtH,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBAClG,CAAC;gBACD,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,iBAAiB,EAAE,kCAAkC,EAAE,CAAC;oBAC/D,WAAW,GAAG,MAAM,CAAC,aAAa,CAAiB,+BAA+B,CAAC,CAAC;gBACtF,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAiB,+BAA+B,CAAC,CAAC;oBACjL,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,IAAA,2BAAkB,EAAC,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAC7G,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAiB,+BAA+B,CAAC,CAAC;oBACjG,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,eAAe,KAAK,UAAU,IAAI,IAAI,CAAC,iBAAiB,EAAE,kCAAkC,CAAC,EAAE,CAAC;oBAC1H,WAAW,GAAG,IAAA,2BAAkB,EAAC,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvF,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;YACvB,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1F,CAAC;QAED,0EAA0E;QAC1E,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAES,sBAAsB,CAAC,SAAyC,EAAE,IAAoC,EAAE,KAAU,EAAE,SAAiB,EAAE,IAAa,EAAE,WAAoB,EAAE,aAA8B;QAClN,yEAAyE;QACzE,IAAI,CAAC,WAAW,GAAG,IAAA,yBAAgB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,8EAA8E;QAC9E,4GAA4G;QAC5G,uKAAuK;QACvK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa,CAAiB,+BAA+B,CAAC,CAAC;YACtG,KAAK,GAAG,IAAA,2BAAkB,EAAC,WAAW,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC;QACpF,CAAC;QAED,IAAI,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9G,UAAU,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QAE/N,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,CAAC;YACvE,eAAe,GAAG,IAAA,yCAAgC,EAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAoB,CAAC;QACtH,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,UAAU,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,IAAI,IAAI,CAAC,eAAe,CAAC,wBAAkC,CAAC,CAAC,mGAAmG;QACtP,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,IAAI,CAAC;QAC7E,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,CAAC;QAC3E,CAAC;QAED,mGAAmG;QACnG,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5C,gFAAgF;YAChF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEtB,0IAA0I;YAC1I,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAClD,CAAC;YAED,0EAA0E;YAC1E,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACO,UAAU,CAAC,IAAoC;QACvD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAmB,CAAC;YACvG,MAAM,YAAY,GAAG,IAAA,kBAAS,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YACzD,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;YAChF,MAAM,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAC9E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC;YAE3E,kDAAkD;YAClD,IAAI,cAAc,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;YAC9H,IAAI,eAAe,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;YAE5F,gIAAgI;YAChI,8GAA8G;YAC9G,yKAAyK;YACzK,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,IAAI,MAAM,CAAC;YAC5D,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,eAAe,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;gBACxH,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACtD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACvD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAEvD,CAAC;iBAAM,IAAI,QAAQ,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,YAAY,CAAC,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAAC;gBAClK,eAAe,IAAI,CAAC,sBAAsB,GAAG,kBAAkB,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7G,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACtD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACxD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACvD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACrD,CAAC;YAED,qIAAqI;YACrI,6JAA6J;YAC7J,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,KAAK,CAAC,IAAI,uBAAuB,GAAG,IAAA,gCAAuB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvJ,cAAc,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;gBAC9H,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC;YAED,sHAAsH;YACtH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,cAAc,IAAI,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,eAAe,IAAI,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,0BAA0B,CAAC,aAA8B,EAAE,WAAoB;QACvF,qHAAqH;QACrH,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAElN,yDAAyD;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,YAAY,CAAC,oBAAoB,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;YAC/D,IAAI,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA5aD,gDA4aC"}
|