@vuu-ui/vuu-utils 0.5.4 → 0.5.6
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/cjs/index.js +1 -628
- package/cjs/index.js.map +7 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +7 -0
- package/package.json +6 -10
- package/types/DataWindow.d.ts +39 -0
- package/types/array-utils.d.ts +3 -0
- package/types/column-utils.d.ts +27 -0
- package/types/data-utils.d.ts +9 -0
- package/types/date-utils.d.ts +1 -0
- package/types/event-emitter.d.ts +19 -0
- package/types/getUniqueId.d.ts +1 -0
- package/{src/index.ts → types/index.d.ts} +0 -0
- package/types/input-utils.d.ts +2 -0
- package/types/invariant.d.ts +1 -0
- package/types/nanoid/index.d.ts +1 -0
- package/types/range-utils.d.ts +21 -0
- package/types/round-decimal.d.ts +1 -0
- package/types/row-utils.d.ts +10 -0
- package/types/text-utils.d.ts +1 -0
- package/src/DataWindow.ts +0 -111
- package/src/array-utils.ts +0 -22
- package/src/column-utils.ts +0 -133
- package/src/data-utils.ts +0 -60
- package/src/date-utils.ts +0 -4
- package/src/event-emitter.ts +0 -139
- package/src/getUniqueId.ts +0 -1
- package/src/input-utils.ts +0 -50
- package/src/invariant.ts +0 -10
- package/src/nanoid/index.ts +0 -30
- package/src/range-utils.ts +0 -72
- package/src/round-decimal.ts +0 -126
- package/src/row-utils.ts +0 -44
- package/src/text-utils.ts +0 -9
package/cjs/index.js
CHANGED
|
@@ -1,629 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
DOWN1: () => DOWN1,
|
|
24
|
-
DOWN2: () => DOWN2,
|
|
25
|
-
DataWindow: () => DataWindow,
|
|
26
|
-
EventEmitter: () => EventEmitter,
|
|
27
|
-
UP1: () => UP1,
|
|
28
|
-
UP2: () => UP2,
|
|
29
|
-
WindowRange: () => WindowRange,
|
|
30
|
-
addRowsToIndex: () => addRowsToIndex,
|
|
31
|
-
arrayOfIndices: () => arrayOfIndices,
|
|
32
|
-
buildColumnMap: () => buildColumnMap,
|
|
33
|
-
formatDate: () => formatDate,
|
|
34
|
-
getFullRange: () => getFullRange,
|
|
35
|
-
getMovingValueDirection: () => getMovingValueDirection,
|
|
36
|
-
getUniqueId: () => getUniqueId,
|
|
37
|
-
indexRows: () => indexRows,
|
|
38
|
-
invariant: () => invariant,
|
|
39
|
-
isCharacterKey: () => isCharacterKey,
|
|
40
|
-
isEmptyRow: () => isEmptyRow,
|
|
41
|
-
isKeyedColumn: () => isKeyedColumn,
|
|
42
|
-
isQuoteKey: () => isQuoteKey,
|
|
43
|
-
isValidNumber: () => isValidNumber,
|
|
44
|
-
lastWord: () => lastWord,
|
|
45
|
-
mapSortCriteria: () => mapSortCriteria,
|
|
46
|
-
metadataKeys: () => metadataKeys,
|
|
47
|
-
partition: () => partition,
|
|
48
|
-
projectColumns: () => projectColumns,
|
|
49
|
-
projectUpdates: () => projectUpdates,
|
|
50
|
-
resetRange: () => resetRange,
|
|
51
|
-
roundDecimal: () => roundDecimal,
|
|
52
|
-
toColumnDescriptor: () => toColumnDescriptor,
|
|
53
|
-
toKeyedColumn: () => toKeyedColumn,
|
|
54
|
-
update: () => update,
|
|
55
|
-
uuid: () => uuid
|
|
56
|
-
});
|
|
57
|
-
module.exports = __toCommonJS(src_exports);
|
|
58
|
-
|
|
59
|
-
// src/array-utils.ts
|
|
60
|
-
function arrayOfIndices(length2) {
|
|
61
|
-
const result = Array(length2);
|
|
62
|
-
for (let i = 0; i < length2; i++) {
|
|
63
|
-
result[i] = i;
|
|
64
|
-
}
|
|
65
|
-
return result;
|
|
66
|
-
}
|
|
67
|
-
function partition(array, test, pass = [], fail = []) {
|
|
68
|
-
for (let i = 0, len = array.length; i < len; i++) {
|
|
69
|
-
(test(array[i], i) ? pass : fail).push(array[i]);
|
|
70
|
-
}
|
|
71
|
-
return [pass, fail];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// src/column-utils.ts
|
|
75
|
-
var SORT_ASC = "asc";
|
|
76
|
-
function mapSortCriteria(sortCriteria, columnMap, metadataOffset = 0) {
|
|
77
|
-
return sortCriteria.map((s) => {
|
|
78
|
-
if (typeof s === "string") {
|
|
79
|
-
return [columnMap[s] + metadataOffset, "asc"];
|
|
80
|
-
} else if (Array.isArray(s)) {
|
|
81
|
-
const [columnName, sortDir] = s;
|
|
82
|
-
return [columnMap[columnName] + metadataOffset, sortDir || SORT_ASC];
|
|
83
|
-
} else {
|
|
84
|
-
throw Error("columnUtils.mapSortCriteria invalid input");
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
function isKeyedColumn(column) {
|
|
89
|
-
return typeof column.key === "number";
|
|
90
|
-
}
|
|
91
|
-
var toColumnDescriptor = (name) => ({
|
|
92
|
-
name
|
|
93
|
-
});
|
|
94
|
-
var toKeyedColumn = (column, key) => {
|
|
95
|
-
if (typeof column === "string") {
|
|
96
|
-
return { key, name: column };
|
|
97
|
-
}
|
|
98
|
-
if (isKeyedColumn(column)) {
|
|
99
|
-
return column;
|
|
100
|
-
}
|
|
101
|
-
return { ...column, key };
|
|
102
|
-
};
|
|
103
|
-
var EMPTY_COLUMN_MAP = {};
|
|
104
|
-
function buildColumnMap(columns) {
|
|
105
|
-
const start = metadataKeys.count;
|
|
106
|
-
if (columns) {
|
|
107
|
-
return columns.reduce((map, column, i) => {
|
|
108
|
-
if (typeof column === "string") {
|
|
109
|
-
map[column] = start + i;
|
|
110
|
-
} else if (typeof column.key === "number") {
|
|
111
|
-
map[column.name] = column.key;
|
|
112
|
-
} else {
|
|
113
|
-
map[column.name] = start + i;
|
|
114
|
-
}
|
|
115
|
-
return map;
|
|
116
|
-
}, {});
|
|
117
|
-
} else {
|
|
118
|
-
return EMPTY_COLUMN_MAP;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
function projectUpdates(updates) {
|
|
122
|
-
const results = [];
|
|
123
|
-
const metadataOffset = metadataKeys.count - 2;
|
|
124
|
-
for (let i = 0; i < updates.length; i += 3) {
|
|
125
|
-
results[i] = updates[i] + metadataOffset;
|
|
126
|
-
results[i + 1] = updates[i + 1];
|
|
127
|
-
results[i + 2] = updates[i + 2];
|
|
128
|
-
}
|
|
129
|
-
return results;
|
|
130
|
-
}
|
|
131
|
-
function projectColumns(tableRowColumnMap, columns) {
|
|
132
|
-
const columnCount = columns.length;
|
|
133
|
-
const { IDX, RENDER_IDX, DEPTH, COUNT, KEY: KEY2, SELECTED, count } = metadataKeys;
|
|
134
|
-
return (startIdx, offset, selectedRows = []) => (row, i) => {
|
|
135
|
-
const baseRowIdx = row[IDX];
|
|
136
|
-
const out = [];
|
|
137
|
-
for (let i2 = 0; i2 < columnCount; i2++) {
|
|
138
|
-
const colIdx = tableRowColumnMap[columns[i2].name];
|
|
139
|
-
out[count + i2] = row[colIdx];
|
|
140
|
-
}
|
|
141
|
-
out[IDX] = startIdx + i + offset;
|
|
142
|
-
out[RENDER_IDX] = 0;
|
|
143
|
-
out[DEPTH] = 0;
|
|
144
|
-
out[COUNT] = 0;
|
|
145
|
-
out[KEY2] = row[tableRowColumnMap.KEY];
|
|
146
|
-
out[SELECTED] = selectedRows.includes(baseRowIdx) ? 1 : 0;
|
|
147
|
-
return out;
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
var metadataKeys = {
|
|
151
|
-
IDX: 0,
|
|
152
|
-
RENDER_IDX: 1,
|
|
153
|
-
IS_LEAF: 2,
|
|
154
|
-
IS_EXPANDED: 3,
|
|
155
|
-
DEPTH: 4,
|
|
156
|
-
COUNT: 5,
|
|
157
|
-
KEY: 6,
|
|
158
|
-
SELECTED: 7,
|
|
159
|
-
count: 8,
|
|
160
|
-
PARENT_IDX: "parent_idx",
|
|
161
|
-
IDX_POINTER: "idx_pointer",
|
|
162
|
-
FILTER_COUNT: "filter_count",
|
|
163
|
-
NEXT_FILTER_IDX: "next_filter_idx"
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
// src/range-utils.ts
|
|
167
|
-
function getFullRange({ from, to }, bufferSize = 0, rowCount = Number.MAX_SAFE_INTEGER) {
|
|
168
|
-
if (bufferSize === 0) {
|
|
169
|
-
return { from, to: Math.min(to, rowCount) };
|
|
170
|
-
} else if (from === 0) {
|
|
171
|
-
return { from, to: Math.min(to + bufferSize, rowCount) };
|
|
172
|
-
} else {
|
|
173
|
-
const rangeSize = to - from;
|
|
174
|
-
const buff = Math.round(bufferSize / 2);
|
|
175
|
-
const shortfallBefore = from - buff < 0;
|
|
176
|
-
const shortFallAfter = rowCount - (to + buff) < 0;
|
|
177
|
-
if (shortfallBefore && shortFallAfter) {
|
|
178
|
-
return { from: 0, to: rowCount };
|
|
179
|
-
} else if (shortfallBefore) {
|
|
180
|
-
return { from: 0, to: rangeSize + bufferSize };
|
|
181
|
-
} else if (shortFallAfter) {
|
|
182
|
-
return { from: Math.max(0, rowCount - (rangeSize + bufferSize)), to: rowCount };
|
|
183
|
-
} else {
|
|
184
|
-
return { from: from - buff, to: to + buff };
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
function resetRange({ from, to, bufferSize = 0 }) {
|
|
189
|
-
return {
|
|
190
|
-
from: 0,
|
|
191
|
-
to: to - from,
|
|
192
|
-
bufferSize,
|
|
193
|
-
reset: true
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
var WindowRange = class {
|
|
197
|
-
constructor(from, to) {
|
|
198
|
-
this.from = from;
|
|
199
|
-
this.to = to;
|
|
200
|
-
}
|
|
201
|
-
isWithin(index) {
|
|
202
|
-
return index >= this.from && index < this.to;
|
|
203
|
-
}
|
|
204
|
-
overlap(from, to) {
|
|
205
|
-
return from >= this.to || to < this.from ? [0, 0] : [Math.max(from, this.from), Math.min(to, this.to)];
|
|
206
|
-
}
|
|
207
|
-
copy() {
|
|
208
|
-
return new WindowRange(this.from, this.to);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
// src/DataWindow.ts
|
|
213
|
-
var { KEY } = metadataKeys;
|
|
214
|
-
var log = (message) => console.log(`%c[DataWindow] ${message}`, "color: purple;font-weight: bold;");
|
|
215
|
-
var DataWindow = class {
|
|
216
|
-
constructor({ from, to }) {
|
|
217
|
-
this.rowCount = 0;
|
|
218
|
-
this.setRowCount = (rowCount) => {
|
|
219
|
-
if (rowCount < this.data.length) {
|
|
220
|
-
this.data.length = rowCount;
|
|
221
|
-
}
|
|
222
|
-
this.rowCount = rowCount;
|
|
223
|
-
};
|
|
224
|
-
log(`constructor ${from} - ${to}`);
|
|
225
|
-
this.range = new WindowRange(from, to);
|
|
226
|
-
this.data = new Array(to - from);
|
|
227
|
-
}
|
|
228
|
-
add(data) {
|
|
229
|
-
const [index] = data;
|
|
230
|
-
if (this.isWithinRange(index)) {
|
|
231
|
-
const internalIndex = index - this.range.from;
|
|
232
|
-
const isUpdate = this.data[internalIndex] !== void 0;
|
|
233
|
-
this.data[internalIndex] = data;
|
|
234
|
-
return isUpdate;
|
|
235
|
-
} else {
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
getAtIndex(index) {
|
|
240
|
-
return this.range.isWithin(index) && this.data[index - this.range.from] != null ? this.data[index - this.range.from] : void 0;
|
|
241
|
-
}
|
|
242
|
-
getByKey(key) {
|
|
243
|
-
return this.data.find((row) => row[KEY] === key);
|
|
244
|
-
}
|
|
245
|
-
isWithinRange(index) {
|
|
246
|
-
return this.range.isWithin(index) && index <= this.rowCount;
|
|
247
|
-
}
|
|
248
|
-
setRange(from, to) {
|
|
249
|
-
log(`setRange ${from} ${to}`);
|
|
250
|
-
if (from !== this.range.from || to !== this.range.to) {
|
|
251
|
-
const [overlapFrom, overlapTo] = this.range.overlap(from, to);
|
|
252
|
-
const newData = new Array(to - from);
|
|
253
|
-
for (let i = overlapFrom; i < overlapTo; i++) {
|
|
254
|
-
const data = this.getAtIndex(i);
|
|
255
|
-
if (data) {
|
|
256
|
-
const index = i - from;
|
|
257
|
-
newData[index] = data;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
this.data = newData;
|
|
261
|
-
this.range.from = from;
|
|
262
|
-
this.range.to = to;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
hasData(from, to) {
|
|
266
|
-
const offset = this.range.from;
|
|
267
|
-
const start = from - offset;
|
|
268
|
-
const end = Math.min(to - offset - 1, this.rowCount - 1);
|
|
269
|
-
return this.data[start] !== void 0 && this.data[end] !== void 0;
|
|
270
|
-
}
|
|
271
|
-
getData(from, to) {
|
|
272
|
-
var _a;
|
|
273
|
-
const { from: clientFrom, to: clientTo } = this.range;
|
|
274
|
-
const startOffset = Math.max(0, from - clientFrom);
|
|
275
|
-
const endOffset = Math.min(to - clientFrom, (_a = this.rowCount) != null ? _a : to);
|
|
276
|
-
return this.data.slice(startOffset, endOffset);
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
// src/data-utils.ts
|
|
281
|
-
var UP1 = "up1";
|
|
282
|
-
var UP2 = "up2";
|
|
283
|
-
var DOWN1 = "down1";
|
|
284
|
-
var DOWN2 = "down2";
|
|
285
|
-
var isValidNumber = (n) => typeof n === "number" && isFinite(n);
|
|
286
|
-
function getMovingValueDirection(newValue, direction, prevValue, decimalPlaces) {
|
|
287
|
-
if (!isFinite(newValue) || prevValue === void 0 || direction === void 0) {
|
|
288
|
-
return "";
|
|
289
|
-
} else {
|
|
290
|
-
let diff = newValue - prevValue;
|
|
291
|
-
if (diff) {
|
|
292
|
-
if (typeof decimalPlaces === "number") {
|
|
293
|
-
diff = +newValue.toFixed(decimalPlaces) - +prevValue.toFixed(decimalPlaces);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
if (diff) {
|
|
297
|
-
if (direction === "") {
|
|
298
|
-
if (diff < 0) {
|
|
299
|
-
return DOWN1;
|
|
300
|
-
} else {
|
|
301
|
-
return UP1;
|
|
302
|
-
}
|
|
303
|
-
} else if (diff > 0) {
|
|
304
|
-
if (direction === DOWN1 || direction === DOWN2 || direction === UP2) {
|
|
305
|
-
return UP1;
|
|
306
|
-
} else {
|
|
307
|
-
return UP2;
|
|
308
|
-
}
|
|
309
|
-
} else if (direction === UP1 || direction === UP2 || direction === DOWN2) {
|
|
310
|
-
return DOWN1;
|
|
311
|
-
} else {
|
|
312
|
-
return DOWN2;
|
|
313
|
-
}
|
|
314
|
-
} else {
|
|
315
|
-
return "";
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
// src/date-utils.ts
|
|
321
|
-
var formatDate = (date, format) => {
|
|
322
|
-
return date.toUTCString();
|
|
323
|
-
};
|
|
324
|
-
|
|
325
|
-
// src/event-emitter.ts
|
|
326
|
-
function isArrayOfListeners(listeners) {
|
|
327
|
-
return Array.isArray(listeners);
|
|
328
|
-
}
|
|
329
|
-
function isOnlyListener(listeners) {
|
|
330
|
-
return !Array.isArray(listeners);
|
|
331
|
-
}
|
|
332
|
-
var EventEmitter = class {
|
|
333
|
-
constructor() {
|
|
334
|
-
this._events = {};
|
|
335
|
-
}
|
|
336
|
-
addListener(type, listener) {
|
|
337
|
-
if (!this._events) {
|
|
338
|
-
this._events = {};
|
|
339
|
-
}
|
|
340
|
-
const listeners = this._events[type];
|
|
341
|
-
if (!listeners) {
|
|
342
|
-
this._events[type] = listener;
|
|
343
|
-
} else if (isArrayOfListeners(listeners)) {
|
|
344
|
-
listeners.push(listener);
|
|
345
|
-
} else if (isOnlyListener(listeners)) {
|
|
346
|
-
this._events[type] = [listeners, listener];
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
removeListener(type, listener) {
|
|
350
|
-
if (!this._events || !this._events[type]) {
|
|
351
|
-
return;
|
|
352
|
-
}
|
|
353
|
-
const listenerOrListeners = this._events[type];
|
|
354
|
-
let position = -1;
|
|
355
|
-
if (listenerOrListeners === listener) {
|
|
356
|
-
delete this._events[type];
|
|
357
|
-
} else if (Array.isArray(listenerOrListeners)) {
|
|
358
|
-
for (let i = length; i-- > 0; ) {
|
|
359
|
-
if (listenerOrListeners[i] === listener) {
|
|
360
|
-
position = i;
|
|
361
|
-
break;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
if (position < 0) {
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
if (listenerOrListeners.length === 1) {
|
|
368
|
-
listenerOrListeners.length = 0;
|
|
369
|
-
delete this._events[type];
|
|
370
|
-
} else {
|
|
371
|
-
listenerOrListeners.splice(position, 1);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
removeAllListeners(type) {
|
|
376
|
-
if (!this._events) {
|
|
377
|
-
return;
|
|
378
|
-
} else if (type === void 0) {
|
|
379
|
-
delete this._events;
|
|
380
|
-
} else {
|
|
381
|
-
delete this._events[type];
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
emit(type, ...args) {
|
|
385
|
-
if (this._events) {
|
|
386
|
-
const handler = this._events[type];
|
|
387
|
-
if (handler) {
|
|
388
|
-
invokeHandler(handler, type, args);
|
|
389
|
-
}
|
|
390
|
-
const wildcardHandler = this._events["*"];
|
|
391
|
-
if (wildcardHandler) {
|
|
392
|
-
invokeHandler(wildcardHandler, type, args);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
once(type, listener) {
|
|
397
|
-
const handler = (evtName, message) => {
|
|
398
|
-
this.removeListener(evtName, handler);
|
|
399
|
-
listener(evtName, message);
|
|
400
|
-
};
|
|
401
|
-
this.on(type, handler);
|
|
402
|
-
}
|
|
403
|
-
on(type, listener) {
|
|
404
|
-
return this.addListener(type, listener);
|
|
405
|
-
}
|
|
406
|
-
};
|
|
407
|
-
function invokeHandler(handler, type, args) {
|
|
408
|
-
if (isArrayOfListeners(handler)) {
|
|
409
|
-
handler.slice().forEach((listener) => invokeHandler(listener, type, args));
|
|
410
|
-
} else {
|
|
411
|
-
switch (args.length) {
|
|
412
|
-
case 0:
|
|
413
|
-
handler(type);
|
|
414
|
-
break;
|
|
415
|
-
case 1:
|
|
416
|
-
handler(type, args[0]);
|
|
417
|
-
break;
|
|
418
|
-
case 2:
|
|
419
|
-
handler(type, args[0], args[1]);
|
|
420
|
-
break;
|
|
421
|
-
default:
|
|
422
|
-
handler.call(null, type, ...args);
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
// src/getUniqueId.ts
|
|
428
|
-
var getUniqueId = () => `hw-${Math.round(Math.random() * 1e5)}`;
|
|
429
|
-
|
|
430
|
-
// src/input-utils.ts
|
|
431
|
-
var actionKeys = {
|
|
432
|
-
Enter: "Enter",
|
|
433
|
-
Delete: "Delete"
|
|
434
|
-
};
|
|
435
|
-
var navigationKeys = {
|
|
436
|
-
Home: "Home",
|
|
437
|
-
End: "End",
|
|
438
|
-
ArrowRight: "ArrowRight",
|
|
439
|
-
ArrowLeft: "ArrowLeft",
|
|
440
|
-
ArrowDown: "ArrowDown",
|
|
441
|
-
ArrowUp: "ArrowUp",
|
|
442
|
-
Tab: "Tab"
|
|
443
|
-
};
|
|
444
|
-
var functionKeys = {
|
|
445
|
-
F1: "F1",
|
|
446
|
-
F2: "F2",
|
|
447
|
-
F3: "F3",
|
|
448
|
-
F4: "F4",
|
|
449
|
-
F5: "F5",
|
|
450
|
-
F6: "F6",
|
|
451
|
-
F7: "F7",
|
|
452
|
-
F8: "F8",
|
|
453
|
-
F9: "F9",
|
|
454
|
-
F10: "F10",
|
|
455
|
-
F11: "F11",
|
|
456
|
-
F12: "F12"
|
|
457
|
-
};
|
|
458
|
-
var specialKeys = {
|
|
459
|
-
...actionKeys,
|
|
460
|
-
...navigationKeys,
|
|
461
|
-
...functionKeys
|
|
462
|
-
};
|
|
463
|
-
var isSpecialKey = (key) => key in specialKeys;
|
|
464
|
-
var isCharacterKey = (evt) => {
|
|
465
|
-
if (isSpecialKey(evt.key)) {
|
|
466
|
-
return false;
|
|
467
|
-
}
|
|
468
|
-
if (typeof evt.which === "number" && evt.which > 0) {
|
|
469
|
-
return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which !== 8;
|
|
470
|
-
}
|
|
471
|
-
};
|
|
472
|
-
var isQuoteKey = (evt) => {
|
|
473
|
-
return evt.key === '"' || evt.key === "'";
|
|
474
|
-
};
|
|
475
|
-
|
|
476
|
-
// src/invariant.ts
|
|
477
|
-
function invariant(condition, message) {
|
|
478
|
-
if (!condition) {
|
|
479
|
-
const error = new Error(message);
|
|
480
|
-
error.name = "Invariant Violation";
|
|
481
|
-
error.framesToPop = 1;
|
|
482
|
-
throw error;
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
// src/nanoid/index.ts
|
|
487
|
-
var uuid = (size = 21) => {
|
|
488
|
-
let id = "";
|
|
489
|
-
let bytes = crypto.getRandomValues(new Uint8Array(size));
|
|
490
|
-
while (size--) {
|
|
491
|
-
let byte = bytes[size] & 63;
|
|
492
|
-
if (byte < 36) {
|
|
493
|
-
id += byte.toString(36);
|
|
494
|
-
} else if (byte < 62) {
|
|
495
|
-
id += (byte - 26).toString(36).toUpperCase();
|
|
496
|
-
} else if (byte < 63) {
|
|
497
|
-
id += "_";
|
|
498
|
-
} else {
|
|
499
|
-
id += "-";
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
return id;
|
|
503
|
-
};
|
|
504
|
-
|
|
505
|
-
// src/round-decimal.ts
|
|
506
|
-
var PUNCTUATION_STR = String.fromCharCode(8200);
|
|
507
|
-
var DIGIT_STR = String.fromCharCode(8199);
|
|
508
|
-
var DECIMALS_AUTO = -1;
|
|
509
|
-
var Space = {
|
|
510
|
-
DIGIT: DIGIT_STR,
|
|
511
|
-
TWO_DIGITS: DIGIT_STR + DIGIT_STR,
|
|
512
|
-
THREE_DIGITS: DIGIT_STR + DIGIT_STR + DIGIT_STR,
|
|
513
|
-
FULL_PADDING: [
|
|
514
|
-
null,
|
|
515
|
-
PUNCTUATION_STR + DIGIT_STR,
|
|
516
|
-
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR,
|
|
517
|
-
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR,
|
|
518
|
-
PUNCTUATION_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR
|
|
519
|
-
]
|
|
520
|
-
};
|
|
521
|
-
var Zero = {
|
|
522
|
-
DIGIT: "0",
|
|
523
|
-
TWO_DIGITS: "00",
|
|
524
|
-
THREE_DIGITS: "000",
|
|
525
|
-
FULL_PADDING: [null, "0", "00", "000", "0000"]
|
|
526
|
-
};
|
|
527
|
-
function padLeft(value, maxLength = 6) {
|
|
528
|
-
return (LEADING_FILL + value).slice(-maxLength);
|
|
529
|
-
}
|
|
530
|
-
var LEADING_FILL = DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR + DIGIT_STR;
|
|
531
|
-
var Align = {
|
|
532
|
-
Right: "right",
|
|
533
|
-
Center: "center",
|
|
534
|
-
Left: "left"
|
|
535
|
-
};
|
|
536
|
-
function pad(n, dp, Pad) {
|
|
537
|
-
let len = n.length;
|
|
538
|
-
const diff = dp - len;
|
|
539
|
-
if (diff > 0) {
|
|
540
|
-
if (diff === 1) {
|
|
541
|
-
n = n + Pad.DIGIT;
|
|
542
|
-
} else if (diff === 2) {
|
|
543
|
-
n = n + Pad.TWO_DIGITS;
|
|
544
|
-
} else if (diff === 3) {
|
|
545
|
-
n = n + Pad.THREE_DIGITS;
|
|
546
|
-
}
|
|
547
|
-
} else {
|
|
548
|
-
if (diff < 0) {
|
|
549
|
-
n = n.slice(0, dp);
|
|
550
|
-
len = dp;
|
|
551
|
-
}
|
|
552
|
-
if (Pad === Space && n.charAt(len - 1) === "0") {
|
|
553
|
-
n = n.replace(/0+$/, "");
|
|
554
|
-
return pad(n, dp, Pad);
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
return n;
|
|
558
|
-
}
|
|
559
|
-
function roundDecimal(value, align = Align.Right, decimals = 4, zeroPad, alignOnDecimals) {
|
|
560
|
-
if (value === void 0 || typeof value !== "number" || isNaN(value)) {
|
|
561
|
-
return "";
|
|
562
|
-
}
|
|
563
|
-
let integral, fraction, Pad;
|
|
564
|
-
const [part1, part2 = ""] = value.toString().split(".");
|
|
565
|
-
const actualDecimals = part2.length;
|
|
566
|
-
integral = parseFloat(part1).toLocaleString();
|
|
567
|
-
if (align === Align.Left && alignOnDecimals) {
|
|
568
|
-
integral = padLeft(integral);
|
|
569
|
-
}
|
|
570
|
-
if (decimals === DECIMALS_AUTO || actualDecimals === decimals) {
|
|
571
|
-
fraction = part2;
|
|
572
|
-
} else if (actualDecimals > decimals) {
|
|
573
|
-
fraction = parseFloat("0." + part2).toFixed(decimals).slice(2);
|
|
574
|
-
} else {
|
|
575
|
-
if (Pad = zeroPad ? Zero : alignOnDecimals && align !== Align.Left ? Space : null) {
|
|
576
|
-
if (actualDecimals === 0) {
|
|
577
|
-
fraction = Pad.FULL_PADDING[decimals];
|
|
578
|
-
} else {
|
|
579
|
-
fraction = pad(part2, decimals, Pad);
|
|
580
|
-
}
|
|
581
|
-
} else {
|
|
582
|
-
fraction = part2;
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
return integral + (fraction ? "." + fraction : "");
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
// src/row-utils.ts
|
|
589
|
-
function addRowsToIndex(rows, index, indexField) {
|
|
590
|
-
for (let idx = 0, len = rows.length; idx < len; idx++) {
|
|
591
|
-
index[rows[idx][indexField]] = idx;
|
|
592
|
-
}
|
|
593
|
-
return index;
|
|
594
|
-
}
|
|
595
|
-
function indexRows(rows, indexField) {
|
|
596
|
-
return addRowsToIndex(rows, {}, indexField);
|
|
597
|
-
}
|
|
598
|
-
function isEmptyRow(row) {
|
|
599
|
-
return row[0] === void 0;
|
|
600
|
-
}
|
|
601
|
-
function update(rows, updates) {
|
|
602
|
-
const results = rows.slice();
|
|
603
|
-
const [[offsetIdx]] = rows;
|
|
604
|
-
for (let i = 0; i < updates.length; i++) {
|
|
605
|
-
const idx = updates[i][0] - offsetIdx;
|
|
606
|
-
if (rows[idx]) {
|
|
607
|
-
const row = rows[idx].slice();
|
|
608
|
-
for (let j = 1; j < updates[i].length; j += 3) {
|
|
609
|
-
row[updates[i][j]] = updates[i][j + 2];
|
|
610
|
-
}
|
|
611
|
-
results[idx] = row;
|
|
612
|
-
} else {
|
|
613
|
-
console.log(`row not found in rows`);
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
return results;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
// src/text-utils.ts
|
|
620
|
-
var lastWord = (text) => {
|
|
621
|
-
const trimmedText = text.trim();
|
|
622
|
-
const pos = trimmedText.lastIndexOf(" ");
|
|
623
|
-
if (pos === -1) {
|
|
624
|
-
return trimmedText;
|
|
625
|
-
} else {
|
|
626
|
-
return trimmedText.slice(pos + 1);
|
|
627
|
-
}
|
|
628
|
-
};
|
|
1
|
+
"use strict";var y=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var P=(t,e)=>{for(var n in e)y(t,n,{get:e[n],enumerable:!0})},W=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of G(e))!O.call(t,o)&&o!==n&&y(t,o,{get:()=>e[o],enumerable:!(r=U(e,o))||r.enumerable});return t};var H=t=>W(y({},"__esModule",{value:!0}),t);var _e={};P(_e,{DOWN1:()=>x,DOWN2:()=>D,DataWindow:()=>I,EventEmitter:()=>R,UP1:()=>d,UP2:()=>b,WindowRange:()=>c,addRowsToIndex:()=>C,buildColumnMap:()=>Q,formatDate:()=>oe,getFullRange:()=>z,getMovingValueDirection:()=>re,getUniqueId:()=>se,indexRows:()=>Te,invariant:()=>he,isCharacterKey:()=>me,isEmptyRow:()=>ye,isKeyedColumn:()=>j,isQuoteKey:()=>pe,isValidNumber:()=>ne,itemsChanged:()=>$,lastWord:()=>Re,mapSortCriteria:()=>V,metadataKeys:()=>m,partition:()=>X,projectColumns:()=>J,projectUpdates:()=>Z,resetRange:()=>ee,roundDecimal:()=>Ee,toColumnDescriptor:()=>B,update:()=>Ie,uuid:()=>ge});module.exports=H(_e);function X(t,e,n=[],r=[]){for(let o=0,i=t.length;o<i;o++)(e(t[o],o)?n:r).push(t[o]);return[n,r]}function $(t,e,n){return t.length!==e.length?!0:n===void 0?!t.every(r=>e.includes(r)):t.some(r=>e.findIndex(o=>o[n]===r[n])===-1)}var Y="asc";function V(t,e,n=0){return t.map(r=>{if(typeof r=="string")return[e[r]+n,"asc"];if(Array.isArray(r)){let[o,i]=r;return[e[o]+n,i||Y]}else throw Error("columnUtils.mapSortCriteria invalid input")})}function j(t){return typeof t.key=="number"}var B=t=>({name:t}),q={};function Q(t){let e=m.count;return t?t.reduce((n,r,o)=>(typeof r=="string"?n[r]=e+o:typeof r.key=="number"?n[r.name]=r.key:n[r.name]=e+o,n),{}):q}function Z(t){let e=[],n=m.count-2;for(let r=0;r<t.length;r+=3)e[r]=t[r]+n,e[r+1]=t[r+1],e[r+2]=t[r+2];return e}function J(t,e){let n=e.length,{IDX:r,RENDER_IDX:o,DEPTH:i,COUNT:a,KEY:u,SELECTED:p,count:f}=m;return(h,S,K=[])=>(T,M)=>{let N=T[r],l=[];for(let g=0;g<n;g++){let k=t[e[g].name];l[f+g]=T[k]}return l[r]=h+M+S,l[o]=0,l[i]=0,l[a]=0,l[u]=T[t.KEY],l[p]=K.includes(N)?1:0,l}}var m={IDX:0,RENDER_IDX:1,IS_LEAF:2,IS_EXPANDED:3,DEPTH:4,COUNT:5,KEY:6,SELECTED:7,count:8,PARENT_IDX:"parent_idx",IDX_POINTER:"idx_pointer",FILTER_COUNT:"filter_count",NEXT_FILTER_IDX:"next_filter_idx"};function z({from:t,to:e},n=0,r=Number.MAX_SAFE_INTEGER){if(n===0)return{from:t,to:Math.min(e,r)};if(t===0)return{from:t,to:Math.min(e+n,r)};{let o=e-t,i=Math.round(n/2),a=t-i<0,u=r-(e+i)<0;return a&&u?{from:0,to:r}:a?{from:0,to:o+n}:u?{from:Math.max(0,r-(o+n)),to:r}:{from:t-i,to:e+i}}}function ee({from:t,to:e,bufferSize:n=0}){return{from:0,to:e-t,bufferSize:n,reset:!0}}var c=class{constructor(e,n){this.from=e,this.to=n}isWithin(e){return e>=this.from&&e<this.to}overlap(e,n){return e>=this.to||n<this.from?[0,0]:[Math.max(e,this.from),Math.min(n,this.to)]}copy(){return new c(this.from,this.to)}};var{KEY:te}=m,v=t=>console.log(`%c[DataWindow] ${t}`,"color: purple;font-weight: bold;"),I=class{constructor({from:e,to:n}){this.rowCount=0;this.setRowCount=e=>{e<this.data.length&&(this.data.length=e),this.rowCount=e};v(`constructor ${e} - ${n}`),this.range=new c(e,n),this.data=new Array(n-e)}add(e){let[n]=e;if(this.isWithinRange(n)){let r=n-this.range.from,o=this.data[r]!==void 0;return this.data[r]=e,o}else return!1}getAtIndex(e){return this.range.isWithin(e)&&this.data[e-this.range.from]!=null?this.data[e-this.range.from]:void 0}getByKey(e){return this.data.find(n=>n[te]===e)}isWithinRange(e){return this.range.isWithin(e)&&e<=this.rowCount}setRange(e,n){if(v(`setRange ${e} ${n}`),e!==this.range.from||n!==this.range.to){let[r,o]=this.range.overlap(e,n),i=new Array(n-e);for(let a=r;a<o;a++){let u=this.getAtIndex(a);if(u){let p=a-e;i[p]=u}}this.data=i,this.range.from=e,this.range.to=n}}hasData(e,n){let r=this.range.from,o=e-r,i=Math.min(n-r-1,this.rowCount-1);return this.data[o]!==void 0&&this.data[i]!==void 0}getData(e,n){var u;let{from:r,to:o}=this.range,i=Math.max(0,e-r),a=Math.min(n-r,(u=this.rowCount)!=null?u:n);return this.data.slice(i,a)}};var d="up1",b="up2",x="down1",D="down2",ne=t=>typeof t=="number"&&isFinite(t);function re(t,e,n,r){if(!isFinite(t)||n===void 0||e===void 0)return"";{let o=t-n;return o&&typeof r=="number"&&(o=+t.toFixed(r)-+n.toFixed(r)),o?e===""?o<0?x:d:o>0?e===x||e===D||e===b?d:b:e===d||e===b||e===D?x:D:""}}var oe=(t,e)=>t.toUTCString();function w(t){return Array.isArray(t)}function ie(t){return!Array.isArray(t)}var R=class{constructor(){this._events={}}addListener(e,n){this._events||(this._events={});let r=this._events[e];r?w(r)?r.push(n):ie(r)&&(this._events[e]=[r,n]):this._events[e]=n}removeListener(e,n){if(!this._events||!this._events[e])return;let r=this._events[e],o=-1;if(r===n)delete this._events[e];else if(Array.isArray(r)){for(let i=length;i-- >0;)if(r[i]===n){o=i;break}if(o<0)return;r.length===1?(r.length=0,delete this._events[e]):r.splice(o,1)}}removeAllListeners(e){if(this._events)e===void 0?delete this._events:delete this._events[e];else return}emit(e,...n){if(this._events){let r=this._events[e];r&&_(r,e,n);let o=this._events["*"];o&&_(o,e,n)}}once(e,n){let r=(o,i)=>{this.removeListener(o,r),n(o,i)};this.on(e,r)}on(e,n){return this.addListener(e,n)}};function _(t,e,n){if(w(t))t.slice().forEach(r=>_(r,e,n));else switch(n.length){case 0:t(e);break;case 1:t(e,n[0]);break;case 2:t(e,n[0],n[1]);break;default:t.call(null,e,...n)}}var se=()=>`hw-${Math.round(Math.random()*1e5)}`;var ae={Enter:"Enter",Delete:"Delete"},ue={Home:"Home",End:"End",ArrowRight:"ArrowRight",ArrowLeft:"ArrowLeft",ArrowDown:"ArrowDown",ArrowUp:"ArrowUp",Tab:"Tab"},le={F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12"},fe={...ae,...ue,...le},ce=t=>t in fe,me=t=>{if(ce(t.key))return!1;if(typeof t.which=="number"&&t.which>0)return!t.ctrlKey&&!t.metaKey&&!t.altKey&&t.which!==8},pe=t=>t.key==='"'||t.key==="'";function he(t,e){if(!t){let n=new Error(e);throw n.name="Invariant Violation",n.framesToPop=1,n}}var ge=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t));for(;t--;){let r=n[t]&63;r<36?e+=r.toString(36):r<62?e+=(r-26).toString(36).toUpperCase():r<63?e+="_":e+="-"}return e};var E=String.fromCharCode(8200),s=String.fromCharCode(8199),de=-1,F={DIGIT:s,TWO_DIGITS:s+s,THREE_DIGITS:s+s+s,FULL_PADDING:[null,E+s,E+s+s,E+s+s+s,E+s+s+s+s]},be={DIGIT:"0",TWO_DIGITS:"00",THREE_DIGITS:"000",FULL_PADDING:[null,"0","00","000","0000"]};function xe(t,e=6){return(De+t).slice(-e)}var De=s+s+s+s+s+s+s+s+s,L={Right:"right",Center:"center",Left:"left"};function A(t,e,n){let r=t.length,o=e-r;if(o>0)o===1?t=t+n.DIGIT:o===2?t=t+n.TWO_DIGITS:o===3&&(t=t+n.THREE_DIGITS);else if(o<0&&(t=t.slice(0,e),r=e),n===F&&t.charAt(r-1)==="0")return t=t.replace(/0+$/,""),A(t,e,n);return t}function Ee(t,e=L.Right,n=4,r,o){if(t===void 0||typeof t!="number"||isNaN(t))return"";let i,a,u,[p,f=""]=t.toString().split("."),h=f.length;return i=parseFloat(p).toLocaleString(),e===L.Left&&o&&(i=xe(i)),n===de||h===n?a=f:h>n?a=parseFloat("0."+f).toFixed(n).slice(2):(u=r?be:o&&e!==L.Left?F:null)?h===0?a=u.FULL_PADDING[n]:a=A(f,n,u):a=f,i+(a?"."+a:"")}function C(t,e,n){for(let r=0,o=t.length;r<o;r++)e[t[r][n]]=r;return e}function Te(t,e){return C(t,{},e)}function ye(t){return t[0]===void 0}function Ie(t,e){let n=t.slice(),[[r]]=t;for(let o=0;o<e.length;o++){let i=e[o][0]-r;if(t[i]){let a=t[i].slice();for(let u=1;u<e[o].length;u+=3)a[e[o][u]]=e[o][u+2];n[i]=a}else console.log("row not found in rows")}return n}var Re=t=>{let e=t.trim(),n=e.lastIndexOf(" ");return n===-1?e:e.slice(n+1)};
|
|
629
2
|
//# sourceMappingURL=index.js.map
|