handsontable 0.0.0-next-d093c11-20240307 → 0.0.0-next-221e46b-20240307

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.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (53) hide show
  1. package/3rdparty/walkontable/src/cell/range.js +1 -1
  2. package/3rdparty/walkontable/src/cell/range.mjs +1 -1
  3. package/base.js +2 -2
  4. package/base.mjs +2 -2
  5. package/core.js +21 -21
  6. package/core.mjs +21 -21
  7. package/dataMap/metaManager/metaSchema.js +270 -270
  8. package/dataMap/metaManager/metaSchema.mjs +270 -270
  9. package/dist/handsontable.css +2 -2
  10. package/dist/handsontable.full.css +2 -2
  11. package/dist/handsontable.full.js +397 -397
  12. package/dist/handsontable.full.min.css +2 -2
  13. package/dist/handsontable.full.min.js +3 -3
  14. package/dist/handsontable.js +397 -397
  15. package/dist/handsontable.min.css +2 -2
  16. package/dist/handsontable.min.js +3 -3
  17. package/helpers/mixed.js +1 -1
  18. package/helpers/mixed.mjs +1 -1
  19. package/package.json +1 -1
  20. package/pluginHooks.js +43 -43
  21. package/pluginHooks.mjs +43 -43
  22. package/plugins/columnSummary/columnSummary.js +14 -14
  23. package/plugins/columnSummary/columnSummary.mjs +14 -14
  24. package/plugins/contextMenu/contextMenu.js +3 -3
  25. package/plugins/contextMenu/contextMenu.mjs +3 -3
  26. package/plugins/copyPaste/copyPaste.js +3 -3
  27. package/plugins/copyPaste/copyPaste.mjs +3 -3
  28. package/plugins/customBorders/customBorders.js +1 -1
  29. package/plugins/customBorders/customBorders.mjs +1 -1
  30. package/plugins/dropdownMenu/dropdownMenu.js +2 -2
  31. package/plugins/dropdownMenu/dropdownMenu.mjs +2 -2
  32. package/plugins/exportFile/exportFile.js +1 -1
  33. package/plugins/exportFile/exportFile.mjs +1 -1
  34. package/plugins/filters/filters.js +1 -1
  35. package/plugins/filters/filters.mjs +1 -1
  36. package/plugins/formulas/formulas.js +1 -1
  37. package/plugins/formulas/formulas.mjs +1 -1
  38. package/plugins/hiddenColumns/hiddenColumns.js +4 -4
  39. package/plugins/hiddenColumns/hiddenColumns.mjs +4 -4
  40. package/plugins/hiddenRows/hiddenRows.js +4 -4
  41. package/plugins/hiddenRows/hiddenRows.mjs +4 -4
  42. package/plugins/manualColumnMove/manualColumnMove.js +7 -7
  43. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -7
  44. package/plugins/manualRowMove/manualRowMove.js +7 -7
  45. package/plugins/manualRowMove/manualRowMove.mjs +7 -7
  46. package/plugins/nestedRows/nestedRows.js +2 -2
  47. package/plugins/nestedRows/nestedRows.mjs +2 -2
  48. package/plugins/nestedRows/utils/rowMoveController.js +4 -4
  49. package/plugins/nestedRows/utils/rowMoveController.mjs +4 -4
  50. package/shortcuts/context.js +1 -1
  51. package/shortcuts/context.mjs +1 -1
  52. package/shortcuts/manager.js +2 -2
  53. package/shortcuts/manager.mjs +2 -2
@@ -20,7 +20,7 @@ function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.
20
20
  * @description
21
21
  *
22
22
  * The `CellRange` class holds a set of cell coordinates ([`CellCoords`](@/api/cellCoords.md) instances)
23
- * that form a [selection range](@/guides/cell-features/selection.md#select-ranges).
23
+ * that form a [selection range](@/guides/cell-features/selection/selection.md#select-ranges).
24
24
  *
25
25
  * A single `CellRange` instance represents a single unit of selection
26
26
  * that contains either a single cell or multiple adjacent cells.
@@ -16,7 +16,7 @@ import CellCoords from "./../cell/coords.mjs";
16
16
  * @description
17
17
  *
18
18
  * The `CellRange` class holds a set of cell coordinates ([`CellCoords`](@/api/cellCoords.md) instances)
19
- * that form a [selection range](@/guides/cell-features/selection.md#select-ranges).
19
+ * that form a [selection range](@/guides/cell-features/selection/selection.md#select-ranges).
20
20
  *
21
21
  * A single `CellRange` instance represents a single unit of selection
22
22
  * that contains either a single cell or multiple adjacent cells.
package/base.js CHANGED
@@ -45,8 +45,8 @@ Handsontable.hooks = _pluginHooks.default.getSingleton();
45
45
  Handsontable.CellCoords = _src.CellCoords;
46
46
  Handsontable.CellRange = _src.CellRange;
47
47
  Handsontable.packageName = 'handsontable';
48
- Handsontable.buildDate = "07/03/2024 12:38:33";
49
- Handsontable.version = "0.0.0-next-d093c11-20240307";
48
+ Handsontable.buildDate = "07/03/2024 14:16:09";
49
+ Handsontable.version = "0.0.0-next-221e46b-20240307";
50
50
  Handsontable.languages = {
51
51
  dictionaryKeys: _registry.dictionaryKeys,
52
52
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "07/03/2024 12:38:39";
39
- Handsontable.version = "0.0.0-next-d093c11-20240307";
38
+ Handsontable.buildDate = "07/03/2024 14:16:15";
39
+ Handsontable.version = "0.0.0-next-221e46b-20240307";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
package/core.js CHANGED
@@ -68,8 +68,8 @@ const deprecationWarns = new Set();
68
68
  *
69
69
  * ::: only-for react
70
70
  * To use these methods, associate a Handsontable instance with your instance
71
- * of the [`HotTable` component](@/guides/getting-started/installation.md#_4-use-the-hottable-component),
72
- * by using React's `ref` feature (read more on the [Instance methods](@/guides/getting-started/react-methods.md) page).
71
+ * of the [`HotTable` component](@/guides/getting-started/installation/installation.md#_4-use-the-hottable-component),
72
+ * by using React's `ref` feature (read more on the [Instance methods](@/guides/getting-started/react-methods/react-methods.md) page).
73
73
  * :::
74
74
  *
75
75
  * ## How to call a method
@@ -2045,20 +2045,20 @@ function Core(rootElement, userSettings) {
2045
2045
  * The `updateData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2046
2046
  *
2047
2047
  * The `updateData()` method:
2048
- * - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2048
+ * - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2049
2049
  * - Keeps rows' states (e.g. row order)
2050
2050
  * - Keeps columns' states (e.g. column order)
2051
2051
  *
2052
2052
  * To replace Handsontable's [`data`](@/api/options.md#data) and reset states, use the [`loadData()`](#loaddata) method.
2053
2053
  *
2054
2054
  * Read more:
2055
- * - [Binding to data](@/guides/getting-started/binding-to-data.md)
2056
- * - [Saving data](@/guides/getting-started/saving-data.md)
2055
+ * - [Binding to data](@/guides/getting-started/binding-to-data/binding-to-data.md)
2056
+ * - [Saving data](@/guides/getting-started/saving-data/saving-data.md)
2057
2057
  *
2058
2058
  * @memberof Core#
2059
2059
  * @function updateData
2060
2060
  * @since 11.1.0
2061
- * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
2061
+ * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects), that contains Handsontable's data
2062
2062
  * @param {string} [source] The source of the `updateData()` call
2063
2063
  * @fires Hooks#beforeUpdateData
2064
2064
  * @fires Hooks#afterUpdateData
@@ -2087,19 +2087,19 @@ function Core(rootElement, userSettings) {
2087
2087
  * The `loadData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2088
2088
  *
2089
2089
  * Additionally, the `loadData()` method:
2090
- * - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2090
+ * - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2091
2091
  * - Resets rows' states (e.g. row order)
2092
2092
  * - Resets columns' states (e.g. column order)
2093
2093
  *
2094
2094
  * To replace Handsontable's [`data`](@/api/options.md#data) without resetting states, use the [`updateData()`](#updatedata) method.
2095
2095
  *
2096
2096
  * Read more:
2097
- * - [Binding to data](@/guides/getting-started/binding-to-data.md)
2098
- * - [Saving data](@/guides/getting-started/saving-data.md)
2097
+ * - [Binding to data](@/guides/getting-started/binding-to-data/binding-to-data.md)
2098
+ * - [Saving data](@/guides/getting-started/saving-data/saving-data.md)
2099
2099
  *
2100
2100
  * @memberof Core#
2101
2101
  * @function loadData
2102
- * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
2102
+ * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects), that contains Handsontable's data
2103
2103
  * @param {string} [source] The source of the `loadData()` call
2104
2104
  * @fires Hooks#beforeLoadData
2105
2105
  * @fires Hooks#afterLoadData
@@ -2459,7 +2459,7 @@ function Core(rootElement, userSettings) {
2459
2459
  *
2460
2460
  * ::: tip
2461
2461
  * The `alter()` method works only when your [`data`](@/api/options.md#data)
2462
- * is an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
2462
+ * is an [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays).
2463
2463
  * :::
2464
2464
  *
2465
2465
  * ```js
@@ -2753,7 +2753,7 @@ function Core(rootElement, userSettings) {
2753
2753
  * sorted or trimmed only physical indexes are correct.
2754
2754
  *
2755
2755
  * __Note__: This method may return incorrect values for cells that contain
2756
- * [formulas](@/guides/formulas/formula-calculation.md). This is because `getSourceData()`
2756
+ * [formulas](@/guides/formulas/formula-calculation/formula-calculation.md). This is because `getSourceData()`
2757
2757
  * operates on source data ([physical indexes](@/api/indexMapper.md)),
2758
2758
  * whereas formulas operate on visual data (visual indexes).
2759
2759
  *
@@ -3091,8 +3091,8 @@ function Core(rootElement, userSettings) {
3091
3091
  };
3092
3092
 
3093
3093
  /**
3094
- * Checks if your [data format](@/guides/getting-started/binding-to-data.md#compatible-data-types)
3095
- * and [configuration options](@/guides/getting-started/configuration-options.md)
3094
+ * Checks if your [data format](@/guides/getting-started/binding-to-data/binding-to-data.md#compatible-data-types)
3095
+ * and [configuration options](@/guides/getting-started/configuration-options/configuration-options.md)
3096
3096
  * allow for changing the number of columns.
3097
3097
  *
3098
3098
  * Returns `false` when your data is an array of objects,
@@ -3181,10 +3181,10 @@ function Core(rootElement, userSettings) {
3181
3181
 
3182
3182
  /**
3183
3183
  * Validates every cell in the data set,
3184
- * using a [validator function](@/guides/cell-functions/cell-validator.md) configured for each cell.
3184
+ * using a [validator function](@/guides/cell-functions/cell-validator/cell-validator.md) configured for each cell.
3185
3185
  *
3186
- * Doesn't validate cells that are currently [trimmed](@/guides/rows/row-trimming.md),
3187
- * [hidden](@/guides/rows/row-hiding.md), or [filtered](@/guides/columns/column-filter.md),
3186
+ * Doesn't validate cells that are currently [trimmed](@/guides/rows/row-trimming/row-trimming.md),
3187
+ * [hidden](@/guides/rows/row-hiding/row-hiding.md), or [filtered](@/guides/columns/column-filter/column-filter.md),
3188
3188
  * as such cells are not included in the data set until you bring them back again.
3189
3189
  *
3190
3190
  * After the validation, the `callback` function is fired, with the `valid` argument set to:
@@ -3372,18 +3372,18 @@ function Core(rootElement, userSettings) {
3372
3372
  * Gets the values of column headers (if column headers are [enabled](@/api/options.md#colheaders)).
3373
3373
  *
3374
3374
  * To get an array with the values of all
3375
- * [bottom-most](@/guides/cell-features/clipboard.md#copy-with-headers) column headers,
3375
+ * [bottom-most](@/guides/cell-features/clipboard/clipboard.md#copy-with-headers) column headers,
3376
3376
  * call `getColHeader()` with no arguments.
3377
3377
  *
3378
3378
  * To get the value of the bottom-most header of a specific column, use the `column` parameter.
3379
3379
  *
3380
- * To get the value of a [specific-level](@/guides/columns/column-groups.md) header
3380
+ * To get the value of a [specific-level](@/guides/columns/column-groups/column-groups.md) header
3381
3381
  * of a specific column, use the `column` and `headerLevel` parameters.
3382
3382
  *
3383
3383
  * Read more:
3384
- * - [Guides: Column groups](@/guides/columns/column-groups.md)
3384
+ * - [Guides: Column groups](@/guides/columns/column-groups/column-groups.md)
3385
3385
  * - [Options: `colHeaders`](@/api/options.md#colheaders)
3386
- * - [Guides: Copy with headers](@/guides/cell-features/clipboard.md#copy-with-headers)
3386
+ * - [Guides: Copy with headers](@/guides/cell-features/clipboard/clipboard.md#copy-with-headers)
3387
3387
  *
3388
3388
  * ```js
3389
3389
  * // get the contents of all bottom-most column headers
package/core.mjs CHANGED
@@ -63,8 +63,8 @@ const deprecationWarns = new Set();
63
63
  *
64
64
  * ::: only-for react
65
65
  * To use these methods, associate a Handsontable instance with your instance
66
- * of the [`HotTable` component](@/guides/getting-started/installation.md#_4-use-the-hottable-component),
67
- * by using React's `ref` feature (read more on the [Instance methods](@/guides/getting-started/react-methods.md) page).
66
+ * of the [`HotTable` component](@/guides/getting-started/installation/installation.md#_4-use-the-hottable-component),
67
+ * by using React's `ref` feature (read more on the [Instance methods](@/guides/getting-started/react-methods/react-methods.md) page).
68
68
  * :::
69
69
  *
70
70
  * ## How to call a method
@@ -2040,20 +2040,20 @@ export default function Core(rootElement, userSettings) {
2040
2040
  * The `updateData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2041
2041
  *
2042
2042
  * The `updateData()` method:
2043
- * - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2043
+ * - Keeps cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2044
2044
  * - Keeps rows' states (e.g. row order)
2045
2045
  * - Keeps columns' states (e.g. column order)
2046
2046
  *
2047
2047
  * To replace Handsontable's [`data`](@/api/options.md#data) and reset states, use the [`loadData()`](#loaddata) method.
2048
2048
  *
2049
2049
  * Read more:
2050
- * - [Binding to data](@/guides/getting-started/binding-to-data.md)
2051
- * - [Saving data](@/guides/getting-started/saving-data.md)
2050
+ * - [Binding to data](@/guides/getting-started/binding-to-data/binding-to-data.md)
2051
+ * - [Saving data](@/guides/getting-started/saving-data/saving-data.md)
2052
2052
  *
2053
2053
  * @memberof Core#
2054
2054
  * @function updateData
2055
2055
  * @since 11.1.0
2056
- * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
2056
+ * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects), that contains Handsontable's data
2057
2057
  * @param {string} [source] The source of the `updateData()` call
2058
2058
  * @fires Hooks#beforeUpdateData
2059
2059
  * @fires Hooks#afterUpdateData
@@ -2082,19 +2082,19 @@ export default function Core(rootElement, userSettings) {
2082
2082
  * The `loadData()` method replaces Handsontable's [`data`](@/api/options.md#data) with a new dataset.
2083
2083
  *
2084
2084
  * Additionally, the `loadData()` method:
2085
- * - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2085
+ * - Resets cells' states (e.g. cells' [formatting](@/guides/cell-features/formatting-cells/formatting-cells.md) and cells' [`readOnly`](@/api/options.md#readonly) states)
2086
2086
  * - Resets rows' states (e.g. row order)
2087
2087
  * - Resets columns' states (e.g. column order)
2088
2088
  *
2089
2089
  * To replace Handsontable's [`data`](@/api/options.md#data) without resetting states, use the [`updateData()`](#updatedata) method.
2090
2090
  *
2091
2091
  * Read more:
2092
- * - [Binding to data](@/guides/getting-started/binding-to-data.md)
2093
- * - [Saving data](@/guides/getting-started/saving-data.md)
2092
+ * - [Binding to data](@/guides/getting-started/binding-to-data/binding-to-data.md)
2093
+ * - [Saving data](@/guides/getting-started/saving-data/saving-data.md)
2094
2094
  *
2095
2095
  * @memberof Core#
2096
2096
  * @function loadData
2097
- * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data.md#array-of-objects), that contains Handsontable's data
2097
+ * @param {Array} data An [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays), or an [array of objects](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-objects), that contains Handsontable's data
2098
2098
  * @param {string} [source] The source of the `loadData()` call
2099
2099
  * @fires Hooks#beforeLoadData
2100
2100
  * @fires Hooks#afterLoadData
@@ -2454,7 +2454,7 @@ export default function Core(rootElement, userSettings) {
2454
2454
  *
2455
2455
  * ::: tip
2456
2456
  * The `alter()` method works only when your [`data`](@/api/options.md#data)
2457
- * is an [array of arrays](@/guides/getting-started/binding-to-data.md#array-of-arrays).
2457
+ * is an [array of arrays](@/guides/getting-started/binding-to-data/binding-to-data.md#array-of-arrays).
2458
2458
  * :::
2459
2459
  *
2460
2460
  * ```js
@@ -2748,7 +2748,7 @@ export default function Core(rootElement, userSettings) {
2748
2748
  * sorted or trimmed only physical indexes are correct.
2749
2749
  *
2750
2750
  * __Note__: This method may return incorrect values for cells that contain
2751
- * [formulas](@/guides/formulas/formula-calculation.md). This is because `getSourceData()`
2751
+ * [formulas](@/guides/formulas/formula-calculation/formula-calculation.md). This is because `getSourceData()`
2752
2752
  * operates on source data ([physical indexes](@/api/indexMapper.md)),
2753
2753
  * whereas formulas operate on visual data (visual indexes).
2754
2754
  *
@@ -3086,8 +3086,8 @@ export default function Core(rootElement, userSettings) {
3086
3086
  };
3087
3087
 
3088
3088
  /**
3089
- * Checks if your [data format](@/guides/getting-started/binding-to-data.md#compatible-data-types)
3090
- * and [configuration options](@/guides/getting-started/configuration-options.md)
3089
+ * Checks if your [data format](@/guides/getting-started/binding-to-data/binding-to-data.md#compatible-data-types)
3090
+ * and [configuration options](@/guides/getting-started/configuration-options/configuration-options.md)
3091
3091
  * allow for changing the number of columns.
3092
3092
  *
3093
3093
  * Returns `false` when your data is an array of objects,
@@ -3176,10 +3176,10 @@ export default function Core(rootElement, userSettings) {
3176
3176
 
3177
3177
  /**
3178
3178
  * Validates every cell in the data set,
3179
- * using a [validator function](@/guides/cell-functions/cell-validator.md) configured for each cell.
3179
+ * using a [validator function](@/guides/cell-functions/cell-validator/cell-validator.md) configured for each cell.
3180
3180
  *
3181
- * Doesn't validate cells that are currently [trimmed](@/guides/rows/row-trimming.md),
3182
- * [hidden](@/guides/rows/row-hiding.md), or [filtered](@/guides/columns/column-filter.md),
3181
+ * Doesn't validate cells that are currently [trimmed](@/guides/rows/row-trimming/row-trimming.md),
3182
+ * [hidden](@/guides/rows/row-hiding/row-hiding.md), or [filtered](@/guides/columns/column-filter/column-filter.md),
3183
3183
  * as such cells are not included in the data set until you bring them back again.
3184
3184
  *
3185
3185
  * After the validation, the `callback` function is fired, with the `valid` argument set to:
@@ -3367,18 +3367,18 @@ export default function Core(rootElement, userSettings) {
3367
3367
  * Gets the values of column headers (if column headers are [enabled](@/api/options.md#colheaders)).
3368
3368
  *
3369
3369
  * To get an array with the values of all
3370
- * [bottom-most](@/guides/cell-features/clipboard.md#copy-with-headers) column headers,
3370
+ * [bottom-most](@/guides/cell-features/clipboard/clipboard.md#copy-with-headers) column headers,
3371
3371
  * call `getColHeader()` with no arguments.
3372
3372
  *
3373
3373
  * To get the value of the bottom-most header of a specific column, use the `column` parameter.
3374
3374
  *
3375
- * To get the value of a [specific-level](@/guides/columns/column-groups.md) header
3375
+ * To get the value of a [specific-level](@/guides/columns/column-groups/column-groups.md) header
3376
3376
  * of a specific column, use the `column` and `headerLevel` parameters.
3377
3377
  *
3378
3378
  * Read more:
3379
- * - [Guides: Column groups](@/guides/columns/column-groups.md)
3379
+ * - [Guides: Column groups](@/guides/columns/column-groups/column-groups.md)
3380
3380
  * - [Options: `colHeaders`](@/api/options.md#colheaders)
3381
- * - [Guides: Copy with headers](@/guides/cell-features/clipboard.md#copy-with-headers)
3381
+ * - [Guides: Copy with headers](@/guides/cell-features/clipboard/clipboard.md#copy-with-headers)
3382
3382
  *
3383
3383
  * ```js
3384
3384
  * // get the contents of all bottom-most column headers