px-jspreadsheet-ce 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +292 -0
  3. package/dist/index.d.ts +2382 -0
  4. package/dist/index.js +11286 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/jspreadsheet.css +723 -0
  7. package/dist/jspreadsheet.themes.css +104 -0
  8. package/package.json +57 -0
  9. package/src/index.js +95 -0
  10. package/src/test.js +50 -0
  11. package/src/utils/cells.js +36 -0
  12. package/src/utils/columns.js +742 -0
  13. package/src/utils/comments.js +87 -0
  14. package/src/utils/config.js +46 -0
  15. package/src/utils/copyPaste.js +438 -0
  16. package/src/utils/data.js +419 -0
  17. package/src/utils/dispatch.js +115 -0
  18. package/src/utils/download.js +38 -0
  19. package/src/utils/editor.js +430 -0
  20. package/src/utils/events.js +1639 -0
  21. package/src/utils/factory.js +216 -0
  22. package/src/utils/filter.js +128 -0
  23. package/src/utils/footer.js +51 -0
  24. package/src/utils/freeze.js +19 -0
  25. package/src/utils/headers.js +74 -0
  26. package/src/utils/helpers.js +409 -0
  27. package/src/utils/history.js +336 -0
  28. package/src/utils/internal.js +1299 -0
  29. package/src/utils/internalHelpers.js +96 -0
  30. package/src/utils/keys.js +406 -0
  31. package/src/utils/lazyLoading.js +143 -0
  32. package/src/utils/libraryBase.js +5 -0
  33. package/src/utils/merges.js +275 -0
  34. package/src/utils/meta.js +81 -0
  35. package/src/utils/orderBy.js +185 -0
  36. package/src/utils/pagination.js +181 -0
  37. package/src/utils/rows.js +624 -0
  38. package/src/utils/search.js +83 -0
  39. package/src/utils/selection.js +744 -0
  40. package/src/utils/style.js +147 -0
  41. package/src/utils/toolbar.js +566 -0
  42. package/src/utils/version.js +9 -0
  43. package/src/utils/worksheets.js +731 -0
  44. package/src/webcomponent.js +59 -0
@@ -0,0 +1,731 @@
1
+ import jSuites from 'jsuites';
2
+
3
+ import libraryBase from './libraryBase.js';
4
+
5
+ import { parseCSV } from './helpers.js';
6
+ import {
7
+ createCellHeader,
8
+ deleteColumn,
9
+ getColumnData,
10
+ getNumberOfColumns,
11
+ getWidth,
12
+ hideColumn,
13
+ insertColumn,
14
+ moveColumn,
15
+ setColumnData,
16
+ setWidth,
17
+ showColumn,
18
+ } from './columns.js';
19
+ import { getData, getDataFromRange, getValue, getValueFromCoords, setData, setValue, setValueFromCoords } from './data.js';
20
+ import { cutControls, scrollControls, wheelControls } from './events.js';
21
+ import {
22
+ getHighlighted,
23
+ getRange,
24
+ getSelected,
25
+ getSelectedColumns,
26
+ getSelectedRows,
27
+ getSelection,
28
+ isSelected,
29
+ resetSelection,
30
+ selectAll,
31
+ updateSelectionFromCoords,
32
+ } from './selection.js';
33
+ import { deleteRow, getHeight, getRowData, hideRow, insertRow, moveRow, setHeight, setRowData, showRow } from './rows.js';
34
+ import { destroyMerge, getMerge, removeMerge, setMerge } from './merges.js';
35
+ import { resetSearch, search } from './search.js';
36
+ import { getHeader, getHeaders, setHeader } from './headers.js';
37
+ import { getStyle, resetStyle, setStyle } from './style.js';
38
+ import { page, quantiyOfPages, whichPage } from './pagination.js';
39
+ import { download } from './download.js';
40
+ import { down, first, last, left, right, up } from './keys.js';
41
+ import { createNestedHeader, executeFormula, getCell, getCellFromCoords, getLabel, getWorksheetActive, hideIndex, showIndex } from './internal.js';
42
+ import { getComments, setComments } from './comments.js';
43
+ import { orderBy } from './orderBy.js';
44
+ import { getWorksheetConfig, setConfig } from './config.js';
45
+ import { getMeta, setMeta } from './meta.js';
46
+ import { closeEditor, openEditor } from './editor.js';
47
+ import dispatch from './dispatch.js';
48
+ import { getIdFromColumnName } from './internalHelpers.js';
49
+ import { copy, paste } from './copyPaste.js';
50
+ import { isReadOnly, setReadOnly } from './cells.js';
51
+ import { openFilter, resetFilters } from './filter.js';
52
+ import { redo, undo } from './history.js';
53
+
54
+ const setWorksheetFunctions = function (worksheet) {
55
+ for (let i = 0; i < worksheetPublicMethodsLength; i++) {
56
+ const [methodName, method] = worksheetPublicMethods[i];
57
+
58
+ worksheet[methodName] = method.bind(worksheet);
59
+ }
60
+ };
61
+
62
+ const createTable = function () {
63
+ let obj = this;
64
+
65
+ setWorksheetFunctions(obj);
66
+
67
+ // Elements
68
+ obj.table = document.createElement('table');
69
+ obj.thead = document.createElement('thead');
70
+ obj.tbody = document.createElement('tbody');
71
+
72
+ // Create headers controllers
73
+ obj.headers = [];
74
+ obj.cols = [];
75
+
76
+ // Create table container
77
+ obj.content = document.createElement('div');
78
+ obj.content.classList.add('jss_content');
79
+
80
+ // 监听滚动
81
+ obj.content.onscroll = function (e) {
82
+ // scrollControls.call(obj, e);
83
+ };
84
+ obj.content.onwheel = function (e) {
85
+ wheelControls.call(obj, e);
86
+ };
87
+
88
+ // Search
89
+ const searchContainer = document.createElement('div');
90
+
91
+ const searchLabel = document.createElement('label');
92
+ searchLabel.innerHTML = jSuites.translate('Search') + ': ';
93
+ searchContainer.appendChild(searchLabel);
94
+
95
+ obj.searchInput = document.createElement('input');
96
+ obj.searchInput.classList.add('jss_search');
97
+ searchLabel.appendChild(obj.searchInput);
98
+ obj.searchInput.onfocus = function () {
99
+ obj.resetSelection();
100
+ };
101
+
102
+ // Pagination select option
103
+ const paginationUpdateContainer = document.createElement('div');
104
+
105
+ if (obj.options.pagination > 0 && obj.options.paginationOptions && obj.options.paginationOptions.length > 0) {
106
+ obj.paginationDropdown = document.createElement('select');
107
+ obj.paginationDropdown.classList.add('jss_pagination_dropdown');
108
+ obj.paginationDropdown.onchange = function () {
109
+ obj.options.pagination = parseInt(this.value);
110
+ obj.page(0);
111
+ };
112
+
113
+ for (let i = 0; i < obj.options.paginationOptions.length; i++) {
114
+ const temp = document.createElement('option');
115
+ temp.value = obj.options.paginationOptions[i];
116
+ temp.innerHTML = obj.options.paginationOptions[i];
117
+ obj.paginationDropdown.appendChild(temp);
118
+ }
119
+
120
+ // Set initial pagination value
121
+ obj.paginationDropdown.value = obj.options.pagination;
122
+
123
+ paginationUpdateContainer.appendChild(document.createTextNode(jSuites.translate('Show ')));
124
+ paginationUpdateContainer.appendChild(obj.paginationDropdown);
125
+ paginationUpdateContainer.appendChild(document.createTextNode(jSuites.translate('entries')));
126
+ }
127
+
128
+ // Filter and pagination container
129
+ const filter = document.createElement('div');
130
+ filter.classList.add('jss_filter');
131
+ filter.appendChild(paginationUpdateContainer);
132
+ filter.appendChild(searchContainer);
133
+
134
+ // Colsgroup
135
+ obj.colgroupContainer = document.createElement('colgroup');
136
+ let tempCol = document.createElement('col');
137
+ tempCol.setAttribute('width', '50');
138
+ obj.colgroupContainer.appendChild(tempCol);
139
+
140
+ // Nested
141
+ if (obj.options.nestedHeaders && obj.options.nestedHeaders.length > 0 && obj.options.nestedHeaders[0] && obj.options.nestedHeaders[0][0]) {
142
+ for (let j = 0; j < obj.options.nestedHeaders.length; j++) {
143
+ obj.thead.appendChild(createNestedHeader.call(obj, obj.options.nestedHeaders[j]));
144
+ }
145
+ }
146
+
147
+ // Row
148
+ obj.headerContainer = document.createElement('tr');
149
+ tempCol = document.createElement('td');
150
+ tempCol.classList.add('jss_selectall');
151
+ obj.headerContainer.appendChild(tempCol);
152
+
153
+ const numberOfColumns = getNumberOfColumns.call(obj);
154
+
155
+ for (let i = 0; i < numberOfColumns; i++) {
156
+ // Create header
157
+ createCellHeader.call(obj, i);
158
+ // Append cell to the container
159
+ obj.headerContainer.appendChild(obj.headers[i]);
160
+ obj.colgroupContainer.appendChild(obj.cols[i].colElement);
161
+ }
162
+
163
+ obj.thead.appendChild(obj.headerContainer);
164
+
165
+ // Filters
166
+ if (obj.options.filters == true) {
167
+ obj.filter = document.createElement('tr');
168
+ const td = document.createElement('td');
169
+ obj.filter.appendChild(td);
170
+
171
+ for (let i = 0; i < obj.options.columns.length; i++) {
172
+ const td = document.createElement('td');
173
+ td.innerHTML = '&nbsp;';
174
+ td.setAttribute('data-x', i);
175
+ td.className = 'jss_column_filter';
176
+ if (obj.options.columns[i].type == 'hidden') {
177
+ td.style.display = 'none';
178
+ }
179
+ obj.filter.appendChild(td);
180
+ }
181
+
182
+ obj.thead.appendChild(obj.filter);
183
+ }
184
+
185
+ // Content table
186
+ obj.table = document.createElement('table');
187
+ obj.table.classList.add('jss_worksheet');
188
+ obj.table.setAttribute('cellpadding', '0');
189
+ obj.table.setAttribute('cellspacing', '0');
190
+ obj.table.setAttribute('unselectable', 'yes');
191
+ //obj.table.setAttribute('onselectstart', 'return false');
192
+ obj.table.appendChild(obj.colgroupContainer);
193
+ obj.table.appendChild(obj.thead);
194
+ obj.table.appendChild(obj.tbody);
195
+
196
+ if (!obj.options.textOverflow) {
197
+ obj.table.classList.add('jss_overflow');
198
+ }
199
+
200
+ // Spreadsheet corner
201
+ obj.corner = document.createElement('div');
202
+ obj.corner.className = 'jss_corner';
203
+ obj.corner.setAttribute('unselectable', 'on');
204
+ obj.corner.setAttribute('onselectstart', 'return false');
205
+
206
+ if (obj.options.selectionCopy == false) {
207
+ obj.corner.style.display = 'none';
208
+ }
209
+
210
+ // Textarea helper
211
+ obj.textarea = document.createElement('textarea');
212
+ obj.textarea.className = 'jss_textarea';
213
+ obj.textarea.id = 'jss_textarea';
214
+ obj.textarea.tabIndex = '-1';
215
+ obj.textarea.ariaHidden = 'true';
216
+
217
+ // Powered by Jspreadsheet
218
+ const ads = document.createElement('a');
219
+ ads.setAttribute('href', 'https://bossanova.uk/jspreadsheet/');
220
+ obj.ads = document.createElement('div');
221
+ obj.ads.className = 'jss_about';
222
+
223
+ const span = document.createElement('span');
224
+ span.innerHTML = 'Jspreadsheet CE';
225
+ ads.appendChild(span);
226
+ obj.ads.appendChild(ads);
227
+
228
+ // Create table container TODO: frozen columns
229
+ const container = document.createElement('div');
230
+ container.classList.add('jss_table');
231
+
232
+ // Pagination
233
+ obj.pagination = document.createElement('div');
234
+ obj.pagination.classList.add('jss_pagination');
235
+ const paginationInfo = document.createElement('div');
236
+ const paginationPages = document.createElement('div');
237
+ obj.pagination.appendChild(paginationInfo);
238
+ obj.pagination.appendChild(paginationPages);
239
+
240
+ // Hide pagination if not in use
241
+ if (!obj.options.pagination) {
242
+ obj.pagination.style.display = 'none';
243
+ }
244
+
245
+ // Append containers to the table
246
+ if (obj.options.search == true) {
247
+ obj.element.appendChild(filter);
248
+ }
249
+
250
+ // Elements
251
+ obj.content.appendChild(obj.table);
252
+ obj.content.appendChild(obj.corner);
253
+ obj.content.appendChild(obj.textarea);
254
+
255
+ obj.element.appendChild(obj.content);
256
+ obj.element.appendChild(obj.pagination);
257
+ obj.element.appendChild(obj.ads);
258
+ obj.element.classList.add('jss_container');
259
+
260
+ obj.element.jssWorksheet = obj;
261
+ obj.element.jspreadsheet = obj;
262
+
263
+ // Overflow
264
+ if (obj.options.tableOverflow == true) {
265
+ if (obj.options.tableHeight) {
266
+ obj.content.style['overflow-y'] = 'auto';
267
+ obj.content.style['box-shadow'] = 'rgb(221 221 221) 2px 2px 5px 0.1px';
268
+ obj.content.style.maxHeight = typeof obj.options.tableHeight === 'string' ? obj.options.tableHeight : obj.options.tableHeight + 'px';
269
+ }
270
+ if (obj.options.tableWidth) {
271
+ obj.content.style['overflow-x'] = 'auto';
272
+ obj.content.style.width = typeof obj.options.tableWidth === 'string' ? obj.options.tableWidth : obj.options.tableWidth + 'px';
273
+ }
274
+ }
275
+
276
+ // With toolbars
277
+ if (obj.options.tableOverflow != true && obj.parent.config.toolbar) {
278
+ obj.element.classList.add('with-toolbar');
279
+ }
280
+
281
+ // Actions
282
+ if (obj.options.columnDrag != false) {
283
+ obj.thead.classList.add('draggable');
284
+ }
285
+ if (obj.options.columnResize != false) {
286
+ obj.thead.classList.add('resizable');
287
+ }
288
+ if (obj.options.rowDrag != false) {
289
+ obj.tbody.classList.add('draggable');
290
+ }
291
+ if (obj.options.rowResize != false) {
292
+ obj.tbody.classList.add('resizable');
293
+ }
294
+
295
+ // Load data
296
+ obj.setData.call(obj);
297
+
298
+ // Style
299
+ if (obj.options.style) {
300
+ obj.setStyle(obj.options.style, null, null, 1, 1);
301
+
302
+ delete obj.options.style;
303
+ }
304
+
305
+ Object.defineProperty(obj.options, 'style', {
306
+ enumerable: true,
307
+ configurable: true,
308
+ get() {
309
+ return obj.getStyle();
310
+ },
311
+ });
312
+
313
+ if (obj.options.comments) {
314
+ obj.setComments(obj.options.comments);
315
+ }
316
+
317
+ // Classes
318
+ if (obj.options.classes) {
319
+ const k = Object.keys(obj.options.classes);
320
+ for (let i = 0; i < k.length; i++) {
321
+ const cell = getIdFromColumnName(k[i], true);
322
+ obj.records[cell[1]][cell[0]].element.classList.add(obj.options.classes[k[i]]);
323
+ }
324
+ }
325
+ };
326
+
327
+ /**
328
+ * Prepare the jspreadsheet table
329
+ *
330
+ * @Param config
331
+ */
332
+ const prepareTable = function () {
333
+ const obj = this;
334
+
335
+ // Lazy loading
336
+ if (obj.options.lazyLoading == true && obj.options.tableOverflow != true && obj.parent.config.fullscreen != true) {
337
+ console.error('Jspreadsheet: The lazyloading only works when tableOverflow = yes or fullscreen = yes');
338
+ obj.options.lazyLoading = false;
339
+ }
340
+
341
+ if (!obj.options.columns) {
342
+ obj.options.columns = [];
343
+ }
344
+
345
+ // Number of columns
346
+ let size = obj.options.columns.length;
347
+ let keys;
348
+
349
+ if (obj.options.data && typeof obj.options.data[0] !== 'undefined') {
350
+ if (!Array.isArray(obj.options.data[0])) {
351
+ // Data keys
352
+ keys = Object.keys(obj.options.data[0]);
353
+
354
+ if (keys.length > size) {
355
+ size = keys.length;
356
+ }
357
+ } else {
358
+ const numOfColumns = obj.options.data[0].length;
359
+
360
+ if (numOfColumns > size) {
361
+ size = numOfColumns;
362
+ }
363
+ }
364
+ }
365
+
366
+ // Minimal dimensions
367
+ if (!obj.options.minDimensions) {
368
+ obj.options.minDimensions = [0, 0];
369
+ }
370
+
371
+ if (obj.options.minDimensions[0] > size) {
372
+ size = obj.options.minDimensions[0];
373
+ }
374
+
375
+ // Requests
376
+ const multiple = [];
377
+
378
+ // Preparations
379
+ for (let i = 0; i < size; i++) {
380
+ // Default column description
381
+ if (!obj.options.columns[i]) {
382
+ obj.options.columns[i] = {};
383
+ }
384
+ if (!obj.options.columns[i].name && keys && keys[i]) {
385
+ obj.options.columns[i].name = keys[i];
386
+ }
387
+
388
+ // Pre-load initial source for json dropdown
389
+ if (obj.options.columns[i].type == 'dropdown') {
390
+ // if remote content
391
+ if (obj.options.columns[i].url) {
392
+ multiple.push({
393
+ url: obj.options.columns[i].url,
394
+ index: i,
395
+ method: 'GET',
396
+ dataType: 'json',
397
+ success: function (data) {
398
+ if (!obj.options.columns[this.index].source) {
399
+ obj.options.columns[this.index].source = [];
400
+ }
401
+
402
+ for (let i = 0; i < data.length; i++) {
403
+ obj.options.columns[this.index].source.push(data[i]);
404
+ }
405
+ },
406
+ });
407
+ }
408
+ }
409
+ }
410
+
411
+ // Create the table when is ready
412
+ if (!multiple.length) {
413
+ createTable.call(obj);
414
+ } else {
415
+ jSuites.ajax(multiple, function () {
416
+ createTable.call(obj);
417
+ });
418
+ }
419
+ };
420
+
421
+ export const getNextDefaultWorksheetName = function (spreadsheet) {
422
+ const defaultWorksheetNameRegex = /^Sheet(\d+)$/;
423
+
424
+ let largestWorksheetNumber = 0;
425
+
426
+ spreadsheet.worksheets.forEach(function (worksheet) {
427
+ const regexResult = defaultWorksheetNameRegex.exec(worksheet.options.worksheetName);
428
+ if (regexResult) {
429
+ largestWorksheetNumber = Math.max(largestWorksheetNumber, parseInt(regexResult[1]));
430
+ }
431
+ });
432
+
433
+ return 'Sheet' + (largestWorksheetNumber + 1);
434
+ };
435
+
436
+ export const buildWorksheet = async function () {
437
+ const obj = this;
438
+ const el = obj.element;
439
+
440
+ const spreadsheet = obj.parent;
441
+
442
+ if (typeof spreadsheet.plugins === 'object') {
443
+ Object.entries(spreadsheet.plugins).forEach(function ([, plugin]) {
444
+ if (typeof plugin.beforeinit === 'function') {
445
+ plugin.beforeinit(obj);
446
+ }
447
+ });
448
+ }
449
+
450
+ libraryBase.jspreadsheet.current = obj;
451
+
452
+ const promises = [];
453
+
454
+ // Load the table data based on an CSV file
455
+ if (obj.options.csv) {
456
+ const promise = new Promise((resolve) => {
457
+ // Load CSV file
458
+ jSuites.ajax({
459
+ url: obj.options.csv,
460
+ method: 'GET',
461
+ dataType: 'text',
462
+ success: function (result) {
463
+ // Convert data
464
+ const newData = parseCSV(result, obj.options.csvDelimiter);
465
+
466
+ // Headers
467
+ if (obj.options.csvHeaders == true && newData.length > 0) {
468
+ const headers = newData.shift();
469
+
470
+ if (headers.length > 0) {
471
+ if (!obj.options.columns) {
472
+ obj.options.columns = [];
473
+ }
474
+
475
+ for (let i = 0; i < headers.length; i++) {
476
+ if (!obj.options.columns[i]) {
477
+ obj.options.columns[i] = {};
478
+ }
479
+ // Precedence over pre-configurated titles
480
+ if (typeof obj.options.columns[i].title === 'undefined') {
481
+ obj.options.columns[i].title = headers[i];
482
+ }
483
+ }
484
+ }
485
+ }
486
+ // Data
487
+ obj.options.data = newData;
488
+ // Prepare table
489
+ prepareTable.call(obj);
490
+
491
+ resolve();
492
+ },
493
+ });
494
+ });
495
+
496
+ promises.push(promise);
497
+ } else if (obj.options.url) {
498
+ const promise = new Promise((resolve) => {
499
+ jSuites.ajax({
500
+ url: obj.options.url,
501
+ method: 'GET',
502
+ dataType: 'json',
503
+ success: function (result) {
504
+ // Data
505
+ obj.options.data = result.data ? result.data : result;
506
+ // Prepare table
507
+ prepareTable.call(obj);
508
+
509
+ resolve();
510
+ },
511
+ });
512
+ });
513
+
514
+ promises.push(promise);
515
+ } else {
516
+ // Prepare table
517
+ prepareTable.call(obj);
518
+ }
519
+
520
+ await Promise.all(promises);
521
+
522
+ if (typeof spreadsheet.plugins === 'object') {
523
+ Object.entries(spreadsheet.plugins).forEach(function ([, plugin]) {
524
+ if (typeof plugin.init === 'function') {
525
+ plugin.init(obj);
526
+ }
527
+ });
528
+ }
529
+ };
530
+
531
+ export const createWorksheetObj = function (options) {
532
+ const obj = this;
533
+
534
+ const spreadsheet = obj.parent;
535
+
536
+ if (!options.worksheetName) {
537
+ options.worksheetName = getNextDefaultWorksheetName(obj.parent);
538
+ }
539
+
540
+ const newWorksheet = {
541
+ parent: spreadsheet,
542
+ options: options,
543
+ filters: [],
544
+ formula: [],
545
+ history: [],
546
+ selection: [],
547
+ historyIndex: -1,
548
+ };
549
+
550
+ spreadsheet.config.worksheets.push(newWorksheet.options);
551
+ spreadsheet.worksheets.push(newWorksheet);
552
+
553
+ return newWorksheet;
554
+ };
555
+
556
+ export const createWorksheet = function (options) {
557
+ const obj = this;
558
+ const spreadsheet = obj.parent;
559
+
560
+ spreadsheet.creationThroughJss = true;
561
+
562
+ createWorksheetObj.call(obj, options);
563
+
564
+ spreadsheet.element.tabs.create(options.worksheetName);
565
+ };
566
+
567
+ export const openWorksheet = function (position) {
568
+ const obj = this;
569
+ const spreadsheet = obj.parent;
570
+
571
+ spreadsheet.element.tabs.open(position);
572
+ };
573
+
574
+ export const deleteWorksheet = function (position) {
575
+ const obj = this;
576
+
577
+ obj.parent.element.tabs.remove(position);
578
+
579
+ const removedWorksheet = obj.parent.worksheets.splice(position, 1)[0];
580
+
581
+ dispatch.call(obj.parent, 'ondeleteworksheet', removedWorksheet, position);
582
+ };
583
+
584
+ const worksheetPublicMethods = [
585
+ ['selectAll', selectAll],
586
+ [
587
+ 'updateSelectionFromCoords',
588
+ function (x1, y1, x2, y2) {
589
+ return updateSelectionFromCoords.call(this, x1, y1, x2, y2);
590
+ },
591
+ ],
592
+ [
593
+ 'resetSelection',
594
+ function () {
595
+ return resetSelection.call(this);
596
+ },
597
+ ],
598
+ ['getSelection', getSelection],
599
+ ['getSelected', getSelected],
600
+ ['getSelectedColumns', getSelectedColumns],
601
+ ['getSelectedRows', getSelectedRows],
602
+ ['getData', getData],
603
+ ['setData', setData],
604
+ ['getValue', getValue],
605
+ ['getValueFromCoords', getValueFromCoords],
606
+ ['setValue', setValue],
607
+ ['setValueFromCoords', setValueFromCoords],
608
+ ['getWidth', getWidth],
609
+ [
610
+ 'setWidth',
611
+ function (column, width) {
612
+ return setWidth.call(this, column, width);
613
+ },
614
+ ],
615
+ ['insertRow', insertRow],
616
+ [
617
+ 'moveRow',
618
+ function (rowNumber, newPositionNumber) {
619
+ return moveRow.call(this, rowNumber, newPositionNumber);
620
+ },
621
+ ],
622
+ ['deleteRow', deleteRow],
623
+ ['hideRow', hideRow],
624
+ ['showRow', showRow],
625
+ ['getRowData', getRowData],
626
+ ['setRowData', setRowData],
627
+ ['getHeight', getHeight],
628
+ [
629
+ 'setHeight',
630
+ function (row, height) {
631
+ return setHeight.call(this, row, height);
632
+ },
633
+ ],
634
+ ['getMerge', getMerge],
635
+ [
636
+ 'setMerge',
637
+ function (cellName, colspan, rowspan) {
638
+ return setMerge.call(this, cellName, colspan, rowspan);
639
+ },
640
+ ],
641
+ [
642
+ 'destroyMerge',
643
+ function () {
644
+ return destroyMerge.call(this);
645
+ },
646
+ ],
647
+ [
648
+ 'removeMerge',
649
+ function (cellName, data) {
650
+ return removeMerge.call(this, cellName, data);
651
+ },
652
+ ],
653
+ ['search', search],
654
+ ['resetSearch', resetSearch],
655
+ ['getHeader', getHeader],
656
+ ['getHeaders', getHeaders],
657
+ ['setHeader', setHeader],
658
+ ['getStyle', getStyle],
659
+ [
660
+ 'setStyle',
661
+ function (cell, property, value, forceOverwrite) {
662
+ return setStyle.call(this, cell, property, value, forceOverwrite);
663
+ },
664
+ ],
665
+ ['resetStyle', resetStyle],
666
+ ['insertColumn', insertColumn],
667
+ ['moveColumn', moveColumn],
668
+ ['deleteColumn', deleteColumn],
669
+ ['getColumnData', getColumnData],
670
+ ['setColumnData', setColumnData],
671
+ ['whichPage', whichPage],
672
+ ['page', page],
673
+ ['download', download],
674
+ ['getComments', getComments],
675
+ ['setComments', setComments],
676
+ ['orderBy', orderBy],
677
+ ['undo', undo],
678
+ ['redo', redo],
679
+ ['getCell', getCell],
680
+ ['getCellFromCoords', getCellFromCoords],
681
+ ['getLabel', getLabel],
682
+ ['getConfig', getWorksheetConfig],
683
+ ['setConfig', setConfig],
684
+ [
685
+ 'getMeta',
686
+ function (cell) {
687
+ return getMeta.call(this, cell);
688
+ },
689
+ ],
690
+ ['setMeta', setMeta],
691
+ ['showColumn', showColumn],
692
+ ['hideColumn', hideColumn],
693
+ ['showIndex', showIndex],
694
+ ['hideIndex', hideIndex],
695
+ ['getWorksheetActive', getWorksheetActive],
696
+ ['openEditor', openEditor],
697
+ ['closeEditor', closeEditor],
698
+ ['createWorksheet', createWorksheet],
699
+ ['openWorksheet', openWorksheet],
700
+ ['deleteWorksheet', deleteWorksheet],
701
+ [
702
+ 'copy',
703
+ function (cut) {
704
+ if (cut) {
705
+ cutControls();
706
+ } else {
707
+ copy.call(this, true);
708
+ }
709
+ },
710
+ ],
711
+ ['paste', paste],
712
+ ['executeFormula', executeFormula],
713
+ ['getDataFromRange', getDataFromRange],
714
+ ['quantiyOfPages', quantiyOfPages],
715
+ ['getRange', getRange],
716
+ ['isSelected', isSelected],
717
+ ['setReadOnly', setReadOnly],
718
+ ['isReadOnly', isReadOnly],
719
+ ['getHighlighted', getHighlighted],
720
+ ['dispatch', dispatch],
721
+ ['down', down],
722
+ ['first', first],
723
+ ['last', last],
724
+ ['left', left],
725
+ ['right', right],
726
+ ['up', up],
727
+ ['openFilter', openFilter],
728
+ ['resetFilters', resetFilters],
729
+ ];
730
+
731
+ const worksheetPublicMethodsLength = worksheetPublicMethods.length;