@cloudscape-design/board-components 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/Config +23 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +2 -0
  4. package/README-cloudscape.md +20 -0
  5. package/README-open-source.md +0 -0
  6. package/README.md +20 -0
  7. package/board/index.d.ts +4 -0
  8. package/board/index.js +11 -0
  9. package/board/interfaces.d.ts +167 -0
  10. package/board/interfaces.js +1 -0
  11. package/board/internal.d.ts +4 -0
  12. package/board/internal.js +199 -0
  13. package/board/placeholder.d.ts +10 -0
  14. package/board/placeholder.js +24 -0
  15. package/board/styles.css.js +10 -0
  16. package/board/styles.scoped.css +23 -0
  17. package/board/styles.selectors.js +11 -0
  18. package/board/transition.d.ts +50 -0
  19. package/board/transition.js +211 -0
  20. package/board/utils/announcements.d.ts +10 -0
  21. package/board/utils/announcements.js +98 -0
  22. package/board/utils/create-transforms.d.ts +7 -0
  23. package/board/utils/create-transforms.js +22 -0
  24. package/board/utils/events.d.ts +3 -0
  25. package/board/utils/events.js +14 -0
  26. package/board/utils/get-hovered-rect.d.ts +10 -0
  27. package/board/utils/get-hovered-rect.js +19 -0
  28. package/board/utils/layout.d.ts +19 -0
  29. package/board/utils/layout.js +77 -0
  30. package/board/utils/path.d.ts +10 -0
  31. package/board/utils/path.js +73 -0
  32. package/board-item/header.d.ts +7 -0
  33. package/board-item/header.js +8 -0
  34. package/board-item/index.d.ts +4 -0
  35. package/board-item/index.js +11 -0
  36. package/board-item/interfaces.d.ts +42 -0
  37. package/board-item/interfaces.js +1 -0
  38. package/board-item/internal.d.ts +4 -0
  39. package/board-item/internal.js +20 -0
  40. package/board-item/styles.css.js +15 -0
  41. package/board-item/styles.scoped.css +41 -0
  42. package/board-item/styles.selectors.js +16 -0
  43. package/index.d.ts +6 -0
  44. package/index.js +5 -0
  45. package/internal/api-docs/components/board-item.js +68 -0
  46. package/internal/api-docs/components/board.js +117 -0
  47. package/internal/api-docs/components/index.js +5 -0
  48. package/internal/api-docs/components/items-palette.js +58 -0
  49. package/internal/api-docs/test-utils-doc/dom.js +4 -0
  50. package/internal/api-docs/test-utils-doc/selectors.js +4 -0
  51. package/internal/base-component/use-base-component.d.ts +12 -0
  52. package/internal/base-component/use-base-component.js +16 -0
  53. package/internal/base-component/use-telemetry.d.ts +1 -0
  54. package/internal/base-component/use-telemetry.js +9 -0
  55. package/internal/base-component/use-visual-refresh.d.ts +1 -0
  56. package/internal/base-component/use-visual-refresh.js +24 -0
  57. package/internal/breakpoints.d.ts +2 -0
  58. package/internal/breakpoints.js +18 -0
  59. package/internal/constants.d.ts +3 -0
  60. package/internal/constants.js +5 -0
  61. package/internal/debug-tools/converters.d.ts +4 -0
  62. package/internal/debug-tools/converters.js +21 -0
  63. package/internal/debug-tools/generators.d.ts +25 -0
  64. package/internal/debug-tools/generators.js +258 -0
  65. package/internal/debug-tools/index.d.ts +8 -0
  66. package/internal/debug-tools/index.js +10 -0
  67. package/internal/debug-tools/interfaces.d.ts +2 -0
  68. package/internal/debug-tools/interfaces.js +3 -0
  69. package/internal/debug-tools/parsers.d.ts +8 -0
  70. package/internal/debug-tools/parsers.js +66 -0
  71. package/internal/dnd-controller/__mocks__/controller.d.ts +13 -0
  72. package/internal/dnd-controller/__mocks__/controller.js +33 -0
  73. package/internal/dnd-controller/collision.d.ts +17 -0
  74. package/internal/dnd-controller/collision.js +32 -0
  75. package/internal/dnd-controller/controller.d.ts +64 -0
  76. package/internal/dnd-controller/controller.js +131 -0
  77. package/internal/dnd-controller/event-emitter.d.ts +9 -0
  78. package/internal/dnd-controller/event-emitter.js +22 -0
  79. package/internal/drag-handle/icon.d.ts +4 -0
  80. package/internal/drag-handle/icon.js +12 -0
  81. package/internal/drag-handle/index.d.ts +9 -0
  82. package/internal/drag-handle/index.js +11 -0
  83. package/internal/drag-handle/styles.css.js +6 -0
  84. package/internal/drag-handle/styles.scoped.css +7 -0
  85. package/internal/drag-handle/styles.selectors.js +7 -0
  86. package/internal/environment.d.ts +4 -0
  87. package/internal/environment.js +4 -0
  88. package/internal/generated/styles/tokens.d.ts +0 -0
  89. package/internal/generated/styles/tokens.js +0 -0
  90. package/internal/grid/grid.d.ts +3 -0
  91. package/internal/grid/grid.js +28 -0
  92. package/internal/grid/index.d.ts +2 -0
  93. package/internal/grid/index.js +3 -0
  94. package/internal/grid/interfaces.d.ts +14 -0
  95. package/internal/grid/interfaces.js +3 -0
  96. package/internal/grid/item.d.ts +8 -0
  97. package/internal/grid/item.js +10 -0
  98. package/internal/grid/styles.css.js +7 -0
  99. package/internal/grid/styles.scoped.css +221 -0
  100. package/internal/grid/styles.selectors.js +8 -0
  101. package/internal/handle/index.d.ts +3 -0
  102. package/internal/handle/index.js +17 -0
  103. package/internal/handle/styles.css.js +6 -0
  104. package/internal/handle/styles.scoped.css +32 -0
  105. package/internal/handle/styles.selectors.js +7 -0
  106. package/internal/interfaces.d.ts +50 -0
  107. package/internal/interfaces.js +3 -0
  108. package/internal/is-development.d.ts +6 -0
  109. package/internal/is-development.js +8 -0
  110. package/internal/item-container/get-next-droppable.d.ts +7 -0
  111. package/internal/item-container/get-next-droppable.js +15 -0
  112. package/internal/item-container/index.d.ts +48 -0
  113. package/internal/item-container/index.js +262 -0
  114. package/internal/item-container/styles.css.js +12 -0
  115. package/internal/item-container/styles.scoped.css +33 -0
  116. package/internal/item-container/styles.selectors.js +13 -0
  117. package/internal/layout-engine/engine-conflicts.d.ts +4 -0
  118. package/internal/layout-engine/engine-conflicts.js +53 -0
  119. package/internal/layout-engine/engine-step.d.ts +5 -0
  120. package/internal/layout-engine/engine-step.js +307 -0
  121. package/internal/layout-engine/engine.d.ts +19 -0
  122. package/internal/layout-engine/engine.js +105 -0
  123. package/internal/layout-engine/grid.d.ts +28 -0
  124. package/internal/layout-engine/grid.js +140 -0
  125. package/internal/layout-engine/interfaces.d.ts +30 -0
  126. package/internal/layout-engine/interfaces.js +3 -0
  127. package/internal/layout-engine/utils.d.ts +12 -0
  128. package/internal/layout-engine/utils.js +79 -0
  129. package/internal/live-region/index.d.ts +44 -0
  130. package/internal/live-region/index.js +85 -0
  131. package/internal/logging.d.ts +1 -0
  132. package/internal/logging.js +10 -0
  133. package/internal/manifest.json +3 -0
  134. package/internal/resize-handle/icon.d.ts +4 -0
  135. package/internal/resize-handle/icon.js +12 -0
  136. package/internal/resize-handle/index.d.ts +8 -0
  137. package/internal/resize-handle/index.js +7 -0
  138. package/internal/resize-handle/styles.css.js +6 -0
  139. package/internal/resize-handle/styles.scoped.css +3 -0
  140. package/internal/resize-handle/styles.selectors.js +7 -0
  141. package/internal/screenreader-grid-navigation/index.d.ts +22 -0
  142. package/internal/screenreader-grid-navigation/index.js +42 -0
  143. package/internal/screenreader-grid-navigation/styles.css.js +7 -0
  144. package/internal/screenreader-grid-navigation/styles.scoped.css +12 -0
  145. package/internal/screenreader-grid-navigation/styles.selectors.js +8 -0
  146. package/internal/screenreader-only/index.d.ts +21 -0
  147. package/internal/screenreader-only/index.js +23 -0
  148. package/internal/screenreader-only/styles.css.js +6 -0
  149. package/internal/screenreader-only/styles.scoped.css +9 -0
  150. package/internal/screenreader-only/styles.selectors.js +7 -0
  151. package/internal/utils/apply-display-name.d.ts +1 -0
  152. package/internal/utils/apply-display-name.js +5 -0
  153. package/internal/utils/coordinates.d.ts +14 -0
  154. package/internal/utils/coordinates.js +20 -0
  155. package/internal/utils/events.d.ts +2 -0
  156. package/internal/utils/events.js +18 -0
  157. package/internal/utils/layout.d.ts +18 -0
  158. package/internal/utils/layout.js +132 -0
  159. package/internal/utils/position.d.ts +9 -0
  160. package/internal/utils/position.js +9 -0
  161. package/internal/utils/rects.d.ts +6 -0
  162. package/internal/utils/rects.js +76 -0
  163. package/internal/utils/screen.d.ts +1 -0
  164. package/internal/utils/screen.js +17 -0
  165. package/internal/utils/stack-set.d.ts +8 -0
  166. package/internal/utils/stack-set.js +23 -0
  167. package/internal/utils/throttle.d.ts +5 -0
  168. package/internal/utils/throttle.js +51 -0
  169. package/internal/utils/use-auto-scroll.d.ts +5 -0
  170. package/internal/utils/use-auto-scroll.js +62 -0
  171. package/internal/utils/use-last-interaction.d.ts +1 -0
  172. package/internal/utils/use-last-interaction.js +22 -0
  173. package/internal/utils/use-merge-refs.d.ts +9 -0
  174. package/internal/utils/use-merge-refs.js +29 -0
  175. package/internal/utils/use-stable-event-handler.d.ts +9 -0
  176. package/internal/utils/use-stable-event-handler.js +19 -0
  177. package/internal/utils/use-throttled-event-handler.d.ts +1 -0
  178. package/internal/utils/use-throttled-event-handler.js +11 -0
  179. package/internal/utils/zip-arrays.d.ts +1 -0
  180. package/internal/utils/zip-arrays.js +8 -0
  181. package/items-palette/index.d.ts +4 -0
  182. package/items-palette/index.js +11 -0
  183. package/items-palette/interfaces.d.ts +49 -0
  184. package/items-palette/interfaces.js +3 -0
  185. package/items-palette/internal.d.ts +4 -0
  186. package/items-palette/internal.js +73 -0
  187. package/items-palette/styles.css.js +6 -0
  188. package/items-palette/styles.scoped.css +3 -0
  189. package/items-palette/styles.selectors.js +7 -0
  190. package/package.json +43 -0
  191. package/test-utils/dom/board/index.d.ts +6 -0
  192. package/test-utils/dom/board/index.js +15 -0
  193. package/test-utils/dom/board/index.js.map +1 -0
  194. package/test-utils/dom/board-item/index.d.ts +10 -0
  195. package/test-utils/dom/board-item/index.js +33 -0
  196. package/test-utils/dom/board-item/index.js.map +1 -0
  197. package/test-utils/dom/index.d.ts +19 -0
  198. package/test-utils/dom/index.js +41 -0
  199. package/test-utils/dom/index.js.map +1 -0
  200. package/test-utils/dom/items-palette/index.d.ts +7 -0
  201. package/test-utils/dom/items-palette/index.js +18 -0
  202. package/test-utils/dom/items-palette/index.js.map +1 -0
  203. package/test-utils/dom/palette-item/index.d.ts +5 -0
  204. package/test-utils/dom/palette-item/index.js +15 -0
  205. package/test-utils/dom/palette-item/index.js.map +1 -0
  206. package/test-utils/selectors/board/index.d.ts +6 -0
  207. package/test-utils/selectors/board/index.js +15 -0
  208. package/test-utils/selectors/board/index.js.map +1 -0
  209. package/test-utils/selectors/board-item/index.d.ts +10 -0
  210. package/test-utils/selectors/board-item/index.js +33 -0
  211. package/test-utils/selectors/board-item/index.js.map +1 -0
  212. package/test-utils/selectors/index.d.ts +19 -0
  213. package/test-utils/selectors/index.js +41 -0
  214. package/test-utils/selectors/index.js.map +1 -0
  215. package/test-utils/selectors/items-palette/index.d.ts +7 -0
  216. package/test-utils/selectors/items-palette/index.js +18 -0
  217. package/test-utils/selectors/items-palette/index.js.map +1 -0
  218. package/test-utils/selectors/palette-item/index.d.ts +5 -0
  219. package/test-utils/selectors/palette-item/index.js +15 -0
  220. package/test-utils/selectors/palette-item/index.js.map +1 -0
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ "board-item":require('./board-item'),
3
+ "board":require('./board'),
4
+ "items-palette":require('./items-palette')
5
+ }
@@ -0,0 +1,58 @@
1
+ module.exports = {
2
+ "name": "ItemsPalette",
3
+ "releaseStatus": "stable",
4
+ "regions": [],
5
+ "functions": [],
6
+ "properties": [
7
+ {
8
+ "name": "i18nStrings",
9
+ "type": "ItemsPaletteProps.I18nStrings<D>",
10
+ "inlineType": {
11
+ "name": "ItemsPaletteProps.I18nStrings",
12
+ "type": "object",
13
+ "properties": [
14
+ {
15
+ "name": "liveAnnouncementDndDiscarded",
16
+ "type": "string",
17
+ "optional": false
18
+ },
19
+ {
20
+ "name": "liveAnnouncementDndStarted",
21
+ "type": "string",
22
+ "optional": false
23
+ },
24
+ {
25
+ "name": "navigationAriaDescription",
26
+ "type": "string",
27
+ "optional": true
28
+ },
29
+ {
30
+ "name": "navigationAriaLabel",
31
+ "type": "string",
32
+ "optional": false
33
+ },
34
+ {
35
+ "name": "navigationItemAriaLabel",
36
+ "type": "(item: ItemsPaletteProps.Item<D>) => string",
37
+ "optional": false
38
+ }
39
+ ]
40
+ },
41
+ "optional": false,
42
+ "description": "An object containing all the necessary localized strings required by the component.\nLive announcements:\n* `liveAnnouncementDndStarted` (string) - live announcement string to indicate start of DnD.\n* `liveAnnouncementDndDiscarded` (string) - live announcement string to indicate discard of DnD.\n\nNavigation labels:\n* `navigationAriaLabel` (string) - the ARIA label for the accessible board navigation element.\n* `navigationAriaDescription` (string, optional) - the ARIA description for the accessible board navigation element.\n* `navigationItemAriaLabel(null | BoardProps.Item<D>): string` - the function to create the ARIA label for a navigation board item.\n"
43
+ },
44
+ {
45
+ "name": "items",
46
+ "type": "ReadonlyArray<ItemsPaletteProps.Item<D>>",
47
+ "optional": false,
48
+ "description": "Specifies the items displayed in the palette. The content of each item is controlled by the `renderItem` property.\nThe ItemsPaletteProps.Item includes:\n* `id` (string) - the unique item identifier. The IDs of any two items in a page must be different.\n* `definition.minRowSpan` (number, optional) - the minimal number of rows the item is allowed to take. It can't be less than two. Defaults to two.\n* `definition.minColumnSpan` (number, optional) - the minimal number of columns the item is allowed to take (in a 4 column layout). It can't be less than one. Defaults to one.\n* `definition.defaultRowSpan` (number) - the number or rows the item will take when inserted to the board. It can't be less than `definition.minRowSpan`.\n* `definition.defaultColumnSpan` (number) - the number or columns the item will take (in a 4 column layout) when inserted to the board. It can't be less than `definition.minColumnSpan`.\n* `data` (D) - optional item data which can include the specific configurations of an item, such as its title.\n"
49
+ },
50
+ {
51
+ "name": "renderItem",
52
+ "type": "(item: ItemsPaletteProps.Item<D>, context: ItemsPaletteProps.ItemContext) => Element",
53
+ "optional": false,
54
+ "description": "Specifies a function to render content for a palette item. The return value must include board item component.\nThe function takes the item and its associated context (ItemsPaletteProps.ItemContext) that include:\n* `showPreview` (boolean) - a flag that indicates if the item's content needs to be rendered in preview mode.\n"
55
+ }
56
+ ],
57
+ "events": []
58
+ };
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ classes: [{"name":"BoardItemWrapper","methods":[{"name":"blur","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.blur"}},{"name":"click","description":"Performs a click by triggering a mouse event.\nNote that programmatic events ignore disabled attribute and will trigger listeners even if the element is disabled.","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"params","typeName":"MouseEventInit","flags":{"isOptional":true}}],"inheritedFrom":{"name":"AbstractWrapper.click"}},{"name":"find","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findContent","returnType":{"name":"ComponentWrapper","type":"reference"},"parameters":[]},{"name":"findDragHandle","returnType":{"name":"ComponentWrapper","type":"reference"},"parameters":[]},{"name":"findFooter","returnType":{"name":"null | ComponentWrapper","type":"union"},"parameters":[]},{"name":"findHeader","returnType":{"name":"null | ComponentWrapper","type":"union"},"parameters":[]},{"name":"findResizeHandle","returnType":{"name":"ComponentWrapper","type":"reference"},"parameters":[]},{"name":"findSettings","returnType":{"name":"null | ComponentWrapper","type":"union"},"parameters":[]},{"name":"fireEvent","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"event","typeName":"Event","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.fireEvent"}},{"name":"focus","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.focus"}},{"name":"getElement","returnType":{"name":"HTMLElement","type":"reference"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"keydown","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keydown"}},{"name":"keypress","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keypress"}},{"name":"keyup","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keyup"}},{"name":"matches","returnType":{"name":"this | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}}]},{"name":"BoardWrapper","methods":[{"name":"blur","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.blur"}},{"name":"click","description":"Performs a click by triggering a mouse event.\nNote that programmatic events ignore disabled attribute and will trigger listeners even if the element is disabled.","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"params","typeName":"MouseEventInit","flags":{"isOptional":true}}],"inheritedFrom":{"name":"AbstractWrapper.click"}},{"name":"find","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findItemById","returnType":{"name":"null | BoardItemWrapper","type":"union"},"parameters":[{"name":"itemId","typeName":"string","flags":{"isOptional":false}}]},{"name":"fireEvent","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"event","typeName":"Event","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.fireEvent"}},{"name":"focus","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.focus"}},{"name":"getElement","returnType":{"name":"HTMLElement","type":"reference"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"keydown","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keydown"}},{"name":"keypress","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keypress"}},{"name":"keyup","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keyup"}},{"name":"matches","returnType":{"name":"this | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}}]},{"name":"ItemsPaletteWrapper","methods":[{"name":"blur","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.blur"}},{"name":"click","description":"Performs a click by triggering a mouse event.\nNote that programmatic events ignore disabled attribute and will trigger listeners even if the element is disabled.","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"params","typeName":"MouseEventInit","flags":{"isOptional":true}}],"inheritedFrom":{"name":"AbstractWrapper.click"}},{"name":"find","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findItemById","returnType":{"name":"null | PaletteItemWrapper","type":"union"},"parameters":[{"name":"itemId","typeName":"string","flags":{"isOptional":false}}]},{"name":"findItems","returnType":{"name":"array","type":"reference"},"parameters":[]},{"name":"fireEvent","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"event","typeName":"Event","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.fireEvent"}},{"name":"focus","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.focus"}},{"name":"getElement","returnType":{"name":"HTMLElement","type":"reference"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"keydown","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keydown"}},{"name":"keypress","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keypress"}},{"name":"keyup","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keyup"}},{"name":"matches","returnType":{"name":"this | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}}]},{"name":"PaletteItemWrapper","methods":[{"name":"blur","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.blur"}},{"name":"click","description":"Performs a click by triggering a mouse event.\nNote that programmatic events ignore disabled attribute and will trigger listeners even if the element is disabled.","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"params","typeName":"MouseEventInit","flags":{"isOptional":true}}],"inheritedFrom":{"name":"AbstractWrapper.click"}},{"name":"find","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"array","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper | null","type":"union"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findDragHandle","returnType":{"name":"ComponentWrapper","type":"reference"},"parameters":[]},{"name":"fireEvent","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"event","typeName":"Event","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.fireEvent"}},{"name":"focus","returnType":{"name":"void","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.focus"}},{"name":"getElement","returnType":{"name":"HTMLElement","type":"reference"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"keydown","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keydown"}},{"name":"keypress","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keypress"}},{"name":"keyup","returnType":{"name":"void","type":"intrinsic"},"parameters":[{"name":"keyCode","typeName":"KeyCode","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.keyup"}},{"name":"matches","returnType":{"name":"this | null","type":"union"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}}]}]
3
+ }
4
+
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ classes: [{"name":"BoardItemWrapper","methods":[{"name":"find","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper","type":"typeParameter"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findContent","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"findDragHandle","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"findFooter","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"findHeader","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"findResizeHandle","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"findSettings","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"getElement","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"matches","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}},{"name":"toSelector","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.toSelector"}}]},{"name":"BoardWrapper","methods":[{"name":"find","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper","type":"typeParameter"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findItemById","returnType":{"name":"BoardItemWrapper","type":"reference","typeArguments":[]},"parameters":[{"name":"itemId","typeName":"string","flags":{"isOptional":false}}]},{"name":"getElement","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"matches","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}},{"name":"toSelector","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.toSelector"}}]},{"name":"ItemsPaletteWrapper","methods":[{"name":"find","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper","type":"typeParameter"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findItemById","returnType":{"name":"PaletteItemWrapper","type":"reference","typeArguments":[]},"parameters":[{"name":"itemId","typeName":"string","flags":{"isOptional":false}}]},{"name":"findItems","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"PaletteItemWrapper","type":"reference"}]},"parameters":[]},{"name":"getElement","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"matches","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}},{"name":"toSelector","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.toSelector"}}]},{"name":"PaletteItemWrapper","methods":[{"name":"find","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.find"}},{"name":"findAll","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAll"}},{"name":"findAllByClassName","returnType":{"name":"MultiElementWrapper","type":"reference","typeArguments":[{"name":"ElementWrapper","type":"reference"}]},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findAllByClassName"}},{"name":"findByClassName","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"className","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findByClassName"}},{"name":"findComponent","returnType":{"name":"Wrapper","type":"typeParameter"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}},{"name":"ComponentClass","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.findComponent"}},{"name":"findDragHandle","returnType":{"name":"ElementWrapper","type":"reference","typeArguments":[]},"parameters":[]},{"name":"getElement","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.getElement"}},{"name":"matches","returnType":{"name":"ElementWrapper","type":"reference"},"parameters":[{"name":"selector","typeName":"string","flags":{"isOptional":false}}],"inheritedFrom":{"name":"AbstractWrapper.matches"}},{"name":"toSelector","returnType":{"name":"string","type":"intrinsic"},"parameters":[],"inheritedFrom":{"name":"AbstractWrapper.toSelector"}}]}]
3
+ }
4
+
@@ -0,0 +1,12 @@
1
+ import { MutableRefObject } from "react";
2
+ export interface InternalBaseComponentProps {
3
+ __internalRootRef?: MutableRefObject<any> | null;
4
+ }
5
+ /**
6
+ * This hook is used for components which are exported to customers. The returned __internalRootRef needs to be
7
+ * attached to the (internal) component's root DOM node. The hook takes care of attaching the metadata to this
8
+ * root DOM node and emits the telemetry for this component.
9
+ */
10
+ export default function useBaseComponent<T = any>(componentName: string): {
11
+ __internalRootRef: import("react").RefObject<T>;
12
+ };
@@ -0,0 +1,16 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { initAwsUiVersions, useComponentMetadata } from "@cloudscape-design/component-toolkit/internal";
4
+ import { PACKAGE_SOURCE, PACKAGE_VERSION } from "../environment";
5
+ import { useTelemetry } from "./use-telemetry";
6
+ initAwsUiVersions(PACKAGE_SOURCE, PACKAGE_VERSION);
7
+ /**
8
+ * This hook is used for components which are exported to customers. The returned __internalRootRef needs to be
9
+ * attached to the (internal) component's root DOM node. The hook takes care of attaching the metadata to this
10
+ * root DOM node and emits the telemetry for this component.
11
+ */
12
+ export default function useBaseComponent(componentName) {
13
+ useTelemetry(componentName);
14
+ const elementRef = useComponentMetadata(componentName, PACKAGE_VERSION);
15
+ return { __internalRootRef: elementRef };
16
+ }
@@ -0,0 +1 @@
1
+ export declare function useTelemetry(componentName: string): void;
@@ -0,0 +1,9 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { useComponentMetrics } from "@cloudscape-design/component-toolkit/internal";
4
+ import { PACKAGE_SOURCE, PACKAGE_VERSION, THEME } from "../environment";
5
+ import { useVisualRefresh } from "./use-visual-refresh";
6
+ export function useTelemetry(componentName) {
7
+ const theme = useVisualRefresh() ? "vr" : THEME;
8
+ useComponentMetrics(componentName, { packageSource: PACKAGE_SOURCE, packageVersion: PACKAGE_VERSION, theme });
9
+ }
@@ -0,0 +1 @@
1
+ export declare const useVisualRefresh: () => boolean;
@@ -0,0 +1,24 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { ALWAYS_VISUAL_REFRESH } from "../environment";
4
+ import { IS_DEV } from "../is-development";
5
+ import { warnOnce } from "../logging";
6
+ export const useVisualRefresh = ALWAYS_VISUAL_REFRESH ? () => true : useVisualRefreshDynamic;
7
+ // We expect VR is to be set only once and before the application is rendered.
8
+ let visualRefreshState = undefined;
9
+ function detectVisualRefresh() {
10
+ return typeof document !== "undefined" && !!document.querySelector(".awsui-visual-refresh");
11
+ }
12
+ function useVisualRefreshDynamic() {
13
+ if (visualRefreshState === undefined) {
14
+ visualRefreshState = detectVisualRefresh();
15
+ }
16
+ if (IS_DEV) {
17
+ const newVisualRefreshState = detectVisualRefresh();
18
+ if (newVisualRefreshState !== visualRefreshState) {
19
+ warnOnce("Visual Refresh", "Dynamic visual refresh change detected. This is not supported. " +
20
+ "Make sure `awsui-visual-refresh` is attached to the `<body>` element before initial React render");
21
+ }
22
+ }
23
+ return visualRefreshState;
24
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function useContainerColumns(): readonly [0 | 1 | 2 | 4 | 6, import("react").Ref<any>];
@@ -0,0 +1,18 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { useContainerQuery } from "@cloudscape-design/component-toolkit";
4
+ export function useContainerColumns() {
5
+ const [columns, containerQueryRef] = useContainerQuery((entry) => {
6
+ if (entry.contentBoxWidth < 688) {
7
+ return 1;
8
+ }
9
+ if (entry.contentBoxWidth < 912) {
10
+ return 2;
11
+ }
12
+ if (entry.contentBoxWidth < 2100) {
13
+ return 4;
14
+ }
15
+ return 6;
16
+ }, []);
17
+ return [columns !== null && columns !== void 0 ? columns : 0, containerQueryRef];
18
+ }
@@ -0,0 +1,3 @@
1
+ export declare const MIN_ROW_SPAN = 2;
2
+ export declare const MIN_COL_SPAN = 1;
3
+ export declare const TRANSITION_DURATION_MS = 200;
@@ -0,0 +1,5 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export const MIN_ROW_SPAN = 2;
4
+ export const MIN_COL_SPAN = 1;
5
+ export const TRANSITION_DURATION_MS = 200;
@@ -0,0 +1,4 @@
1
+ import { GridLayout } from "../interfaces";
2
+ import { GridMatrix } from "./interfaces";
3
+ export declare function toMatrix({ items, columns }: GridLayout): GridMatrix;
4
+ export declare function toString(input: GridLayout | GridMatrix): string;
@@ -0,0 +1,21 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export function toMatrix({ items, columns }) {
4
+ const matrix = [];
5
+ for (const item of items) {
6
+ for (let y = item.y; y < item.y + item.height; y++) {
7
+ while (matrix.length <= y) {
8
+ matrix.push([...Array(columns)].map(() => " "));
9
+ }
10
+ for (let x = item.x; x < item.x + item.width; x++) {
11
+ const newValue = matrix[y][x] === " " ? item.id : matrix[y][x] + "/" + item.id;
12
+ matrix[y][x] = newValue.split("/").sort().join("/");
13
+ }
14
+ }
15
+ }
16
+ return matrix;
17
+ }
18
+ export function toString(input) {
19
+ const matrix = Array.isArray(input) ? input : toMatrix(input);
20
+ return matrix.map((row) => row.join("\t")).join("\n");
21
+ }
@@ -0,0 +1,25 @@
1
+ import { GridLayout } from "../interfaces";
2
+ import { InsertCommand, MoveCommand, ResizeCommand } from "../layout-engine/interfaces";
3
+ import { Position } from "../utils/position";
4
+ export type GenerateMoveType = "any" | "vertical" | "horizontal";
5
+ export interface GenerateGridOptions {
6
+ width?: number;
7
+ totalItems?: number;
8
+ averageItemWidth?: number;
9
+ averageItemHeight?: number;
10
+ }
11
+ export interface GenerateGridResizeOptions {
12
+ maxWidthIncrement?: number;
13
+ maxWidthDecrement?: number;
14
+ maxHeightIncrement?: number;
15
+ maxHeightDecrement?: number;
16
+ }
17
+ export interface GenerateGridInsertOptions {
18
+ maxWidth?: number;
19
+ maxHeight?: number;
20
+ }
21
+ export declare function generateGrid(options?: GenerateGridOptions): GridLayout;
22
+ export declare function generateMove(grid: GridLayout, type?: GenerateMoveType): MoveCommand;
23
+ export declare function generateResize(grid: GridLayout, options?: GenerateGridResizeOptions): ResizeCommand;
24
+ export declare function generateInsert(grid: GridLayout, insertId?: string, options?: GenerateGridInsertOptions): InsertCommand;
25
+ export declare function generateRandomPath(from: Position, to: Position): Position[];
@@ -0,0 +1,258 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { Position } from "../utils/position";
4
+ import { toMatrix } from ".";
5
+ const LETTER_INDICES = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
6
+ export function generateGrid(options) {
7
+ var _a, _b, _c, _d;
8
+ const width = (_a = options === null || options === void 0 ? void 0 : options.width) !== null && _a !== void 0 ? _a : 6;
9
+ const totalItems = (_b = options === null || options === void 0 ? void 0 : options.totalItems) !== null && _b !== void 0 ? _b : 20;
10
+ const averageItemWidth = (_c = options === null || options === void 0 ? void 0 : options.averageItemWidth) !== null && _c !== void 0 ? _c : 1.44;
11
+ const averageItemHeight = (_d = options === null || options === void 0 ? void 0 : options.averageItemHeight) !== null && _d !== void 0 ? _d : 1.44;
12
+ const allowance = {
13
+ horizontal: Math.floor(totalItems * (averageItemWidth - 1)),
14
+ vertical: Math.floor(totalItems * (averageItemHeight - 1)),
15
+ };
16
+ const items = [...Array(totalItems)].map((_, index) => ({
17
+ id: getGridItemId(index),
18
+ width: 1,
19
+ height: 1,
20
+ y: 0,
21
+ x: 0,
22
+ }));
23
+ let selectedAllowance = "horizontal";
24
+ while (allowance.horizontal > 0 || allowance.vertical > 0) {
25
+ if (allowance.horizontal === 0) {
26
+ selectedAllowance = "vertical";
27
+ }
28
+ else if (allowance.vertical === 0) {
29
+ selectedAllowance = "horizontal";
30
+ }
31
+ else {
32
+ selectedAllowance = selectedAllowance === "horizontal" ? "vertical" : "horizontal";
33
+ }
34
+ const index = getRandomIndex(items);
35
+ if (selectedAllowance === "horizontal") {
36
+ items[index].width = Math.min(width - items[index].x, items[index].width + 1);
37
+ for (let i = 0; i < items[index].height; i++) {
38
+ allowance.horizontal--;
39
+ }
40
+ }
41
+ else {
42
+ items[index].height++;
43
+ for (let i = 0; i < items[index].width; i++) {
44
+ allowance.vertical--;
45
+ }
46
+ }
47
+ }
48
+ const grid = [];
49
+ for (const item of items) {
50
+ item.x = getRandomOffset(width, item.width);
51
+ for (let y = 0; y < grid.length; y++) {
52
+ for (let x = item.x; x < item.x + item.width; x++) {
53
+ if (grid[y][x].trim()) {
54
+ item.y = y + 1;
55
+ break;
56
+ }
57
+ }
58
+ }
59
+ for (let y = item.y; y < item.y + item.height; y++) {
60
+ while (grid.length <= y) {
61
+ grid.push([...Array(width)].map(() => " "));
62
+ }
63
+ for (let x = item.x; x < item.x + item.width; x++) {
64
+ grid[y][x] = item.id;
65
+ }
66
+ }
67
+ }
68
+ items.sort((a, b) => (b.y - a.y === 0 ? b.x - a.x : b.y - a.y));
69
+ return { items, columns: width, rows: grid.length };
70
+ }
71
+ export function generateMove(grid, type = "any") {
72
+ const textGrid = toMatrix(grid);
73
+ const moveTarget = grid.items[getRandomIndex(grid.items)];
74
+ const affordance = [];
75
+ if (moveTarget.y > 0) {
76
+ affordance.push(["up", moveTarget.y]);
77
+ }
78
+ if (moveTarget.y + moveTarget.height <= textGrid.length) {
79
+ affordance.push(["down", 1 + textGrid.length - (moveTarget.y + moveTarget.height)]);
80
+ }
81
+ if (moveTarget.x > 0) {
82
+ affordance.push(["left", moveTarget.x]);
83
+ }
84
+ if (moveTarget.x + moveTarget.width < textGrid[0].length) {
85
+ affordance.push(["right", textGrid[0].length - (moveTarget.x + moveTarget.width)]);
86
+ }
87
+ function swap(type) {
88
+ const verticalAffordance = affordance.filter(([direction]) => direction === "up" || direction === "down");
89
+ const horizontalAffordance = affordance.filter(([direction]) => direction === "left" || direction === "right");
90
+ const chosenAffordance = type === "any" ? affordance : type === "vertical" ? verticalAffordance : horizontalAffordance;
91
+ if (chosenAffordance.length === 0) {
92
+ throw new Error("Move is not possible");
93
+ }
94
+ const [direction, maxDistance] = chosenAffordance[getRandomIndex(chosenAffordance)];
95
+ const distance = 1 + Math.floor(Math.random() * maxDistance);
96
+ switch (direction) {
97
+ case "up":
98
+ return new Position({ y: moveTarget.y - distance, x: moveTarget.x });
99
+ case "down":
100
+ return new Position({ y: moveTarget.y + distance, x: moveTarget.x });
101
+ case "left":
102
+ return new Position({ y: moveTarget.y, x: moveTarget.x - distance });
103
+ case "right":
104
+ return new Position({ y: moveTarget.y, x: moveTarget.x + distance });
105
+ }
106
+ }
107
+ function replace() {
108
+ const verticalAffordance = affordance.filter(([direction]) => direction === "up" || direction === "down");
109
+ const horizontalAffordance = affordance.filter(([direction]) => direction === "left" || direction === "right");
110
+ if (horizontalAffordance.length === 0) {
111
+ throw new Error("Move is not possible");
112
+ }
113
+ const [directionVertical, maxDistanceVertical] = verticalAffordance[getRandomIndex(verticalAffordance)];
114
+ const distanceVertical = 1 + Math.floor(Math.random() * maxDistanceVertical);
115
+ const [directionHorizontal, maxDistanceHorizontal] = horizontalAffordance[getRandomIndex(horizontalAffordance)];
116
+ const distanceHorizontal = 1 + Math.floor(Math.random() * maxDistanceHorizontal);
117
+ switch (`${directionVertical}-${directionHorizontal}`) {
118
+ case "top-left":
119
+ return new Position({
120
+ y: moveTarget.y - distanceVertical,
121
+ x: moveTarget.x - distanceHorizontal,
122
+ });
123
+ case "top-right":
124
+ return new Position({
125
+ y: moveTarget.y - distanceVertical,
126
+ x: moveTarget.x + distanceHorizontal,
127
+ });
128
+ case "bottom-left":
129
+ return new Position({
130
+ y: moveTarget.y + distanceVertical,
131
+ x: moveTarget.x - distanceHorizontal,
132
+ });
133
+ case "bottom-right":
134
+ return new Position({
135
+ y: moveTarget.y + distanceVertical,
136
+ x: moveTarget.x + distanceHorizontal,
137
+ });
138
+ }
139
+ return new Position({ y: moveTarget.y, x: moveTarget.x });
140
+ }
141
+ const position = (() => {
142
+ let repeatCounter = 0;
143
+ while (repeatCounter < 10) {
144
+ try {
145
+ repeatCounter++;
146
+ switch (type) {
147
+ case "vertical":
148
+ return swap("vertical");
149
+ case "horizontal":
150
+ return swap("horizontal");
151
+ case "any":
152
+ return Math.random() > 0.5 ? swap("any") : replace();
153
+ }
154
+ }
155
+ catch {
156
+ // noop
157
+ }
158
+ }
159
+ throw new Error("Move is not possible");
160
+ })();
161
+ const path = generateRandomPath(new Position({ y: moveTarget.y, x: moveTarget.x }), position);
162
+ return { itemId: moveTarget.id, path };
163
+ }
164
+ export function generateResize(grid, options) {
165
+ var _a, _b, _c, _d;
166
+ const maxWidthIncrement = (_a = options === null || options === void 0 ? void 0 : options.maxHeightIncrement) !== null && _a !== void 0 ? _a : grid.columns - 1;
167
+ const maxWidthDecrement = (_b = options === null || options === void 0 ? void 0 : options.maxHeightDecrement) !== null && _b !== void 0 ? _b : grid.columns - 1;
168
+ const maxHeightIncrement = (_c = options === null || options === void 0 ? void 0 : options.maxHeightIncrement) !== null && _c !== void 0 ? _c : Math.floor((grid.items.length - 1) % 2) + 1;
169
+ const maxHeightDecrement = (_d = options === null || options === void 0 ? void 0 : options.maxHeightDecrement) !== null && _d !== void 0 ? _d : Math.floor((grid.items.length - 1) % 2) + 1;
170
+ const resizeTarget = grid.items[getRandomIndex(grid.items)];
171
+ let maxWidthDelta = getRandomDirection();
172
+ if (maxWidthDelta === 1 && maxWidthIncrement) {
173
+ maxWidthDelta *= maxWidthIncrement;
174
+ }
175
+ else if (maxWidthDelta === -1 && maxWidthDecrement) {
176
+ maxWidthDelta *= maxWidthDecrement;
177
+ }
178
+ else if (maxWidthIncrement) {
179
+ maxWidthDelta = maxWidthIncrement;
180
+ }
181
+ else {
182
+ maxWidthDelta = -maxWidthDecrement;
183
+ }
184
+ if (resizeTarget.width + maxWidthDelta < 1) {
185
+ maxWidthDelta = -(resizeTarget.width - 1);
186
+ }
187
+ else if (resizeTarget.x + resizeTarget.width + maxWidthDelta >= grid.columns) {
188
+ maxWidthDelta = grid.columns - (resizeTarget.x + resizeTarget.width);
189
+ }
190
+ const widthDelta = Math.sign(maxWidthDelta) * getRandomInt(0, Math.abs(maxWidthDelta) + 1);
191
+ let maxHeightDelta = getRandomDirection();
192
+ if (maxHeightDelta === 1 && maxHeightIncrement) {
193
+ maxHeightDelta *= maxHeightIncrement;
194
+ }
195
+ else if (maxHeightDelta === -1 && maxHeightDecrement) {
196
+ maxHeightDelta *= maxHeightDecrement;
197
+ }
198
+ else if (maxHeightIncrement) {
199
+ maxHeightDelta = maxHeightIncrement;
200
+ }
201
+ else {
202
+ maxHeightDelta = -maxHeightDecrement;
203
+ }
204
+ if (resizeTarget.height + maxHeightDelta < 1) {
205
+ maxHeightDelta = -(resizeTarget.height - 1);
206
+ }
207
+ const heightDelta = Math.sign(maxHeightDelta) * getRandomInt(0, Math.abs(maxHeightDelta) + 1);
208
+ const path = generateRandomPath(new Position({ x: resizeTarget.x + resizeTarget.width, y: resizeTarget.y + resizeTarget.height }), new Position({
209
+ x: resizeTarget.x + resizeTarget.width + widthDelta,
210
+ y: resizeTarget.y + resizeTarget.height + heightDelta,
211
+ }));
212
+ return { itemId: resizeTarget.id, path };
213
+ }
214
+ export function generateInsert(grid, insertId = "X", options) {
215
+ var _a, _b;
216
+ const maxWidth = (_a = options === null || options === void 0 ? void 0 : options.maxWidth) !== null && _a !== void 0 ? _a : grid.columns;
217
+ const maxHeight = (_b = options === null || options === void 0 ? void 0 : options.maxHeight) !== null && _b !== void 0 ? _b : Math.floor(grid.items.length / 2) + 1;
218
+ const textGrid = toMatrix(grid);
219
+ const y = getRandomIndex(textGrid);
220
+ const x = getRandomIndex(textGrid[y]);
221
+ const width = getRandomInt(1, maxWidth + 1 - x);
222
+ const height = getRandomInt(1, maxHeight + 1);
223
+ return { itemId: insertId, width, height, path: [new Position({ x, y })] };
224
+ }
225
+ export function generateRandomPath(from, to) {
226
+ const path = [];
227
+ const directions = ["y", "x"];
228
+ const last = { ...from };
229
+ while (last.y !== to.y || last.x !== to.x) {
230
+ let direction = directions[getRandomIndex(directions)];
231
+ if (last.y === to.y) {
232
+ direction = "x";
233
+ }
234
+ if (last.x === to.x) {
235
+ direction = "y";
236
+ }
237
+ last[direction] += to[direction] > from[direction] ? 1 : -1;
238
+ path.push({ ...last });
239
+ }
240
+ return path;
241
+ }
242
+ function getRandomIndex(array) {
243
+ return Math.floor(Math.random() * array.length);
244
+ }
245
+ function getRandomOffset(gridWidth, itemWidth) {
246
+ return Math.floor(Math.random() * (1 + gridWidth - itemWidth));
247
+ }
248
+ function getRandomDirection() {
249
+ return Math.random() > 0.5 ? 1 : -1;
250
+ }
251
+ function getRandomInt(from, until) {
252
+ return Math.floor(Math.random() * (until - from)) + from;
253
+ }
254
+ function getGridItemId(index) {
255
+ const letter = LETTER_INDICES[index % LETTER_INDICES.length];
256
+ const letterIndex = Math.floor(index / LETTER_INDICES.length);
257
+ return letter + (letterIndex === 0 ? "" : letterIndex);
258
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Use debug tools for tests, test pages and experiments.
3
+ *
4
+ * Do not use them for source code.
5
+ */
6
+ export { toMatrix, toString } from "./converters";
7
+ export { generateGrid, generateMove, generateResize, generateInsert, generateRandomPath } from "./generators";
8
+ export { fromMatrix, fromTextPath } from "./parsers";
@@ -0,0 +1,10 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Use debug tools for tests, test pages and experiments.
5
+ *
6
+ * Do not use them for source code.
7
+ */
8
+ export { toMatrix, toString } from "./converters";
9
+ export { generateGrid, generateMove, generateResize, generateInsert, generateRandomPath } from "./generators";
10
+ export { fromMatrix, fromTextPath } from "./parsers";
@@ -0,0 +1,2 @@
1
+ import { ItemId } from "../interfaces";
2
+ export type GridMatrix = ItemId[][];
@@ -0,0 +1,3 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export {};
@@ -0,0 +1,8 @@
1
+ import { GridLayout } from "../interfaces";
2
+ import { Position } from "../utils/position";
3
+ import { GridMatrix } from "./interfaces";
4
+ export declare function fromMatrix(matrix: GridMatrix): GridLayout;
5
+ export declare function fromTextPath(textPath: string, gridArg: GridLayout | GridMatrix): {
6
+ itemId: string;
7
+ path: Position[];
8
+ };