@hashicorp/design-system-components 4.15.0 → 4.17.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 (525) hide show
  1. package/README.md +4 -8
  2. package/declarations/components/hds/advanced-table/expandable-tr-group.d.ts +45 -0
  3. package/declarations/components/hds/advanced-table/expandable-tr-group.d.ts.map +1 -0
  4. package/declarations/components/hds/advanced-table/index.d.ts +83 -0
  5. package/declarations/components/hds/advanced-table/index.d.ts.map +1 -0
  6. package/declarations/components/hds/advanced-table/td.d.ts +34 -0
  7. package/declarations/components/hds/advanced-table/td.d.ts.map +1 -0
  8. package/declarations/components/hds/advanced-table/th-button-expand.d.ts +22 -0
  9. package/declarations/components/hds/advanced-table/th-button-expand.d.ts.map +1 -0
  10. package/declarations/components/hds/advanced-table/th-button-sort.d.ts +23 -0
  11. package/declarations/components/hds/advanced-table/th-button-sort.d.ts.map +1 -0
  12. package/declarations/components/hds/advanced-table/th-button-tooltip.d.ts +18 -0
  13. package/declarations/components/hds/advanced-table/th-button-tooltip.d.ts.map +1 -0
  14. package/declarations/components/hds/advanced-table/th-selectable.d.ts +36 -0
  15. package/declarations/components/hds/advanced-table/th-selectable.d.ts.map +1 -0
  16. package/declarations/components/hds/advanced-table/th-sort.d.ts +38 -0
  17. package/declarations/components/hds/advanced-table/th-sort.d.ts.map +1 -0
  18. package/declarations/components/hds/advanced-table/th.d.ts +47 -0
  19. package/declarations/components/hds/advanced-table/th.d.ts.map +1 -0
  20. package/declarations/components/hds/advanced-table/tr.d.ts +44 -0
  21. package/declarations/components/hds/advanced-table/tr.d.ts.map +1 -0
  22. package/declarations/components/hds/advanced-table/types.d.ts +85 -0
  23. package/declarations/components/hds/advanced-table/types.d.ts.map +1 -0
  24. package/declarations/components/hds/alert/index.d.ts +2 -1
  25. package/declarations/components/hds/alert/index.d.ts.map +1 -1
  26. package/declarations/components/hds/app-footer/status-link.d.ts +3 -2
  27. package/declarations/components/hds/app-footer/status-link.d.ts.map +1 -1
  28. package/declarations/components/hds/app-header/index.d.ts +2 -1
  29. package/declarations/components/hds/app-header/index.d.ts.map +1 -1
  30. package/declarations/components/hds/app-side-nav/index.d.ts +2 -1
  31. package/declarations/components/hds/app-side-nav/index.d.ts.map +1 -1
  32. package/declarations/components/hds/app-side-nav/portal/target.d.ts.map +1 -1
  33. package/declarations/components/hds/breadcrumb/item.d.ts +1 -1
  34. package/declarations/components/hds/breadcrumb/item.d.ts.map +1 -1
  35. package/declarations/components/hds/code-block/copy-button.d.ts +5 -2
  36. package/declarations/components/hds/code-block/copy-button.d.ts.map +1 -1
  37. package/declarations/components/hds/code-block/index.d.ts +3 -0
  38. package/declarations/components/hds/code-block/index.d.ts.map +1 -1
  39. package/declarations/components/hds/code-editor/description.d.ts +22 -0
  40. package/declarations/components/hds/code-editor/description.d.ts.map +1 -0
  41. package/declarations/components/hds/code-editor/full-screen-button.d.ts +18 -0
  42. package/declarations/components/hds/code-editor/full-screen-button.d.ts.map +1 -0
  43. package/declarations/components/hds/code-editor/generic.d.ts +13 -0
  44. package/declarations/components/hds/code-editor/generic.d.ts.map +1 -0
  45. package/declarations/components/hds/code-editor/index.d.ts +54 -0
  46. package/declarations/components/hds/code-editor/index.d.ts.map +1 -0
  47. package/declarations/components/hds/code-editor/title.d.ts +24 -0
  48. package/declarations/components/hds/code-editor/title.d.ts.map +1 -0
  49. package/declarations/components/hds/dropdown/list-item/interactive.d.ts +2 -1
  50. package/declarations/components/hds/dropdown/list-item/interactive.d.ts.map +1 -1
  51. package/declarations/components/hds/dropdown/toggle/icon.d.ts +2 -1
  52. package/declarations/components/hds/dropdown/toggle/icon.d.ts.map +1 -1
  53. package/declarations/components/hds/flyout/body.d.ts +2 -1
  54. package/declarations/components/hds/flyout/body.d.ts.map +1 -1
  55. package/declarations/components/hds/flyout/description.d.ts +2 -1
  56. package/declarations/components/hds/flyout/description.d.ts.map +1 -1
  57. package/declarations/components/hds/flyout/footer.d.ts +2 -1
  58. package/declarations/components/hds/flyout/footer.d.ts.map +1 -1
  59. package/declarations/components/hds/flyout/header.d.ts +2 -1
  60. package/declarations/components/hds/flyout/header.d.ts.map +1 -1
  61. package/declarations/components/hds/form/masked-input/base.d.ts +5 -2
  62. package/declarations/components/hds/form/masked-input/base.d.ts.map +1 -1
  63. package/declarations/components/hds/form/super-select/multiple/base.d.ts +1 -1
  64. package/declarations/components/hds/form/super-select/multiple/base.d.ts.map +1 -1
  65. package/declarations/components/hds/form/super-select/single/base.d.ts +1 -1
  66. package/declarations/components/hds/form/super-select/single/base.d.ts.map +1 -1
  67. package/declarations/components/hds/form/text-input/field.d.ts +3 -2
  68. package/declarations/components/hds/form/text-input/field.d.ts.map +1 -1
  69. package/declarations/components/hds/icon/index.d.ts +2 -1
  70. package/declarations/components/hds/icon/index.d.ts.map +1 -1
  71. package/declarations/components/hds/interactive/index.d.ts +1 -1
  72. package/declarations/components/hds/interactive/index.d.ts.map +1 -1
  73. package/declarations/components/hds/link/inline.d.ts +2 -1
  74. package/declarations/components/hds/link/inline.d.ts.map +1 -1
  75. package/declarations/components/hds/link/standalone.d.ts +2 -1
  76. package/declarations/components/hds/link/standalone.d.ts.map +1 -1
  77. package/declarations/components/hds/menu-primitive/index.d.ts +2 -1
  78. package/declarations/components/hds/menu-primitive/index.d.ts.map +1 -1
  79. package/declarations/components/hds/modal/body.d.ts +2 -1
  80. package/declarations/components/hds/modal/body.d.ts.map +1 -1
  81. package/declarations/components/hds/modal/footer.d.ts +2 -1
  82. package/declarations/components/hds/modal/footer.d.ts.map +1 -1
  83. package/declarations/components/hds/modal/header.d.ts +2 -1
  84. package/declarations/components/hds/modal/header.d.ts.map +1 -1
  85. package/declarations/components/hds/pagination/compact/index.d.ts +2 -1
  86. package/declarations/components/hds/pagination/compact/index.d.ts.map +1 -1
  87. package/declarations/components/hds/pagination/numbered/index.d.ts +3 -2
  88. package/declarations/components/hds/pagination/numbered/index.d.ts.map +1 -1
  89. package/declarations/components/hds/popover-primitive/index.d.ts +2 -1
  90. package/declarations/components/hds/popover-primitive/index.d.ts.map +1 -1
  91. package/declarations/components/hds/rich-tooltip/toggle.d.ts.map +1 -1
  92. package/declarations/components/hds/side-nav/header/icon-button.d.ts +2 -1
  93. package/declarations/components/hds/side-nav/header/icon-button.d.ts.map +1 -1
  94. package/declarations/components/hds/side-nav/index.d.ts +2 -1
  95. package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
  96. package/declarations/components/hds/side-nav/portal/target.d.ts.map +1 -1
  97. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  98. package/declarations/components/hds/stepper/task/indicator.d.ts.map +1 -1
  99. package/declarations/components/hds/table/index.d.ts +2 -1
  100. package/declarations/components/hds/table/index.d.ts.map +1 -1
  101. package/declarations/components/hds/table/th-selectable.d.ts +3 -3
  102. package/declarations/components/hds/table/th-selectable.d.ts.map +1 -1
  103. package/declarations/components/hds/tabs/index.d.ts +2 -1
  104. package/declarations/components/hds/tabs/index.d.ts.map +1 -1
  105. package/declarations/components/hds/tabs/tab.d.ts +7 -1
  106. package/declarations/components/hds/tabs/tab.d.ts.map +1 -1
  107. package/declarations/components/hds/tag/index.d.ts +16 -0
  108. package/declarations/components/hds/tag/index.d.ts.map +1 -1
  109. package/declarations/components/hds/tag/types.d.ts +15 -0
  110. package/declarations/components/hds/tag/types.d.ts.map +1 -1
  111. package/declarations/components/hds/time/index.d.ts.map +1 -1
  112. package/declarations/components.d.ts +15 -0
  113. package/declarations/components.d.ts.map +1 -1
  114. package/declarations/helpers/hds-format-date.d.ts +16 -3
  115. package/declarations/helpers/hds-format-date.d.ts.map +1 -1
  116. package/declarations/helpers/hds-format-relative.d.ts +9 -3
  117. package/declarations/helpers/hds-format-relative.d.ts.map +1 -1
  118. package/declarations/helpers/hds-link-to-models.d.ts +7 -1
  119. package/declarations/helpers/hds-link-to-models.d.ts.map +1 -1
  120. package/declarations/helpers/hds-link-to-query.d.ts +7 -1
  121. package/declarations/helpers/hds-link-to-query.d.ts.map +1 -1
  122. package/declarations/instance-initializers/load-sprite.d.ts.map +1 -1
  123. package/declarations/modifiers/hds-advanced-table-cell/dom-management.d.ts +10 -0
  124. package/declarations/modifiers/hds-advanced-table-cell/dom-management.d.ts.map +1 -0
  125. package/declarations/modifiers/hds-advanced-table-cell/keyboard-navigation.d.ts +6 -0
  126. package/declarations/modifiers/hds-advanced-table-cell/keyboard-navigation.d.ts.map +1 -0
  127. package/declarations/modifiers/hds-advanced-table-cell.d.ts +26 -0
  128. package/declarations/modifiers/hds-advanced-table-cell.d.ts.map +1 -0
  129. package/declarations/modifiers/hds-clipboard.d.ts.map +1 -1
  130. package/declarations/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.d.ts +8 -0
  131. package/declarations/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.d.ts.map +1 -0
  132. package/declarations/modifiers/hds-code-editor/languages/rego.d.ts +48 -0
  133. package/declarations/modifiers/hds-code-editor/languages/rego.d.ts.map +1 -0
  134. package/declarations/modifiers/hds-code-editor/languages/sentinel.d.ts +48 -0
  135. package/declarations/modifiers/hds-code-editor/languages/sentinel.d.ts.map +1 -0
  136. package/declarations/modifiers/hds-code-editor/palettes/hds-dark-palette.d.ts +21 -0
  137. package/declarations/modifiers/hds-code-editor/palettes/hds-dark-palette.d.ts.map +1 -0
  138. package/declarations/modifiers/hds-code-editor/themes/hds-dark-theme.d.ts +7 -0
  139. package/declarations/modifiers/hds-code-editor/themes/hds-dark-theme.d.ts.map +1 -0
  140. package/declarations/modifiers/hds-code-editor/types.d.ts +18 -0
  141. package/declarations/modifiers/hds-code-editor/types.d.ts.map +1 -0
  142. package/declarations/modifiers/hds-code-editor.d.ts +47 -0
  143. package/declarations/modifiers/hds-code-editor.d.ts.map +1 -0
  144. package/declarations/modifiers/hds-tooltip.d.ts +4 -2
  145. package/declarations/modifiers/hds-tooltip.d.ts.map +1 -1
  146. package/declarations/services/hds-time-types.d.ts +7 -7
  147. package/declarations/services/hds-time-types.d.ts.map +1 -1
  148. package/declarations/services/hds-time.d.ts +7 -3
  149. package/declarations/services/hds-time.d.ts.map +1 -1
  150. package/declarations/template-registry.d.ts +49 -0
  151. package/declarations/template-registry.d.ts.map +1 -1
  152. package/dist/README.md +4 -8
  153. package/dist/_app_/components/hds/advanced-table/expandable-tr-group.js +1 -0
  154. package/dist/_app_/components/hds/advanced-table/index.js +1 -0
  155. package/dist/_app_/components/hds/advanced-table/td.js +1 -0
  156. package/dist/_app_/components/hds/advanced-table/th-button-expand.js +1 -0
  157. package/dist/_app_/components/hds/advanced-table/th-button-sort.js +1 -0
  158. package/dist/_app_/components/hds/advanced-table/th-button-tooltip.js +1 -0
  159. package/dist/_app_/components/hds/advanced-table/th-selectable.js +1 -0
  160. package/dist/_app_/components/hds/advanced-table/th-sort.js +1 -0
  161. package/dist/_app_/components/hds/advanced-table/th.js +1 -0
  162. package/dist/_app_/components/hds/advanced-table/tr.js +1 -0
  163. package/dist/_app_/components/hds/code-editor/description.js +1 -0
  164. package/dist/_app_/components/hds/code-editor/full-screen-button.js +1 -0
  165. package/dist/_app_/components/hds/code-editor/generic.js +1 -0
  166. package/dist/_app_/components/hds/code-editor/index.js +1 -0
  167. package/dist/_app_/components/hds/code-editor/title.js +1 -0
  168. package/dist/_app_/modifiers/hds-advanced-table-cell/dom-management.js +1 -0
  169. package/dist/_app_/modifiers/hds-advanced-table-cell/keyboard-navigation.js +1 -0
  170. package/dist/_app_/modifiers/hds-advanced-table-cell.js +1 -0
  171. package/dist/_app_/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.js +1 -0
  172. package/dist/_app_/modifiers/hds-code-editor/languages/rego.js +1 -0
  173. package/dist/_app_/modifiers/hds-code-editor/languages/sentinel.js +1 -0
  174. package/dist/_app_/modifiers/hds-code-editor/palettes/hds-dark-palette.js +1 -0
  175. package/dist/_app_/modifiers/hds-code-editor/themes/hds-dark-theme.js +1 -0
  176. package/dist/_app_/modifiers/hds-code-editor/types.js +1 -0
  177. package/dist/_app_/modifiers/hds-code-editor.js +1 -0
  178. package/dist/components/hds/accordion/index.js.map +1 -1
  179. package/dist/components/hds/accordion/item/button.js +11 -4
  180. package/dist/components/hds/accordion/item/button.js.map +1 -1
  181. package/dist/components/hds/accordion/item/index.js +12 -11
  182. package/dist/components/hds/accordion/item/index.js.map +1 -1
  183. package/dist/components/hds/advanced-table/expandable-tr-group.js +74 -0
  184. package/dist/components/hds/advanced-table/expandable-tr-group.js.map +1 -0
  185. package/dist/components/hds/advanced-table/index.js +328 -0
  186. package/dist/components/hds/advanced-table/index.js.map +1 -0
  187. package/dist/components/hds/advanced-table/td.js +89 -0
  188. package/dist/components/hds/advanced-table/td.js.map +1 -0
  189. package/dist/components/hds/advanced-table/th-button-expand.js +53 -0
  190. package/dist/components/hds/advanced-table/th-button-expand.js.map +1 -0
  191. package/dist/components/hds/advanced-table/th-button-sort.js +58 -0
  192. package/dist/components/hds/advanced-table/th-button-sort.js.map +1 -0
  193. package/dist/components/hds/advanced-table/th-button-tooltip.js +29 -0
  194. package/dist/components/hds/advanced-table/th-button-tooltip.js.map +1 -0
  195. package/dist/components/hds/advanced-table/th-selectable.js +100 -0
  196. package/dist/components/hds/advanced-table/th-selectable.js.map +1 -0
  197. package/dist/components/hds/advanced-table/th-sort.js +88 -0
  198. package/dist/components/hds/advanced-table/th-sort.js.map +1 -0
  199. package/dist/components/hds/advanced-table/th.js +105 -0
  200. package/dist/components/hds/advanced-table/th.js.map +1 -0
  201. package/dist/components/hds/advanced-table/tr.js +39 -0
  202. package/dist/components/hds/advanced-table/tr.js.map +1 -0
  203. package/dist/components/hds/advanced-table/types.js +54 -0
  204. package/dist/components/hds/advanced-table/types.js.map +1 -0
  205. package/dist/components/hds/alert/description.js.map +1 -1
  206. package/dist/components/hds/alert/index.js +19 -16
  207. package/dist/components/hds/alert/index.js.map +1 -1
  208. package/dist/components/hds/alert/title.js.map +1 -1
  209. package/dist/components/hds/app-footer/copyright.js.map +1 -1
  210. package/dist/components/hds/app-footer/index.js.map +1 -1
  211. package/dist/components/hds/app-footer/item.js.map +1 -1
  212. package/dist/components/hds/app-footer/legal-links.js.map +1 -1
  213. package/dist/components/hds/app-footer/link.js.map +1 -1
  214. package/dist/components/hds/app-footer/status-link.js.map +1 -1
  215. package/dist/components/hds/app-frame/index.js.map +1 -1
  216. package/dist/components/hds/app-frame/parts/footer.js.map +1 -1
  217. package/dist/components/hds/app-frame/parts/header.js.map +1 -1
  218. package/dist/components/hds/app-frame/parts/main.js.map +1 -1
  219. package/dist/components/hds/app-frame/parts/modals.js.map +1 -1
  220. package/dist/components/hds/app-frame/parts/sidebar.js.map +1 -1
  221. package/dist/components/hds/app-header/home-link.js.map +1 -1
  222. package/dist/components/hds/app-header/index.js +42 -34
  223. package/dist/components/hds/app-header/index.js.map +1 -1
  224. package/dist/components/hds/app-header/menu-button.js +11 -4
  225. package/dist/components/hds/app-header/menu-button.js.map +1 -1
  226. package/dist/components/hds/app-side-nav/index.js +44 -31
  227. package/dist/components/hds/app-side-nav/index.js.map +1 -1
  228. package/dist/components/hds/app-side-nav/list/back-link.js.map +1 -1
  229. package/dist/components/hds/app-side-nav/list/index.js +15 -13
  230. package/dist/components/hds/app-side-nav/list/index.js.map +1 -1
  231. package/dist/components/hds/app-side-nav/list/item.js.map +1 -1
  232. package/dist/components/hds/app-side-nav/list/link.js.map +1 -1
  233. package/dist/components/hds/app-side-nav/list/title.js +13 -9
  234. package/dist/components/hds/app-side-nav/list/title.js.map +1 -1
  235. package/dist/components/hds/app-side-nav/portal/index.js.map +1 -1
  236. package/dist/components/hds/app-side-nav/portal/target.js +31 -28
  237. package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
  238. package/dist/components/hds/app-side-nav/toggle-button.js.map +1 -1
  239. package/dist/components/hds/application-state/body.js.map +1 -1
  240. package/dist/components/hds/application-state/footer.js.map +1 -1
  241. package/dist/components/hds/application-state/header.js.map +1 -1
  242. package/dist/components/hds/application-state/index.js.map +1 -1
  243. package/dist/components/hds/application-state/media.js.map +1 -1
  244. package/dist/components/hds/badge/index.js.map +1 -1
  245. package/dist/components/hds/badge-count/index.js.map +1 -1
  246. package/dist/components/hds/breadcrumb/index.js.map +1 -1
  247. package/dist/components/hds/breadcrumb/item.js +1 -1
  248. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  249. package/dist/components/hds/breadcrumb/truncation.js.map +1 -1
  250. package/dist/components/hds/button/index.js.map +1 -1
  251. package/dist/components/hds/button-set/index.js.map +1 -1
  252. package/dist/components/hds/card/container.js.map +1 -1
  253. package/dist/components/hds/code-block/copy-button.js +9 -5
  254. package/dist/components/hds/code-block/copy-button.js.map +1 -1
  255. package/dist/components/hds/code-block/description.js.map +1 -1
  256. package/dist/components/hds/code-block/index.js +27 -21
  257. package/dist/components/hds/code-block/index.js.map +1 -1
  258. package/dist/components/hds/code-block/title.js.map +1 -1
  259. package/dist/components/hds/code-editor/description.js +18 -0
  260. package/dist/components/hds/code-editor/description.js.map +1 -0
  261. package/dist/components/hds/code-editor/full-screen-button.js +26 -0
  262. package/dist/components/hds/code-editor/full-screen-button.js.map +1 -0
  263. package/dist/components/hds/code-editor/generic.js +16 -0
  264. package/dist/components/hds/code-editor/generic.js.map +1 -0
  265. package/dist/components/hds/code-editor/index.js +135 -0
  266. package/dist/components/hds/code-editor/index.js.map +1 -0
  267. package/dist/components/hds/code-editor/title.js +21 -0
  268. package/dist/components/hds/code-editor/title.js.map +1 -0
  269. package/dist/components/hds/copy/button/index.js +23 -20
  270. package/dist/components/hds/copy/button/index.js.map +1 -1
  271. package/dist/components/hds/copy/snippet/index.js +23 -20
  272. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  273. package/dist/components/hds/dialog-primitive/body.js.map +1 -1
  274. package/dist/components/hds/dialog-primitive/description.js.map +1 -1
  275. package/dist/components/hds/dialog-primitive/footer.js.map +1 -1
  276. package/dist/components/hds/dialog-primitive/header.js.map +1 -1
  277. package/dist/components/hds/dialog-primitive/overlay.js.map +1 -1
  278. package/dist/components/hds/dialog-primitive/wrapper.js.map +1 -1
  279. package/dist/components/hds/disclosure-primitive/index.js +27 -21
  280. package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
  281. package/dist/components/hds/dismiss-button/index.js.map +1 -1
  282. package/dist/components/hds/dropdown/footer.js.map +1 -1
  283. package/dist/components/hds/dropdown/header.js.map +1 -1
  284. package/dist/components/hds/dropdown/index.js +12 -5
  285. package/dist/components/hds/dropdown/index.js.map +1 -1
  286. package/dist/components/hds/dropdown/list-item/checkbox.js.map +1 -1
  287. package/dist/components/hds/dropdown/list-item/checkmark.js.map +1 -1
  288. package/dist/components/hds/dropdown/list-item/copy-item.js.map +1 -1
  289. package/dist/components/hds/dropdown/list-item/description.js.map +1 -1
  290. package/dist/components/hds/dropdown/list-item/generic.js.map +1 -1
  291. package/dist/components/hds/dropdown/list-item/interactive.js.map +1 -1
  292. package/dist/components/hds/dropdown/list-item/radio.js.map +1 -1
  293. package/dist/components/hds/dropdown/list-item/separator.js.map +1 -1
  294. package/dist/components/hds/dropdown/list-item/title.js.map +1 -1
  295. package/dist/components/hds/dropdown/toggle/button.js +12 -10
  296. package/dist/components/hds/dropdown/toggle/button.js.map +1 -1
  297. package/dist/components/hds/dropdown/toggle/chevron.js.map +1 -1
  298. package/dist/components/hds/dropdown/toggle/icon.js +20 -12
  299. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  300. package/dist/components/hds/flyout/body.js +2 -1
  301. package/dist/components/hds/flyout/body.js.map +1 -1
  302. package/dist/components/hds/flyout/description.js +1 -0
  303. package/dist/components/hds/flyout/description.js.map +1 -1
  304. package/dist/components/hds/flyout/footer.js +2 -1
  305. package/dist/components/hds/flyout/footer.js.map +1 -1
  306. package/dist/components/hds/flyout/header.js +2 -1
  307. package/dist/components/hds/flyout/header.js.map +1 -1
  308. package/dist/components/hds/flyout/index.js +33 -18
  309. package/dist/components/hds/flyout/index.js.map +1 -1
  310. package/dist/components/hds/form/character-count/index.js.map +1 -1
  311. package/dist/components/hds/form/checkbox/base.js.map +1 -1
  312. package/dist/components/hds/form/checkbox/field.js.map +1 -1
  313. package/dist/components/hds/form/checkbox/group.js.map +1 -1
  314. package/dist/components/hds/form/error/index.js.map +1 -1
  315. package/dist/components/hds/form/error/message.js.map +1 -1
  316. package/dist/components/hds/form/field/index.js +15 -7
  317. package/dist/components/hds/form/field/index.js.map +1 -1
  318. package/dist/components/hds/form/fieldset/index.js +15 -7
  319. package/dist/components/hds/form/fieldset/index.js.map +1 -1
  320. package/dist/components/hds/form/file-input/base.js.map +1 -1
  321. package/dist/components/hds/form/file-input/field.js.map +1 -1
  322. package/dist/components/hds/form/helper-text/index.js.map +1 -1
  323. package/dist/components/hds/form/indicator/index.js.map +1 -1
  324. package/dist/components/hds/form/label/index.js.map +1 -1
  325. package/dist/components/hds/form/legend/index.js.map +1 -1
  326. package/dist/components/hds/form/masked-input/base.js +45 -15
  327. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  328. package/dist/components/hds/form/masked-input/field.js.map +1 -1
  329. package/dist/components/hds/form/radio/base.js.map +1 -1
  330. package/dist/components/hds/form/radio/field.js.map +1 -1
  331. package/dist/components/hds/form/radio/group.js.map +1 -1
  332. package/dist/components/hds/form/radio-card/description.js.map +1 -1
  333. package/dist/components/hds/form/radio-card/group.js.map +1 -1
  334. package/dist/components/hds/form/radio-card/index.js.map +1 -1
  335. package/dist/components/hds/form/radio-card/label.js.map +1 -1
  336. package/dist/components/hds/form/select/base.js.map +1 -1
  337. package/dist/components/hds/form/select/field.js.map +1 -1
  338. package/dist/components/hds/form/super-select/after-options.js.map +1 -1
  339. package/dist/components/hds/form/super-select/multiple/base.js +39 -29
  340. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  341. package/dist/components/hds/form/super-select/multiple/field.js +1 -1
  342. package/dist/components/hds/form/super-select/multiple/field.js.map +1 -1
  343. package/dist/components/hds/form/super-select/option-group.js +11 -10
  344. package/dist/components/hds/form/super-select/option-group.js.map +1 -1
  345. package/dist/components/hds/form/super-select/placeholder.js.map +1 -1
  346. package/dist/components/hds/form/super-select/single/base.js +18 -13
  347. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  348. package/dist/components/hds/form/super-select/single/field.js +1 -1
  349. package/dist/components/hds/form/super-select/single/field.js.map +1 -1
  350. package/dist/components/hds/form/text-input/base.js.map +1 -1
  351. package/dist/components/hds/form/text-input/field.js +21 -18
  352. package/dist/components/hds/form/text-input/field.js.map +1 -1
  353. package/dist/components/hds/form/textarea/base.js.map +1 -1
  354. package/dist/components/hds/form/textarea/field.js.map +1 -1
  355. package/dist/components/hds/form/toggle/base.js.map +1 -1
  356. package/dist/components/hds/form/toggle/field.js.map +1 -1
  357. package/dist/components/hds/form/toggle/group.js.map +1 -1
  358. package/dist/components/hds/form/visibility-toggle/index.js.map +1 -1
  359. package/dist/components/hds/icon/index.js +7 -3
  360. package/dist/components/hds/icon/index.js.map +1 -1
  361. package/dist/components/hds/icon-tile/index.js.map +1 -1
  362. package/dist/components/hds/interactive/index.js +12 -5
  363. package/dist/components/hds/interactive/index.js.map +1 -1
  364. package/dist/components/hds/link/inline.js.map +1 -1
  365. package/dist/components/hds/link/standalone.js.map +1 -1
  366. package/dist/components/hds/menu-primitive/index.js +37 -24
  367. package/dist/components/hds/menu-primitive/index.js.map +1 -1
  368. package/dist/components/hds/modal/body.js +1 -0
  369. package/dist/components/hds/modal/body.js.map +1 -1
  370. package/dist/components/hds/modal/footer.js +2 -1
  371. package/dist/components/hds/modal/footer.js.map +1 -1
  372. package/dist/components/hds/modal/header.js +1 -0
  373. package/dist/components/hds/modal/header.js.map +1 -1
  374. package/dist/components/hds/modal/index.js +30 -16
  375. package/dist/components/hds/modal/index.js.map +1 -1
  376. package/dist/components/hds/page-header/actions.js.map +1 -1
  377. package/dist/components/hds/page-header/badges.js.map +1 -1
  378. package/dist/components/hds/page-header/description.js.map +1 -1
  379. package/dist/components/hds/page-header/index.js.map +1 -1
  380. package/dist/components/hds/page-header/subtitle.js.map +1 -1
  381. package/dist/components/hds/page-header/title.js.map +1 -1
  382. package/dist/components/hds/pagination/compact/index.js +31 -28
  383. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  384. package/dist/components/hds/pagination/info/index.js.map +1 -1
  385. package/dist/components/hds/pagination/nav/arrow.js +10 -4
  386. package/dist/components/hds/pagination/nav/arrow.js.map +1 -1
  387. package/dist/components/hds/pagination/nav/ellipsis.js.map +1 -1
  388. package/dist/components/hds/pagination/nav/number.js +10 -4
  389. package/dist/components/hds/pagination/nav/number.js.map +1 -1
  390. package/dist/components/hds/pagination/numbered/index.js +44 -47
  391. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  392. package/dist/components/hds/pagination/size-selector/index.js +12 -8
  393. package/dist/components/hds/pagination/size-selector/index.js.map +1 -1
  394. package/dist/components/hds/popover-primitive/index.js +127 -96
  395. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  396. package/dist/components/hds/reveal/index.js +26 -24
  397. package/dist/components/hds/reveal/index.js.map +1 -1
  398. package/dist/components/hds/reveal/toggle/button.js.map +1 -1
  399. package/dist/components/hds/rich-tooltip/bubble.js.map +1 -1
  400. package/dist/components/hds/rich-tooltip/index.js +8 -7
  401. package/dist/components/hds/rich-tooltip/index.js.map +1 -1
  402. package/dist/components/hds/rich-tooltip/toggle.js +1 -1
  403. package/dist/components/hds/rich-tooltip/toggle.js.map +1 -1
  404. package/dist/components/hds/segmented-group/index.js.map +1 -1
  405. package/dist/components/hds/separator/index.js.map +1 -1
  406. package/dist/components/hds/side-nav/base.js.map +1 -1
  407. package/dist/components/hds/side-nav/header/home-link.js.map +1 -1
  408. package/dist/components/hds/side-nav/header/icon-button.js +1 -0
  409. package/dist/components/hds/side-nav/header/icon-button.js.map +1 -1
  410. package/dist/components/hds/side-nav/header/index.js.map +1 -1
  411. package/dist/components/hds/side-nav/index.js +47 -34
  412. package/dist/components/hds/side-nav/index.js.map +1 -1
  413. package/dist/components/hds/side-nav/list/back-link.js.map +1 -1
  414. package/dist/components/hds/side-nav/list/index.js +15 -13
  415. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  416. package/dist/components/hds/side-nav/list/item.js.map +1 -1
  417. package/dist/components/hds/side-nav/list/link.js.map +1 -1
  418. package/dist/components/hds/side-nav/list/title.js +13 -9
  419. package/dist/components/hds/side-nav/list/title.js.map +1 -1
  420. package/dist/components/hds/side-nav/portal/index.js.map +1 -1
  421. package/dist/components/hds/side-nav/portal/target.js +31 -28
  422. package/dist/components/hds/side-nav/portal/target.js.map +1 -1
  423. package/dist/components/hds/side-nav/toggle-button.js.map +1 -1
  424. package/dist/components/hds/stepper/step/indicator.js.map +1 -1
  425. package/dist/components/hds/stepper/task/indicator.js.map +1 -1
  426. package/dist/components/hds/table/index.js +54 -40
  427. package/dist/components/hds/table/index.js.map +1 -1
  428. package/dist/components/hds/table/td.js.map +1 -1
  429. package/dist/components/hds/table/th-button-sort.js +8 -7
  430. package/dist/components/hds/table/th-button-sort.js.map +1 -1
  431. package/dist/components/hds/table/th-button-tooltip.js +7 -6
  432. package/dist/components/hds/table/th-button-tooltip.js.map +1 -1
  433. package/dist/components/hds/table/th-selectable.js +26 -32
  434. package/dist/components/hds/table/th-selectable.js.map +1 -1
  435. package/dist/components/hds/table/th-sort.js +12 -10
  436. package/dist/components/hds/table/th-sort.js.map +1 -1
  437. package/dist/components/hds/table/th.js +12 -10
  438. package/dist/components/hds/table/th.js.map +1 -1
  439. package/dist/components/hds/table/tr.js.map +1 -1
  440. package/dist/components/hds/tabs/index.js +78 -55
  441. package/dist/components/hds/tabs/index.js.map +1 -1
  442. package/dist/components/hds/tabs/panel.js +21 -14
  443. package/dist/components/hds/tabs/panel.js.map +1 -1
  444. package/dist/components/hds/tabs/tab.js +38 -14
  445. package/dist/components/hds/tabs/tab.js.map +1 -1
  446. package/dist/components/hds/tag/index.js +43 -3
  447. package/dist/components/hds/tag/index.js.map +1 -1
  448. package/dist/components/hds/tag/types.js +16 -1
  449. package/dist/components/hds/tag/types.js.map +1 -1
  450. package/dist/components/hds/text/body.js.map +1 -1
  451. package/dist/components/hds/text/code.js.map +1 -1
  452. package/dist/components/hds/text/display.js.map +1 -1
  453. package/dist/components/hds/text/index.js.map +1 -1
  454. package/dist/components/hds/time/index.js +19 -14
  455. package/dist/components/hds/time/index.js.map +1 -1
  456. package/dist/components/hds/time/range.js +11 -12
  457. package/dist/components/hds/time/range.js.map +1 -1
  458. package/dist/components/hds/time/single.js.map +1 -1
  459. package/dist/components/hds/toast/index.js.map +1 -1
  460. package/dist/components/hds/tooltip-button/index.js.map +1 -1
  461. package/dist/components/hds/yield/index.js.map +1 -1
  462. package/dist/components.js +16 -1
  463. package/dist/components.js.map +1 -1
  464. package/dist/helpers/hds-format-date.js.map +1 -1
  465. package/dist/helpers/hds-format-relative.js.map +1 -1
  466. package/dist/instance-initializers/load-sprite.js +3 -1
  467. package/dist/instance-initializers/load-sprite.js.map +1 -1
  468. package/dist/modifiers/hds-advanced-table-cell/dom-management.js +51 -0
  469. package/dist/modifiers/hds-advanced-table-cell/dom-management.js.map +1 -0
  470. package/dist/modifiers/hds-advanced-table-cell/keyboard-navigation.js +105 -0
  471. package/dist/modifiers/hds-advanced-table-cell/keyboard-navigation.js.map +1 -0
  472. package/dist/modifiers/hds-advanced-table-cell.js +55 -0
  473. package/dist/modifiers/hds-advanced-table-cell.js.map +1 -0
  474. package/dist/modifiers/hds-clipboard.js +29 -35
  475. package/dist/modifiers/hds-clipboard.js.map +1 -1
  476. package/dist/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.js +80 -0
  477. package/dist/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.js.map +1 -0
  478. package/dist/modifiers/hds-code-editor/languages/rego.js +191 -0
  479. package/dist/modifiers/hds-code-editor/languages/rego.js.map +1 -0
  480. package/dist/modifiers/hds-code-editor/languages/sentinel.js +148 -0
  481. package/dist/modifiers/hds-code-editor/languages/sentinel.js.map +1 -0
  482. package/dist/modifiers/hds-code-editor/palettes/hds-dark-palette.js +24 -0
  483. package/dist/modifiers/hds-code-editor/palettes/hds-dark-palette.js.map +1 -0
  484. package/dist/modifiers/hds-code-editor/themes/hds-dark-theme.js +62 -0
  485. package/dist/modifiers/hds-code-editor/themes/hds-dark-theme.js.map +1 -0
  486. package/dist/modifiers/hds-code-editor/types.js +21 -0
  487. package/dist/modifiers/hds-code-editor/types.js.map +1 -0
  488. package/dist/modifiers/hds-code-editor.js +293 -0
  489. package/dist/modifiers/hds-code-editor.js.map +1 -0
  490. package/dist/modifiers/hds-tooltip.js +128 -108
  491. package/dist/modifiers/hds-tooltip.js.map +1 -1
  492. package/dist/services/hds-time.js +29 -23
  493. package/dist/services/hds-time.js.map +1 -1
  494. package/dist/styles/@hashicorp/design-system-components.css +560 -65
  495. package/dist/styles/@hashicorp/design-system-components.scss +2 -0
  496. package/dist/styles/@hashicorp/design-system-power-select-overrides.scss +3 -3
  497. package/dist/styles/components/accordion.scss +1 -1
  498. package/dist/styles/components/advanced-table.scss +353 -0
  499. package/dist/styles/components/alert.scss +2 -2
  500. package/dist/styles/components/app-header.scss +1 -1
  501. package/dist/styles/components/badge-count.scss +1 -1
  502. package/dist/styles/components/badge.scss +12 -2
  503. package/dist/styles/components/breadcrumb.scss +2 -2
  504. package/dist/styles/components/card/container.scss +1 -1
  505. package/dist/styles/components/code-block/index.scss +1 -1
  506. package/dist/styles/components/code-editor/index.scss +113 -0
  507. package/dist/styles/components/code-editor/theme.scss +20 -0
  508. package/dist/styles/components/copy/snippet.scss +1 -1
  509. package/dist/styles/components/dropdown.scss +4 -3
  510. package/dist/styles/components/form/select.scss +1 -1
  511. package/dist/styles/components/icon-tile.scss +1 -1
  512. package/dist/styles/components/link/standalone.scss +1 -1
  513. package/dist/styles/components/modal.scss +1 -1
  514. package/dist/styles/components/rich-tooltip.scss +4 -2
  515. package/dist/styles/components/side-nav/a11y-refocus.scss +1 -1
  516. package/dist/styles/components/table.scss +10 -33
  517. package/dist/styles/components/tag.scss +28 -0
  518. package/dist/styles/components/time.scss +7 -0
  519. package/dist/styles/components/tooltip.scss +49 -0
  520. package/dist/styles/mixins/_button.scss +3 -3
  521. package/dist/utils/hds-aria-described-by.js +14 -17
  522. package/dist/utils/hds-aria-described-by.js.map +1 -1
  523. package/package.json +101 -70
  524. package/dist/_rollupPluginBabelHelpers-81503waH.js +0 -57
  525. package/dist/_rollupPluginBabelHelpers-81503waH.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import Modifier from 'ember-modifier';
2
+ import { registerDestructor } from '@ember/destroyable';
3
+ import { didInsertGridCell, updateTabbableChildren } from './hds-advanced-table-cell/dom-management.js';
4
+ import { handleGridCellKeyPress } from './hds-advanced-table-cell/keyboard-navigation.js';
5
+
6
+ /**
7
+ * Copyright (c) HashiCorp, Inc.
8
+ * SPDX-License-Identifier: MPL-2.0
9
+ */
10
+
11
+ function cleanup(instance) {
12
+ const {
13
+ _observer
14
+ } = instance;
15
+ if (_observer) {
16
+ _observer.disconnect();
17
+ }
18
+ }
19
+ class HdsAdvancedTableCellModifier extends Modifier {
20
+ // have a copy of shouldTrapFocus internally so the correct value is used when update tabbable children
21
+ _shouldTrapFocus = false;
22
+ _didSetup = false;
23
+ _observer = undefined;
24
+ constructor(owner, args) {
25
+ super(owner, args);
26
+ registerDestructor(this, cleanup);
27
+ }
28
+ modify(element, positional, named) {
29
+ this._shouldTrapFocus = named.shouldTrapFocus;
30
+ if (!this._didSetup) {
31
+ this.#setupObserver(element, positional, named);
32
+ named.setCellElement(element);
33
+ this._didSetup = true;
34
+ }
35
+ }
36
+ #setupObserver(element, _positional, named) {
37
+ const {
38
+ handleEnableFocusTrap
39
+ } = named;
40
+ didInsertGridCell(element);
41
+ element.addEventListener('keydown', event => {
42
+ handleGridCellKeyPress(event, handleEnableFocusTrap);
43
+ });
44
+ this._observer = new MutationObserver(() => {
45
+ updateTabbableChildren(element, this._shouldTrapFocus);
46
+ });
47
+ this._observer.observe(element, {
48
+ childList: true,
49
+ subtree: true
50
+ });
51
+ }
52
+ }
53
+
54
+ export { HdsAdvancedTableCellModifier as default };
55
+ //# sourceMappingURL=hds-advanced-table-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hds-advanced-table-cell.js","sources":["../../src/modifiers/hds-advanced-table-cell.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Modifier from 'ember-modifier';\nimport type { ArgsFor, PositionalArgs } from 'ember-modifier';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport {\n didInsertGridCell,\n updateTabbableChildren,\n} from './hds-advanced-table-cell/dom-management.ts';\nimport { handleGridCellKeyPress } from './hds-advanced-table-cell/keyboard-navigation.ts';\nimport type Owner from '@ember/owner';\n\nexport interface HdsAdvancedTableCellModifierSignature {\n Args: {\n Named: {\n handleEnableFocusTrap: () => void;\n shouldTrapFocus: boolean;\n setCellElement: (el: HTMLDivElement) => void;\n };\n };\n Element: HTMLDivElement;\n}\n\nfunction cleanup(instance: HdsAdvancedTableCellModifier): void {\n const { _observer } = instance;\n if (_observer) {\n _observer.disconnect();\n }\n}\n\nexport default class HdsAdvancedTableCellModifier extends Modifier<HdsAdvancedTableCellModifierSignature> {\n // have a copy of shouldTrapFocus internally so the correct value is used when update tabbable children\n private _shouldTrapFocus = false;\n private _didSetup = false;\n _observer: MutationObserver | undefined = undefined;\n\n constructor(\n owner: Owner,\n args: ArgsFor<HdsAdvancedTableCellModifierSignature>\n ) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n modify(\n element: HTMLDivElement,\n positional: PositionalArgs<HdsAdvancedTableCellModifierSignature>,\n named: HdsAdvancedTableCellModifierSignature['Args']['Named']\n ): void {\n this._shouldTrapFocus = named.shouldTrapFocus;\n\n if (!this._didSetup) {\n this.#setupObserver(element, positional, named);\n named.setCellElement(element);\n this._didSetup = true;\n }\n }\n\n #setupObserver(\n element: HdsAdvancedTableCellModifierSignature['Element'],\n _positional: PositionalArgs<HdsAdvancedTableCellModifierSignature>,\n named: HdsAdvancedTableCellModifierSignature['Args']['Named']\n ): void {\n const { handleEnableFocusTrap } = named;\n\n didInsertGridCell(element);\n element.addEventListener('keydown', (event: KeyboardEvent) => {\n handleGridCellKeyPress(event, handleEnableFocusTrap);\n });\n\n this._observer = new MutationObserver(() => {\n updateTabbableChildren(element, this._shouldTrapFocus);\n });\n\n this._observer.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n}\n"],"names":["cleanup","instance","_observer","disconnect","HdsAdvancedTableCellModifier","Modifier","_shouldTrapFocus","_didSetup","undefined","constructor","owner","args","registerDestructor","modify","element","positional","named","shouldTrapFocus","setCellElement","#setupObserver","_positional","handleEnableFocusTrap","didInsertGridCell","addEventListener","event","handleGridCellKeyPress","MutationObserver","updateTabbableChildren","observe","childList","subtree"],"mappings":";;;;;AAAA;AACA;AACA;AACA;;AAwBA,SAASA,OAAOA,CAACC,QAAsC,EAAQ;EAC7D,MAAM;AAAEC,IAAAA;AAAU,GAAC,GAAGD,QAAQ;AAC9B,EAAA,IAAIC,SAAS,EAAE;IACbA,SAAS,CAACC,UAAU,EAAE;AACxB;AACF;AAEe,MAAMC,4BAA4B,SAASC,QAAQ,CAAwC;AACxG;AACQC,EAAAA,gBAAgB,GAAG,KAAK;AACxBC,EAAAA,SAAS,GAAG,KAAK;AACzBL,EAAAA,SAAS,GAAiCM,SAAS;AAEnDC,EAAAA,WAAWA,CACTC,KAAY,EACZC,IAAoD,EACpD;AACA,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;AAClBC,IAAAA,kBAAkB,CAAC,IAAI,EAAEZ,OAAO,CAAC;AACnC;AAEAa,EAAAA,MAAMA,CACJC,OAAuB,EACvBC,UAAiE,EACjEC,KAA6D,EACvD;AACN,IAAA,IAAI,CAACV,gBAAgB,GAAGU,KAAK,CAACC,eAAe;AAE7C,IAAA,IAAI,CAAC,IAAI,CAACV,SAAS,EAAE;MACnB,IAAI,CAAC,cAAc,CAACO,OAAO,EAAEC,UAAU,EAAEC,KAAK,CAAC;AAC/CA,MAAAA,KAAK,CAACE,cAAc,CAACJ,OAAO,CAAC;MAC7B,IAAI,CAACP,SAAS,GAAG,IAAI;AACvB;AACF;AAEA,EAAA,cAAcY,CACZL,OAAyD,EACzDM,WAAkE,EAClEJ,KAA6D,EACvD;IACN,MAAM;AAAEK,MAAAA;AAAsB,KAAC,GAAGL,KAAK;IAEvCM,iBAAiB,CAACR,OAAO,CAAC;AAC1BA,IAAAA,OAAO,CAACS,gBAAgB,CAAC,SAAS,EAAGC,KAAoB,IAAK;AAC5DC,MAAAA,sBAAsB,CAACD,KAAK,EAAEH,qBAAqB,CAAC;AACtD,KAAC,CAAC;AAEF,IAAA,IAAI,CAACnB,SAAS,GAAG,IAAIwB,gBAAgB,CAAC,MAAM;AAC1CC,MAAAA,sBAAsB,CAACb,OAAO,EAAE,IAAI,CAACR,gBAAgB,CAAC;AACxD,KAAC,CAAC;AAEF,IAAA,IAAI,CAACJ,SAAS,CAAC0B,OAAO,CAACd,OAAO,EAAE;AAC9Be,MAAAA,SAAS,EAAE,IAAI;AACfC,MAAAA,OAAO,EAAE;AACX,KAAC,CAAC;AACJ;AACF;;;;"}
@@ -8,16 +8,14 @@ import { assert, warn } from '@ember/debug';
8
8
 
9
9
  const getTextToCopy = text => {
10
10
  let textToCopy = '';
11
- if (text) {
12
- if (typeof text === 'string') {
13
- textToCopy = text;
14
- } else if (
15
- // context: https://github.com/hashicorp/design-system/pull/1564
16
- typeof text === 'number' || typeof text === 'bigint') {
17
- textToCopy = text.toString();
18
- } else {
19
- assert(`\`hds-clipboard\` modifier - \`text\` argument must be a string - provided: ${typeof text}`);
20
- }
11
+ if (typeof text === 'string') {
12
+ textToCopy = text;
13
+ } else if (
14
+ // context: https://github.com/hashicorp/design-system/pull/1564
15
+ typeof text === 'number' || typeof text === 'bigint') {
16
+ textToCopy = text.toString();
17
+ } else {
18
+ assert(`\`hds-clipboard\` modifier - \`text\` argument must be a string or number - provided: ${typeof text}`);
21
19
  }
22
20
  return textToCopy;
23
21
  };
@@ -69,38 +67,34 @@ const getTextToCopyFromTargetElement = targetElement => {
69
67
  const writeTextToClipboard = async textToCopy => {
70
68
  // finally copy the text to the clipboard using the Clipboard API
71
69
  // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API
72
- if (textToCopy) {
73
- try {
74
- // notice: the "clipboard-write" permission is granted automatically to pages when they are in the active tab
75
- // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write
76
- await navigator.clipboard.writeText(textToCopy);
77
- // DEBUG uncomment this for easy debugging
78
- // console.log('success', textToCopy);
79
- return true;
80
- } catch {
81
- // if it is not a secure context, use the polyfill
82
- // to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)
83
- if (!navigator.clipboard) {
84
- try {
85
- const clipboard = await import('clipboard-polyfill');
86
- await clipboard.writeText(textToCopy);
87
- return true;
88
- } catch (error) {
89
- warn(`copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(error)}`, {
90
- id: 'hds-clipboard.write-text-to-clipboard.catch-error'
91
- });
92
- return false;
93
- }
70
+ try {
71
+ // notice: the "clipboard-write" permission is granted automatically to pages when they are in the active tab
72
+ // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write
73
+ await navigator.clipboard.writeText(textToCopy);
74
+ // DEBUG uncomment this for easy debugging
75
+ // console.log('success', textToCopy);
76
+ return true;
77
+ } catch {
78
+ // if it is not a secure context, use the polyfill
79
+ // to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)
80
+ if (!navigator.clipboard) {
81
+ try {
82
+ const clipboard = await import('clipboard-polyfill');
83
+ await clipboard.writeText(textToCopy);
84
+ return true;
85
+ } catch (error) {
86
+ warn(`copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(error)}`, {
87
+ id: 'hds-clipboard.write-text-to-clipboard.catch-error'
88
+ });
89
+ return false;
94
90
  }
95
- return false;
96
91
  }
97
- } else {
98
92
  return false;
99
93
  }
100
94
  };
101
95
  const copyToClipboard = async (text, target) => {
102
96
  let textToCopy = '';
103
- if (text) {
97
+ if (text !== undefined) {
104
98
  textToCopy = getTextToCopy(text);
105
99
  } else if (target) {
106
100
  const targetElement = getTargetElement(target);
@@ -1 +1 @@
1
- {"version":3,"file":"hds-clipboard.js","sources":["../../src/modifiers/hds-clipboard.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { modifier } from 'ember-modifier';\nimport { assert, warn } from '@ember/debug';\n\ntype TextToCopy = string | number | bigint;\ntype TargetToCopy = HTMLElement | string;\n\nexport interface HdsClipboardModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n text?: TextToCopy;\n target?: TargetToCopy;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (...args: any[]) => void;\n };\n };\n}\n\nexport const getTextToCopy = (text: TextToCopy): string => {\n let textToCopy: string = '';\n\n if (text) {\n if (typeof text === 'string') {\n textToCopy = text;\n } else if (\n // context: https://github.com/hashicorp/design-system/pull/1564\n typeof text === 'number' ||\n typeof text === 'bigint'\n ) {\n textToCopy = text.toString();\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`text\\` argument must be a string - provided: ${typeof text}`\n );\n }\n }\n return textToCopy;\n};\n\nexport const getTargetElement = (\n target: string | Node\n): HTMLElement | undefined => {\n let targetElement: HTMLElement | null;\n\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n\n if (!targetElement) {\n console.error(\n '`hds-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string',\n targetElement\n );\n return;\n }\n } else if (target instanceof HTMLElement) {\n targetElement = target;\n } else {\n if (target instanceof NodeList) {\n assert(\n '`hds-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes'\n );\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`target\\` argument must be a string or a DOM node - provided: ${typeof target}`\n );\n }\n }\n return targetElement;\n};\n\nexport const getTextToCopyFromTargetElement = (\n targetElement: TargetToCopy\n): string => {\n let textToCopy: string = '';\n\n if (targetElement instanceof HTMLElement) {\n if (\n targetElement instanceof HTMLInputElement || // targetElement.nodeName === 'INPUT' ||\n targetElement instanceof HTMLTextAreaElement || // targetElement.nodeName === 'TEXTAREA' ||\n targetElement instanceof HTMLSelectElement // targetElement.nodeName === 'SELECT'\n ) {\n textToCopy = targetElement.value;\n } else {\n // simplest approach\n textToCopy = targetElement.innerText;\n\n // approach based on text selection (left for backup just in case)\n // var selection = window.getSelection();\n // var range = document.createRange();\n // selection.removeAllRanges();\n // range.selectNodeContents(targetElement);\n // selection.addRange(range);\n // textToCopy = selection.toString();\n // selection.removeAllRanges();\n }\n }\n return textToCopy;\n};\n\nexport const writeTextToClipboard = async (\n textToCopy: string\n): Promise<boolean> => {\n // finally copy the text to the clipboard using the Clipboard API\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\n if (textToCopy) {\n try {\n // notice: the \"clipboard-write\" permission is granted automatically to pages when they are in the active tab\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write\n await navigator.clipboard.writeText(textToCopy);\n // DEBUG uncomment this for easy debugging\n // console.log('success', textToCopy);\n return true;\n } catch {\n // if it is not a secure context, use the polyfill\n // to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)\n if (!navigator.clipboard) {\n try {\n const clipboard = await import('clipboard-polyfill');\n await clipboard.writeText(textToCopy);\n return true;\n } catch (error) {\n warn(\n `copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-clipboard.write-text-to-clipboard.catch-error',\n }\n );\n return false;\n }\n }\n\n return false;\n }\n } else {\n return false;\n }\n};\n\nexport const copyToClipboard = async (\n text?: TextToCopy,\n target?: TargetToCopy\n): Promise<boolean> => {\n let textToCopy: string = '';\n\n if (text) {\n textToCopy = getTextToCopy(text);\n } else if (target) {\n const targetElement = getTargetElement(target);\n if (targetElement) {\n textToCopy = getTextToCopyFromTargetElement(targetElement);\n }\n } else {\n assert(\n '`hds-clipboard` modifier - either a `text` or a `target` argument is required'\n );\n }\n const success = await writeTextToClipboard(textToCopy);\n return success;\n};\n\n// Notice: we use a function-based modifier here instead of a class-based one\n// because it's quite simple in its logic, and doesn't require injecting services\n// see: https://github.com/ember-modifier/ember-modifier#function-based-modifiers\n\nexport default modifier<HdsClipboardModifierSignature>(\n (element, _positional, named): (() => void) => {\n assert(\n '`hds-clipboard` modifier - the modifier must be applied to an element',\n element\n );\n\n const { text, target, onSuccess, onError } = named;\n\n const onClick = async (event: MouseEvent): Promise<void> => {\n const trigger = event.currentTarget;\n const success = await copyToClipboard(text, target);\n\n // fire the `onSuccess/onError` callbacks (if provided)\n if (success) {\n if (typeof onSuccess === 'function') {\n onSuccess({ trigger, text, target });\n }\n } else {\n if (typeof onError === 'function') {\n onError({ trigger, text, target });\n }\n }\n };\n\n // add the \"onClick\" event listener to the element\n element.addEventListener('click', onClick);\n\n // this (teardown) function is run when the element is removed\n return (): void => {\n element.removeEventListener('click', onClick);\n };\n }\n);\n"],"names":["getTextToCopy","text","textToCopy","toString","assert","getTargetElement","target","targetElement","document","querySelector","console","error","HTMLElement","NodeList","getTextToCopyFromTargetElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","value","innerText","writeTextToClipboard","navigator","clipboard","writeText","warn","JSON","stringify","id","copyToClipboard","success","modifier","element","_positional","named","onSuccess","onError","onClick","event","trigger","currentTarget","addEventListener","removeEventListener"],"mappings":";;;AAAA;AACA;AACA;AACA;;AAsBaA,MAAAA,aAAa,GAAIC,IAAgB,IAAa;EACzD,IAAIC,UAAkB,GAAG,EAAE;AAE3B,EAAA,IAAID,IAAI,EAAE;AACR,IAAA,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AAC5BC,MAAAA,UAAU,GAAGD,IAAI;AACnB,KAAC,MAAM;AACL;IACA,OAAOA,IAAI,KAAK,QAAQ,IACxB,OAAOA,IAAI,KAAK,QAAQ,EACxB;AACAC,MAAAA,UAAU,GAAGD,IAAI,CAACE,QAAQ,EAAE;AAC9B,KAAC,MAAM;AACLC,MAAAA,MAAM,CACJ,CAAA,4EAAA,EAA+E,OAAOH,IAAI,EAC5F,CAAC;AACH;AACF;AACA,EAAA,OAAOC,UAAU;AACnB;AAEaG,MAAAA,gBAAgB,GAC3BC,MAAqB,IACO;AAC5B,EAAA,IAAIC,aAAiC;AAErC,EAAA,IAAI,OAAOD,MAAM,KAAK,QAAQ,EAAE;AAC9BC,IAAAA,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAACH,MAAM,CAAC;IAE9C,IAAI,CAACC,aAAa,EAAE;AAClBG,MAAAA,OAAO,CAACC,KAAK,CACX,0HAA0H,EAC1HJ,aACF,CAAC;AACD,MAAA;AACF;AACF,GAAC,MAAM,IAAID,MAAM,YAAYM,WAAW,EAAE;AACxCL,IAAAA,aAAa,GAAGD,MAAM;AACxB,GAAC,MAAM;IACL,IAAIA,MAAM,YAAYO,QAAQ,EAAE;MAC9BT,MAAM,CACJ,6GACF,CAAC;AACH,KAAC,MAAM;AACLA,MAAAA,MAAM,CACJ,CAAA,4FAAA,EAA+F,OAAOE,MAAM,EAC9G,CAAC;AACH;AACF;AACA,EAAA,OAAOC,aAAa;AACtB;AAEaO,MAAAA,8BAA8B,GACzCP,aAA2B,IAChB;EACX,IAAIL,UAAkB,GAAG,EAAE;EAE3B,IAAIK,aAAa,YAAYK,WAAW,EAAE;IACxC,IACEL,aAAa,YAAYQ,gBAAgB;AAAI;AAC7CR,IAAAA,aAAa,YAAYS,mBAAmB;AAAI;IAChDT,aAAa,YAAYU,iBAAiB;MAC1C;MACAf,UAAU,GAAGK,aAAa,CAACW,KAAK;AAClC,KAAC,MAAM;AACL;MACAhB,UAAU,GAAGK,aAAa,CAACY,SAAS;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AACF;AACA,EAAA,OAAOjB,UAAU;AACnB;AAEakB,MAAAA,oBAAoB,GAAG,MAClClB,UAAkB,IACG;AACrB;AACA;AACA,EAAA,IAAIA,UAAU,EAAE;IACd,IAAI;AACF;AACA;AACA,MAAA,MAAMmB,SAAS,CAACC,SAAS,CAACC,SAAS,CAACrB,UAAU,CAAC;AAC/C;AACA;AACA,MAAA,OAAO,IAAI;AACb,KAAC,CAAC,MAAM;AACN;AACA;AACA,MAAA,IAAI,CAACmB,SAAS,CAACC,SAAS,EAAE;QACxB,IAAI;AACF,UAAA,MAAMA,SAAS,GAAG,MAAM,OAAO,oBAAoB,CAAC;AACpD,UAAA,MAAMA,SAAS,CAACC,SAAS,CAACrB,UAAU,CAAC;AACrC,UAAA,OAAO,IAAI;SACZ,CAAC,OAAOS,KAAK,EAAE;UACda,IAAI,CACF,yDAAyDC,IAAI,CAACC,SAAS,CACrEf,KACF,CAAC,CAAA,CAAE,EACH;AACEgB,YAAAA,EAAE,EAAE;AACN,WACF,CAAC;AACD,UAAA,OAAO,KAAK;AACd;AACF;AAEA,MAAA,OAAO,KAAK;AACd;AACF,GAAC,MAAM;AACL,IAAA,OAAO,KAAK;AACd;AACF;AAEO,MAAMC,eAAe,GAAG,OAC7B3B,IAAiB,EACjBK,MAAqB,KACA;EACrB,IAAIJ,UAAkB,GAAG,EAAE;AAE3B,EAAA,IAAID,IAAI,EAAE;AACRC,IAAAA,UAAU,GAAGF,aAAa,CAACC,IAAI,CAAC;GACjC,MAAM,IAAIK,MAAM,EAAE;AACjB,IAAA,MAAMC,aAAa,GAAGF,gBAAgB,CAACC,MAAM,CAAC;AAC9C,IAAA,IAAIC,aAAa,EAAE;AACjBL,MAAAA,UAAU,GAAGY,8BAA8B,CAACP,aAAa,CAAC;AAC5D;AACF,GAAC,MAAM;IACLH,MAAM,CACJ,+EACF,CAAC;AACH;AACA,EAAA,MAAMyB,OAAO,GAAG,MAAMT,oBAAoB,CAAClB,UAAU,CAAC;AACtD,EAAA,OAAO2B,OAAO;AAChB;;AAEA;AACA;AACA;;AAEA,mBAAeC,QAAQ,CACrB,CAACC,OAAO,EAAEC,WAAW,EAAEC,KAAK,KAAmB;AAC7C7B,EAAAA,MAAM,CACJ,uEAAuE,EACvE2B,OACF,CAAC;EAED,MAAM;IAAE9B,IAAI;IAAEK,MAAM;IAAE4B,SAAS;AAAEC,IAAAA;AAAQ,GAAC,GAAGF,KAAK;AAElD,EAAA,MAAMG,OAAO,GAAG,MAAOC,KAAiB,IAAoB;AAC1D,IAAA,MAAMC,OAAO,GAAGD,KAAK,CAACE,aAAa;IACnC,MAAMV,OAAO,GAAG,MAAMD,eAAe,CAAC3B,IAAI,EAAEK,MAAM,CAAC;;AAEnD;AACA,IAAA,IAAIuB,OAAO,EAAE;AACX,MAAA,IAAI,OAAOK,SAAS,KAAK,UAAU,EAAE;AACnCA,QAAAA,SAAS,CAAC;UAAEI,OAAO;UAAErC,IAAI;AAAEK,UAAAA;AAAO,SAAC,CAAC;AACtC;AACF,KAAC,MAAM;AACL,MAAA,IAAI,OAAO6B,OAAO,KAAK,UAAU,EAAE;AACjCA,QAAAA,OAAO,CAAC;UAAEG,OAAO;UAAErC,IAAI;AAAEK,UAAAA;AAAO,SAAC,CAAC;AACpC;AACF;GACD;;AAED;AACAyB,EAAAA,OAAO,CAACS,gBAAgB,CAAC,OAAO,EAAEJ,OAAO,CAAC;;AAE1C;AACA,EAAA,OAAO,MAAY;AACjBL,IAAAA,OAAO,CAACU,mBAAmB,CAAC,OAAO,EAAEL,OAAO,CAAC;GAC9C;AACH,CACF,CAAC;;;;"}
1
+ {"version":3,"file":"hds-clipboard.js","sources":["../../src/modifiers/hds-clipboard.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { modifier } from 'ember-modifier';\nimport { assert, warn } from '@ember/debug';\n\ntype TextToCopy = string | number | bigint;\ntype TargetToCopy = HTMLElement | string;\n\nexport interface HdsClipboardModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n text?: TextToCopy;\n target?: TargetToCopy;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (...args: any[]) => void;\n };\n };\n}\n\nexport const getTextToCopy = (text: TextToCopy): string => {\n let textToCopy: string = '';\n\n if (typeof text === 'string') {\n textToCopy = text;\n } else if (\n // context: https://github.com/hashicorp/design-system/pull/1564\n typeof text === 'number' ||\n typeof text === 'bigint'\n ) {\n textToCopy = text.toString();\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`text\\` argument must be a string or number - provided: ${typeof text}`\n );\n }\n\n return textToCopy;\n};\n\nexport const getTargetElement = (\n target: string | Node\n): HTMLElement | undefined => {\n let targetElement: HTMLElement | null;\n\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n\n if (!targetElement) {\n console.error(\n '`hds-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string',\n targetElement\n );\n return;\n }\n } else if (target instanceof HTMLElement) {\n targetElement = target;\n } else {\n if (target instanceof NodeList) {\n assert(\n '`hds-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes'\n );\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`target\\` argument must be a string or a DOM node - provided: ${typeof target}`\n );\n }\n }\n return targetElement;\n};\n\nexport const getTextToCopyFromTargetElement = (\n targetElement: TargetToCopy\n): string => {\n let textToCopy: string = '';\n\n if (targetElement instanceof HTMLElement) {\n if (\n targetElement instanceof HTMLInputElement || // targetElement.nodeName === 'INPUT' ||\n targetElement instanceof HTMLTextAreaElement || // targetElement.nodeName === 'TEXTAREA' ||\n targetElement instanceof HTMLSelectElement // targetElement.nodeName === 'SELECT'\n ) {\n textToCopy = targetElement.value;\n } else {\n // simplest approach\n textToCopy = targetElement.innerText;\n\n // approach based on text selection (left for backup just in case)\n // var selection = window.getSelection();\n // var range = document.createRange();\n // selection.removeAllRanges();\n // range.selectNodeContents(targetElement);\n // selection.addRange(range);\n // textToCopy = selection.toString();\n // selection.removeAllRanges();\n }\n }\n return textToCopy;\n};\n\nexport const writeTextToClipboard = async (\n textToCopy: string\n): Promise<boolean> => {\n // finally copy the text to the clipboard using the Clipboard API\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\n try {\n // notice: the \"clipboard-write\" permission is granted automatically to pages when they are in the active tab\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write\n await navigator.clipboard.writeText(textToCopy);\n // DEBUG uncomment this for easy debugging\n // console.log('success', textToCopy);\n return true;\n } catch {\n // if it is not a secure context, use the polyfill\n // to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)\n if (!navigator.clipboard) {\n try {\n const clipboard = await import('clipboard-polyfill');\n await clipboard.writeText(textToCopy);\n return true;\n } catch (error) {\n warn(\n `copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-clipboard.write-text-to-clipboard.catch-error',\n }\n );\n return false;\n }\n }\n\n return false;\n }\n};\n\nexport const copyToClipboard = async (\n text?: TextToCopy,\n target?: TargetToCopy\n): Promise<boolean> => {\n let textToCopy: string = '';\n\n if (text !== undefined) {\n textToCopy = getTextToCopy(text);\n } else if (target) {\n const targetElement = getTargetElement(target);\n if (targetElement) {\n textToCopy = getTextToCopyFromTargetElement(targetElement);\n }\n } else {\n assert(\n '`hds-clipboard` modifier - either a `text` or a `target` argument is required'\n );\n }\n const success = await writeTextToClipboard(textToCopy);\n return success;\n};\n\n// Notice: we use a function-based modifier here instead of a class-based one\n// because it's quite simple in its logic, and doesn't require injecting services\n// see: https://github.com/ember-modifier/ember-modifier#function-based-modifiers\n\nexport default modifier<HdsClipboardModifierSignature>(\n (element, _positional, named): (() => void) => {\n assert(\n '`hds-clipboard` modifier - the modifier must be applied to an element',\n element\n );\n\n const { text, target, onSuccess, onError } = named;\n\n const onClick = async (event: MouseEvent): Promise<void> => {\n const trigger = event.currentTarget;\n const success = await copyToClipboard(text, target);\n\n // fire the `onSuccess/onError` callbacks (if provided)\n if (success) {\n if (typeof onSuccess === 'function') {\n onSuccess({ trigger, text, target });\n }\n } else {\n if (typeof onError === 'function') {\n onError({ trigger, text, target });\n }\n }\n };\n\n // add the \"onClick\" event listener to the element\n element.addEventListener('click', onClick);\n\n // this (teardown) function is run when the element is removed\n return (): void => {\n element.removeEventListener('click', onClick);\n };\n }\n);\n"],"names":["getTextToCopy","text","textToCopy","toString","assert","getTargetElement","target","targetElement","document","querySelector","console","error","HTMLElement","NodeList","getTextToCopyFromTargetElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","value","innerText","writeTextToClipboard","navigator","clipboard","writeText","warn","JSON","stringify","id","copyToClipboard","undefined","success","modifier","element","_positional","named","onSuccess","onError","onClick","event","trigger","currentTarget","addEventListener","removeEventListener"],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { tags } from '@lezer/highlight';
2
+ import { HighlightStyle } from '@codemirror/language';
3
+ import { HDS_CODE_BLOCK_CYAN, HDS_CODE_BLOCK_BLUE, HDS_CODE_BLOCK_ORANGE, HDS_CODE_BLOCK_PURPLE, HDS_CODE_BLOCK_GREEN, HDS_CODE_BLOCK_RED, HDS_CODE_BLOCK_WHITE, HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY } from '../palettes/hds-dark-palette.js';
4
+
5
+ /**
6
+ * Copyright (c) HashiCorp, Inc.
7
+ * SPDX-License-Identifier: MPL-2.0
8
+ */
9
+
10
+ const hdsDarkHighlightStyle = HighlightStyle.define([
11
+ // Cyan | Property, url, or operator
12
+ {
13
+ tag: tags.propertyName,
14
+ color: HDS_CODE_BLOCK_CYAN
15
+ }, {
16
+ tag: tags.url,
17
+ color: HDS_CODE_BLOCK_CYAN
18
+ }, {
19
+ tag: tags.operator,
20
+ color: HDS_CODE_BLOCK_CYAN
21
+ }, {
22
+ tag: tags.attributeValue,
23
+ color: HDS_CODE_BLOCK_CYAN
24
+ },
25
+ // Blue | Function, builtins
26
+ {
27
+ tag: tags.attributeName,
28
+ color: HDS_CODE_BLOCK_BLUE
29
+ }, {
30
+ tag: tags.function(tags.variableName),
31
+ color: HDS_CODE_BLOCK_BLUE
32
+ }, {
33
+ tag: tags.function(tags.propertyName),
34
+ color: HDS_CODE_BLOCK_BLUE
35
+ },
36
+ // Orange | Strings, characters
37
+ {
38
+ tag: tags.string,
39
+ color: HDS_CODE_BLOCK_ORANGE
40
+ }, {
41
+ tag: tags.regexp,
42
+ color: HDS_CODE_BLOCK_ORANGE
43
+ },
44
+ // Purple | Booleans, numbers
45
+ {
46
+ tag: tags.bool,
47
+ color: HDS_CODE_BLOCK_PURPLE
48
+ }, {
49
+ tag: tags.number,
50
+ color: HDS_CODE_BLOCK_PURPLE
51
+ },
52
+ // Green | Keywords, class names, saving the world
53
+ {
54
+ tag: tags.keyword,
55
+ color: HDS_CODE_BLOCK_GREEN
56
+ }, {
57
+ tag: tags.className,
58
+ color: HDS_CODE_BLOCK_GREEN
59
+ },
60
+ // Red | Important items
61
+ {
62
+ tag: tags.deleted,
63
+ color: HDS_CODE_BLOCK_RED
64
+ },
65
+ // White | Default color within the code block, also used for punctuation
66
+ {
67
+ tag: tags.name,
68
+ color: HDS_CODE_BLOCK_WHITE
69
+ }, {
70
+ tag: tags.punctuation,
71
+ color: HDS_CODE_BLOCK_WHITE
72
+ },
73
+ // Gray | Used for comments across languages
74
+ {
75
+ tag: tags.comment,
76
+ color: HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY
77
+ }]);
78
+
79
+ export { hdsDarkHighlightStyle as default };
80
+ //# sourceMappingURL=hds-dark-highlight-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hds-dark-highlight-style.js","sources":["../../../../src/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tags } from '@lezer/highlight';\nimport { HighlightStyle } from '@codemirror/language';\nimport {\n HDS_CODE_BLOCK_BLUE,\n HDS_CODE_BLOCK_GREEN,\n HDS_CODE_BLOCK_ORANGE,\n HDS_CODE_BLOCK_PURPLE,\n HDS_CODE_BLOCK_RED,\n HDS_CODE_BLOCK_CYAN,\n HDS_CODE_BLOCK_WHITE,\n HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY,\n} from '../palettes/hds-dark-palette.ts';\n\nconst hdsDarkHighlightStyle = HighlightStyle.define([\n // Cyan | Property, url, or operator\n { tag: tags.propertyName, color: HDS_CODE_BLOCK_CYAN },\n { tag: tags.url, color: HDS_CODE_BLOCK_CYAN },\n { tag: tags.operator, color: HDS_CODE_BLOCK_CYAN },\n { tag: tags.attributeValue, color: HDS_CODE_BLOCK_CYAN },\n\n // Blue | Function, builtins\n { tag: tags.attributeName, color: HDS_CODE_BLOCK_BLUE },\n { tag: tags.function(tags.variableName), color: HDS_CODE_BLOCK_BLUE },\n { tag: tags.function(tags.propertyName), color: HDS_CODE_BLOCK_BLUE },\n\n // Orange | Strings, characters\n { tag: tags.string, color: HDS_CODE_BLOCK_ORANGE },\n { tag: tags.regexp, color: HDS_CODE_BLOCK_ORANGE },\n\n // Purple | Booleans, numbers\n { tag: tags.bool, color: HDS_CODE_BLOCK_PURPLE },\n { tag: tags.number, color: HDS_CODE_BLOCK_PURPLE },\n\n // Green | Keywords, class names, saving the world\n { tag: tags.keyword, color: HDS_CODE_BLOCK_GREEN },\n { tag: tags.className, color: HDS_CODE_BLOCK_GREEN },\n\n // Red | Important items\n { tag: tags.deleted, color: HDS_CODE_BLOCK_RED },\n\n // White | Default color within the code block, also used for punctuation\n { tag: tags.name, color: HDS_CODE_BLOCK_WHITE },\n { tag: tags.punctuation, color: HDS_CODE_BLOCK_WHITE },\n\n // Gray | Used for comments across languages\n { tag: tags.comment, color: HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY },\n]);\n\nexport default hdsDarkHighlightStyle;\n"],"names":["hdsDarkHighlightStyle","HighlightStyle","define","tag","tags","propertyName","color","HDS_CODE_BLOCK_CYAN","url","operator","attributeValue","attributeName","HDS_CODE_BLOCK_BLUE","function","variableName","string","HDS_CODE_BLOCK_ORANGE","regexp","bool","HDS_CODE_BLOCK_PURPLE","number","keyword","HDS_CODE_BLOCK_GREEN","className","deleted","HDS_CODE_BLOCK_RED","name","HDS_CODE_BLOCK_WHITE","punctuation","comment","HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY"],"mappings":";;;;AAAA;AACA;AACA;AACA;;AAeA,MAAMA,qBAAqB,GAAGC,cAAc,CAACC,MAAM,CAAC;AAClD;AACA;EAAEC,GAAG,EAAEC,IAAI,CAACC,YAAY;AAAEC,EAAAA,KAAK,EAAEC;AAAoB,CAAC,EACtD;EAAEJ,GAAG,EAAEC,IAAI,CAACI,GAAG;AAAEF,EAAAA,KAAK,EAAEC;AAAoB,CAAC,EAC7C;EAAEJ,GAAG,EAAEC,IAAI,CAACK,QAAQ;AAAEH,EAAAA,KAAK,EAAEC;AAAoB,CAAC,EAClD;EAAEJ,GAAG,EAAEC,IAAI,CAACM,cAAc;AAAEJ,EAAAA,KAAK,EAAEC;AAAoB,CAAC;AAExD;AACA;EAAEJ,GAAG,EAAEC,IAAI,CAACO,aAAa;AAAEL,EAAAA,KAAK,EAAEM;AAAoB,CAAC,EACvD;EAAET,GAAG,EAAEC,IAAI,CAACS,QAAQ,CAACT,IAAI,CAACU,YAAY,CAAC;AAAER,EAAAA,KAAK,EAAEM;AAAoB,CAAC,EACrE;EAAET,GAAG,EAAEC,IAAI,CAACS,QAAQ,CAACT,IAAI,CAACC,YAAY,CAAC;AAAEC,EAAAA,KAAK,EAAEM;AAAoB,CAAC;AAErE;AACA;EAAET,GAAG,EAAEC,IAAI,CAACW,MAAM;AAAET,EAAAA,KAAK,EAAEU;AAAsB,CAAC,EAClD;EAAEb,GAAG,EAAEC,IAAI,CAACa,MAAM;AAAEX,EAAAA,KAAK,EAAEU;AAAsB,CAAC;AAElD;AACA;EAAEb,GAAG,EAAEC,IAAI,CAACc,IAAI;AAAEZ,EAAAA,KAAK,EAAEa;AAAsB,CAAC,EAChD;EAAEhB,GAAG,EAAEC,IAAI,CAACgB,MAAM;AAAEd,EAAAA,KAAK,EAAEa;AAAsB,CAAC;AAElD;AACA;EAAEhB,GAAG,EAAEC,IAAI,CAACiB,OAAO;AAAEf,EAAAA,KAAK,EAAEgB;AAAqB,CAAC,EAClD;EAAEnB,GAAG,EAAEC,IAAI,CAACmB,SAAS;AAAEjB,EAAAA,KAAK,EAAEgB;AAAqB,CAAC;AAEpD;AACA;EAAEnB,GAAG,EAAEC,IAAI,CAACoB,OAAO;AAAElB,EAAAA,KAAK,EAAEmB;AAAmB,CAAC;AAEhD;AACA;EAAEtB,GAAG,EAAEC,IAAI,CAACsB,IAAI;AAAEpB,EAAAA,KAAK,EAAEqB;AAAqB,CAAC,EAC/C;EAAExB,GAAG,EAAEC,IAAI,CAACwB,WAAW;AAAEtB,EAAAA,KAAK,EAAEqB;AAAqB,CAAC;AAEtD;AACA;EAAExB,GAAG,EAAEC,IAAI,CAACyB,OAAO;AAAEvB,EAAAA,KAAK,EAAEwB;AAAyC,CAAC,CACvE;;;;"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ function wordRegexp(words) {
7
+ return new RegExp('^((' + words.join(')|(') + '))\\b');
8
+ }
9
+
10
+ // keywords
11
+ const regoKeywords = ['as', 'contains', 'data', 'default', 'else', 'every', 'false', 'if', 'in', 'import', 'input', 'package', 'not', 'null', 'some', 'true', 'with'];
12
+
13
+ // built-ins / constants
14
+ const regoBuiltins = [
15
+ // numbers
16
+ 'abs', 'ceil', 'floor', 'numbers.range', 'numbers.range_step', 'rand.intn', 'round',
17
+ // aggregates
18
+ 'count', 'max', 'min', 'product', 'sort', 'sum',
19
+ // arrays
20
+ 'array.concat', 'array.reverse', 'array.slice',
21
+ // sets
22
+ 'intersection', 'union',
23
+ // objects
24
+ 'json.filter', 'json.match_scema', 'json.patch', 'json.remove', 'json.verify_schema', 'object.filter', 'object.get', 'object.keys', 'object.remove', 'object.subset', 'object.union', 'object.union_n',
25
+ // strings
26
+ 'concat', 'contains', 'endswith', 'format_int', 'indexof_n', 'lower', 'replace', 'split', 'sprintf', 'startswith', 'strings.any_prefix_match', 'strings.count', 'strings.render_template', 'strings.replace_n', 'strings.reverse', 'substring', 'trim', 'trim_left', 'trim_prefix', 'trim_right', 'trim_space', 'trim_suffix', 'upper',
27
+ // regex
28
+ 'regex.find_all_string_submatch_n', 'regex.find_n', 'regex.globs_match', 'regex.is_valid', 'regex.match', 'regex.replace', 'regex.split', 'regex.template_match',
29
+ // glob
30
+ 'glob.match', 'glob.quote_meta',
31
+ // bitwise
32
+ 'bits.and', 'bits.lsh', 'bits.negate', 'bits.or', 'bits.rsh', 'bits.xor',
33
+ // conversions
34
+ 'to_number',
35
+ // units
36
+ 'units.parse', 'units.parse_bytes',
37
+ // types
38
+ 'is_array', 'is_boolean', 'is_null', 'is_number', 'is_object', 'is_set', 'is_string', 'type_name',
39
+ // encoding
40
+ 'base64.decode', 'base64.encode', 'base64.is_valid', 'base64url.decode', 'base64url.encode', 'base64url.encode_no_pad', 'hex.decode', 'hex.encode', 'json.is_valid', 'json.marshal', 'json.marshal_with_options', 'json.unmarshal', 'urlquery.decode', 'urlquery.decode_object', 'urlquery.encode', 'urlquery.encode_object', 'yaml.is_valid', 'yaml.marshal', 'yaml.unmarshal',
41
+ // token signing
42
+ 'io.jwt.encode_sign', 'io.jwt.encode_sign_raw',
43
+ // token verification
44
+ 'io.jwt.decode', 'io.jwt.decode_verify', 'io.jwt.verify_es256', 'io.jwt.verify_es384', 'io.jwt.verify_es512', 'io.jwt.verify_hs256', 'io.jwt.verify_hs384', 'io.jwt.verify_hs512', 'io.jwt.verify_ps384', 'io.jwt.verify_ps512', 'io.jwt.verify_rs256', 'io.jwt.verify_rs384', 'io.jwt.verify_rs512',
45
+ // time
46
+ 'time.add_date', 'time.clock', 'time.date', 'time.diff', 'time.format', 'time.now_ns', 'time.parse_duration_ns', 'time.parse_ns', 'time.parse_rfc3339_ns', 'time.weekday',
47
+ // crypto
48
+ 'crypto.hmac.equal', 'crypto.hmac.md5', 'crypto.hmac.sha1', 'crypto.hmac.sha256', 'crypto.hmac.sha512', 'crypto.md5', 'crypto.parse_private_keys', 'crypto.sha1', 'crypto.sha256', 'crypto.x509.parse_and_verify_certificates', 'crypto.x509.parse_and_verify_certificates_with_options', 'crypto.x509.parse_certificates', 'crypto.x509.parse_keypair', 'crypto.x509.parse_rsa_private_key',
49
+ // graphs
50
+ 'graph.reachable', 'graph.reachable_paths', 'walk',
51
+ // graphql
52
+ 'graphql.is_valid', 'graphql.parse', 'graphql.parse_and_verify', 'graphql.parse_query', 'graphql.parse_schema', 'graphql.parse_schema_is_valid',
53
+ // http
54
+ 'http.send',
55
+ // aws
56
+ 'providers.aws.sign_req',
57
+ // net
58
+ 'net.cidr_contains', 'net.cidr_contains_matches', 'net.cidr_expand', 'net.cidr_intersects', 'net.cidr_is_valid', 'net.cidr_merge', 'net.lookup_ip_addr',
59
+ // uuid
60
+ 'uuid.parse', 'uuid.rfc4122',
61
+ // semantic versions
62
+ 'semver.compare', 'semver.is_valid',
63
+ // rego
64
+ 'rego.metadata.chain', 'rego.metadata.rule', 'rego.metadata.parse_module'];
65
+ const keywords = wordRegexp(regoKeywords);
66
+ const builtins = wordRegexp(regoBuiltins);
67
+ function mkRego(parserConf = {}) {
68
+ const ERRORCLASS = 'error';
69
+
70
+ // delimiters, operators, etc.
71
+ const delimiters = parserConf.delimiters ?? /^[()[\]{},:;.|]/;
72
+ const operators = [parserConf.operators ?? /^(?:in|\+|-|\*|\/|%|<=|>=|<|>|==|!=|&&|\|\|)\b/];
73
+
74
+ // tokenizer
75
+ function tokenBase(stream, state) {
76
+ if (stream.eatSpace()) return null;
77
+
78
+ // comments
79
+ // single-line comment starting with #
80
+ if (stream.match('#')) {
81
+ stream.skipToEnd();
82
+ return 'comment';
83
+ }
84
+ // multi-line comment starting with /* ... */
85
+ if (stream.match('/*')) {
86
+ state.tokenize = tokenComment;
87
+ return state.tokenize(stream, state);
88
+ }
89
+
90
+ // strings
91
+ // only double-quoted strings are standard
92
+ if (stream.match('"')) {
93
+ state.tokenize = tokenString('"');
94
+ return state.tokenize(stream, state);
95
+ }
96
+
97
+ // numbers
98
+ if (stream.match(/^[0-9]+(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/)) {
99
+ return 'number';
100
+ }
101
+
102
+ // operators
103
+ for (let i = 0; i < operators.length; i++) {
104
+ if (stream.match(operators[i])) {
105
+ return 'operator';
106
+ }
107
+ }
108
+
109
+ // delimiters/punctuation
110
+ if (stream.match(delimiters)) {
111
+ return 'punctuation';
112
+ }
113
+
114
+ // keywords, operators, builtins
115
+ if (stream.match(keywords)) {
116
+ return 'keyword';
117
+ }
118
+ if (stream.match(builtins)) {
119
+ return 'builtin';
120
+ }
121
+
122
+ // identifiers (variables, function names, etc.)
123
+ if (stream.match(/^[_A-Za-z][_A-Za-z0-9]*/)) {
124
+ return 'variable';
125
+ }
126
+
127
+ // if nothing matched, consume one character and mark it as error
128
+ stream.next();
129
+ return ERRORCLASS;
130
+ }
131
+
132
+ /**
133
+ * Tokenizer for multi-line (block) comments.
134
+ */
135
+ function tokenComment(stream, state) {
136
+ while (!stream.eol()) {
137
+ if (stream.match('*/')) {
138
+ state.tokenize = tokenBase;
139
+ break;
140
+ }
141
+ stream.next();
142
+ }
143
+ return 'comment';
144
+ }
145
+
146
+ // string tokenizer factory
147
+ function tokenString(quote) {
148
+ return function (stream, state) {
149
+ let escaped = false;
150
+ let ch = null;
151
+ while ((ch = stream.next()) != null) {
152
+ if (ch === quote && !escaped) {
153
+ // end of string
154
+ state.tokenize = tokenBase;
155
+ break;
156
+ }
157
+ escaped = !escaped && ch === '\\';
158
+ }
159
+ return 'string';
160
+ };
161
+ }
162
+
163
+ // CodeMirror API
164
+ return {
165
+ name: 'rego',
166
+ startState: function () {
167
+ return {
168
+ tokenize: tokenBase
169
+ };
170
+ },
171
+ token: function (stream, state) {
172
+ return state.tokenize(stream, state);
173
+ },
174
+ languageData: {
175
+ commentTokens: {
176
+ line: '#',
177
+ block: {
178
+ open: '/*',
179
+ close: '*/'
180
+ }
181
+ },
182
+ closeBrackets: {
183
+ brackets: ['(', '[', '{', '"', "'"]
184
+ }
185
+ }
186
+ };
187
+ }
188
+ const rego = mkRego();
189
+
190
+ export { mkRego, rego };
191
+ //# sourceMappingURL=rego.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rego.js","sources":["../../../../src/modifiers/hds-code-editor/languages/rego.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { StringStream } from '@codemirror/language';\n\ntype Quote = '\"' | \"'\";\n\ninterface ParserConfig {\n delimiters?: RegExp;\n operators?: RegExp;\n}\n\ninterface RegoState {\n tokenize: (stream: StringStream, state: RegoState) => string | null;\n}\n\nfunction wordRegexp(words: string[]): RegExp {\n return new RegExp('^((' + words.join(')|(') + '))\\\\b');\n}\n\n// keywords\nconst regoKeywords = [\n 'as',\n 'contains',\n 'data',\n 'default',\n 'else',\n 'every',\n 'false',\n 'if',\n 'in',\n 'import',\n 'input',\n 'package',\n 'not',\n 'null',\n 'some',\n 'true',\n 'with',\n];\n\n// built-ins / constants\nconst regoBuiltins = [\n // numbers\n 'abs',\n 'ceil',\n 'floor',\n 'numbers.range',\n 'numbers.range_step',\n 'rand.intn',\n 'round',\n // aggregates\n 'count',\n 'max',\n 'min',\n 'product',\n 'sort',\n 'sum',\n // arrays\n 'array.concat',\n 'array.reverse',\n 'array.slice',\n // sets\n 'intersection',\n 'union',\n // objects\n 'json.filter',\n 'json.match_scema',\n 'json.patch',\n 'json.remove',\n 'json.verify_schema',\n 'object.filter',\n 'object.get',\n 'object.keys',\n 'object.remove',\n 'object.subset',\n 'object.union',\n 'object.union_n',\n // strings\n 'concat',\n 'contains',\n 'endswith',\n 'format_int',\n 'indexof_n',\n 'lower',\n 'replace',\n 'split',\n 'sprintf',\n 'startswith',\n 'strings.any_prefix_match',\n 'strings.count',\n 'strings.render_template',\n 'strings.replace_n',\n 'strings.reverse',\n 'substring',\n 'trim',\n 'trim_left',\n 'trim_prefix',\n 'trim_right',\n 'trim_space',\n 'trim_suffix',\n 'upper',\n // regex\n 'regex.find_all_string_submatch_n',\n 'regex.find_n',\n 'regex.globs_match',\n 'regex.is_valid',\n 'regex.match',\n 'regex.replace',\n 'regex.split',\n 'regex.template_match',\n // glob\n 'glob.match',\n 'glob.quote_meta',\n // bitwise\n 'bits.and',\n 'bits.lsh',\n 'bits.negate',\n 'bits.or',\n 'bits.rsh',\n 'bits.xor',\n // conversions\n 'to_number',\n // units\n 'units.parse',\n 'units.parse_bytes',\n // types\n 'is_array',\n 'is_boolean',\n 'is_null',\n 'is_number',\n 'is_object',\n 'is_set',\n 'is_string',\n 'type_name',\n // encoding\n 'base64.decode',\n 'base64.encode',\n 'base64.is_valid',\n 'base64url.decode',\n 'base64url.encode',\n 'base64url.encode_no_pad',\n 'hex.decode',\n 'hex.encode',\n 'json.is_valid',\n 'json.marshal',\n 'json.marshal_with_options',\n 'json.unmarshal',\n 'urlquery.decode',\n 'urlquery.decode_object',\n 'urlquery.encode',\n 'urlquery.encode_object',\n 'yaml.is_valid',\n 'yaml.marshal',\n 'yaml.unmarshal',\n // token signing\n 'io.jwt.encode_sign',\n 'io.jwt.encode_sign_raw',\n // token verification\n 'io.jwt.decode',\n 'io.jwt.decode_verify',\n 'io.jwt.verify_es256',\n 'io.jwt.verify_es384',\n 'io.jwt.verify_es512',\n 'io.jwt.verify_hs256',\n 'io.jwt.verify_hs384',\n 'io.jwt.verify_hs512',\n 'io.jwt.verify_ps384',\n 'io.jwt.verify_ps512',\n 'io.jwt.verify_rs256',\n 'io.jwt.verify_rs384',\n 'io.jwt.verify_rs512',\n // time\n 'time.add_date',\n 'time.clock',\n 'time.date',\n 'time.diff',\n 'time.format',\n 'time.now_ns',\n 'time.parse_duration_ns',\n 'time.parse_ns',\n 'time.parse_rfc3339_ns',\n 'time.weekday',\n // crypto\n 'crypto.hmac.equal',\n 'crypto.hmac.md5',\n 'crypto.hmac.sha1',\n 'crypto.hmac.sha256',\n 'crypto.hmac.sha512',\n 'crypto.md5',\n 'crypto.parse_private_keys',\n 'crypto.sha1',\n 'crypto.sha256',\n 'crypto.x509.parse_and_verify_certificates',\n 'crypto.x509.parse_and_verify_certificates_with_options',\n 'crypto.x509.parse_certificates',\n 'crypto.x509.parse_keypair',\n 'crypto.x509.parse_rsa_private_key',\n // graphs\n 'graph.reachable',\n 'graph.reachable_paths',\n 'walk',\n // graphql\n 'graphql.is_valid',\n 'graphql.parse',\n 'graphql.parse_and_verify',\n 'graphql.parse_query',\n 'graphql.parse_schema',\n 'graphql.parse_schema_is_valid',\n // http\n 'http.send',\n // aws\n 'providers.aws.sign_req',\n // net\n 'net.cidr_contains',\n 'net.cidr_contains_matches',\n 'net.cidr_expand',\n 'net.cidr_intersects',\n 'net.cidr_is_valid',\n 'net.cidr_merge',\n 'net.lookup_ip_addr',\n // uuid\n 'uuid.parse',\n 'uuid.rfc4122',\n // semantic versions\n 'semver.compare',\n 'semver.is_valid',\n // rego\n 'rego.metadata.chain',\n 'rego.metadata.rule',\n 'rego.metadata.parse_module',\n];\n\nconst keywords = wordRegexp(regoKeywords);\nconst builtins = wordRegexp(regoBuiltins);\n\nexport function mkRego(parserConf: ParserConfig = {}) {\n const ERRORCLASS = 'error';\n\n // delimiters, operators, etc.\n const delimiters = parserConf.delimiters ?? /^[()[\\]{},:;.|]/;\n const operators = [\n parserConf.operators ?? /^(?:in|\\+|-|\\*|\\/|%|<=|>=|<|>|==|!=|&&|\\|\\|)\\b/,\n ];\n\n // tokenizer\n function tokenBase(stream: StringStream, state: RegoState): string | null {\n if (stream.eatSpace()) return null;\n\n // comments\n // single-line comment starting with #\n if (stream.match('#')) {\n stream.skipToEnd();\n return 'comment';\n }\n // multi-line comment starting with /* ... */\n if (stream.match('/*')) {\n state.tokenize = tokenComment;\n return state.tokenize(stream, state);\n }\n\n // strings\n // only double-quoted strings are standard\n if (stream.match('\"')) {\n state.tokenize = tokenString('\"');\n return state.tokenize(stream, state);\n }\n\n // numbers\n if (stream.match(/^[0-9]+(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/)) {\n return 'number';\n }\n\n // operators\n for (let i = 0; i < operators.length; i++) {\n if (stream.match(operators[i]!)) {\n return 'operator';\n }\n }\n\n // delimiters/punctuation\n if (stream.match(delimiters)) {\n return 'punctuation';\n }\n\n // keywords, operators, builtins\n if (stream.match(keywords)) {\n return 'keyword';\n }\n if (stream.match(builtins)) {\n return 'builtin';\n }\n\n // identifiers (variables, function names, etc.)\n if (stream.match(/^[_A-Za-z][_A-Za-z0-9]*/)) {\n return 'variable';\n }\n\n // if nothing matched, consume one character and mark it as error\n stream.next();\n\n return ERRORCLASS;\n }\n\n /**\n * Tokenizer for multi-line (block) comments.\n */\n function tokenComment(stream: StringStream, state: RegoState): string {\n while (!stream.eol()) {\n if (stream.match('*/')) {\n state.tokenize = tokenBase;\n break;\n }\n stream.next();\n }\n return 'comment';\n }\n\n // string tokenizer factory\n function tokenString(\n quote: Quote\n ): (stream: StringStream, state: RegoState) => string {\n return function (stream: StringStream, state: RegoState): string {\n let escaped = false;\n let ch = null;\n\n while ((ch = stream.next()) != null) {\n if (ch === quote && !escaped) {\n // end of string\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && ch === '\\\\';\n }\n\n return 'string';\n };\n }\n\n // CodeMirror API\n return {\n name: 'rego',\n\n startState: function (): RegoState {\n return { tokenize: tokenBase };\n },\n\n token: function (stream: StringStream, state: RegoState): string | null {\n return state.tokenize(stream, state);\n },\n\n languageData: {\n commentTokens: { line: '#', block: { open: '/*', close: '*/' } },\n closeBrackets: { brackets: ['(', '[', '{', '\"', \"'\"] },\n },\n };\n}\n\nexport const rego = mkRego();\n"],"names":["wordRegexp","words","RegExp","join","regoKeywords","regoBuiltins","keywords","builtins","mkRego","parserConf","ERRORCLASS","delimiters","operators","tokenBase","stream","state","eatSpace","match","skipToEnd","tokenize","tokenComment","tokenString","i","length","next","eol","quote","escaped","ch","name","startState","token","languageData","commentTokens","line","block","open","close","closeBrackets","brackets","rego"],"mappings":"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"}