@vertexvis/ui 0.1.0-canary.2 → 0.1.0-canary.20

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 (200) hide show
  1. package/dist/cjs/{color-circle-picker-13396ec4.js → color-circle-picker-a8f9a80a.js} +1 -1
  2. package/dist/cjs/color-picker-2a4820fa.js +46 -0
  3. package/dist/cjs/{color-circle-05be54bf.js → color-swatch-8aaf6c0b.js} +42 -17
  4. package/dist/cjs/components.cjs.js +1 -1
  5. package/dist/cjs/{dialog-88e2308a.js → dialog-34f1dd6e.js} +1 -1
  6. package/dist/cjs/dom-b6c5fbf4.js +13 -0
  7. package/dist/cjs/{icon-460fd0f5.js → icon-2a64c9ca.js} +1 -1
  8. package/dist/cjs/{icon-button-786427d6.js → icon-button-10617d04.js} +1 -1
  9. package/dist/cjs/{icon-helper-ba408f49.js → icon-helper-e02da963.js} +55 -0
  10. package/dist/cjs/index.cjs.js +20 -14
  11. package/dist/cjs/lib-1bd1e383.js +9 -0
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/cjs/{popover-d9ec8e10.js → popover-942209b8.js} +23 -1
  14. package/dist/cjs/{result-list-1e592c3c.js → result-list-241ffe8d.js} +46 -2
  15. package/dist/cjs/search-bar-2e7ee35a.js +527 -0
  16. package/dist/cjs/{select-0eb7203f.js → select-2b2bdb97.js} +27 -4
  17. package/dist/cjs/tab-4335cd8f.js +26 -0
  18. package/dist/cjs/tabs-ece62a01.js +111 -0
  19. package/dist/cjs/{text-field-0397fb34.js → text-field-bccbde1f.js} +1 -0
  20. package/dist/cjs/{tooltip-80a7b722.js → tooltip-9ac797a0.js} +59 -23
  21. package/dist/cjs/vertex-color-circle-picker.cjs.entry.js +1 -1
  22. package/dist/cjs/vertex-color-picker.cjs.entry.js +2 -1
  23. package/dist/cjs/vertex-color-swatch.cjs.entry.js +12 -0
  24. package/dist/cjs/vertex-dialog.cjs.entry.js +1 -1
  25. package/dist/cjs/vertex-icon-button.cjs.entry.js +2 -2
  26. package/dist/cjs/vertex-icon.cjs.entry.js +2 -2
  27. package/dist/cjs/vertex-popover.cjs.entry.js +1 -1
  28. package/dist/cjs/vertex-result-list.cjs.entry.js +1 -1
  29. package/dist/cjs/vertex-search-bar.cjs.entry.js +1 -1
  30. package/dist/cjs/vertex-select.cjs.entry.js +1 -1
  31. package/dist/cjs/{vertex-color-circle.cjs.entry.js → vertex-tab.cjs.entry.js} +3 -2
  32. package/dist/cjs/vertex-tabs.cjs.entry.js +12 -0
  33. package/dist/cjs/vertex-textfield.cjs.entry.js +1 -1
  34. package/dist/cjs/vertex-tooltip.cjs.entry.js +2 -1
  35. package/dist/collection/collection-manifest.json +5 -3
  36. package/dist/collection/components/color-circle-picker/color-circle-picker.js +7 -7
  37. package/dist/collection/components/color-picker/color-picker.css +95 -15
  38. package/dist/collection/components/color-picker/color-picker.js +57 -3
  39. package/dist/collection/components/color-swatch/color-swatch.css +43 -0
  40. package/dist/collection/components/{color-circle/color-circle.js → color-swatch/color-swatch.js} +96 -23
  41. package/dist/collection/components/color-swatch/lib.js +5 -0
  42. package/dist/collection/components/dialog/dialog.css +0 -1
  43. package/dist/collection/components/icon/icon-helper.js +30 -0
  44. package/dist/collection/components/icon/icon.js +1 -1
  45. package/dist/collection/components/icon/icons/caution.js +2 -0
  46. package/dist/collection/components/icon/icons/compare.js +2 -0
  47. package/dist/collection/components/icon/icons/compress.js +2 -0
  48. package/dist/collection/components/icon/icons/cube-stack.js +2 -0
  49. package/dist/collection/components/icon/icons/expand.js +2 -0
  50. package/dist/collection/components/icon/icons/pin-text-square.js +2 -0
  51. package/dist/collection/components/icon/icons/plus-with-arrow.js +2 -0
  52. package/dist/collection/components/icon/icons/pmi.js +2 -0
  53. package/dist/collection/components/icon/icons/update.js +2 -0
  54. package/dist/collection/components/icon/icons/views.js +2 -0
  55. package/dist/collection/components/icon-button/icon-button.js +1 -1
  56. package/dist/collection/components/index.js +3 -1
  57. package/dist/collection/components/menu/menu.js +1 -1
  58. package/dist/collection/components/popover/popover.js +51 -0
  59. package/dist/collection/components/result-list/result-list.js +52 -5
  60. package/dist/collection/components/result-list/types.js +1 -0
  61. package/dist/collection/components/search-bar/dom.js +29 -0
  62. package/dist/collection/components/search-bar/lib.js +76 -15
  63. package/dist/collection/components/search-bar/search-bar.css +0 -16
  64. package/dist/collection/components/search-bar/search-bar.js +429 -320
  65. package/dist/collection/components/select/select.css +24 -0
  66. package/dist/collection/components/select/select.js +49 -2
  67. package/dist/collection/components/tab/tab.css +16 -0
  68. package/dist/collection/components/tab/tab.js +85 -0
  69. package/dist/collection/components/tab/util.js +3 -0
  70. package/dist/collection/components/tabs/tabs.css +67 -0
  71. package/dist/collection/components/tabs/tabs.js +159 -0
  72. package/dist/collection/components/text-field/text-field.js +1 -0
  73. package/dist/collection/components/tooltip/tooltip.js +62 -18
  74. package/dist/collection/types/icon.js +10 -0
  75. package/dist/collection/util/templates/element-pool.js +19 -1
  76. package/dist/components/components.css +1 -1
  77. package/dist/components/components.esm.js +1 -1
  78. package/dist/components/index.esm.js +1 -1
  79. package/dist/components/{p-165aed7d.js → p-0d4a0d61.js} +1 -1
  80. package/dist/components/{p-9374ef6c.js → p-1367d3af.js} +1 -1
  81. package/dist/components/p-1d08dd79.entry.js +1 -0
  82. package/dist/components/p-22b31415.js +1 -0
  83. package/dist/components/p-2ae8175d.entry.js +1 -0
  84. package/dist/components/p-2b4aedaa.entry.js +1 -0
  85. package/dist/components/p-3438c441.js +1 -0
  86. package/dist/components/p-3dd7a75f.entry.js +1 -0
  87. package/dist/components/p-406e73da.entry.js +1 -0
  88. package/dist/components/p-4327deea.js +1 -0
  89. package/dist/components/p-43b1b3f9.js +1 -0
  90. package/dist/components/{p-103249b4.js → p-55cb5c21.js} +1 -1
  91. package/dist/components/p-606596de.entry.js +1 -0
  92. package/dist/components/p-655053df.js +1 -0
  93. package/dist/components/p-69496858.js +1 -0
  94. package/dist/components/p-6a49c365.entry.js +1 -0
  95. package/dist/components/p-6b6c2260.js +1 -0
  96. package/dist/components/p-6b862967.js +1 -0
  97. package/dist/components/p-76b961b8.js +1 -0
  98. package/dist/components/{p-ca52a423.js → p-87e1b90c.js} +1 -1
  99. package/dist/components/p-8bbc344d.entry.js +1 -0
  100. package/dist/components/p-96f55673.js +1 -0
  101. package/dist/components/p-a0eac69c.entry.js +1 -0
  102. package/dist/components/p-b4cc4527.entry.js +1 -0
  103. package/dist/components/p-c2706288.js +1 -0
  104. package/dist/components/p-d3d2a217.entry.js +1 -0
  105. package/dist/components/p-d3fd9ca3.entry.js +1 -0
  106. package/dist/components/p-d539f530.js +1 -0
  107. package/dist/components/p-e35057b5.entry.js +1 -0
  108. package/dist/components/p-ee496965.entry.js +1 -0
  109. package/dist/components/p-ff7c70b9.js +1 -0
  110. package/dist/esm/{color-circle-picker-998a7e9c.js → color-circle-picker-e2a2cfb5.js} +1 -1
  111. package/dist/esm/color-picker-1d67effe.js +44 -0
  112. package/dist/esm/{color-circle-842f3321.js → color-swatch-0e62d13d.js} +42 -17
  113. package/dist/esm/components.js +1 -1
  114. package/dist/esm/{dialog-e3f49527.js → dialog-1cef715c.js} +1 -1
  115. package/dist/esm/dom-613e2677.js +10 -0
  116. package/dist/esm/{icon-d37150b4.js → icon-66108b5e.js} +1 -1
  117. package/dist/esm/{icon-button-aad3c0e7.js → icon-button-69915979.js} +1 -1
  118. package/dist/esm/{icon-helper-83f10f73.js → icon-helper-c07c7052.js} +55 -0
  119. package/dist/esm/index.js +17 -13
  120. package/dist/esm/lib-73fbca8b.js +7 -0
  121. package/dist/esm/loader.js +1 -1
  122. package/dist/esm/{popover-67c88e4b.js → popover-6e806354.js} +23 -1
  123. package/dist/esm/{result-list-36cfb08a.js → result-list-16c6afbd.js} +46 -2
  124. package/dist/esm/search-bar-8d18626e.js +525 -0
  125. package/dist/esm/{select-75ed5653.js → select-78aeff96.js} +27 -4
  126. package/dist/esm/tab-c76332b0.js +24 -0
  127. package/dist/esm/tabs-8e5353ba.js +109 -0
  128. package/dist/esm/{text-field-e542da25.js → text-field-32ac877e.js} +1 -0
  129. package/dist/esm/{tooltip-97c1b3ec.js → tooltip-29278ea4.js} +58 -22
  130. package/dist/esm/vertex-color-circle-picker.entry.js +1 -1
  131. package/dist/esm/vertex-color-picker.entry.js +2 -1
  132. package/dist/esm/vertex-color-swatch.entry.js +4 -0
  133. package/dist/esm/vertex-dialog.entry.js +1 -1
  134. package/dist/esm/vertex-icon-button.entry.js +2 -2
  135. package/dist/esm/vertex-icon.entry.js +2 -2
  136. package/dist/esm/vertex-popover.entry.js +1 -1
  137. package/dist/esm/vertex-result-list.entry.js +1 -1
  138. package/dist/esm/vertex-search-bar.entry.js +1 -1
  139. package/dist/esm/vertex-select.entry.js +1 -1
  140. package/dist/esm/vertex-tab.entry.js +3 -0
  141. package/dist/esm/vertex-tabs.entry.js +4 -0
  142. package/dist/esm/vertex-textfield.entry.js +1 -1
  143. package/dist/esm/vertex-tooltip.entry.js +2 -1
  144. package/dist/types/components/color-circle-picker/color-circle-picker.d.ts +7 -7
  145. package/dist/types/components/color-picker/color-picker.d.ts +19 -0
  146. package/dist/types/components/{color-circle/color-circle.d.ts → color-swatch/color-swatch.d.ts} +23 -5
  147. package/dist/types/components/color-swatch/lib.d.ts +1 -0
  148. package/dist/types/components/icon/icons/caution.d.ts +3 -0
  149. package/dist/types/components/icon/icons/compare.d.ts +3 -0
  150. package/dist/types/components/icon/icons/compress.d.ts +3 -0
  151. package/dist/types/components/icon/icons/cube-stack.d.ts +3 -0
  152. package/dist/types/components/icon/icons/expand.d.ts +3 -0
  153. package/dist/types/components/icon/icons/pin-text-square.d.ts +3 -0
  154. package/dist/types/components/icon/icons/plus-with-arrow.d.ts +3 -0
  155. package/dist/types/components/icon/icons/pmi.d.ts +3 -0
  156. package/dist/types/components/icon/icons/update.d.ts +3 -0
  157. package/dist/types/components/icon/icons/views.d.ts +3 -0
  158. package/dist/types/components/index.d.ts +3 -1
  159. package/dist/types/components/popover/popover.d.ts +7 -0
  160. package/dist/types/components/result-list/result-list.d.ts +6 -1
  161. package/dist/types/components/result-list/types.d.ts +4 -0
  162. package/dist/types/components/search-bar/dom.d.ts +8 -0
  163. package/dist/types/components/search-bar/lib.d.ts +31 -6
  164. package/dist/types/components/search-bar/search-bar.d.ts +125 -42
  165. package/dist/types/components/select/select.d.ts +8 -0
  166. package/dist/types/components/tab/tab.d.ts +11 -0
  167. package/dist/types/components/tab/util.d.ts +1 -0
  168. package/dist/types/components/tabs/tabs.d.ts +23 -0
  169. package/dist/types/components/tooltip/tooltip.d.ts +7 -0
  170. package/dist/types/components.d.ts +254 -96
  171. package/dist/types/types/icon.d.ts +10 -0
  172. package/dist/types/util/templates/element-pool.d.ts +10 -1
  173. package/package.json +4 -3
  174. package/dist/cjs/color-picker-876ace00.js +0 -37
  175. package/dist/cjs/search-bar-bb40cfa7.js +0 -290
  176. package/dist/collection/components/color-circle/color-circle.css +0 -18
  177. package/dist/components/p-03dbb28c.js +0 -1
  178. package/dist/components/p-0f8b9ede.entry.js +0 -1
  179. package/dist/components/p-19318fee.entry.js +0 -1
  180. package/dist/components/p-1d6cb015.entry.js +0 -1
  181. package/dist/components/p-209db2ba.entry.js +0 -1
  182. package/dist/components/p-20a74d5d.entry.js +0 -1
  183. package/dist/components/p-35e7ab78.entry.js +0 -1
  184. package/dist/components/p-4224c2ad.js +0 -1
  185. package/dist/components/p-52739247.js +0 -1
  186. package/dist/components/p-552c128f.js +0 -1
  187. package/dist/components/p-6505cdb3.js +0 -1
  188. package/dist/components/p-7dba2574.entry.js +0 -1
  189. package/dist/components/p-7f64b251.entry.js +0 -1
  190. package/dist/components/p-8434602f.js +0 -1
  191. package/dist/components/p-ae6a3c46.entry.js +0 -1
  192. package/dist/components/p-bd11e7d1.js +0 -1
  193. package/dist/components/p-d9b9aebe.js +0 -1
  194. package/dist/components/p-e576818b.entry.js +0 -1
  195. package/dist/components/p-ebabee40.entry.js +0 -1
  196. package/dist/components/p-f49a7ffd.js +0 -1
  197. package/dist/components/p-f71fc166.entry.js +0 -1
  198. package/dist/esm/color-picker-2e3b51fa.js +0 -35
  199. package/dist/esm/search-bar-59cc151d.js +0 -288
  200. package/dist/esm/vertex-color-circle.entry.js +0 -2
@@ -50,7 +50,7 @@ export class IconButton {
50
50
  "mutable": false,
51
51
  "complexType": {
52
52
  "original": "IconName",
53
- "resolved": "\"help\" | \"open\" | \"info\" | \"copy\" | \"menu\" | \"ellipse\" | \"line\" | \"download\" | \"rotate\" | \"close\" | \"flip\" | \"reset\" | \"resize\" | \"search\" | \"caret-down\" | \"caret-up\" | \"adjustments\" | \"align-to-global\" | \"align-to-part\" | \"align-to-surface\" | \"align-view-to-plane\" | \"annotation\" | \"arrow-filled\" | \"arrow-line-left\" | \"arrow-line-right\" | \"arrow-partial\" | \"arrow-triangle-left\" | \"arrow-triangle-right\" | \"arrow-up-circled\" | \"attachment\" | \"axis-x\" | \"axis-y\" | \"axis-z\" | \"back\" | \"box-cursor\" | \"box-select\" | \"camera\" | \"caret-left\" | \"check\" | \"check-circle\" | \"caret-right\" | \"chevron-down\" | \"chevron-left\" | \"chevron-right\" | \"chevron-up\" | \"circle-outline\" | \"close-circle-fill\" | \"close-circle\" | \"collapse-all\" | \"columns\" | \"comment-add\" | \"comment-filled\" | \"comment-reopen\" | \"comment-resolve\" | \"comment-show\" | \"cross-section\" | \"cube-orthographic\" | \"cube-perspective\" | \"delete\" | \"drag-indicator\" | \"error-circle\" | \"expand-all\" | \"export\" | \"file\" | \"file-pdf\" | \"fit-all\" | \"fit-selected\" | \"folder-plus\" | \"forward\" | \"gear\" | \"invert\" | \"line-dot-left\" | \"line-dot-right\" | \"line-hash-left\" | \"line-hash-right\" | \"locate\" | \"markup\" | \"notification\" | \"open-window\" | \"pan\" | \"pencil\" | \"person-height\" | \"person-run\" | \"person-short\" | \"person-tall\" | \"person-walk\" | \"pin-fill\" | \"pin-line\" | \"pin-text\" | \"pin-text-fill\" | \"plus\" | \"precise-measurement\" | \"rabbit\" | \"ruler\" | \"show-only-nearby\" | \"snapshots\" | \"star\" | \"tape-measure\" | \"teleport-and-align\" | \"teleport-toward\" | \"teleport\" | \"turtle\" | \"version-history\" | \"visibility-hidden\" | \"visibility-partial\" | \"visibility-visible\" | \"zoom\"",
53
+ "resolved": "\"compare\" | \"help\" | \"open\" | \"expand\" | \"info\" | \"copy\" | \"menu\" | \"ellipse\" | \"line\" | \"download\" | \"rotate\" | \"close\" | \"flip\" | \"reset\" | \"resize\" | \"search\" | \"caret-down\" | \"caret-up\" | \"adjustments\" | \"align-to-global\" | \"align-to-part\" | \"align-to-surface\" | \"align-view-to-plane\" | \"annotation\" | \"arrow-filled\" | \"arrow-line-left\" | \"arrow-line-right\" | \"arrow-partial\" | \"arrow-triangle-left\" | \"arrow-triangle-right\" | \"arrow-up-circled\" | \"attachment\" | \"axis-x\" | \"axis-y\" | \"axis-z\" | \"back\" | \"box-cursor\" | \"box-select\" | \"camera\" | \"caret-left\" | \"caution\" | \"check\" | \"check-circle\" | \"caret-right\" | \"chevron-down\" | \"chevron-left\" | \"chevron-right\" | \"chevron-up\" | \"circle-outline\" | \"close-circle-fill\" | \"close-circle\" | \"collapse-all\" | \"columns\" | \"comment-add\" | \"comment-filled\" | \"comment-reopen\" | \"comment-resolve\" | \"comment-show\" | \"compress\" | \"cross-section\" | \"cube-orthographic\" | \"cube-perspective\" | \"cube-stack\" | \"delete\" | \"drag-indicator\" | \"error-circle\" | \"expand-all\" | \"export\" | \"file\" | \"file-pdf\" | \"fit-all\" | \"fit-selected\" | \"folder-plus\" | \"forward\" | \"gear\" | \"invert\" | \"line-dot-left\" | \"line-dot-right\" | \"line-hash-left\" | \"line-hash-right\" | \"locate\" | \"markup\" | \"notification\" | \"open-window\" | \"pan\" | \"pencil\" | \"person-height\" | \"person-run\" | \"person-short\" | \"person-tall\" | \"person-walk\" | \"pin-fill\" | \"pin-line\" | \"pin-text\" | \"pin-text-fill\" | \"pin-text-square\" | \"plus\" | \"plus-with-arrow\" | \"pmi\" | \"precise-measurement\" | \"rabbit\" | \"ruler\" | \"show-only-nearby\" | \"snapshots\" | \"star\" | \"tape-measure\" | \"teleport-and-align\" | \"teleport-toward\" | \"teleport\" | \"turtle\" | \"update\" | \"version-history\" | \"views\" | \"visibility-hidden\" | \"visibility-partial\" | \"visibility-visible\" | \"zoom\"",
54
54
  "references": {
55
55
  "IconName": {
56
56
  "location": "import",
@@ -8,9 +8,9 @@ export * from './card-group/card-group';
8
8
  export * from './chip/chip';
9
9
  export * from './click-to-edit-text-field/click-to-edit-text-field';
10
10
  export * from './collapsible/collapsible';
11
- export * from './color-circle/color-circle';
12
11
  export * from './color-circle-picker/color-circle-picker';
13
12
  export * from './color-picker/color-picker';
13
+ export * from './color-swatch/color-swatch';
14
14
  export * from './context-menu/context-menu';
15
15
  export * from './dialog/dialog';
16
16
  export * from './draggable-popover/draggable-popover';
@@ -32,6 +32,8 @@ export * from './search-bar/search-bar';
32
32
  export * from './select/select';
33
33
  export * from './slider/slider';
34
34
  export * from './spinner/spinner';
35
+ export * from './tab/tab';
36
+ export * from './tabs/tabs';
35
37
  export * from './text-field/text-field';
36
38
  export * from './toast/toast';
37
39
  export * from './toggle/toggle';
@@ -182,7 +182,7 @@ export class Menu {
182
182
  "mutable": false,
183
183
  "complexType": {
184
184
  "original": "Partial<Popover>",
185
- "resolved": "undefined | ({ open?: boolean | undefined; placement?: Placement | undefined; position?: string | Point | undefined; anchorBounds?: Pick<DOMRect, \"height\" | \"width\" | \"x\" | \"y\"> | undefined; backdrop?: boolean | undefined; animated?: boolean | undefined; anchorSelector?: string | undefined; boundarySelector?: string | undefined; resizeBehavior?: PopoverResizeBehavior | undefined; overflowBehavior?: { rootBoundary?: RootBoundary | undefined; elementContext?: ElementContext | undefined; altBoundary?: boolean | undefined; padding?: Padding | undefined; boundary?: Boundary | undefined; } | undefined; flipBehavior?: { rootBoundary?: RootBoundary | undefined; elementContext?: ElementContext | undefined; altBoundary?: boolean | undefined; padding?: Padding | undefined; crossAxis?: boolean | undefined; mainAxis?: boolean | undefined; fallbackPlacements?: Placement[] | undefined; fallbackStrategy?: \"bestFit\" | \"initialPlacement\" | undefined; fallbackAxisSideDirection?: \"none\" | \"start\" | \"end\" | undefined; flipAlignment?: boolean | undefined; boundary?: Boundary | undefined; } | undefined; offsetBehavior?: OffsetOptions | undefined; updateOnResize?: boolean | undefined; dismissed?: EventEmitter<void> | undefined; connectedCallback?: (() => void) | undefined; componentDidUpdate?: (() => void) | undefined; componentDidLoad?: (() => void) | undefined; disconnectedCallback?: (() => void) | undefined; updatePosition?: ((position?: string | Point | undefined) => void) | undefined; updatePlacement?: (() => void) | undefined; updateOpened?: ((open?: boolean | undefined) => void) | undefined; updateAnimated?: (() => void) | undefined; updateMiddleware?: (() => void) | undefined; setWindow?: ((partialWindow: Pick<Window, \"innerHeight\" | \"innerWidth\">) => void) | undefined; render?: (() => IntrinsicElements) | undefined; })",
185
+ "resolved": "undefined | ({ open?: boolean | undefined; placement?: Placement | undefined; position?: string | Point | undefined; anchorBounds?: Pick<DOMRect, \"height\" | \"width\" | \"x\" | \"y\"> | undefined; backdrop?: boolean | undefined; animated?: boolean | undefined; anchorSelector?: string | undefined; boundarySelector?: string | undefined; resizeBehavior?: PopoverResizeBehavior | undefined; overflowBehavior?: { rootBoundary?: RootBoundary | undefined; elementContext?: ElementContext | undefined; altBoundary?: boolean | undefined; padding?: Padding | undefined; boundary?: Boundary | undefined; } | undefined; flipBehavior?: { rootBoundary?: RootBoundary | undefined; elementContext?: ElementContext | undefined; altBoundary?: boolean | undefined; padding?: Padding | undefined; crossAxis?: boolean | undefined; mainAxis?: boolean | undefined; fallbackPlacements?: Placement[] | undefined; fallbackStrategy?: \"bestFit\" | \"initialPlacement\" | undefined; fallbackAxisSideDirection?: \"none\" | \"start\" | \"end\" | undefined; flipAlignment?: boolean | undefined; boundary?: Boundary | undefined; } | undefined; offsetBehavior?: OffsetOptions | undefined; updateOnResize?: boolean | undefined; dismissed?: EventEmitter<void> | undefined; resizeObserverFactory?: ((cb: (entries: ResizeObserverEntry[]) => void) => ResizeObserver) | undefined; connectedCallback?: (() => void) | undefined; componentDidUpdate?: (() => void) | undefined; componentDidLoad?: (() => void) | undefined; disconnectedCallback?: (() => void) | undefined; updatePosition?: ((position?: string | Point | undefined) => void) | undefined; updatePlacement?: (() => void) | undefined; updateOpened?: ((open?: boolean | undefined) => void) | undefined; updateAnimated?: (() => void) | undefined; updateMiddleware?: (() => void) | undefined; updateResizeObserver?: (() => void) | undefined; setWindow?: ((partialWindow: Pick<Window, \"innerHeight\" | \"innerWidth\">) => void) | undefined; render?: (() => IntrinsicElements) | undefined; })",
186
186
  "references": {
187
187
  "Partial": {
188
188
  "location": "global"
@@ -24,13 +24,17 @@ export class Popover {
24
24
  this.updateOnResize = false;
25
25
  this.opened = false;
26
26
  this.computedPlacement = this.placement;
27
+ this.resizeObserverFactory = (cb) => new ResizeObserver(cb);
27
28
  this.updateListener = this.updateListener.bind(this);
28
29
  this.handlePositionUpdate = this.handlePositionUpdate.bind(this);
29
30
  this.handleResize = this.handleResize.bind(this);
31
+ this.handleMiddlewareChange = this.handleMiddlewareChange.bind(this);
30
32
  this.setWindow = this.setWindow.bind(this);
33
+ this.updateResizeObserver = this.updateResizeObserver.bind(this);
31
34
  }
32
35
  connectedCallback() {
33
36
  this.updatePosition(this.position);
37
+ this.updateResizeObserver();
34
38
  }
35
39
  componentDidUpdate() {
36
40
  if (this.shouldUpdatePosition) {
@@ -52,12 +56,14 @@ export class Popover {
52
56
  }
53
57
  }
54
58
  disconnectedCallback() {
59
+ var _a;
55
60
  this.viewportWidth = undefined;
56
61
  this.viewportHeight = undefined;
57
62
  this.opened = false;
58
63
  if (this.resizeBehavior === 'dynamic') {
59
64
  window.removeEventListener('resize', this.handleResize);
60
65
  }
66
+ (_a = this.boundaryResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
61
67
  }
62
68
  updatePosition(position) {
63
69
  if (position != null) {
@@ -81,6 +87,16 @@ export class Popover {
81
87
  updateMiddleware() {
82
88
  this.handleMiddlewareChange();
83
89
  }
90
+ updateResizeObserver() {
91
+ const observer = this.getOrCreateResizeObserver();
92
+ observer.disconnect();
93
+ if (this.boundarySelector != null) {
94
+ const element = document.querySelector(this.boundarySelector);
95
+ if (element != null) {
96
+ observer.observe(element);
97
+ }
98
+ }
99
+ }
84
100
  /**
85
101
  * @private Used for internals or testing.
86
102
  */
@@ -186,6 +202,12 @@ export class Popover {
186
202
  this.viewportWidth = this.partialWindow.innerWidth;
187
203
  this.viewportHeight = this.partialWindow.innerHeight;
188
204
  }
205
+ getOrCreateResizeObserver() {
206
+ if (this.boundaryResizeObserver == null) {
207
+ this.boundaryResizeObserver = this.resizeObserverFactory(this.handleMiddlewareChange);
208
+ }
209
+ return this.boundaryResizeObserver;
210
+ }
189
211
  getTransformClass() {
190
212
  if (this.animated) {
191
213
  switch (this.computedPlacement) {
@@ -485,6 +507,32 @@ export class Popover {
485
507
  "attribute": "update-on-resize",
486
508
  "reflect": false,
487
509
  "defaultValue": "false"
510
+ },
511
+ "resizeObserverFactory": {
512
+ "type": "unknown",
513
+ "mutable": false,
514
+ "complexType": {
515
+ "original": "(\n cb: (entries: ResizeObserverEntry[]) => void\n ) => ResizeObserver",
516
+ "resolved": "(cb: (entries: ResizeObserverEntry[]) => void) => ResizeObserver",
517
+ "references": {
518
+ "ResizeObserverEntry": {
519
+ "location": "global"
520
+ },
521
+ "ResizeObserver": {
522
+ "location": "global"
523
+ }
524
+ }
525
+ },
526
+ "required": false,
527
+ "optional": false,
528
+ "docs": {
529
+ "tags": [{
530
+ "name": "internal",
531
+ "text": undefined
532
+ }],
533
+ "text": ""
534
+ },
535
+ "defaultValue": "(cb) => new ResizeObserver(cb)"
488
536
  }
489
537
  };
490
538
  }
@@ -538,6 +586,9 @@ export class Popover {
538
586
  }, {
539
587
  "propName": "offsetBehavior",
540
588
  "methodName": "updateMiddleware"
589
+ }, {
590
+ "propName": "boundarySelector",
591
+ "methodName": "updateResizeObserver"
541
592
  }];
542
593
  }
543
594
  }
@@ -1,6 +1,6 @@
1
1
  import { h, Host, } from '@stencil/core';
2
2
  import classNames from 'classnames';
3
- import { ElementPool } from '../../util/templates/element-pool';
3
+ import { ElementPool, } from '../../util/templates/element-pool';
4
4
  import { generateInstanceFromTemplate, } from '../../util/templates/templates';
5
5
  import { getResultListHeight, scrollToResult } from './lib';
6
6
  export class ResultList {
@@ -29,7 +29,7 @@ export class ResultList {
29
29
  }
30
30
  };
31
31
  this.createResultPool = () => {
32
- this.stateMap.resultPool = new ElementPool(this.hostEl, () => this.createResultInstance());
32
+ this.stateMap.resultPool = new ElementPool(this.hostEl, () => this.createResultInstance(), () => this.createResultHandlers());
33
33
  };
34
34
  this.createResultInstance = () => {
35
35
  if (this.stateMap.resultTemplate != null) {
@@ -41,6 +41,18 @@ export class ResultList {
41
41
  throw new Error('Result template not defined.');
42
42
  }
43
43
  };
44
+ this.createResultHandlers = () => {
45
+ return [
46
+ {
47
+ type: 'pointerdown',
48
+ handler: this.handlePointerDown,
49
+ },
50
+ {
51
+ type: 'click',
52
+ handler: this.handleResultClick,
53
+ },
54
+ ];
55
+ };
44
56
  this.layoutResults = () => {
45
57
  var _a, _b, _c, _d;
46
58
  const visibleRowCount = this.viewportEndIndex - this.viewportStartIndex + 1;
@@ -61,6 +73,7 @@ export class ResultList {
61
73
  el.style.top = `${(this.viewportStartIndex + index) * this.resultHeight}px`;
62
74
  el.style.width = '100%';
63
75
  el.setAttribute('is-focused', `${this.viewportStartIndex + index === this.lastFocusedIndex}`);
76
+ el.setAttribute('data-result-id', result.id);
64
77
  binding.bind(result);
65
78
  }
66
79
  });
@@ -103,6 +116,8 @@ export class ResultList {
103
116
  this.lastStartIndex = 0;
104
117
  this.lastFocusedIndex = 0;
105
118
  this.stateMap = {};
119
+ this.handleResultClick = this.handleResultClick.bind(this);
120
+ this.handlePointerDown = this.handlePointerDown.bind(this);
106
121
  }
107
122
  handleResultsChanged(results) {
108
123
  if (typeof results === 'string') {
@@ -148,6 +163,16 @@ export class ResultList {
148
163
  height: `${this.parsedResults.length * this.resultHeight}px`,
149
164
  } }, h("slot", null), h("slot", { name: "result" })))))));
150
165
  }
166
+ handlePointerDown(event) {
167
+ event.preventDefault();
168
+ }
169
+ handleResultClick(event) {
170
+ const closestIdElement = event.target.closest('[data-result-id]');
171
+ const result = this.parsedResults.find((r) => r.id === (closestIdElement === null || closestIdElement === void 0 ? void 0 : closestIdElement.getAttribute('data-result-id')));
172
+ if (result != null) {
173
+ this.resultClick.emit(result);
174
+ }
175
+ }
151
176
  computeViewportResults() {
152
177
  const viewportHeight = this.getListHeight();
153
178
  if (viewportHeight != null && this.resultHeight > 0) {
@@ -188,7 +213,8 @@ export class ResultList {
188
213
  "resolved": "Result[]",
189
214
  "references": {
190
215
  "Result": {
191
- "location": "local"
216
+ "location": "import",
217
+ "path": "./types"
192
218
  }
193
219
  }
194
220
  },
@@ -377,10 +403,31 @@ export class ResultList {
377
403
  },
378
404
  "complexType": {
379
405
  "original": "Result",
380
- "resolved": "{ [x: string]: unknown; }",
406
+ "resolved": "{ id: string; type: string; } & Record<string, unknown>",
407
+ "references": {
408
+ "Result": {
409
+ "location": "import",
410
+ "path": "./types"
411
+ }
412
+ }
413
+ }
414
+ }, {
415
+ "method": "resultClick",
416
+ "name": "resultClick",
417
+ "bubbles": true,
418
+ "cancelable": true,
419
+ "composed": true,
420
+ "docs": {
421
+ "tags": [],
422
+ "text": ""
423
+ },
424
+ "complexType": {
425
+ "original": "Result",
426
+ "resolved": "{ id: string; type: string; } & Record<string, unknown>",
381
427
  "references": {
382
428
  "Result": {
383
- "location": "local"
429
+ "location": "import",
430
+ "path": "./types"
384
431
  }
385
432
  }
386
433
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ export const getWindowSelection = () => {
2
+ if (typeof window !== 'undefined') {
3
+ return window.getSelection();
4
+ }
5
+ return undefined;
6
+ };
7
+ export const nodeHasChildNodes = (node) => {
8
+ return node.hasChildNodes();
9
+ };
10
+ export const createDocumentRange = () => {
11
+ return document.createRange();
12
+ };
13
+ export const createTextNode = (text) => {
14
+ return new Text(text);
15
+ };
16
+ export const createBreak = () => {
17
+ return document.createElement('br');
18
+ };
19
+ export const createWrappingDiv = (nodes) => {
20
+ const el = document.createElement('div');
21
+ el.append(...nodes);
22
+ return el;
23
+ };
24
+ export const isHtmlElement = (node) => {
25
+ return node instanceof HTMLElement;
26
+ };
27
+ export const isBrElement = (node) => {
28
+ return node instanceof HTMLBRElement;
29
+ };
@@ -1,21 +1,82 @@
1
- export const getWindowSelection = () => {
2
- if (typeof window !== 'undefined') {
3
- return window.getSelection();
4
- }
5
- return undefined;
1
+ import { createBreak, createTextNode } from './dom';
2
+ export const createResultUri = (result) => {
3
+ return `${result.type}:${result.id}`;
6
4
  };
7
- export const createDocumentRange = () => {
8
- return document.createRange();
5
+ export const createSearchResultReplacement = (result, before, after) => {
6
+ const urn = createResultUri(result);
7
+ return {
8
+ before: createTextNode(before),
9
+ beforeSpace: createTextNode(createHairSpace()),
10
+ result: createTextNode(urn),
11
+ afterSpace: after != null
12
+ ? createTextNode(createNoBreakSpace())
13
+ : createTextNode(createHairSpace()),
14
+ after: after != null ? createTextNode(after) : undefined,
15
+ };
9
16
  };
10
- export const isTextNode = (node) => {
11
- return node instanceof Text;
17
+ /**
18
+ * Newline characters and spaces are represented slightly differently within a
19
+ * content editable element between browsers. This method standardizes the
20
+ * representation of those characters to avoid having to write branching logic
21
+ * to support each individual browser.
22
+ */
23
+ export const standardizeNewlinesAndSpaces = (node) => {
24
+ const content = node.textContent;
25
+ if (content === '\n') {
26
+ return [createBreak()];
27
+ }
28
+ else if (content != null && content.includes('\n')) {
29
+ const split = content.split('\n');
30
+ return split.reduce((res, substr, i) => {
31
+ const previous = split[i - 1];
32
+ // Ignore the empty string if the prior element was converted
33
+ // to a breaking element to prevent duplication of newlines.
34
+ if (substr === '' && previous !== '') {
35
+ return res;
36
+ }
37
+ return [
38
+ ...res,
39
+ // Standard spaces are not always respected with in `Text`
40
+ // elements when appended to a contenteditable element. This
41
+ // conversion preserves that spacing.
42
+ createTextNode(substr.replace(/ /g, createNoBreakSpace())),
43
+ createBreak(),
44
+ ];
45
+ }, []);
46
+ }
47
+ return [node];
48
+ };
49
+ export const getNodesForSearchResultReplacement = (replacement, isBreaking = false) => {
50
+ const keys = Object.keys(replacement);
51
+ const replacementElements = keys
52
+ .map((key) => replacement[key])
53
+ .filter((node) => node != null);
54
+ // If the element is intended to replace a breaking element such
55
+ // as a `<div>` wrapper, a newline is required alongside the standard
56
+ // replacement elements.
57
+ if (isBreaking) {
58
+ return [createTextNode('\n'), ...replacementElements];
59
+ }
60
+ return replacementElements;
12
61
  };
13
- export const isHtmlElement = (target) => {
14
- return target instanceof HTMLElement;
62
+ /**
63
+ * We leverage a couple unique spaces to represent mentions, allowing for
64
+ * correct cursor movement when using arrow keys. As these characters are
65
+ * purely for functional behavior of the input, `trimNonstandardSpaces`
66
+ * will remove them so the input is suitable for emitting.
67
+ *
68
+ * U+200A is a "Hair Space" which acts as a space, but is not visually
69
+ * represented as one.
70
+ *
71
+ * U+00A0 is a "No-Break Space" which is commonly added by browsers
72
+ * when interacting with a contenteditable element.
73
+ */
74
+ export const trimNonstandardSpaces = (text) => {
75
+ return text.replace(/[\u200A]/g, '').replace(/[\u00A0]/g, ' ');
15
76
  };
16
- export const isReplacedElement = (el) => {
17
- return (el === null || el === void 0 ? void 0 : el.getAttribute('data-replaced')) === 'true';
77
+ const createHairSpace = () => {
78
+ return String.fromCharCode(8202);
18
79
  };
19
- export const createTextNode = (text) => {
20
- return new Text(text != null && text !== '' ? text : ' ');
80
+ const createNoBreakSpace = () => {
81
+ return String.fromCharCode(160);
21
82
  };
@@ -11,15 +11,6 @@
11
11
  line-height: 1.4;
12
12
  }
13
13
 
14
- .test-mention {
15
- display: inline-block;
16
- color: blue;
17
- }
18
-
19
- .hidden {
20
- visibility: hidden;
21
- }
22
-
23
14
  .content-input {
24
15
  width: 100%;
25
16
  box-sizing: border-box;
@@ -33,13 +24,6 @@
33
24
  white-space: pre-line;
34
25
  }
35
26
 
36
- .textarea {
37
- overflow: hidden;
38
- outline: none;
39
- box-shadow: none;
40
- resize: none;
41
- }
42
-
43
27
  .content-input:focus {
44
28
  outline: none;
45
29
  }