ember-headless-table 1.4.3 → 1.4.4

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 (97) hide show
  1. package/dist/-private/-type-tests/plugin-properties.test.js +1 -1
  2. package/dist/-private/-type-tests/plugin-properties.test.js.map +1 -1
  3. package/dist/-private/-type-tests/plugin-with.test.js +0 -1
  4. package/dist/-private/-type-tests/plugin-with.test.js.map +1 -1
  5. package/dist/-private/-type-tests/plugins-accessors.test.js +1 -2
  6. package/dist/-private/-type-tests/plugins-accessors.test.js.map +1 -1
  7. package/dist/-private/-type-tests/table-api.test.js +0 -1
  8. package/dist/-private/-type-tests/table-api.test.js.map +1 -1
  9. package/dist/-private/-type-tests/table-config.test.js +1 -2
  10. package/dist/-private/-type-tests/table-config.test.js.map +1 -1
  11. package/dist/-private/column.d.ts +3 -3
  12. package/dist/-private/column.js.map +1 -1
  13. package/dist/-private/interfaces/column.d.ts +5 -5
  14. package/dist/-private/interfaces/index.d.ts +7 -7
  15. package/dist/-private/interfaces/plugins.d.ts +3 -3
  16. package/dist/-private/interfaces/table.d.ts +5 -5
  17. package/dist/-private/js-helper.d.ts +2 -2
  18. package/dist/-private/js-helper.js +37 -1
  19. package/dist/-private/js-helper.js.map +1 -1
  20. package/dist/-private/preferences.d.ts +2 -2
  21. package/dist/-private/preferences.js +1 -1
  22. package/dist/-private/preferences.js.map +1 -1
  23. package/dist/-private/row.d.ts +1 -1
  24. package/dist/-private/row.js +1 -1
  25. package/dist/-private/row.js.map +1 -1
  26. package/dist/-private/table.js +2 -2
  27. package/dist/-private/utils.d.ts +1 -1
  28. package/dist/-private/utils.js.map +1 -1
  29. package/dist/applyDecoratedDescriptor-6b986a67.js.map +1 -1
  30. package/dist/{classPrivateFieldGet-b4d7d334.js → classPrivateFieldGet-0bfc0262.js} +2 -2
  31. package/dist/{classPrivateFieldGet-b4d7d334.js.map → classPrivateFieldGet-0bfc0262.js.map} +1 -1
  32. package/dist/defineProperty-4f0781e1.js +43 -0
  33. package/dist/defineProperty-4f0781e1.js.map +1 -0
  34. package/dist/index.d.ts +7 -7
  35. package/dist/plugins/-private/base.d.ts +6 -6
  36. package/dist/plugins/-private/base.js +26 -3
  37. package/dist/plugins/-private/base.js.map +1 -1
  38. package/dist/plugins/-private/utils.d.ts +2 -2
  39. package/dist/plugins/-private/utils.js.map +1 -1
  40. package/dist/plugins/column-reordering/helpers.d.ts +2 -2
  41. package/dist/plugins/column-reordering/helpers.js.map +1 -1
  42. package/dist/plugins/column-reordering/index.d.ts +3 -3
  43. package/dist/plugins/column-reordering/plugin.d.ts +3 -3
  44. package/dist/plugins/column-reordering/plugin.js +23 -26
  45. package/dist/plugins/column-reordering/plugin.js.map +1 -1
  46. package/dist/plugins/column-reordering/utils.d.ts +1 -1
  47. package/dist/plugins/column-reordering/utils.js.map +1 -1
  48. package/dist/plugins/column-resizing/handle.d.ts +2 -2
  49. package/dist/plugins/column-resizing/handle.js +4 -1
  50. package/dist/plugins/column-resizing/handle.js.map +1 -1
  51. package/dist/plugins/column-resizing/helpers.d.ts +1 -1
  52. package/dist/plugins/column-resizing/index.d.ts +4 -4
  53. package/dist/plugins/column-resizing/plugin.d.ts +3 -3
  54. package/dist/plugins/column-resizing/plugin.js +11 -3
  55. package/dist/plugins/column-resizing/plugin.js.map +1 -1
  56. package/dist/plugins/column-resizing/resize-observer.js.map +1 -1
  57. package/dist/plugins/column-visibility/helpers.d.ts +1 -1
  58. package/dist/plugins/column-visibility/index.d.ts +3 -3
  59. package/dist/plugins/column-visibility/plugin.d.ts +3 -3
  60. package/dist/plugins/column-visibility/plugin.js +1 -1
  61. package/dist/plugins/column-visibility/plugin.js.map +1 -1
  62. package/dist/plugins/data-sorting/helpers.d.ts +2 -2
  63. package/dist/plugins/data-sorting/index.d.ts +5 -5
  64. package/dist/plugins/data-sorting/plugin.d.ts +4 -4
  65. package/dist/plugins/data-sorting/plugin.js +1 -1
  66. package/dist/plugins/data-sorting/plugin.js.map +1 -1
  67. package/dist/plugins/data-sorting/types.d.ts +1 -1
  68. package/dist/plugins/data-sorting/types.js +6 -6
  69. package/dist/plugins/data-sorting/types.js.map +1 -1
  70. package/dist/plugins/index.d.ts +5 -5
  71. package/dist/plugins/metadata/helpers.d.ts +1 -1
  72. package/dist/plugins/metadata/helpers.js.map +1 -1
  73. package/dist/plugins/metadata/index.d.ts +3 -3
  74. package/dist/plugins/metadata/plugin.d.ts +1 -1
  75. package/dist/plugins/metadata/plugin.js +1 -1
  76. package/dist/plugins/metadata/plugin.js.map +1 -1
  77. package/dist/plugins/row-selection/helpers.d.ts +1 -1
  78. package/dist/plugins/row-selection/index.d.ts +3 -3
  79. package/dist/plugins/row-selection/plugin.d.ts +3 -3
  80. package/dist/plugins/row-selection/plugin.js +2 -2
  81. package/dist/plugins/row-selection/plugin.js.map +1 -1
  82. package/dist/plugins/sticky-columns/helpers.d.ts +1 -1
  83. package/dist/plugins/sticky-columns/helpers.js +2 -0
  84. package/dist/plugins/sticky-columns/helpers.js.map +1 -1
  85. package/dist/plugins/sticky-columns/index.d.ts +3 -3
  86. package/dist/plugins/sticky-columns/plugin.d.ts +3 -3
  87. package/dist/plugins/sticky-columns/plugin.js +13 -1
  88. package/dist/plugins/sticky-columns/plugin.js.map +1 -1
  89. package/dist/{table-dde25960.d.ts → table-443deac1.d.ts} +6 -6
  90. package/dist/{table-dde25960.js → table-443deac1.js} +50 -14
  91. package/dist/{table-dde25960.js.map → table-443deac1.js.map} +1 -1
  92. package/dist/test-support/index.js.map +1 -1
  93. package/dist/utils.d.ts +1 -1
  94. package/dist/utils.js.map +1 -1
  95. package/package.json +2 -2
  96. package/dist/defineProperty-35ce617b.js +0 -16
  97. package/dist/defineProperty-35ce617b.js.map +0 -1
@@ -1,3 +1,3 @@
1
- export * from "./helpers";
2
- export { RowSelection as Plugin, RowSelection } from "./plugin";
3
- export type { Signature } from "./plugin";
1
+ export * from "./helpers.js";
2
+ export { RowSelection as Plugin, RowSelection } from "./plugin.js";
3
+ export type { Signature } from "./plugin.js";
@@ -1,6 +1,6 @@
1
- import { BasePlugin } from "../-private/base";
2
- import { Row, Table } from "../../index";
3
- import { PluginSignature, RowApi } from "../../-private/interfaces/index";
1
+ import { BasePlugin } from "../-private/base.js";
2
+ import { Row, Table } from "../../index.js";
3
+ import { PluginSignature, RowApi } from "../../-private/interfaces/index.js";
4
4
  interface Signature<DataType = any, Key = DataType> extends PluginSignature {
5
5
  Meta: {
6
6
  Table: TableMeta;
@@ -1,6 +1,6 @@
1
- import { _ as _classExtractFieldDescriptor, a as _classPrivateFieldGet } from '../../classPrivateFieldGet-b4d7d334.js';
1
+ import { a as _classExtractFieldDescriptor, _ as _classPrivateFieldGet } from '../../classPrivateFieldGet-0bfc0262.js';
2
2
  import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-6b986a67.js';
3
- import { _ as _defineProperty } from '../../defineProperty-35ce617b.js';
3
+ import { _ as _defineProperty } from '../../defineProperty-4f0781e1.js';
4
4
  import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
5
5
  import '@glimmer/tracking';
6
6
  import { assert } from '@ember/debug';
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../../../src/plugins/row-selection/plugin.ts"],"sourcesContent":["export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","import { cached } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\n\nimport { BasePlugin, meta, options } from '../-private/base';\n\nimport type { Row, Table } from '[public-types]';\nimport type { PluginSignature, RowApi } from '#interfaces';\n\nexport interface Signature<DataType = any, Key = DataType> extends PluginSignature {\n Meta: {\n Table: TableMeta;\n Row: RowMeta;\n };\n Options: {\n Plugin: {\n /**\n * A set of selected things using the same type of Identifier\n * returned from `key`\n */\n selection: Set<Key> | Array<Key>;\n } & (\n | {\n /**\n * For a given row's data, how should the key be determined?\n * this could be a remote id from a database, or some other attribute\n *\n * This could be useful for indicating in UI if a particular item is selected.\n *\n * If not provided, the row's data will be used as the key\n */\n key: (data: DataType) => Key;\n /**\n * When a row is clicked, this will be invoked,\n * allowing you to update your selection object\n */\n onSelect: (item: Key, row: Row<DataType>) => void;\n /**\n * When a row is clicked (and the row is selected), this will be invoked,\n * allowing you to update your selection object\n */\n onDeselect: (item: Key, row: Row<DataType>) => void;\n }\n | {\n /**\n * When a row is clicked (and the row is not selected), this will be invoked,\n * allowing you to update your selection object\n */\n onSelect: (item: DataType | any, row: Row<DataType>) => void;\n /**\n * When a row is clicked (and the row is selected), this will be invoked,\n * allowing you to update your selection object\n */\n onDeselect: (item: DataType | any, row: Row<DataType>) => void;\n }\n );\n };\n}\n\n/**\n * This plugin provides a means of managing selection of a single row in a table.\n *\n * The state of what is actually selected is managed by you, but this plugin\n * will wire up the click listeners as well as let you know which *data* is clicked.\n */\nexport class RowSelection<DataType = any, Key = DataType> extends BasePlugin<\n Signature<DataType, Key>\n> {\n name = 'row-selection';\n\n meta = {\n row: RowMeta,\n table: TableMeta,\n };\n\n constructor(table: Table) {\n super(table);\n\n let pluginOptions = options.forTable(this.table, RowSelection);\n\n assert(\n `selection, onSelect, and onDeselect are all required arguments for the RowSelection plugin. ` +\n `Specify these options via \\`RowSelection.with(() => ({ selection, onSelect, onDeselect }))\\``,\n pluginOptions.selection && pluginOptions.onSelect && pluginOptions.onDeselect\n );\n }\n\n rowModifier = (element: HTMLElement, { row }: RowApi<Table<any>>) => {\n let handler = (event: Event) => {\n this.#clickHandler(row, event);\n };\n\n element.addEventListener('click', handler);\n\n return () => {\n element.removeEventListener('click', handler);\n };\n };\n\n #clickHandler = (row: Row, event: Event) => {\n assert(\n `expected event.target to be an instance of HTMLElement`,\n event.target instanceof HTMLElement || event.target instanceof SVGElement\n );\n\n let selection = document.getSelection();\n\n if (selection) {\n let { type, anchorNode } = selection;\n let isSelectingText = type === 'Range' && event.target?.contains(anchorNode);\n\n if (isSelectingText) {\n event.stopPropagation();\n\n return;\n }\n }\n\n // Ignore clicks on interactive elements within the row\n let inputParent = event.target.closest('input, button, label, a, select');\n\n if (inputParent) {\n return;\n }\n\n let rowMeta = meta.forRow(row, RowSelection);\n\n rowMeta.toggle();\n };\n}\n\nclass TableMeta {\n #table: Table;\n\n constructor(table: Table) {\n this.#table = table;\n }\n\n @cached\n get selection(): Set<unknown> {\n let passedSelection = options.forTable(this.#table, RowSelection).selection;\n\n assert(`Cannot access selection because it is undefined`, passedSelection);\n\n if (passedSelection instanceof Set) {\n return passedSelection;\n }\n\n return new Set(passedSelection);\n }\n}\n\nclass RowMeta {\n #row: Row<any>;\n\n constructor(row: Row<any>) {\n this.#row = row;\n }\n\n get isSelected(): boolean {\n let tableMeta = meta.forTable(this.#row.table, RowSelection);\n let pluginOptions = options.forTable(this.#row.table, RowSelection);\n\n if ('key' in pluginOptions && pluginOptions.key) {\n let compareWith = pluginOptions.key(this.#row.data);\n\n return tableMeta.selection.has(compareWith);\n }\n\n let compareWith = this.#row.data;\n\n return tableMeta.selection.has(compareWith);\n }\n\n toggle = () => {\n if (this.isSelected) {\n this.deselect();\n\n return;\n }\n\n this.select();\n };\n\n select = () => {\n let pluginOptions = options.forTable(this.#row.table, RowSelection);\n\n if ('key' in pluginOptions && pluginOptions.key) {\n let key = pluginOptions.key(this.#row.data);\n\n pluginOptions.onSelect?.(key, this.#row);\n\n return;\n }\n\n pluginOptions.onSelect?.(this.#row.data, this.#row);\n };\n\n deselect = () => {\n let pluginOptions = options.forTable(this.#row.table, RowSelection);\n\n if ('key' in pluginOptions && pluginOptions.key) {\n let key = pluginOptions.key(this.#row.data);\n\n pluginOptions.onDeselect?.(key, this.#row);\n\n return;\n }\n\n pluginOptions.onDeselect?.(this.#row.data, this.#row);\n };\n}\n"],"names":["_classApplyDescriptorSet","receiver","descriptor","value","set","call","writable","TypeError","_classPrivateFieldSet","privateMap","classExtractFieldDescriptor","classApplyDescriptorSet","RowSelection","BasePlugin","constructor","table","row","RowMeta","TableMeta","element","handler","event","addEventListener","removeEventListener","assert","target","HTMLElement","SVGElement","selection","document","getSelection","type","anchorNode","isSelectingText","contains","stopPropagation","inputParent","closest","rowMeta","meta","forRow","toggle","pluginOptions","options","forTable","onSelect","onDeselect","passedSelection","Set","cached","isSelected","deselect","select","key","data","tableMeta","compareWith","has"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../../../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../../../src/plugins/row-selection/plugin.ts"],"sourcesContent":["export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","import { cached } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\n\nimport { BasePlugin, meta, options } from '../-private/base';\n\nimport type { Row, Table } from '[public-types]';\nimport type { PluginSignature, RowApi } from '#interfaces';\n\nexport interface Signature<DataType = any, Key = DataType> extends PluginSignature {\n Meta: {\n Table: TableMeta;\n Row: RowMeta;\n };\n Options: {\n Plugin: {\n /**\n * A set of selected things using the same type of Identifier\n * returned from `key`\n */\n selection: Set<Key> | Array<Key>;\n } & (\n | {\n /**\n * For a given row's data, how should the key be determined?\n * this could be a remote id from a database, or some other attribute\n *\n * This could be useful for indicating in UI if a particular item is selected.\n *\n * If not provided, the row's data will be used as the key\n */\n key: (data: DataType) => Key;\n /**\n * When a row is clicked, this will be invoked,\n * allowing you to update your selection object\n */\n onSelect: (item: Key, row: Row<DataType>) => void;\n /**\n * When a row is clicked (and the row is selected), this will be invoked,\n * allowing you to update your selection object\n */\n onDeselect: (item: Key, row: Row<DataType>) => void;\n }\n | {\n /**\n * When a row is clicked (and the row is not selected), this will be invoked,\n * allowing you to update your selection object\n */\n onSelect: (item: DataType | any, row: Row<DataType>) => void;\n /**\n * When a row is clicked (and the row is selected), this will be invoked,\n * allowing you to update your selection object\n */\n onDeselect: (item: DataType | any, row: Row<DataType>) => void;\n }\n );\n };\n}\n\n/**\n * This plugin provides a means of managing selection of a single row in a table.\n *\n * The state of what is actually selected is managed by you, but this plugin\n * will wire up the click listeners as well as let you know which *data* is clicked.\n */\nexport class RowSelection<DataType = any, Key = DataType> extends BasePlugin<\n Signature<DataType, Key>\n> {\n name = 'row-selection';\n\n meta = {\n row: RowMeta,\n table: TableMeta,\n };\n\n constructor(table: Table) {\n super(table);\n\n let pluginOptions = options.forTable(this.table, RowSelection);\n\n assert(\n `selection, onSelect, and onDeselect are all required arguments for the RowSelection plugin. ` +\n `Specify these options via \\`RowSelection.with(() => ({ selection, onSelect, onDeselect }))\\``,\n pluginOptions.selection && pluginOptions.onSelect && pluginOptions.onDeselect\n );\n }\n\n rowModifier = (element: HTMLElement, { row }: RowApi<Table<any>>) => {\n let handler = (event: Event) => {\n this.#clickHandler(row, event);\n };\n\n element.addEventListener('click', handler);\n\n return () => {\n element.removeEventListener('click', handler);\n };\n };\n\n #clickHandler = (row: Row, event: Event) => {\n assert(\n `expected event.target to be an instance of HTMLElement`,\n event.target instanceof HTMLElement || event.target instanceof SVGElement\n );\n\n let selection = document.getSelection();\n\n if (selection) {\n let { type, anchorNode } = selection;\n let isSelectingText = type === 'Range' && event.target?.contains(anchorNode);\n\n if (isSelectingText) {\n event.stopPropagation();\n\n return;\n }\n }\n\n // Ignore clicks on interactive elements within the row\n let inputParent = event.target.closest('input, button, label, a, select');\n\n if (inputParent) {\n return;\n }\n\n let rowMeta = meta.forRow(row, RowSelection);\n\n rowMeta.toggle();\n };\n}\n\nclass TableMeta {\n #table: Table;\n\n constructor(table: Table) {\n this.#table = table;\n }\n\n @cached\n get selection(): Set<unknown> {\n let passedSelection = options.forTable(this.#table, RowSelection).selection;\n\n assert(`Cannot access selection because it is undefined`, passedSelection);\n\n if (passedSelection instanceof Set) {\n return passedSelection;\n }\n\n return new Set(passedSelection);\n }\n}\n\nclass RowMeta {\n #row: Row<any>;\n\n constructor(row: Row<any>) {\n this.#row = row;\n }\n\n get isSelected(): boolean {\n let tableMeta = meta.forTable(this.#row.table, RowSelection);\n let pluginOptions = options.forTable(this.#row.table, RowSelection);\n\n if ('key' in pluginOptions && pluginOptions.key) {\n let compareWith = pluginOptions.key(this.#row.data);\n\n return tableMeta.selection.has(compareWith);\n }\n\n let compareWith = this.#row.data;\n\n return tableMeta.selection.has(compareWith);\n }\n\n toggle = () => {\n if (this.isSelected) {\n this.deselect();\n\n return;\n }\n\n this.select();\n };\n\n select = () => {\n let pluginOptions = options.forTable(this.#row.table, RowSelection);\n\n if ('key' in pluginOptions && pluginOptions.key) {\n let key = pluginOptions.key(this.#row.data);\n\n pluginOptions.onSelect?.(key, this.#row);\n\n return;\n }\n\n pluginOptions.onSelect?.(this.#row.data, this.#row);\n };\n\n deselect = () => {\n let pluginOptions = options.forTable(this.#row.table, RowSelection);\n\n if ('key' in pluginOptions && pluginOptions.key) {\n let key = pluginOptions.key(this.#row.data);\n\n pluginOptions.onDeselect?.(key, this.#row);\n\n return;\n }\n\n pluginOptions.onDeselect?.(this.#row.data, this.#row);\n };\n}\n"],"names":["_classApplyDescriptorSet","receiver","descriptor","value","set","call","writable","TypeError","_classPrivateFieldSet","privateMap","classExtractFieldDescriptor","classApplyDescriptorSet","cached","macroCondition","dependencySatisfies","importSync","_clickHandler","WeakMap","RowSelection","BasePlugin","constructor","table","_defineProperty","row","RowMeta","TableMeta","element","handler","event","_classPrivateFieldGet","addEventListener","removeEventListener","_classPrivateFieldInitSpec","assert","target","HTMLElement","SVGElement","selection","document","getSelection","type","anchorNode","isSelectingText","contains","stopPropagation","inputParent","closest","rowMeta","meta","forRow","toggle","pluginOptions","options","forTable","onSelect","onDeselect","_class","_table","passedSelection","Set","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor","_row","isSelected","deselect","select","key","data","tableMeta","compareWith","has"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,5 +1,5 @@
1
1
  import { htmlSafe } from '@ember/template';
2
- import { Column } from "../../index";
2
+ import { Column } from "../../index.js";
3
3
  declare const isSticky: <DataType = unknown>(column: Column<DataType>) => boolean;
4
4
  declare const styleFor: <DataType = unknown>(column: Column<DataType>) => Partial<CSSStyleDeclaration>;
5
5
  /**
@@ -38,6 +38,8 @@ const toStyle = key => {
38
38
  switch (key) {
39
39
  case 'zIndex':
40
40
  return 'z-index';
41
+ case 'minWidth':
42
+ return 'min-width';
41
43
  default:
42
44
  return key;
43
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/plugins/sticky-columns/helpers.ts"],"sourcesContent":["import { htmlSafe } from '@ember/template';\n\nimport { meta } from '../-private/base';\nimport { StickyColumns } from './plugin';\n\nimport type { Column } from '[public-types]';\n\nexport const isSticky = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, StickyColumns).isSticky;\n\nexport const styleFor = <DataType = unknown>(\n column: Column<DataType>\n): Partial<CSSStyleDeclaration> => meta.forColumn(column, StickyColumns).style;\n\n/**\n * In this plugin, both header and cells have the same styles,\n * if applicable.\n *\n * Until this RFC https://github.com/emberjs/rfcs/pull/883\n * is merged and implemented, we can't performantly\n * use modifiers for apply styles.\n *\n * In the mean time, we'll need to append style strings, which is more work\n * for consumers, but is a reasonable trade-off for now.\n */\nexport const styleStringFor = <DataType = unknown>(\n column: Column<DataType>\n): ReturnType<typeof htmlSafe> => {\n let columnMeta = meta.forColumn(column, StickyColumns);\n\n let result = '';\n\n if (columnMeta.isSticky) {\n for (let [key, value] of Object.entries(columnMeta.style)) {\n result += `${toStyle(key)}:${value};`;\n }\n\n result = ';' + result;\n }\n\n return htmlSafe(result);\n};\n\n/**\n * the JS API for styles is camel case,\n * but CSS is kebab-case. To save on complexity and\n * amount of code, we have a super small conversion function\n * for only the properties relevant to the sticky plugin.\n */\nconst toStyle = (key: string): string => {\n switch (key) {\n case 'zIndex':\n return 'z-index';\n default:\n return key;\n }\n};\n"],"names":["isSticky","column","meta","forColumn","StickyColumns","styleFor","style","styleStringFor","columnMeta","result","key","value","Object","entries","toStyle","htmlSafe"],"mappings":";;;;AAOaA,MAAAA,QAAQ,GAAwBC,MAAwB,IACnEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,aAAa,CAAC,CAACJ,SAAQ;AAEnCK,MAAAA,QAAQ,GACnBJ,MAAwB,IACSC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,aAAa,CAAC,CAACE,MAAK;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,cAAc,GACzBN,MAAwB,IACQ;EAChC,IAAIO,UAAU,GAAGN,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,aAAa,CAAC,CAAA;EAEtD,IAAIK,MAAM,GAAG,EAAE,CAAA;EAEf,IAAID,UAAU,CAACR,QAAQ,EAAE;AACvB,IAAA,KAAK,IAAI,CAACU,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,UAAU,CAACF,KAAK,CAAC,EAAE;MACzDG,MAAM,IAAK,GAAEK,OAAO,CAACJ,GAAG,CAAE,CAAA,CAAA,EAAGC,KAAM,CAAE,CAAA,CAAA,CAAA;AACvC,KAAA;IAEAF,MAAM,GAAG,GAAG,GAAGA,MAAM,CAAA;AACvB,GAAA;EAEA,OAAOM,QAAQ,CAACN,MAAM,CAAC,CAAA;AACzB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,OAAO,GAAIJ,GAAW,IAAa;AACvC,EAAA,QAAQA,GAAG;AACT,IAAA,KAAK,QAAQ;AACX,MAAA,OAAO,SAAS,CAAA;AAClB,IAAA;AACE,MAAA,OAAOA,GAAG,CAAA;AAAC,GAAA;AAEjB,CAAC;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/plugins/sticky-columns/helpers.ts"],"sourcesContent":["import { htmlSafe } from '@ember/template';\n\nimport { meta } from '../-private/base';\nimport { StickyColumns } from './plugin';\n\nimport type { Column } from '[public-types]';\n\nexport const isSticky = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, StickyColumns).isSticky;\n\nexport const styleFor = <DataType = unknown>(\n column: Column<DataType>\n): Partial<CSSStyleDeclaration> => meta.forColumn(column, StickyColumns).style;\n\n/**\n * In this plugin, both header and cells have the same styles,\n * if applicable.\n *\n * Until this RFC https://github.com/emberjs/rfcs/pull/883\n * is merged and implemented, we can't performantly\n * use modifiers for apply styles.\n *\n * In the mean time, we'll need to append style strings, which is more work\n * for consumers, but is a reasonable trade-off for now.\n */\nexport const styleStringFor = <DataType = unknown>(\n column: Column<DataType>\n): ReturnType<typeof htmlSafe> => {\n let columnMeta = meta.forColumn(column, StickyColumns);\n\n let result = '';\n\n if (columnMeta.isSticky) {\n for (let [key, value] of Object.entries(columnMeta.style)) {\n result += `${toStyle(key)}:${value};`;\n }\n\n result = ';' + result;\n }\n\n return htmlSafe(result);\n};\n\n/**\n * the JS API for styles is camel case,\n * but CSS is kebab-case. To save on complexity and\n * amount of code, we have a super small conversion function\n * for only the properties relevant to the sticky plugin.\n */\nconst toStyle = (key: string): string => {\n switch (key) {\n case 'zIndex':\n return 'z-index';\n case 'minWidth':\n return 'min-width';\n default:\n return key;\n }\n};\n"],"names":["isSticky","column","meta","forColumn","StickyColumns","styleFor","style","styleStringFor","columnMeta","result","key","value","Object","entries","toStyle","htmlSafe"],"mappings":";;;;AAOaA,MAAAA,QAAQ,GAAwBC,MAAwB,IACnEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,aAAa,CAAC,CAACJ,SAAQ;AAEnCK,MAAAA,QAAQ,GACnBJ,MAAwB,IACSC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,aAAa,CAAC,CAACE,MAAK;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,cAAc,GACzBN,MAAwB,IACQ;EAChC,IAAIO,UAAU,GAAGN,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,aAAa,CAAC,CAAA;EAEtD,IAAIK,MAAM,GAAG,EAAE,CAAA;EAEf,IAAID,UAAU,CAACR,QAAQ,EAAE;AACvB,IAAA,KAAK,IAAI,CAACU,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,UAAU,CAACF,KAAK,CAAC,EAAE;MACzDG,MAAM,IAAK,GAAEK,OAAO,CAACJ,GAAG,CAAE,CAAA,CAAA,EAAGC,KAAM,CAAE,CAAA,CAAA,CAAA;AACvC,KAAA;IAEAF,MAAM,GAAG,GAAG,GAAGA,MAAM,CAAA;AACvB,GAAA;EAEA,OAAOM,QAAQ,CAACN,MAAM,CAAC,CAAA;AACzB,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,OAAO,GAAIJ,GAAW,IAAa;AACvC,EAAA,QAAQA,GAAG;AACT,IAAA,KAAK,QAAQ;AACX,MAAA,OAAO,SAAS,CAAA;AAClB,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,WAAW,CAAA;AACpB,IAAA;AACE,MAAA,OAAOA,GAAG,CAAA;AAAC,GAAA;AAEjB,CAAC;;;;"}
@@ -1,3 +1,3 @@
1
- export * from "./helpers";
2
- export { StickyColumns, StickyColumns as Plugin } from "./plugin";
3
- export type { Signature } from "./plugin";
1
+ export * from "./helpers.js";
2
+ export { StickyColumns, StickyColumns as Plugin } from "./plugin.js";
3
+ export type { Signature } from "./plugin.js";
@@ -1,6 +1,6 @@
1
- import { BasePlugin } from "../-private/base";
2
- import { ColumnApi } from "../index";
3
- import { Column } from "../../index";
1
+ import { BasePlugin } from "../-private/base.js";
2
+ import { ColumnApi } from "../index.js";
3
+ import { Column } from "../../index.js";
4
4
  interface ColumnOptions {
5
5
  /**
6
6
  * Whether or not to enable stickiness on the column
@@ -1,5 +1,5 @@
1
1
  import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-6b986a67.js';
2
- import { _ as _defineProperty } from '../../defineProperty-35ce617b.js';
2
+ import { _ as _defineProperty } from '../../defineProperty-4f0781e1.js';
3
3
  import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
4
4
  import '@glimmer/tracking';
5
5
  import { assert } from '@ember/debug';
@@ -45,6 +45,11 @@ class StickyColumns extends BasePlugin {
45
45
  this.conditionallyRemoveStyles(element);
46
46
  }
47
47
  });
48
+ /**
49
+ * Not yet supported. Pending Ember RFC #883
50
+ *
51
+ * TODO: switch ColumnApi to "RowApi", add the row's data
52
+ */
48
53
  _defineProperty(this, "cellModifier", (element, {
49
54
  column,
50
55
  table
@@ -67,6 +72,13 @@ class StickyColumns extends BasePlugin {
67
72
  *
68
73
  * Contains state and behaviors for the sticiness
69
74
  */
75
+ /**
76
+ * This plugin requires that the resizing plugin be present, because the resizing plugin is
77
+ * what manages the base width of the columns.
78
+ *
79
+ * Other width-management plugins can be used instead of ColumnResizing, but they must declare
80
+ * that they manage the width of the columns.
81
+ */
70
82
  _defineProperty(StickyColumns, "requires", ['columnWidth']);
71
83
  let ColumnMeta = (_class = class ColumnMeta {
72
84
  constructor(column) {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../src/plugins/sticky-columns/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base';\nimport { applyStyles } from '../-private/utils';\n\nimport type { ColumnApi } from '[public-plugin-types]';\nimport type { Column } from '[public-types]';\n\nconst DEFAULT_Z_INDEX = '8';\n\ninterface ColumnOptions {\n /**\n * Whether or not to enable stickiness on the column\n * (default is false)\n *\n * valid values: 'left', 'right', false\n */\n sticky?: boolean | string;\n}\n\nexport interface Signature {\n Options: {\n Column: ColumnOptions;\n Plugin: {\n /**\n * Opts this plugin out of engaging in the modifier system\n * and instead requires setting a `style` attribute on\n * th / td tags for getting the \"position: sticky\" behovior\n * on columns.\n */\n workaroundForModifierTimingUpdateRFC883?: boolean;\n };\n };\n Meta: {\n Table: TableMeta;\n Column: ColumnMeta;\n };\n}\n\nexport class StickyColumns extends BasePlugin<Signature> {\n name = 'sticky-columns';\n\n /**\n * This plugin requires that the resizing plugin be present, because the resizing plugin is\n * what manages the base width of the columns.\n *\n * Other width-management plugins can be used instead of ColumnResizing, but they must declare\n * that they manage the width of the columns.\n */\n static requires = ['columnWidth'];\n\n meta = {\n table: TableMeta,\n column: ColumnMeta,\n };\n\n conditionallyRemoveStyles = (element: HTMLElement) => {\n if (element.style.getPropertyValue('position') === 'sticky') {\n element.style.removeProperty('position');\n }\n\n if (element.style.getPropertyValue('left')) {\n element.style.left = '';\n }\n\n if (element.style.getPropertyValue('right')) {\n element.style.right = '';\n }\n\n if (element.style.zIndex === DEFAULT_Z_INDEX) {\n element.style.zIndex = '';\n }\n };\n\n headerCellModifier = (element: HTMLElement, { column, table }: ColumnApi) => {\n if (options.forTable(table, StickyColumns).workaroundForModifierTimingUpdateRFC883) {\n return;\n }\n\n let columnMeta = meta.forColumn(column, StickyColumns);\n\n if (columnMeta.isSticky) {\n applyStyles(element, columnMeta.style);\n } else {\n this.conditionallyRemoveStyles(element);\n }\n };\n\n /**\n * Not yet supported. Pending Ember RFC #883\n *\n * TODO: switch ColumnApi to \"RowApi\", add the row's data\n */\n cellModifier = (element: HTMLElement, { column, table }: ColumnApi) => {\n if (options.forTable(table, StickyColumns).workaroundForModifierTimingUpdateRFC883) {\n return;\n }\n\n let columnMeta = meta.forColumn(column, StickyColumns);\n\n if (columnMeta.isSticky) {\n applyStyles(element, columnMeta.style);\n } else {\n this.conditionallyRemoveStyles(element);\n }\n };\n}\n\n/**\n * @private\n *\n * Contains state and behaviors for the sticiness\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n get isSticky() {\n return this.position !== 'none';\n }\n\n get position(): 'left' | 'right' | 'none' {\n let sticky = options.forColumn(this.column, StickyColumns)?.sticky;\n\n assert(\n `Invalid sticky value, ${sticky}. Valid values: 'left', 'right', false`,\n sticky === 'left' || sticky === 'right' || sticky === false || sticky === undefined\n );\n\n return sticky || 'none';\n }\n\n @cached\n get offset() {\n if (!this.isSticky) {\n return;\n }\n\n if (this.position === 'left') {\n let leftColumns = columns.before(this.column);\n let left = leftColumns.reduce((acc, column) => {\n let columnMeta = meta.withFeature.forColumn(column, 'columnWidth');\n\n if (hasWidth(columnMeta)) {\n return acc + (columnMeta.width ?? 0);\n }\n\n return acc;\n }, 0);\n\n return `${left}px`;\n }\n\n if (this.position === 'right') {\n let rightColumns = columns.after(this.column);\n let right = rightColumns.reduce((acc, column) => {\n let columnMeta = meta.withFeature.forColumn(column, 'columnWidth');\n\n if (hasWidth(columnMeta)) {\n return acc + (columnMeta.width ?? 0);\n }\n\n return acc;\n }, 0);\n\n return `${right}px`;\n }\n\n return;\n }\n\n get style(): Partial<Pick<CSSStyleDeclaration, 'position' | 'left' | 'right' | 'zIndex'>> {\n if (this.isSticky) {\n return {\n position: 'sticky',\n [this.position]: this.offset,\n zIndex: DEFAULT_Z_INDEX,\n };\n }\n\n return {};\n }\n}\n\nfunction hasWidth(obj: any): obj is { width?: number } {\n return typeof obj === 'object' && obj && 'width' in obj;\n}\n\n/* This Plugin does not need table state */\nexport class TableMeta {}\n"],"names":["DEFAULT_Z_INDEX","StickyColumns","BasePlugin","table","TableMeta","column","ColumnMeta","element","style","getPropertyValue","removeProperty","left","right","zIndex","options","forTable","workaroundForModifierTimingUpdateRFC883","columnMeta","meta","forColumn","isSticky","applyStyles","conditionallyRemoveStyles","constructor","position","sticky","assert","undefined","offset","leftColumns","columns","before","reduce","acc","withFeature","hasWidth","width","rightColumns","after","cached","obj"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../src/plugins/sticky-columns/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base';\nimport { applyStyles } from '../-private/utils';\n\nimport type { ColumnApi } from '[public-plugin-types]';\nimport type { Column } from '[public-types]';\n\nconst DEFAULT_Z_INDEX = '8';\n\ninterface ColumnOptions {\n /**\n * Whether or not to enable stickiness on the column\n * (default is false)\n *\n * valid values: 'left', 'right', false\n */\n sticky?: boolean | string;\n}\n\nexport interface Signature {\n Options: {\n Column: ColumnOptions;\n Plugin: {\n /**\n * Opts this plugin out of engaging in the modifier system\n * and instead requires setting a `style` attribute on\n * th / td tags for getting the \"position: sticky\" behovior\n * on columns.\n */\n workaroundForModifierTimingUpdateRFC883?: boolean;\n };\n };\n Meta: {\n Table: TableMeta;\n Column: ColumnMeta;\n };\n}\n\nexport class StickyColumns extends BasePlugin<Signature> {\n name = 'sticky-columns';\n\n /**\n * This plugin requires that the resizing plugin be present, because the resizing plugin is\n * what manages the base width of the columns.\n *\n * Other width-management plugins can be used instead of ColumnResizing, but they must declare\n * that they manage the width of the columns.\n */\n static requires = ['columnWidth'];\n\n meta = {\n table: TableMeta,\n column: ColumnMeta,\n };\n\n conditionallyRemoveStyles = (element: HTMLElement) => {\n if (element.style.getPropertyValue('position') === 'sticky') {\n element.style.removeProperty('position');\n }\n\n if (element.style.getPropertyValue('left')) {\n element.style.left = '';\n }\n\n if (element.style.getPropertyValue('right')) {\n element.style.right = '';\n }\n\n if (element.style.zIndex === DEFAULT_Z_INDEX) {\n element.style.zIndex = '';\n }\n };\n\n headerCellModifier = (element: HTMLElement, { column, table }: ColumnApi) => {\n if (options.forTable(table, StickyColumns).workaroundForModifierTimingUpdateRFC883) {\n return;\n }\n\n let columnMeta = meta.forColumn(column, StickyColumns);\n\n if (columnMeta.isSticky) {\n applyStyles(element, columnMeta.style);\n } else {\n this.conditionallyRemoveStyles(element);\n }\n };\n\n /**\n * Not yet supported. Pending Ember RFC #883\n *\n * TODO: switch ColumnApi to \"RowApi\", add the row's data\n */\n cellModifier = (element: HTMLElement, { column, table }: ColumnApi) => {\n if (options.forTable(table, StickyColumns).workaroundForModifierTimingUpdateRFC883) {\n return;\n }\n\n let columnMeta = meta.forColumn(column, StickyColumns);\n\n if (columnMeta.isSticky) {\n applyStyles(element, columnMeta.style);\n } else {\n this.conditionallyRemoveStyles(element);\n }\n };\n}\n\n/**\n * @private\n *\n * Contains state and behaviors for the sticiness\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n get isSticky() {\n return this.position !== 'none';\n }\n\n get position(): 'left' | 'right' | 'none' {\n let sticky = options.forColumn(this.column, StickyColumns)?.sticky;\n\n assert(\n `Invalid sticky value, ${sticky}. Valid values: 'left', 'right', false`,\n sticky === 'left' || sticky === 'right' || sticky === false || sticky === undefined\n );\n\n return sticky || 'none';\n }\n\n @cached\n get offset() {\n if (!this.isSticky) {\n return;\n }\n\n if (this.position === 'left') {\n let leftColumns = columns.before(this.column);\n let left = leftColumns.reduce((acc, column) => {\n let columnMeta = meta.withFeature.forColumn(column, 'columnWidth');\n\n if (hasWidth(columnMeta)) {\n return acc + (columnMeta.width ?? 0);\n }\n\n return acc;\n }, 0);\n\n return `${left}px`;\n }\n\n if (this.position === 'right') {\n let rightColumns = columns.after(this.column);\n let right = rightColumns.reduce((acc, column) => {\n let columnMeta = meta.withFeature.forColumn(column, 'columnWidth');\n\n if (hasWidth(columnMeta)) {\n return acc + (columnMeta.width ?? 0);\n }\n\n return acc;\n }, 0);\n\n return `${right}px`;\n }\n\n return;\n }\n\n get style(): Partial<Pick<CSSStyleDeclaration, 'position' | 'left' | 'right' | 'zIndex'>> {\n if (this.isSticky) {\n return {\n position: 'sticky',\n [this.position]: this.offset,\n zIndex: DEFAULT_Z_INDEX,\n };\n }\n\n return {};\n }\n}\n\nfunction hasWidth(obj: any): obj is { width?: number } {\n return typeof obj === 'object' && obj && 'width' in obj;\n}\n\n/* This Plugin does not need table state */\nexport class TableMeta {}\n"],"names":["cached","macroCondition","dependencySatisfies","importSync","DEFAULT_Z_INDEX","StickyColumns","BasePlugin","constructor","args","_defineProperty","table","TableMeta","column","ColumnMeta","element","style","getPropertyValue","removeProperty","left","right","zIndex","options","forTable","workaroundForModifierTimingUpdateRFC883","columnMeta","meta","forColumn","isSticky","applyStyles","conditionallyRemoveStyles","_class","position","sticky","assert","undefined","offset","leftColumns","columns","before","reduce","acc","withFeature","hasWidth","width","rightColumns","after","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor","obj"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { Resource } from 'ember-resources/core';
2
- import { Column } from "./-private/column";
3
- import { TablePreferences } from "./-private/preferences";
4
- import { Row } from "./-private/row";
5
- import { BasePlugin, Plugin } from "./plugins/index";
6
- import { Class } from "./-private/private-types";
7
- import { TableConfig } from "./-private/interfaces/index";
2
+ import { Column } from "./-private/column.js";
3
+ import { TablePreferences } from "./-private/preferences.js";
4
+ import { Row } from "./-private/row.js";
5
+ import { BasePlugin, Plugin } from "./plugins/index.js";
6
+ import { Class } from "./-private/private-types.js";
7
+ import { TableConfig } from "./-private/interfaces/index.js";
8
8
  interface Signature<DataType> {
9
9
  Named: TableConfig<DataType>;
10
10
  }
@@ -1,4 +1,4 @@
1
- import { _ as _defineProperty } from './defineProperty-35ce617b.js';
1
+ import { _ as _defineProperty } from './defineProperty-4f0781e1.js';
2
2
  import { _ as _applyDecoratedDescriptor } from './applyDecoratedDescriptor-6b986a67.js';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { getOwner, setOwner } from '@ember/application';
@@ -51,14 +51,56 @@ const attachContainer = (element, table) => {
51
51
  let Table = (_class = class Table extends Resource {
52
52
  constructor(...args) {
53
53
  super(...args);
54
+ /**
55
+ * @private
56
+ */
54
57
  _defineProperty(this, TABLE_KEY, guidFor(this));
58
+ /**
59
+ * @private
60
+ */
55
61
  _defineProperty(this, TABLE_META_KEY, new Map());
62
+ /**
63
+ * @private
64
+ */
56
65
  _defineProperty(this, COLUMN_META_KEY, new WeakMap());
66
+ /**
67
+ * @private
68
+ */
57
69
  _defineProperty(this, ROW_META_KEY, new WeakMap());
70
+ /**
71
+ * @private
72
+ *
73
+ * Unused for now, may be used in the future.
74
+ * This data is collected along with the scrollContainerWidth, (which is currently in use)
75
+ */
58
76
  _initializerDefineProperty(this, "scrollContainerHeight", _descriptor, this);
77
+ /**
78
+ * @private
79
+ *
80
+ * Used to help determine how much space we can give to columns.
81
+ * As we generate widths for columns, the columns' widths must
82
+ * add up to about this number.
83
+ */
59
84
  _initializerDefineProperty(this, "scrollContainerWidth", _descriptor2, this);
85
+ /**
86
+ * @private
87
+ *
88
+ * Lazy way to delay consuming arguments until they are needed.
89
+ */
60
90
  _initializerDefineProperty(this, "args", _descriptor3, this);
91
+ /**
92
+ * @private
93
+ */
61
94
  _defineProperty(this, "scrollContainerElement", void 0);
95
+ /**
96
+ * Collection of utility modifiers that are the result of composing modifiers
97
+ * from plugins.
98
+ *
99
+ * Using this is optional, and you can "just" use modifiers from specific plugins
100
+ * in specific places if you wish -- but these exists as a "convenience".
101
+ *
102
+ * These are all no-use, no-cost utilities
103
+ */
62
104
  _defineProperty(this, "modifiers", {
63
105
  container: modifier(element => {
64
106
  let modifiers = this.plugins.map(plugin => plugin.containerModifier);
@@ -134,6 +176,11 @@ let Table = (_class = class Table extends Resource {
134
176
  }
135
177
  }));
136
178
  }
179
+ /**
180
+ * Interact with, save, modify, etc the preferences for the table,
181
+ * plugins, columns, etc
182
+ */
183
+
137
184
  /**
138
185
  * @private
139
186
  */
@@ -158,17 +205,6 @@ let Table = (_class = class Table extends Resource {
158
205
  this.resetScrollContainer();
159
206
  }
160
207
  }
161
-
162
- /**
163
- * Collection of utility modifiers that are the result of composing modifiers
164
- * from plugins.
165
- *
166
- * Using this is optional, and you can "just" use modifiers from specific plugins
167
- * in specific places if you wish -- but these exists as a "convenience".
168
- *
169
- * These are all no-use, no-cost utilities
170
- */
171
-
172
208
  /**
173
209
  * @private
174
210
  *
@@ -249,5 +285,5 @@ let Table = (_class = class Table extends Resource {
249
285
  initializer: null
250
286
  }), _applyDecoratedDescriptor(_class.prototype, "plugins", [cached], Object.getOwnPropertyDescriptor(_class.prototype, "plugins"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "resetScrollContainer", [action], Object.getOwnPropertyDescriptor(_class.prototype, "resetScrollContainer"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "resetToDefaults", [action], Object.getOwnPropertyDescriptor(_class.prototype, "resetToDefaults"), _class.prototype)), _class);
251
287
 
252
- export { COLUMN_META_KEY as C, ROW_META_KEY as R, TABLE_META_KEY as T, _initializerDefineProperty as _, TABLE_KEY as a, Table as b };
253
- //# sourceMappingURL=table-dde25960.js.map
288
+ export { COLUMN_META_KEY as C, ROW_META_KEY as R, Table as T, _initializerDefineProperty as _, TABLE_META_KEY as a, TABLE_KEY as b };
289
+ //# sourceMappingURL=table-443deac1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-dde25960.js","sources":["../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js","../src/-private/table.ts"],"sourcesContent":["export default function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}","import { cached, tracked } from '@glimmer/tracking';\nimport { getOwner, setOwner } from '@ember/application';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport { isDevelopingApp, macroCondition } from '@embroider/macros';\nimport { modifier } from 'ember-modifier';\nimport { Resource } from 'ember-resources/core';\nimport { map } from 'ember-resources/util/map';\n\nimport { normalizePluginsConfig, verifyPlugins } from '../plugins/-private/utils';\nimport { Column } from './column';\nimport { TablePreferences } from './preferences';\nimport { Row } from './row';\nimport { composeFunctionModifiers } from './utils';\n\nimport type { BasePlugin, Plugin } from '../plugins';\nimport type { Class } from '[private-types]';\nimport type { Destructor, TableConfig } from '#interfaces';\n\nconst DEFAULT_COLUMN_CONFIG = {\n isVisible: true,\n minWidth: 128,\n};\n\ninterface Signature<DataType> {\n Named: TableConfig<DataType>;\n}\n\n/**\n * Because the table is our entry-point object to all the table behaviors,\n * we need a stable way to know which table we have.\n * Normally, this could be done with referential integrity / identity.\n * However, due to how resources are implemented, if the consumer opts to\n * not use the `@use` decorator, then proxies get involved.\n * The proxies don't maintain instanceof checks, which may be a bug in\n * ember-resources.\n */\nexport const TABLE_KEY = Symbol('__TABLE_KEY__');\nexport const TABLE_META_KEY = Symbol('__TABLE_META__');\nexport const COLUMN_META_KEY = Symbol('__COLUMN_META__');\nexport const ROW_META_KEY = Symbol('__ROW_META__');\n\nconst attachContainer = (element: Element, table: Table) => {\n assert('Must be installed on an HTMLElement', element instanceof HTMLElement);\n\n table.scrollContainerElement = element;\n};\n\nexport class Table<DataType = unknown> extends Resource<Signature<DataType>> {\n /**\n * @private\n */\n [TABLE_KEY] = guidFor(this);\n /**\n * @private\n */\n [TABLE_META_KEY] = new Map<Class<unknown>, any>();\n /**\n * @private\n */\n [COLUMN_META_KEY] = new WeakMap<Column, Map<Class<unknown>, any>>();\n /**\n * @private\n */\n [ROW_META_KEY] = new WeakMap<Row, Map<Class<unknown>, any>>();\n\n /**\n * @private\n *\n * Unused for now, may be used in the future.\n * This data is collected along with the scrollContainerWidth, (which is currently in use)\n */\n @tracked scrollContainerHeight?: number;\n\n /**\n * @private\n *\n * Used to help determine how much space we can give to columns.\n * As we generate widths for columns, the columns' widths must\n * add up to about this number.\n */\n @tracked scrollContainerWidth?: number;\n\n /**\n * @private\n *\n * Lazy way to delay consuming arguments until they are needed.\n */\n @tracked declare args: { named: Signature<DataType>['Named'] };\n\n /**\n * @private\n */\n scrollContainerElement?: HTMLElement;\n\n /**\n * Interact with, save, modify, etc the preferences for the table,\n * plugins, columns, etc\n */\n declare preferences: TablePreferences;\n\n /**\n * @private\n */\n modify(_: [] | undefined, named: Signature<DataType>['Named']) {\n this.args = { named };\n\n // only set the preferences once\n if (!this.preferences) {\n let { key = guidFor(this), adapter } = named?.preferences ?? {};\n\n // TODO: when no key is present,\n // use \"local-storage\" preferences.\n // it does not make sense to use a guid in a user's preferences\n this.preferences = new TablePreferences(key, adapter);\n } else {\n // subsequent updates to args\n this.resetScrollContainer();\n }\n }\n\n /**\n * Collection of utility modifiers that are the result of composing modifiers\n * from plugins.\n *\n * Using this is optional, and you can \"just\" use modifiers from specific plugins\n * in specific places if you wish -- but these exists as a \"convenience\".\n *\n * These are all no-use, no-cost utilities\n */\n modifiers = {\n container: modifier(\n (element: HTMLElement): Destructor => {\n let modifiers = this.plugins.map((plugin) => plugin.containerModifier);\n let composed = composeFunctionModifiers([attachContainer, ...modifiers]);\n\n return composed(element, this);\n },\n { eager: false }\n ),\n\n // resize: ResizeModifier,\n // TODO: switch to composing real modifiers once \"curry\" and \"compose\"\n // RFCs are accepted and implemented\n //\n // Atm the moment, if _any_ header modifier's tracked data changes,\n // all the functions for all of the plugins run again.\n //\n // With curried+composed modifiers, only the plugin's headerModifier\n // that has tracked changes would run, leaving the other modifiers alone\n columnHeader: modifier(\n (element: HTMLElement, [column]: [Column<DataType>]): Destructor => {\n let modifiers = this.plugins.map((plugin) => plugin.headerCellModifier);\n let composed = composeFunctionModifiers(modifiers);\n\n return composed(element, { column, table: this });\n },\n { eager: false }\n ),\n\n row: modifier(\n (element: HTMLElement, [row]: [Row<DataType>]): Destructor => {\n let modifiers = this.plugins.map((plugin) => plugin.rowModifier);\n let composed = composeFunctionModifiers(modifiers);\n\n return composed(element, { row, table: this });\n },\n { eager: false }\n ),\n };\n\n /**\n * @private\n *\n * For all configured plugins, instantiates each one.\n * If the plugins argument changes to the Table (either directly or through\n * headlessTable, all state is lost and re-created)\n */\n @cached\n get plugins(): Plugin[] {\n let plugins = normalizePluginsConfig(this.args.named?.plugins);\n\n verifyPlugins(plugins);\n\n return plugins.map((tuple) => {\n // We don't need the options here\n let [PluginClass] = tuple;\n\n if (typeof PluginClass === 'function') {\n let plugin = new PluginClass(this);\n\n let owner = getOwner(this);\n\n assert(`The Table does not have an owner. cannot create a plugin without an owner`, owner);\n setOwner(plugin, owner);\n\n return plugin;\n }\n\n // This is a plugin object, rather than a class\n // TODO: add test coverage around using classless plugins\n return PluginClass;\n });\n }\n\n /**\n * Get the active plugin instance for the given plugin class\n */\n pluginOf<Instance extends BasePlugin<any>>(klass: Class<Instance>): Instance | undefined {\n let result = this.plugins.find((plugin) => plugin instanceof klass);\n\n /**\n * This is an unsafe cast, because Instance could be unrelated to any of the types\n * that matches Plugin[]\n *\n * For example, `table.pluginOf(MyCustomPlugin)`, where MyCustomPlugin isn't in the\n * `plugins` list. This partially a problem with how Array.prototype.find doesn't\n * effectively narrow for what we want (combined with TS being clunky around\n * comparing Instance and Class types).\n */\n return result as unknown as Instance | undefined;\n }\n\n /**\n * @private\n *\n * used by other private APIs\n */\n get config() {\n return this.args.named;\n }\n\n rows = map(this, {\n data: () => {\n let dataFn = this.args.named?.data;\n\n if (!dataFn) return [];\n\n return dataFn() ?? [];\n },\n map: (datum) => new Row(this, datum),\n });\n\n columns = map(this, {\n data: () => {\n let configFn = this.args.named?.columns;\n\n if (!configFn) return [];\n\n let result = configFn() ?? [];\n\n if (macroCondition(isDevelopingApp())) {\n /**\n * Assertions for a column config to be valid:\n * - every key must be unique\n */\n let keys = new Set();\n let allKeys = result.map((columnConfig) => columnConfig.key);\n\n result.forEach((columnConfig) => {\n if (keys.has(columnConfig.key)) {\n throw new Error(\n `Every column key in the table's column config must be unique. ` +\n `Found duplicate entry: ${columnConfig.key}. ` +\n `All keys used: ${allKeys}`\n );\n }\n\n keys.add(columnConfig.key);\n });\n }\n\n return result;\n },\n map: (config) => {\n return new Column<DataType>(this, { ...DEFAULT_COLUMN_CONFIG, ...config });\n },\n });\n\n /**\n * @private\n */\n @action\n resetScrollContainer() {\n if (!this.scrollContainerElement) return;\n\n this.scrollContainerElement.scrollTop = 0;\n }\n\n @action\n resetToDefaults() {\n this.plugins.forEach((plugin) => plugin.reset?.());\n }\n}\n"],"names":["_initializerDefineProperty","target","property","descriptor","context","Object","defineProperty","enumerable","configurable","writable","value","initializer","call","DEFAULT_COLUMN_CONFIG","isVisible","minWidth","TABLE_KEY","Symbol","TABLE_META_KEY","COLUMN_META_KEY","ROW_META_KEY","attachContainer","element","table","assert","HTMLElement","scrollContainerElement","Table","Resource","guidFor","Map","WeakMap","container","modifier","modifiers","plugins","map","plugin","containerModifier","composed","composeFunctionModifiers","eager","columnHeader","column","headerCellModifier","row","rowModifier","data","dataFn","args","named","datum","Row","configFn","columns","result","macroCondition","isDevelopingApp","keys","Set","allKeys","columnConfig","key","forEach","has","Error","add","config","Column","modify","_","preferences","adapter","TablePreferences","resetScrollContainer","normalizePluginsConfig","verifyPlugins","tuple","PluginClass","owner","getOwner","setOwner","pluginOf","klass","find","scrollTop","resetToDefaults","reset","tracked","cached","action"],"mappings":"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"}
1
+ {"version":3,"file":"table-443deac1.js","sources":["../../node_modules/.pnpm/@babel+runtime@7.21.0/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js","../src/-private/table.ts"],"sourcesContent":["export default function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}","import { cached, tracked } from '@glimmer/tracking';\nimport { getOwner, setOwner } from '@ember/application';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\nimport { guidFor } from '@ember/object/internals';\n\nimport { isDevelopingApp, macroCondition } from '@embroider/macros';\nimport { modifier } from 'ember-modifier';\nimport { Resource } from 'ember-resources/core';\nimport { map } from 'ember-resources/util/map';\n\nimport { normalizePluginsConfig, verifyPlugins } from '../plugins/-private/utils';\nimport { Column } from './column';\nimport { TablePreferences } from './preferences';\nimport { Row } from './row';\nimport { composeFunctionModifiers } from './utils';\n\nimport type { BasePlugin, Plugin } from '../plugins';\nimport type { Class } from '[private-types]';\nimport type { Destructor, TableConfig } from '#interfaces';\n\nconst DEFAULT_COLUMN_CONFIG = {\n isVisible: true,\n minWidth: 128,\n};\n\ninterface Signature<DataType> {\n Named: TableConfig<DataType>;\n}\n\n/**\n * Because the table is our entry-point object to all the table behaviors,\n * we need a stable way to know which table we have.\n * Normally, this could be done with referential integrity / identity.\n * However, due to how resources are implemented, if the consumer opts to\n * not use the `@use` decorator, then proxies get involved.\n * The proxies don't maintain instanceof checks, which may be a bug in\n * ember-resources.\n */\nexport const TABLE_KEY = Symbol('__TABLE_KEY__');\nexport const TABLE_META_KEY = Symbol('__TABLE_META__');\nexport const COLUMN_META_KEY = Symbol('__COLUMN_META__');\nexport const ROW_META_KEY = Symbol('__ROW_META__');\n\nconst attachContainer = (element: Element, table: Table) => {\n assert('Must be installed on an HTMLElement', element instanceof HTMLElement);\n\n table.scrollContainerElement = element;\n};\n\nexport class Table<DataType = unknown> extends Resource<Signature<DataType>> {\n /**\n * @private\n */\n [TABLE_KEY] = guidFor(this);\n /**\n * @private\n */\n [TABLE_META_KEY] = new Map<Class<unknown>, any>();\n /**\n * @private\n */\n [COLUMN_META_KEY] = new WeakMap<Column, Map<Class<unknown>, any>>();\n /**\n * @private\n */\n [ROW_META_KEY] = new WeakMap<Row, Map<Class<unknown>, any>>();\n\n /**\n * @private\n *\n * Unused for now, may be used in the future.\n * This data is collected along with the scrollContainerWidth, (which is currently in use)\n */\n @tracked scrollContainerHeight?: number;\n\n /**\n * @private\n *\n * Used to help determine how much space we can give to columns.\n * As we generate widths for columns, the columns' widths must\n * add up to about this number.\n */\n @tracked scrollContainerWidth?: number;\n\n /**\n * @private\n *\n * Lazy way to delay consuming arguments until they are needed.\n */\n @tracked declare args: { named: Signature<DataType>['Named'] };\n\n /**\n * @private\n */\n scrollContainerElement?: HTMLElement;\n\n /**\n * Interact with, save, modify, etc the preferences for the table,\n * plugins, columns, etc\n */\n declare preferences: TablePreferences;\n\n /**\n * @private\n */\n modify(_: [] | undefined, named: Signature<DataType>['Named']) {\n this.args = { named };\n\n // only set the preferences once\n if (!this.preferences) {\n let { key = guidFor(this), adapter } = named?.preferences ?? {};\n\n // TODO: when no key is present,\n // use \"local-storage\" preferences.\n // it does not make sense to use a guid in a user's preferences\n this.preferences = new TablePreferences(key, adapter);\n } else {\n // subsequent updates to args\n this.resetScrollContainer();\n }\n }\n\n /**\n * Collection of utility modifiers that are the result of composing modifiers\n * from plugins.\n *\n * Using this is optional, and you can \"just\" use modifiers from specific plugins\n * in specific places if you wish -- but these exists as a \"convenience\".\n *\n * These are all no-use, no-cost utilities\n */\n modifiers = {\n container: modifier(\n (element: HTMLElement): Destructor => {\n let modifiers = this.plugins.map((plugin) => plugin.containerModifier);\n let composed = composeFunctionModifiers([attachContainer, ...modifiers]);\n\n return composed(element, this);\n },\n { eager: false }\n ),\n\n // resize: ResizeModifier,\n // TODO: switch to composing real modifiers once \"curry\" and \"compose\"\n // RFCs are accepted and implemented\n //\n // Atm the moment, if _any_ header modifier's tracked data changes,\n // all the functions for all of the plugins run again.\n //\n // With curried+composed modifiers, only the plugin's headerModifier\n // that has tracked changes would run, leaving the other modifiers alone\n columnHeader: modifier(\n (element: HTMLElement, [column]: [Column<DataType>]): Destructor => {\n let modifiers = this.plugins.map((plugin) => plugin.headerCellModifier);\n let composed = composeFunctionModifiers(modifiers);\n\n return composed(element, { column, table: this });\n },\n { eager: false }\n ),\n\n row: modifier(\n (element: HTMLElement, [row]: [Row<DataType>]): Destructor => {\n let modifiers = this.plugins.map((plugin) => plugin.rowModifier);\n let composed = composeFunctionModifiers(modifiers);\n\n return composed(element, { row, table: this });\n },\n { eager: false }\n ),\n };\n\n /**\n * @private\n *\n * For all configured plugins, instantiates each one.\n * If the plugins argument changes to the Table (either directly or through\n * headlessTable, all state is lost and re-created)\n */\n @cached\n get plugins(): Plugin[] {\n let plugins = normalizePluginsConfig(this.args.named?.plugins);\n\n verifyPlugins(plugins);\n\n return plugins.map((tuple) => {\n // We don't need the options here\n let [PluginClass] = tuple;\n\n if (typeof PluginClass === 'function') {\n let plugin = new PluginClass(this);\n\n let owner = getOwner(this);\n\n assert(`The Table does not have an owner. cannot create a plugin without an owner`, owner);\n setOwner(plugin, owner);\n\n return plugin;\n }\n\n // This is a plugin object, rather than a class\n // TODO: add test coverage around using classless plugins\n return PluginClass;\n });\n }\n\n /**\n * Get the active plugin instance for the given plugin class\n */\n pluginOf<Instance extends BasePlugin<any>>(klass: Class<Instance>): Instance | undefined {\n let result = this.plugins.find((plugin) => plugin instanceof klass);\n\n /**\n * This is an unsafe cast, because Instance could be unrelated to any of the types\n * that matches Plugin[]\n *\n * For example, `table.pluginOf(MyCustomPlugin)`, where MyCustomPlugin isn't in the\n * `plugins` list. This partially a problem with how Array.prototype.find doesn't\n * effectively narrow for what we want (combined with TS being clunky around\n * comparing Instance and Class types).\n */\n return result as unknown as Instance | undefined;\n }\n\n /**\n * @private\n *\n * used by other private APIs\n */\n get config() {\n return this.args.named;\n }\n\n rows = map(this, {\n data: () => {\n let dataFn = this.args.named?.data;\n\n if (!dataFn) return [];\n\n return dataFn() ?? [];\n },\n map: (datum) => new Row(this, datum),\n });\n\n columns = map(this, {\n data: () => {\n let configFn = this.args.named?.columns;\n\n if (!configFn) return [];\n\n let result = configFn() ?? [];\n\n if (macroCondition(isDevelopingApp())) {\n /**\n * Assertions for a column config to be valid:\n * - every key must be unique\n */\n let keys = new Set();\n let allKeys = result.map((columnConfig) => columnConfig.key);\n\n result.forEach((columnConfig) => {\n if (keys.has(columnConfig.key)) {\n throw new Error(\n `Every column key in the table's column config must be unique. ` +\n `Found duplicate entry: ${columnConfig.key}. ` +\n `All keys used: ${allKeys}`\n );\n }\n\n keys.add(columnConfig.key);\n });\n }\n\n return result;\n },\n map: (config) => {\n return new Column<DataType>(this, { ...DEFAULT_COLUMN_CONFIG, ...config });\n },\n });\n\n /**\n * @private\n */\n @action\n resetScrollContainer() {\n if (!this.scrollContainerElement) return;\n\n this.scrollContainerElement.scrollTop = 0;\n }\n\n @action\n resetToDefaults() {\n this.plugins.forEach((plugin) => plugin.reset?.());\n }\n}\n"],"names":["_initializerDefineProperty","target","property","descriptor","context","Object","defineProperty","enumerable","configurable","writable","value","initializer","call","cached","macroCondition","dependencySatisfies","importSync","DEFAULT_COLUMN_CONFIG","isVisible","minWidth","TABLE_KEY","Symbol","TABLE_META_KEY","COLUMN_META_KEY","ROW_META_KEY","attachContainer","element","table","assert","HTMLElement","scrollContainerElement","Table","_class","Resource","constructor","args","_defineProperty","guidFor","Map","WeakMap","_descriptor","_descriptor2","_descriptor3","container","modifier","modifiers","plugins","map","plugin","containerModifier","composed","composeFunctionModifiers","eager","columnHeader","column","headerCellModifier","row","rowModifier","data","dataFn","named","datum","Row","configFn","columns","result","isDevelopingApp","keys","Set","allKeys","columnConfig","key","forEach","has","Error","add","config","Column","modify","_","preferences","adapter","TablePreferences","resetScrollContainer","normalizePluginsConfig","verifyPlugins","tuple","PluginClass","owner","getOwner","setOwner","pluginOf","klass","find","scrollTop","resetToDefaults","reset","_applyDecoratedDescriptor","prototype","tracked","getOwnPropertyDescriptor","action"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/test-support/index.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { find, settled, triggerEvent } from '@ember/test-helpers';\n\ninterface Selectors {\n resizeHandle?: string;\n scrollContainer?: string;\n}\n\nexport function createHelpers(selectors: Selectors) {\n async function resize(parent: Element, delta: number) {\n assert(\n `Can't use the dragLeft/dragRight/resize helpers without a \\`resizeHandle\\` selector`,\n selectors.resizeHandle\n );\n\n let element = parent.querySelector(selectors.resizeHandle);\n\n assert(`Can't resize without a handle`, element);\n\n /**\n * Start the click in exactly the middle of the element.\n * \"startX\" is the horizontal middle of \"element\"\n */\n let rect = element.getBoundingClientRect();\n let startX = (rect.right + rect.left) / 2;\n\n let targetX = startX + delta;\n\n triggerEvent(element, 'mousedown', { clientX: startX, button: 0 });\n triggerEvent(element, 'mousemove', { clientX: targetX, button: 0 });\n triggerEvent(element, 'mouseup', { clientX: targetX, button: 0 });\n\n await settled();\n\n /**\n * This has been super finnicky... :(\n */\n await new Promise((resolve) => setTimeout(resolve, 100));\n await requestAnimationFrameSettled();\n }\n\n function horizontalScrollElement() {\n assert(\n `Can't use scrollRight/swipeLeft helpers without a \\`scrollContainer\\` selector`,\n selectors.scrollContainer\n );\n\n let element = find(selectors.scrollContainer);\n\n assert(`scroll container not found`, element instanceof HTMLElement);\n\n return element;\n }\n\n async function scrollRight(distance: number) {\n let element = horizontalScrollElement();\n\n element.scrollLeft += distance;\n await requestAnimationFrameSettled();\n }\n\n async function scrollLeft(distance: number) {\n let element = horizontalScrollElement();\n\n element.scrollLeft -= distance;\n await requestAnimationFrameSettled();\n }\n\n return {\n dragLeft: (column: Element, amount: number) => resize(column, -amount),\n dragRight: (column: Element, amount: number) => resize(column, amount),\n scrollLeft,\n scrollRight,\n swipeLeft: scrollRight,\n swipeRight: scrollLeft,\n };\n}\n\nexport async function requestAnimationFrameSettled() {\n await new Promise(requestAnimationFrame);\n await settled();\n}\n"],"names":["createHelpers","selectors","resize","parent","delta","assert","resizeHandle","element","querySelector","rect","getBoundingClientRect","startX","right","left","targetX","triggerEvent","clientX","button","settled","Promise","resolve","setTimeout","requestAnimationFrameSettled","horizontalScrollElement","scrollContainer","find","HTMLElement","scrollRight","distance","scrollLeft","dragLeft","column","amount","dragRight","swipeLeft","swipeRight","requestAnimationFrame"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/test-support/index.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { find, settled, triggerEvent } from '@ember/test-helpers';\n\ninterface Selectors {\n resizeHandle?: string;\n scrollContainer?: string;\n}\n\nexport function createHelpers(selectors: Selectors) {\n async function resize(parent: Element, delta: number) {\n assert(\n `Can't use the dragLeft/dragRight/resize helpers without a \\`resizeHandle\\` selector`,\n selectors.resizeHandle\n );\n\n let element = parent.querySelector(selectors.resizeHandle);\n\n assert(`Can't resize without a handle`, element);\n\n /**\n * Start the click in exactly the middle of the element.\n * \"startX\" is the horizontal middle of \"element\"\n */\n let rect = element.getBoundingClientRect();\n let startX = (rect.right + rect.left) / 2;\n\n let targetX = startX + delta;\n\n triggerEvent(element, 'mousedown', { clientX: startX, button: 0 });\n triggerEvent(element, 'mousemove', { clientX: targetX, button: 0 });\n triggerEvent(element, 'mouseup', { clientX: targetX, button: 0 });\n\n await settled();\n\n /**\n * This has been super finnicky... :(\n */\n await new Promise((resolve) => setTimeout(resolve, 100));\n await requestAnimationFrameSettled();\n }\n\n function horizontalScrollElement() {\n assert(\n `Can't use scrollRight/swipeLeft helpers without a \\`scrollContainer\\` selector`,\n selectors.scrollContainer\n );\n\n let element = find(selectors.scrollContainer);\n\n assert(`scroll container not found`, element instanceof HTMLElement);\n\n return element;\n }\n\n async function scrollRight(distance: number) {\n let element = horizontalScrollElement();\n\n element.scrollLeft += distance;\n await requestAnimationFrameSettled();\n }\n\n async function scrollLeft(distance: number) {\n let element = horizontalScrollElement();\n\n element.scrollLeft -= distance;\n await requestAnimationFrameSettled();\n }\n\n return {\n dragLeft: (column: Element, amount: number) => resize(column, -amount),\n dragRight: (column: Element, amount: number) => resize(column, amount),\n scrollLeft,\n scrollRight,\n swipeLeft: scrollRight,\n swipeRight: scrollLeft,\n };\n}\n\nexport async function requestAnimationFrameSettled() {\n await new Promise(requestAnimationFrame);\n await settled();\n}\n"],"names":["createHelpers","selectors","resize","parent","delta","assert","resizeHandle","element","querySelector","rect","getBoundingClientRect","startX","right","left","targetX","triggerEvent","clientX","button","settled","Promise","resolve","setTimeout","requestAnimationFrameSettled","horizontalScrollElement","scrollContainer","find","HTMLElement","scrollRight","distance","scrollLeft","dragLeft","column","amount","dragRight","swipeLeft","swipeRight","requestAnimationFrame"],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Sort, SortsOptions } from "./plugins/data-sorting/types";
1
+ import { Sort, SortsOptions } from "./plugins/data-sorting/types.js";
2
2
  /**
3
3
  * @example
4
4
  *
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { camelize, underscore } from '@ember/string';\n\nimport { SortDirection } from './plugins/data-sorting/types';\n\nimport type { Sort, SortsOptions } from './plugins/data-sorting/types';\n\n/**\n * @example\n *\n * ```ts\n * deserializeSorts('first_name.asc', { separator: '.', transform: 'camelize' });\n * // => [{ property: 'firstName', direction: 'ascending' }]\n *\n * deserializeSorts('last_name.desc', { separator: '.', transform: 'camelize' });\n * // => [{ property: 'lastName', direction: 'descending' }]\n * ```\n */\n\nexport const deserializeSorts = (\n sortString: string,\n options: SortsOptions = { separator: '.', transform: 'camelize' }\n): Sort[] => {\n if (!sortString) {\n return [];\n }\n\n let { transform, separator } = options;\n let [key, direction] = sortString.split(separator);\n\n assert(`No key found for input: \\`${sortString}\\` using \\`${separator}\\` as a separator`, key);\n\n if (transform === 'camelize') {\n key = camelize(key);\n } else if (transform === 'underscore') {\n key = underscore(key);\n }\n\n return [\n {\n property: key,\n direction: direction === 'asc' ? SortDirection.Ascending : SortDirection.Descending,\n },\n ];\n};\n\n/**\n * @example\n *\n * ```ts\n * serializeSorts([{ property: 'firstName', direction: 'ascending' }],{ separator: '.', transform: 'camelize' });\n * // => 'first_name.asc'\n *\n * serializeSorts([{ property: 'lastName', direction: 'descending' }],{ separator: '.', transform: 'camelize' });\n * // => 'last_name.desc'\n * ```\n */\nexport function serializeSorts(\n sorts: Sort[],\n options: SortsOptions = { separator: '.', transform: 'underscore' }\n): string {\n const { transform, separator } = options;\n\n let sortParameters = sorts.map(({ direction, property }) => {\n let shortDirection = direction === 'ascending' ? 'asc' : 'desc';\n\n let sortField = property;\n\n if (transform === 'underscore') {\n sortField = underscore(property);\n } else if (transform === 'camelize') {\n sortField = camelize(property);\n }\n\n return `${sortField}${separator}${shortDirection}`;\n });\n\n return sortParameters.join('+');\n}\n"],"names":["deserializeSorts","sortString","options","separator","transform","key","direction","split","assert","camelize","underscore","property","SortDirection","Ascending","Descending","serializeSorts","sorts","sortParameters","map","shortDirection","sortField","join"],"mappings":";;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;MAEaA,gBAAgB,GAAG,CAC9BC,UAAkB,EAClBC,OAAqB,GAAG;AAAEC,EAAAA,SAAS,EAAE,GAAG;AAAEC,EAAAA,SAAS,EAAE,UAAA;AAAW,CAAC,KACtD;EACX,IAAI,CAACH,UAAU,EAAE;AACf,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;EAEA,IAAI;IAAEG,SAAS;AAAED,IAAAA,SAAAA;AAAU,GAAC,GAAGD,OAAO,CAAA;EACtC,IAAI,CAACG,GAAG,EAAEC,SAAS,CAAC,GAAGL,UAAU,CAACM,KAAK,CAACJ,SAAS,CAAC,CAAA;EAElDK,MAAM,CAAE,6BAA4BP,UAAW,CAAA,WAAA,EAAaE,SAAU,CAAkB,iBAAA,CAAA,EAAEE,GAAG,CAAC,CAAA;EAE9F,IAAID,SAAS,KAAK,UAAU,EAAE;AAC5BC,IAAAA,GAAG,GAAGI,QAAQ,CAACJ,GAAG,CAAC,CAAA;AACrB,GAAC,MAAM,IAAID,SAAS,KAAK,YAAY,EAAE;AACrCC,IAAAA,GAAG,GAAGK,UAAU,CAACL,GAAG,CAAC,CAAA;AACvB,GAAA;AAEA,EAAA,OAAO,CACL;AACEM,IAAAA,QAAQ,EAAEN,GAAG;IACbC,SAAS,EAAEA,SAAS,KAAK,KAAK,GAAGM,aAAa,CAACC,SAAS,GAAGD,aAAa,CAACE,UAAAA;AAC3E,GAAC,CACF,CAAA;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAc,CAC5BC,KAAa,EACbd,OAAqB,GAAG;AAAEC,EAAAA,SAAS,EAAE,GAAG;AAAEC,EAAAA,SAAS,EAAE,YAAA;AAAa,CAAC,EAC3D;EACR,MAAM;IAAEA,SAAS;AAAED,IAAAA,SAAAA;AAAU,GAAC,GAAGD,OAAO,CAAA;AAExC,EAAA,IAAIe,cAAc,GAAGD,KAAK,CAACE,GAAG,CAAC,CAAC;IAAEZ,SAAS;AAAEK,IAAAA,QAAAA;AAAS,GAAC,KAAK;IAC1D,IAAIQ,cAAc,GAAGb,SAAS,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,CAAA;IAE/D,IAAIc,SAAS,GAAGT,QAAQ,CAAA;IAExB,IAAIP,SAAS,KAAK,YAAY,EAAE;AAC9BgB,MAAAA,SAAS,GAAGV,UAAU,CAACC,QAAQ,CAAC,CAAA;AAClC,KAAC,MAAM,IAAIP,SAAS,KAAK,UAAU,EAAE;AACnCgB,MAAAA,SAAS,GAAGX,QAAQ,CAACE,QAAQ,CAAC,CAAA;AAChC,KAAA;AAEA,IAAA,OAAQ,GAAES,SAAU,CAAA,EAAEjB,SAAU,CAAA,EAAEgB,cAAe,CAAC,CAAA,CAAA;AACpD,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOF,cAAc,CAACI,IAAI,CAAC,GAAG,CAAC,CAAA;AACjC;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["import { assert } from '@ember/debug';\nimport { camelize, underscore } from '@ember/string';\n\nimport { SortDirection } from './plugins/data-sorting/types';\n\nimport type { Sort, SortsOptions } from './plugins/data-sorting/types';\n\n/**\n * @example\n *\n * ```ts\n * deserializeSorts('first_name.asc', { separator: '.', transform: 'camelize' });\n * // => [{ property: 'firstName', direction: 'ascending' }]\n *\n * deserializeSorts('last_name.desc', { separator: '.', transform: 'camelize' });\n * // => [{ property: 'lastName', direction: 'descending' }]\n * ```\n */\n\nexport const deserializeSorts = (\n sortString: string,\n options: SortsOptions = { separator: '.', transform: 'camelize' }\n): Sort[] => {\n if (!sortString) {\n return [];\n }\n\n let { transform, separator } = options;\n let [key, direction] = sortString.split(separator);\n\n assert(`No key found for input: \\`${sortString}\\` using \\`${separator}\\` as a separator`, key);\n\n if (transform === 'camelize') {\n key = camelize(key);\n } else if (transform === 'underscore') {\n key = underscore(key);\n }\n\n return [\n {\n property: key,\n direction: direction === 'asc' ? SortDirection.Ascending : SortDirection.Descending,\n },\n ];\n};\n\n/**\n * @example\n *\n * ```ts\n * serializeSorts([{ property: 'firstName', direction: 'ascending' }],{ separator: '.', transform: 'camelize' });\n * // => 'first_name.asc'\n *\n * serializeSorts([{ property: 'lastName', direction: 'descending' }],{ separator: '.', transform: 'camelize' });\n * // => 'last_name.desc'\n * ```\n */\nexport function serializeSorts(\n sorts: Sort[],\n options: SortsOptions = { separator: '.', transform: 'underscore' }\n): string {\n const { transform, separator } = options;\n\n let sortParameters = sorts.map(({ direction, property }) => {\n let shortDirection = direction === 'ascending' ? 'asc' : 'desc';\n\n let sortField = property;\n\n if (transform === 'underscore') {\n sortField = underscore(property);\n } else if (transform === 'camelize') {\n sortField = camelize(property);\n }\n\n return `${sortField}${separator}${shortDirection}`;\n });\n\n return sortParameters.join('+');\n}\n"],"names":["deserializeSorts","sortString","options","separator","transform","key","direction","split","assert","camelize","underscore","property","SortDirection","Ascending","Descending","serializeSorts","sorts","sortParameters","map","shortDirection","sortField","join"],"mappings":";;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;MAEaA,gBAAgB,GAAGA,CAC9BC,UAAkB,EAClBC,OAAqB,GAAG;AAAEC,EAAAA,SAAS,EAAE,GAAG;AAAEC,EAAAA,SAAS,EAAE,UAAA;AAAW,CAAC,KACtD;EACX,IAAI,CAACH,UAAU,EAAE;AACf,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;EAEA,IAAI;IAAEG,SAAS;AAAED,IAAAA,SAAAA;AAAU,GAAC,GAAGD,OAAO,CAAA;EACtC,IAAI,CAACG,GAAG,EAAEC,SAAS,CAAC,GAAGL,UAAU,CAACM,KAAK,CAACJ,SAAS,CAAC,CAAA;EAElDK,MAAM,CAAE,6BAA4BP,UAAW,CAAA,WAAA,EAAaE,SAAU,CAAkB,iBAAA,CAAA,EAAEE,GAAG,CAAC,CAAA;EAE9F,IAAID,SAAS,KAAK,UAAU,EAAE;AAC5BC,IAAAA,GAAG,GAAGI,QAAQ,CAACJ,GAAG,CAAC,CAAA;AACrB,GAAC,MAAM,IAAID,SAAS,KAAK,YAAY,EAAE;AACrCC,IAAAA,GAAG,GAAGK,UAAU,CAACL,GAAG,CAAC,CAAA;AACvB,GAAA;AAEA,EAAA,OAAO,CACL;AACEM,IAAAA,QAAQ,EAAEN,GAAG;IACbC,SAAS,EAAEA,SAAS,KAAK,KAAK,GAAGM,aAAa,CAACC,SAAS,GAAGD,aAAa,CAACE,UAAAA;AAC3E,GAAC,CACF,CAAA;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAC5BC,KAAa,EACbd,OAAqB,GAAG;AAAEC,EAAAA,SAAS,EAAE,GAAG;AAAEC,EAAAA,SAAS,EAAE,YAAA;AAAa,CAAC,EAC3D;EACR,MAAM;IAAEA,SAAS;AAAED,IAAAA,SAAAA;AAAU,GAAC,GAAGD,OAAO,CAAA;AAExC,EAAA,IAAIe,cAAc,GAAGD,KAAK,CAACE,GAAG,CAAC,CAAC;IAAEZ,SAAS;AAAEK,IAAAA,QAAAA;AAAS,GAAC,KAAK;IAC1D,IAAIQ,cAAc,GAAGb,SAAS,KAAK,WAAW,GAAG,KAAK,GAAG,MAAM,CAAA;IAE/D,IAAIc,SAAS,GAAGT,QAAQ,CAAA;IAExB,IAAIP,SAAS,KAAK,YAAY,EAAE;AAC9BgB,MAAAA,SAAS,GAAGV,UAAU,CAACC,QAAQ,CAAC,CAAA;AAClC,KAAC,MAAM,IAAIP,SAAS,KAAK,UAAU,EAAE;AACnCgB,MAAAA,SAAS,GAAGX,QAAQ,CAACE,QAAQ,CAAC,CAAA;AAChC,KAAA;AAEA,IAAA,OAAQ,GAAES,SAAU,CAAA,EAAEjB,SAAU,CAAA,EAAEgB,cAAe,CAAC,CAAA,CAAA;AACpD,GAAC,CAAC,CAAA;AAEF,EAAA,OAAOF,cAAc,CAACI,IAAI,CAAC,GAAG,CAAC,CAAA;AACjC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-headless-table",
3
- "version": "1.4.3",
3
+ "version": "1.4.4",
4
4
  "description": "An implementation of table behaviors for driving any table or table-like UI -- all without a UI (headless)",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -67,7 +67,7 @@
67
67
  "@ember/test-waiters": "^2.4.5 || ^3.0.0",
68
68
  "@glint/template": ">= 0.8.3",
69
69
  "ember-cached-decorator-polyfill": "^1.0.1",
70
- "ember-source": "^3.28.0 || ^4.0.0"
70
+ "ember-source": "^3.28.0 || ^4.0.0 || ^5.0.0"
71
71
  },
72
72
  "peerDependenciesMeta": {
73
73
  "@glimmer/component": {
@@ -1,16 +0,0 @@
1
- function _defineProperty(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
-
15
- export { _defineProperty as _ };
16
- //# sourceMappingURL=defineProperty-35ce617b.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defineProperty-35ce617b.js","sources":["../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/defineProperty.js"],"sourcesContent":["export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable"],"mappings":"AAAe,SAASA,eAAe,CAACC,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAE;EACvD,IAAID,GAAG,IAAID,GAAG,EAAE;AACdG,IAAAA,MAAM,CAACC,cAAc,CAACJ,GAAG,EAAEC,GAAG,EAAE;AAC9BC,MAAAA,KAAK,EAAEA,KAAK;AACZG,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLP,IAAAA,GAAG,CAACC,GAAG,CAAC,GAAGC,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOF,GAAG,CAAA;AACZ;;;;"}