@ni/nimble-components 32.13.0 → 33.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/dist/all-components-bundle.js +996 -1039
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +5002 -5022
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/anchor/index.js +2 -2
  6. package/dist/esm/anchor/index.js.map +1 -1
  7. package/dist/esm/anchor/styles.d.ts +1 -1
  8. package/dist/esm/anchor/styles.js +1 -1
  9. package/dist/esm/anchor/styles.js.map +1 -1
  10. package/dist/esm/anchor/template.d.ts +2 -2
  11. package/dist/esm/anchor/template.js +1 -1
  12. package/dist/esm/anchor/template.js.map +1 -1
  13. package/dist/esm/anchor-base/index.d.ts +1 -1
  14. package/dist/esm/anchor-base/index.js +1 -1
  15. package/dist/esm/anchor-base/index.js.map +1 -1
  16. package/dist/esm/anchor-button/index.js +2 -2
  17. package/dist/esm/anchor-button/index.js.map +1 -1
  18. package/dist/esm/anchor-button/styles.d.ts +1 -1
  19. package/dist/esm/anchor-button/styles.js +1 -1
  20. package/dist/esm/anchor-button/styles.js.map +1 -1
  21. package/dist/esm/anchor-button/template.d.ts +2 -2
  22. package/dist/esm/anchor-button/template.js +2 -2
  23. package/dist/esm/anchor-button/template.js.map +1 -1
  24. package/dist/esm/anchor-menu-item/index.d.ts +1 -1
  25. package/dist/esm/anchor-menu-item/index.js +3 -3
  26. package/dist/esm/anchor-menu-item/index.js.map +1 -1
  27. package/dist/esm/anchor-menu-item/styles.d.ts +1 -1
  28. package/dist/esm/anchor-menu-item/styles.js +1 -1
  29. package/dist/esm/anchor-menu-item/styles.js.map +1 -1
  30. package/dist/esm/anchor-menu-item/template.d.ts +2 -2
  31. package/dist/esm/anchor-menu-item/template.js +2 -2
  32. package/dist/esm/anchor-menu-item/template.js.map +1 -1
  33. package/dist/esm/anchor-tab/index.d.ts +1 -1
  34. package/dist/esm/anchor-tab/index.js +2 -2
  35. package/dist/esm/anchor-tab/index.js.map +1 -1
  36. package/dist/esm/anchor-tab/styles.d.ts +1 -1
  37. package/dist/esm/anchor-tab/styles.js +1 -1
  38. package/dist/esm/anchor-tab/styles.js.map +1 -1
  39. package/dist/esm/anchor-tab/template.d.ts +2 -2
  40. package/dist/esm/anchor-tab/template.js +2 -2
  41. package/dist/esm/anchor-tab/template.js.map +1 -1
  42. package/dist/esm/anchor-tabs/index.d.ts +1 -1
  43. package/dist/esm/anchor-tabs/index.js +3 -3
  44. package/dist/esm/anchor-tabs/index.js.map +1 -1
  45. package/dist/esm/anchor-tree-item/index.js +3 -3
  46. package/dist/esm/anchor-tree-item/index.js.map +1 -1
  47. package/dist/esm/anchor-tree-item/styles.d.ts +1 -1
  48. package/dist/esm/anchor-tree-item/styles.js +1 -1
  49. package/dist/esm/anchor-tree-item/styles.js.map +1 -1
  50. package/dist/esm/anchor-tree-item/template.d.ts +2 -2
  51. package/dist/esm/anchor-tree-item/template.js +2 -2
  52. package/dist/esm/anchor-tree-item/template.js.map +1 -1
  53. package/dist/esm/anchored-region/index.d.ts +1 -1
  54. package/dist/esm/anchored-region/index.js +1 -1
  55. package/dist/esm/anchored-region/index.js.map +1 -1
  56. package/dist/esm/anchored-region/styles.d.ts +1 -1
  57. package/dist/esm/anchored-region/styles.js +1 -1
  58. package/dist/esm/anchored-region/styles.js.map +1 -1
  59. package/dist/esm/banner/index.d.ts +1 -1
  60. package/dist/esm/banner/index.js +2 -2
  61. package/dist/esm/banner/index.js.map +1 -1
  62. package/dist/esm/banner/styles.d.ts +1 -1
  63. package/dist/esm/banner/styles.js +1 -1
  64. package/dist/esm/banner/styles.js.map +1 -1
  65. package/dist/esm/banner/template.d.ts +1 -1
  66. package/dist/esm/banner/template.js +1 -1
  67. package/dist/esm/banner/template.js.map +1 -1
  68. package/dist/esm/breadcrumb/index.d.ts +1 -1
  69. package/dist/esm/breadcrumb/index.js +2 -2
  70. package/dist/esm/breadcrumb/index.js.map +1 -1
  71. package/dist/esm/breadcrumb/styles.d.ts +1 -1
  72. package/dist/esm/breadcrumb/styles.js +1 -1
  73. package/dist/esm/breadcrumb/styles.js.map +1 -1
  74. package/dist/esm/breadcrumb-item/index.d.ts +1 -1
  75. package/dist/esm/breadcrumb-item/index.js +1 -1
  76. package/dist/esm/breadcrumb-item/index.js.map +1 -1
  77. package/dist/esm/breadcrumb-item/styles.d.ts +1 -1
  78. package/dist/esm/breadcrumb-item/styles.js +1 -1
  79. package/dist/esm/breadcrumb-item/styles.js.map +1 -1
  80. package/dist/esm/button/index.d.ts +1 -1
  81. package/dist/esm/button/index.js +3 -3
  82. package/dist/esm/button/index.js.map +1 -1
  83. package/dist/esm/button/styles.d.ts +1 -1
  84. package/dist/esm/button/styles.js +1 -1
  85. package/dist/esm/button/styles.js.map +1 -1
  86. package/dist/esm/button/template.d.ts +2 -2
  87. package/dist/esm/button/template.js +2 -2
  88. package/dist/esm/button/template.js.map +1 -1
  89. package/dist/esm/button/types.d.ts +1 -1
  90. package/dist/esm/button/types.js.map +1 -1
  91. package/dist/esm/card/index.d.ts +1 -1
  92. package/dist/esm/card/index.js +1 -1
  93. package/dist/esm/card/index.js.map +1 -1
  94. package/dist/esm/card/styles.d.ts +1 -1
  95. package/dist/esm/card/styles.js +1 -1
  96. package/dist/esm/card/styles.js.map +1 -1
  97. package/dist/esm/card/template.d.ts +1 -1
  98. package/dist/esm/card/template.js +1 -1
  99. package/dist/esm/card/template.js.map +1 -1
  100. package/dist/esm/card-button/index.d.ts +1 -1
  101. package/dist/esm/card-button/index.js +3 -3
  102. package/dist/esm/card-button/index.js.map +1 -1
  103. package/dist/esm/card-button/styles.d.ts +1 -1
  104. package/dist/esm/card-button/styles.js +1 -1
  105. package/dist/esm/card-button/styles.js.map +1 -1
  106. package/dist/esm/checkbox/index.d.ts +2 -2
  107. package/dist/esm/checkbox/index.js +2 -2
  108. package/dist/esm/checkbox/index.js.map +1 -1
  109. package/dist/esm/checkbox/styles.d.ts +1 -1
  110. package/dist/esm/checkbox/styles.js +1 -1
  111. package/dist/esm/checkbox/styles.js.map +1 -1
  112. package/dist/esm/checkbox/template.d.ts +2 -2
  113. package/dist/esm/checkbox/template.js +1 -1
  114. package/dist/esm/checkbox/template.js.map +1 -1
  115. package/dist/esm/combobox/index.d.ts +3 -3
  116. package/dist/esm/combobox/index.js +3 -3
  117. package/dist/esm/combobox/index.js.map +1 -1
  118. package/dist/esm/combobox/models/combobox-form-associated.d.ts +1 -1
  119. package/dist/esm/combobox/models/combobox-form-associated.js +1 -1
  120. package/dist/esm/combobox/models/combobox-form-associated.js.map +1 -1
  121. package/dist/esm/combobox/styles.d.ts +1 -1
  122. package/dist/esm/combobox/styles.js +1 -1
  123. package/dist/esm/combobox/styles.js.map +1 -1
  124. package/dist/esm/combobox/template.d.ts +2 -2
  125. package/dist/esm/combobox/template.js +2 -2
  126. package/dist/esm/combobox/template.js.map +1 -1
  127. package/dist/esm/combobox/testing/combobox.pageobject.js +1 -1
  128. package/dist/esm/combobox/testing/combobox.pageobject.js.map +1 -1
  129. package/dist/esm/combobox/types.d.ts +1 -1
  130. package/dist/esm/combobox/types.js +1 -1
  131. package/dist/esm/combobox/types.js.map +1 -1
  132. package/dist/esm/dialog/index.d.ts +1 -1
  133. package/dist/esm/dialog/index.js +2 -2
  134. package/dist/esm/dialog/index.js.map +1 -1
  135. package/dist/esm/dialog/styles.d.ts +1 -1
  136. package/dist/esm/dialog/styles.js +1 -1
  137. package/dist/esm/dialog/styles.js.map +1 -1
  138. package/dist/esm/dialog/template.d.ts +1 -1
  139. package/dist/esm/dialog/template.js +1 -1
  140. package/dist/esm/dialog/template.js.map +1 -1
  141. package/dist/esm/drawer/index.d.ts +1 -1
  142. package/dist/esm/drawer/index.js +3 -3
  143. package/dist/esm/drawer/index.js.map +1 -1
  144. package/dist/esm/drawer/styles.d.ts +1 -1
  145. package/dist/esm/drawer/styles.js +1 -1
  146. package/dist/esm/drawer/styles.js.map +1 -1
  147. package/dist/esm/drawer/template.d.ts +1 -1
  148. package/dist/esm/drawer/template.js +1 -1
  149. package/dist/esm/drawer/template.js.map +1 -1
  150. package/dist/esm/icon-base/index.d.ts +1 -1
  151. package/dist/esm/icon-base/index.js +2 -2
  152. package/dist/esm/icon-base/index.js.map +1 -1
  153. package/dist/esm/icon-base/styles.d.ts +1 -1
  154. package/dist/esm/icon-base/styles.js +1 -1
  155. package/dist/esm/icon-base/styles.js.map +1 -1
  156. package/dist/esm/icon-base/template.d.ts +1 -1
  157. package/dist/esm/icon-base/template.js +1 -1
  158. package/dist/esm/icon-base/template.js.map +1 -1
  159. package/dist/esm/label-provider/base/index.d.ts +2 -2
  160. package/dist/esm/label-provider/base/index.js +2 -2
  161. package/dist/esm/label-provider/base/index.js.map +1 -1
  162. package/dist/esm/label-provider/base/styles.d.ts +1 -1
  163. package/dist/esm/label-provider/base/styles.js +1 -1
  164. package/dist/esm/label-provider/base/styles.js.map +1 -1
  165. package/dist/esm/label-provider/core/index.d.ts +22 -22
  166. package/dist/esm/label-provider/core/index.js +2 -2
  167. package/dist/esm/label-provider/core/index.js.map +1 -1
  168. package/dist/esm/label-provider/core/label-tokens.d.ts +1 -1
  169. package/dist/esm/label-provider/core/label-tokens.js +1 -1
  170. package/dist/esm/label-provider/core/label-tokens.js.map +1 -1
  171. package/dist/esm/label-provider/rich-text/index.d.ts +8 -8
  172. package/dist/esm/label-provider/rich-text/index.js +2 -2
  173. package/dist/esm/label-provider/rich-text/index.js.map +1 -1
  174. package/dist/esm/label-provider/rich-text/label-tokens.d.ts +1 -1
  175. package/dist/esm/label-provider/rich-text/label-tokens.js +1 -1
  176. package/dist/esm/label-provider/rich-text/label-tokens.js.map +1 -1
  177. package/dist/esm/label-provider/table/index.d.ts +32 -32
  178. package/dist/esm/label-provider/table/index.js +2 -2
  179. package/dist/esm/label-provider/table/index.js.map +1 -1
  180. package/dist/esm/label-provider/table/label-tokens.d.ts +1 -1
  181. package/dist/esm/label-provider/table/label-tokens.js +1 -1
  182. package/dist/esm/label-provider/table/label-tokens.js.map +1 -1
  183. package/dist/esm/list-option/index.d.ts +1 -1
  184. package/dist/esm/list-option/index.js +2 -2
  185. package/dist/esm/list-option/index.js.map +1 -1
  186. package/dist/esm/list-option/styles.d.ts +1 -1
  187. package/dist/esm/list-option/styles.js +1 -1
  188. package/dist/esm/list-option/styles.js.map +1 -1
  189. package/dist/esm/list-option/template.d.ts +3 -3
  190. package/dist/esm/list-option/template.js +3 -3
  191. package/dist/esm/list-option/template.js.map +1 -1
  192. package/dist/esm/list-option-group/index.d.ts +1 -1
  193. package/dist/esm/list-option-group/index.js +2 -2
  194. package/dist/esm/list-option-group/index.js.map +1 -1
  195. package/dist/esm/list-option-group/styles.d.ts +1 -1
  196. package/dist/esm/list-option-group/styles.js +1 -1
  197. package/dist/esm/list-option-group/styles.js.map +1 -1
  198. package/dist/esm/list-option-group/template.d.ts +1 -1
  199. package/dist/esm/list-option-group/template.js +1 -1
  200. package/dist/esm/list-option-group/template.js.map +1 -1
  201. package/dist/esm/mapping/base/index.d.ts +1 -1
  202. package/dist/esm/mapping/base/index.js +2 -2
  203. package/dist/esm/mapping/base/index.js.map +1 -1
  204. package/dist/esm/mapping/base/styles.d.ts +1 -1
  205. package/dist/esm/mapping/base/styles.js +1 -1
  206. package/dist/esm/mapping/base/styles.js.map +1 -1
  207. package/dist/esm/mapping/base/template.d.ts +1 -1
  208. package/dist/esm/mapping/base/template.js +1 -1
  209. package/dist/esm/mapping/base/template.js.map +1 -1
  210. package/dist/esm/mapping/empty/index.js +2 -2
  211. package/dist/esm/mapping/empty/index.js.map +1 -1
  212. package/dist/esm/mapping/icon/index.js +2 -2
  213. package/dist/esm/mapping/icon/index.js.map +1 -1
  214. package/dist/esm/mapping/spinner/index.js +2 -2
  215. package/dist/esm/mapping/spinner/index.js.map +1 -1
  216. package/dist/esm/mapping/text/index.js +2 -2
  217. package/dist/esm/mapping/text/index.js.map +1 -1
  218. package/dist/esm/mapping/user/index.js +2 -2
  219. package/dist/esm/mapping/user/index.js.map +1 -1
  220. package/dist/esm/menu/index.js +2 -2
  221. package/dist/esm/menu/index.js.map +1 -1
  222. package/dist/esm/menu/menu.foundation.d.ts +1 -1
  223. package/dist/esm/menu/menu.foundation.js +3 -3
  224. package/dist/esm/menu/menu.foundation.js.map +1 -1
  225. package/dist/esm/menu/styles.d.ts +1 -1
  226. package/dist/esm/menu/styles.js +1 -1
  227. package/dist/esm/menu/styles.js.map +1 -1
  228. package/dist/esm/menu/template.d.ts +2 -2
  229. package/dist/esm/menu/template.js +1 -1
  230. package/dist/esm/menu/template.js.map +1 -1
  231. package/dist/esm/menu-button/index.d.ts +1 -1
  232. package/dist/esm/menu-button/index.js +3 -3
  233. package/dist/esm/menu-button/index.js.map +1 -1
  234. package/dist/esm/menu-button/styles.d.ts +1 -1
  235. package/dist/esm/menu-button/styles.js +1 -1
  236. package/dist/esm/menu-button/styles.js.map +1 -1
  237. package/dist/esm/menu-button/template.d.ts +1 -1
  238. package/dist/esm/menu-button/template.js +1 -1
  239. package/dist/esm/menu-button/template.js.map +1 -1
  240. package/dist/esm/menu-button/testing/menu-button.pageobject.js +1 -1
  241. package/dist/esm/menu-button/testing/menu-button.pageobject.js.map +1 -1
  242. package/dist/esm/menu-item/index.d.ts +1 -1
  243. package/dist/esm/menu-item/index.js +2 -2
  244. package/dist/esm/menu-item/index.js.map +1 -1
  245. package/dist/esm/menu-item/styles.d.ts +1 -1
  246. package/dist/esm/menu-item/styles.js +1 -1
  247. package/dist/esm/menu-item/styles.js.map +1 -1
  248. package/dist/esm/number-field/index.d.ts +3 -3
  249. package/dist/esm/number-field/index.js +2 -2
  250. package/dist/esm/number-field/index.js.map +1 -1
  251. package/dist/esm/number-field/styles.d.ts +1 -1
  252. package/dist/esm/number-field/styles.js +1 -1
  253. package/dist/esm/number-field/styles.js.map +1 -1
  254. package/dist/esm/number-field/template.d.ts +3 -3
  255. package/dist/esm/number-field/template.js +3 -3
  256. package/dist/esm/number-field/template.js.map +1 -1
  257. package/dist/esm/patterns/button/styles.d.ts +2 -2
  258. package/dist/esm/patterns/button/styles.js +1 -1
  259. package/dist/esm/patterns/button/styles.js.map +1 -1
  260. package/dist/esm/patterns/dropdown/styles.d.ts +1 -1
  261. package/dist/esm/patterns/dropdown/styles.js +1 -1
  262. package/dist/esm/patterns/dropdown/styles.js.map +1 -1
  263. package/dist/esm/patterns/error/styles.d.ts +1 -1
  264. package/dist/esm/patterns/error/styles.js +1 -1
  265. package/dist/esm/patterns/error/styles.js.map +1 -1
  266. package/dist/esm/patterns/error/template.d.ts +1 -1
  267. package/dist/esm/patterns/error/template.js +1 -1
  268. package/dist/esm/patterns/error/template.js.map +1 -1
  269. package/dist/esm/patterns/error/testing/error-pattern.pageobject.d.ts +1 -1
  270. package/dist/esm/patterns/error/testing/error-pattern.pageobject.js.map +1 -1
  271. package/dist/esm/patterns/error/types.d.ts +2 -2
  272. package/dist/esm/patterns/error/types.js +1 -1
  273. package/dist/esm/patterns/error/types.js.map +1 -1
  274. package/dist/esm/patterns/expand-collapse/styles.d.ts +1 -1
  275. package/dist/esm/patterns/expand-collapse/styles.js +1 -1
  276. package/dist/esm/patterns/expand-collapse/styles.js.map +1 -1
  277. package/dist/esm/patterns/required-visible/styles.d.ts +1 -1
  278. package/dist/esm/patterns/required-visible/styles.js +1 -1
  279. package/dist/esm/patterns/required-visible/styles.js.map +1 -1
  280. package/dist/esm/patterns/required-visible/template.d.ts +1 -1
  281. package/dist/esm/patterns/required-visible/template.js +1 -1
  282. package/dist/esm/patterns/required-visible/template.js.map +1 -1
  283. package/dist/esm/patterns/required-visible/testing/required-visible-pattern.pageobject.d.ts +1 -1
  284. package/dist/esm/patterns/required-visible/testing/required-visible-pattern.pageobject.js.map +1 -1
  285. package/dist/esm/patterns/required-visible/types.d.ts +2 -2
  286. package/dist/esm/patterns/required-visible/types.js +1 -1
  287. package/dist/esm/patterns/required-visible/types.js.map +1 -1
  288. package/dist/esm/patterns/tabs/styles.d.ts +1 -1
  289. package/dist/esm/patterns/tabs/styles.js +1 -1
  290. package/dist/esm/patterns/tabs/styles.js.map +1 -1
  291. package/dist/esm/patterns/tabs/template.d.ts +2 -2
  292. package/dist/esm/patterns/tabs/template.js +2 -2
  293. package/dist/esm/patterns/tabs/template.js.map +1 -1
  294. package/dist/esm/radio/index.d.ts +1 -1
  295. package/dist/esm/radio/index.js +1 -1
  296. package/dist/esm/radio/index.js.map +1 -1
  297. package/dist/esm/radio/styles.d.ts +1 -1
  298. package/dist/esm/radio/styles.js +1 -1
  299. package/dist/esm/radio/styles.js.map +1 -1
  300. package/dist/esm/radio-group/index.d.ts +4 -4
  301. package/dist/esm/radio-group/index.js +2 -2
  302. package/dist/esm/radio-group/index.js.map +1 -1
  303. package/dist/esm/radio-group/styles.d.ts +1 -1
  304. package/dist/esm/radio-group/styles.js +1 -1
  305. package/dist/esm/radio-group/styles.js.map +1 -1
  306. package/dist/esm/radio-group/template.d.ts +1 -1
  307. package/dist/esm/radio-group/template.js +2 -2
  308. package/dist/esm/radio-group/template.js.map +1 -1
  309. package/dist/esm/rich-text/base/index.d.ts +2 -2
  310. package/dist/esm/rich-text/base/index.js +2 -2
  311. package/dist/esm/rich-text/base/index.js.map +1 -1
  312. package/dist/esm/rich-text/editor/index.d.ts +2 -2
  313. package/dist/esm/rich-text/editor/index.js +3 -3
  314. package/dist/esm/rich-text/editor/index.js.map +1 -1
  315. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js +1 -1
  316. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -1
  317. package/dist/esm/rich-text/editor/styles.d.ts +1 -1
  318. package/dist/esm/rich-text/editor/styles.js +1 -1
  319. package/dist/esm/rich-text/editor/styles.js.map +1 -1
  320. package/dist/esm/rich-text/editor/template.d.ts +1 -1
  321. package/dist/esm/rich-text/editor/template.js +1 -1
  322. package/dist/esm/rich-text/editor/template.js.map +1 -1
  323. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +1 -1
  324. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
  325. package/dist/esm/rich-text/editor/testing/types.js +1 -1
  326. package/dist/esm/rich-text/editor/testing/types.js.map +1 -1
  327. package/dist/esm/rich-text/mention-listbox/index.d.ts +1 -1
  328. package/dist/esm/rich-text/mention-listbox/index.js +3 -3
  329. package/dist/esm/rich-text/mention-listbox/index.js.map +1 -1
  330. package/dist/esm/rich-text/mention-listbox/styles.d.ts +1 -1
  331. package/dist/esm/rich-text/mention-listbox/styles.js +1 -1
  332. package/dist/esm/rich-text/mention-listbox/styles.js.map +1 -1
  333. package/dist/esm/rich-text/mention-listbox/template.d.ts +1 -1
  334. package/dist/esm/rich-text/mention-listbox/template.js +2 -2
  335. package/dist/esm/rich-text/mention-listbox/template.js.map +1 -1
  336. package/dist/esm/rich-text/models/mention-extension-configuration.d.ts +1 -1
  337. package/dist/esm/rich-text/models/mention-extension-configuration.js.map +1 -1
  338. package/dist/esm/rich-text/models/rich-text-tracker.js +1 -1
  339. package/dist/esm/rich-text/models/rich-text-tracker.js.map +1 -1
  340. package/dist/esm/rich-text/viewer/index.js +2 -2
  341. package/dist/esm/rich-text/viewer/index.js.map +1 -1
  342. package/dist/esm/rich-text/viewer/styles.d.ts +1 -1
  343. package/dist/esm/rich-text/viewer/styles.js +1 -1
  344. package/dist/esm/rich-text/viewer/styles.js.map +1 -1
  345. package/dist/esm/rich-text/viewer/template.d.ts +1 -1
  346. package/dist/esm/rich-text/viewer/template.js +1 -1
  347. package/dist/esm/rich-text/viewer/template.js.map +1 -1
  348. package/dist/esm/rich-text-mention/base/index.d.ts +2 -2
  349. package/dist/esm/rich-text-mention/base/index.js +2 -2
  350. package/dist/esm/rich-text-mention/base/index.js.map +1 -1
  351. package/dist/esm/rich-text-mention/base/models/mention-internals.d.ts +1 -1
  352. package/dist/esm/rich-text-mention/base/models/mention-internals.js +1 -1
  353. package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
  354. package/dist/esm/rich-text-mention/base/styles.d.ts +1 -1
  355. package/dist/esm/rich-text-mention/base/styles.js +1 -1
  356. package/dist/esm/rich-text-mention/base/styles.js.map +1 -1
  357. package/dist/esm/rich-text-mention/base/template.d.ts +1 -1
  358. package/dist/esm/rich-text-mention/base/template.js +1 -1
  359. package/dist/esm/rich-text-mention/base/template.js.map +1 -1
  360. package/dist/esm/rich-text-mention/base/view/index.d.ts +1 -1
  361. package/dist/esm/rich-text-mention/base/view/index.js +2 -2
  362. package/dist/esm/rich-text-mention/base/view/index.js.map +1 -1
  363. package/dist/esm/rich-text-mention/users/index.js +1 -1
  364. package/dist/esm/rich-text-mention/users/index.js.map +1 -1
  365. package/dist/esm/rich-text-mention/users/view/index.js +1 -1
  366. package/dist/esm/rich-text-mention/users/view/index.js.map +1 -1
  367. package/dist/esm/rich-text-mention/users/view/styles.d.ts +1 -1
  368. package/dist/esm/rich-text-mention/users/view/styles.js +1 -1
  369. package/dist/esm/rich-text-mention/users/view/styles.js.map +1 -1
  370. package/dist/esm/rich-text-mention/users/view/template.d.ts +1 -1
  371. package/dist/esm/rich-text-mention/users/view/template.js +1 -1
  372. package/dist/esm/rich-text-mention/users/view/template.js.map +1 -1
  373. package/dist/esm/select/index.d.ts +3 -3
  374. package/dist/esm/select/index.js +3 -3
  375. package/dist/esm/select/index.js.map +1 -1
  376. package/dist/esm/select/models/select-form-associated.d.ts +1 -1
  377. package/dist/esm/select/models/select-form-associated.js +1 -1
  378. package/dist/esm/select/models/select-form-associated.js.map +1 -1
  379. package/dist/esm/select/styles.d.ts +1 -1
  380. package/dist/esm/select/styles.js +1 -1
  381. package/dist/esm/select/styles.js.map +1 -1
  382. package/dist/esm/select/template.d.ts +2 -2
  383. package/dist/esm/select/template.js +2 -2
  384. package/dist/esm/select/template.js.map +1 -1
  385. package/dist/esm/select/testing/select.pageobject.js +1 -1
  386. package/dist/esm/select/testing/select.pageobject.js.map +1 -1
  387. package/dist/esm/spinner/index.d.ts +1 -1
  388. package/dist/esm/spinner/index.js +2 -2
  389. package/dist/esm/spinner/index.js.map +1 -1
  390. package/dist/esm/spinner/styles.d.ts +1 -1
  391. package/dist/esm/spinner/styles.js +1 -1
  392. package/dist/esm/spinner/styles.js.map +1 -1
  393. package/dist/esm/spinner/template.d.ts +1 -1
  394. package/dist/esm/spinner/template.js +1 -1
  395. package/dist/esm/spinner/template.js.map +1 -1
  396. package/dist/esm/switch/index.d.ts +1 -1
  397. package/dist/esm/switch/index.js +1 -1
  398. package/dist/esm/switch/index.js.map +1 -1
  399. package/dist/esm/switch/styles.d.ts +1 -1
  400. package/dist/esm/switch/styles.js +1 -1
  401. package/dist/esm/switch/styles.js.map +1 -1
  402. package/dist/esm/switch/template.d.ts +1 -1
  403. package/dist/esm/switch/template.js +1 -1
  404. package/dist/esm/switch/template.js.map +1 -1
  405. package/dist/esm/tab/index.d.ts +1 -1
  406. package/dist/esm/tab/index.js +1 -1
  407. package/dist/esm/tab/index.js.map +1 -1
  408. package/dist/esm/tab/styles.d.ts +1 -1
  409. package/dist/esm/tab/styles.js +1 -1
  410. package/dist/esm/tab/styles.js.map +1 -1
  411. package/dist/esm/tab-panel/index.d.ts +1 -1
  412. package/dist/esm/tab-panel/index.js +1 -1
  413. package/dist/esm/tab-panel/index.js.map +1 -1
  414. package/dist/esm/tab-panel/styles.d.ts +1 -1
  415. package/dist/esm/tab-panel/styles.js +1 -1
  416. package/dist/esm/tab-panel/styles.js.map +1 -1
  417. package/dist/esm/table/components/cell/index.d.ts +2 -2
  418. package/dist/esm/table/components/cell/index.js +2 -2
  419. package/dist/esm/table/components/cell/index.js.map +1 -1
  420. package/dist/esm/table/components/cell/styles.d.ts +1 -1
  421. package/dist/esm/table/components/cell/styles.js +1 -1
  422. package/dist/esm/table/components/cell/styles.js.map +1 -1
  423. package/dist/esm/table/components/cell/template.d.ts +1 -1
  424. package/dist/esm/table/components/cell/template.js +1 -1
  425. package/dist/esm/table/components/cell/template.js.map +1 -1
  426. package/dist/esm/table/components/group-row/index.d.ts +1 -1
  427. package/dist/esm/table/components/group-row/index.js +2 -2
  428. package/dist/esm/table/components/group-row/index.js.map +1 -1
  429. package/dist/esm/table/components/group-row/styles.d.ts +1 -1
  430. package/dist/esm/table/components/group-row/styles.js +1 -1
  431. package/dist/esm/table/components/group-row/styles.js.map +1 -1
  432. package/dist/esm/table/components/group-row/template.d.ts +1 -1
  433. package/dist/esm/table/components/group-row/template.js +1 -1
  434. package/dist/esm/table/components/group-row/template.js.map +1 -1
  435. package/dist/esm/table/components/header/index.d.ts +1 -1
  436. package/dist/esm/table/components/header/index.js +2 -2
  437. package/dist/esm/table/components/header/index.js.map +1 -1
  438. package/dist/esm/table/components/header/styles.d.ts +1 -1
  439. package/dist/esm/table/components/header/styles.js +1 -1
  440. package/dist/esm/table/components/header/styles.js.map +1 -1
  441. package/dist/esm/table/components/header/template.d.ts +1 -1
  442. package/dist/esm/table/components/header/template.js +1 -1
  443. package/dist/esm/table/components/header/template.js.map +1 -1
  444. package/dist/esm/table/components/row/index.d.ts +2 -2
  445. package/dist/esm/table/components/row/index.js +2 -2
  446. package/dist/esm/table/components/row/index.js.map +1 -1
  447. package/dist/esm/table/components/row/styles.d.ts +1 -1
  448. package/dist/esm/table/components/row/styles.js +1 -1
  449. package/dist/esm/table/components/row/styles.js.map +1 -1
  450. package/dist/esm/table/components/row/template.d.ts +1 -1
  451. package/dist/esm/table/components/row/template.js +1 -1
  452. package/dist/esm/table/components/row/template.js.map +1 -1
  453. package/dist/esm/table/index.d.ts +1 -1
  454. package/dist/esm/table/index.js +3 -3
  455. package/dist/esm/table/index.js.map +1 -1
  456. package/dist/esm/table/models/keyboard-navigation-manager.d.ts +1 -1
  457. package/dist/esm/table/models/keyboard-navigation-manager.js +3 -3
  458. package/dist/esm/table/models/keyboard-navigation-manager.js.map +1 -1
  459. package/dist/esm/table/models/table-layout-manager.js +1 -1
  460. package/dist/esm/table/models/table-layout-manager.js.map +1 -1
  461. package/dist/esm/table/models/table-update-tracker.js +1 -1
  462. package/dist/esm/table/models/table-update-tracker.js.map +1 -1
  463. package/dist/esm/table/models/virtualizer.js +1 -1
  464. package/dist/esm/table/models/virtualizer.js.map +1 -1
  465. package/dist/esm/table/styles.d.ts +1 -1
  466. package/dist/esm/table/styles.js +1 -1
  467. package/dist/esm/table/styles.js.map +1 -1
  468. package/dist/esm/table/template.d.ts +1 -1
  469. package/dist/esm/table/template.js +1 -1
  470. package/dist/esm/table/template.js.map +1 -1
  471. package/dist/esm/table/testing/table.pageobject.js +1 -1
  472. package/dist/esm/table/testing/table.pageobject.js.map +1 -1
  473. package/dist/esm/table-column/anchor/cell-view/index.js +2 -2
  474. package/dist/esm/table-column/anchor/cell-view/index.js.map +1 -1
  475. package/dist/esm/table-column/anchor/cell-view/styles.d.ts +1 -1
  476. package/dist/esm/table-column/anchor/cell-view/styles.js +1 -1
  477. package/dist/esm/table-column/anchor/cell-view/styles.js.map +1 -1
  478. package/dist/esm/table-column/anchor/cell-view/template.d.ts +1 -1
  479. package/dist/esm/table-column/anchor/cell-view/template.js +1 -1
  480. package/dist/esm/table-column/anchor/cell-view/template.js.map +1 -1
  481. package/dist/esm/table-column/anchor/index.d.ts +4 -4
  482. package/dist/esm/table-column/anchor/index.js +2 -2
  483. package/dist/esm/table-column/anchor/index.js.map +1 -1
  484. package/dist/esm/table-column/base/cell-view/index.d.ts +1 -1
  485. package/dist/esm/table-column/base/cell-view/index.js +2 -2
  486. package/dist/esm/table-column/base/cell-view/index.js.map +1 -1
  487. package/dist/esm/table-column/base/cell-view/template.d.ts +1 -1
  488. package/dist/esm/table-column/base/cell-view/template.js +1 -1
  489. package/dist/esm/table-column/base/cell-view/template.js.map +1 -1
  490. package/dist/esm/table-column/base/group-header-view/index.d.ts +1 -1
  491. package/dist/esm/table-column/base/group-header-view/index.js +2 -2
  492. package/dist/esm/table-column/base/group-header-view/index.js.map +1 -1
  493. package/dist/esm/table-column/base/group-header-view/template.d.ts +1 -1
  494. package/dist/esm/table-column/base/group-header-view/template.js +1 -1
  495. package/dist/esm/table-column/base/group-header-view/template.js.map +1 -1
  496. package/dist/esm/table-column/base/index.d.ts +1 -1
  497. package/dist/esm/table-column/base/index.js +2 -2
  498. package/dist/esm/table-column/base/index.js.map +1 -1
  499. package/dist/esm/table-column/base/models/column-internals.d.ts +1 -1
  500. package/dist/esm/table-column/base/models/column-internals.js +2 -2
  501. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  502. package/dist/esm/table-column/base/models/column-validator.js +1 -1
  503. package/dist/esm/table-column/base/models/column-validator.js.map +1 -1
  504. package/dist/esm/table-column/base/styles.d.ts +1 -1
  505. package/dist/esm/table-column/base/styles.js +1 -1
  506. package/dist/esm/table-column/base/styles.js.map +1 -1
  507. package/dist/esm/table-column/base/template.d.ts +1 -1
  508. package/dist/esm/table-column/base/template.js +1 -1
  509. package/dist/esm/table-column/base/template.js.map +1 -1
  510. package/dist/esm/table-column/date-text/cell-view/index.js +1 -1
  511. package/dist/esm/table-column/date-text/cell-view/index.js.map +1 -1
  512. package/dist/esm/table-column/date-text/group-header-view/index.js +1 -1
  513. package/dist/esm/table-column/date-text/group-header-view/index.js.map +1 -1
  514. package/dist/esm/table-column/date-text/index.d.ts +3 -3
  515. package/dist/esm/table-column/date-text/index.js +2 -2
  516. package/dist/esm/table-column/date-text/index.js.map +1 -1
  517. package/dist/esm/table-column/duration-text/cell-view/index.js +1 -1
  518. package/dist/esm/table-column/duration-text/cell-view/index.js.map +1 -1
  519. package/dist/esm/table-column/duration-text/group-header-view/index.js +1 -1
  520. package/dist/esm/table-column/duration-text/group-header-view/index.js.map +1 -1
  521. package/dist/esm/table-column/duration-text/index.d.ts +3 -3
  522. package/dist/esm/table-column/duration-text/index.js +1 -1
  523. package/dist/esm/table-column/duration-text/index.js.map +1 -1
  524. package/dist/esm/table-column/enum-base/index.d.ts +1 -1
  525. package/dist/esm/table-column/enum-base/index.js +1 -1
  526. package/dist/esm/table-column/enum-base/index.js.map +1 -1
  527. package/dist/esm/table-column/enum-base/models/mapping-icon-config.d.ts +1 -1
  528. package/dist/esm/table-column/enum-base/models/mapping-icon-config.js +1 -1
  529. package/dist/esm/table-column/enum-base/models/mapping-icon-config.js.map +1 -1
  530. package/dist/esm/table-column/enum-base/models/mapping-key-resolver.js +1 -1
  531. package/dist/esm/table-column/enum-base/models/mapping-key-resolver.js.map +1 -1
  532. package/dist/esm/table-column/enum-base/models/mapping-spinner-config.d.ts +1 -1
  533. package/dist/esm/table-column/enum-base/models/mapping-spinner-config.js +1 -1
  534. package/dist/esm/table-column/enum-base/models/mapping-spinner-config.js.map +1 -1
  535. package/dist/esm/table-column/enum-base/styles.d.ts +1 -1
  536. package/dist/esm/table-column/enum-base/styles.js +1 -1
  537. package/dist/esm/table-column/enum-base/styles.js.map +1 -1
  538. package/dist/esm/table-column/enum-base/template.d.ts +1 -1
  539. package/dist/esm/table-column/enum-base/template.js +1 -1
  540. package/dist/esm/table-column/enum-base/template.js.map +1 -1
  541. package/dist/esm/table-column/mapping/cell-view/index.d.ts +1 -1
  542. package/dist/esm/table-column/mapping/cell-view/index.js +2 -2
  543. package/dist/esm/table-column/mapping/cell-view/index.js.map +1 -1
  544. package/dist/esm/table-column/mapping/cell-view/styles.d.ts +1 -1
  545. package/dist/esm/table-column/mapping/cell-view/styles.js +1 -1
  546. package/dist/esm/table-column/mapping/cell-view/styles.js.map +1 -1
  547. package/dist/esm/table-column/mapping/cell-view/template.d.ts +1 -1
  548. package/dist/esm/table-column/mapping/cell-view/template.js +1 -1
  549. package/dist/esm/table-column/mapping/cell-view/template.js.map +1 -1
  550. package/dist/esm/table-column/mapping/group-header-view/index.d.ts +1 -1
  551. package/dist/esm/table-column/mapping/group-header-view/index.js +2 -2
  552. package/dist/esm/table-column/mapping/group-header-view/index.js.map +1 -1
  553. package/dist/esm/table-column/mapping/group-header-view/styles.d.ts +1 -1
  554. package/dist/esm/table-column/mapping/group-header-view/styles.js +1 -1
  555. package/dist/esm/table-column/mapping/group-header-view/styles.js.map +1 -1
  556. package/dist/esm/table-column/mapping/group-header-view/template.d.ts +1 -1
  557. package/dist/esm/table-column/mapping/group-header-view/template.js +1 -1
  558. package/dist/esm/table-column/mapping/group-header-view/template.js.map +1 -1
  559. package/dist/esm/table-column/mapping/index.d.ts +3 -3
  560. package/dist/esm/table-column/mapping/index.js +2 -2
  561. package/dist/esm/table-column/mapping/index.js.map +1 -1
  562. package/dist/esm/table-column/menu-button/cell-view/index.js +2 -2
  563. package/dist/esm/table-column/menu-button/cell-view/index.js.map +1 -1
  564. package/dist/esm/table-column/menu-button/cell-view/styles.d.ts +1 -1
  565. package/dist/esm/table-column/menu-button/cell-view/styles.js +1 -1
  566. package/dist/esm/table-column/menu-button/cell-view/styles.js.map +1 -1
  567. package/dist/esm/table-column/menu-button/cell-view/templates.d.ts +1 -1
  568. package/dist/esm/table-column/menu-button/cell-view/templates.js +1 -1
  569. package/dist/esm/table-column/menu-button/cell-view/templates.js.map +1 -1
  570. package/dist/esm/table-column/menu-button/index.d.ts +3 -3
  571. package/dist/esm/table-column/menu-button/index.js +2 -2
  572. package/dist/esm/table-column/menu-button/index.js.map +1 -1
  573. package/dist/esm/table-column/menu-button/template.d.ts +1 -1
  574. package/dist/esm/table-column/menu-button/template.js +1 -1
  575. package/dist/esm/table-column/menu-button/template.js.map +1 -1
  576. package/dist/esm/table-column/mixins/custom-sort-order.d.ts +1 -1
  577. package/dist/esm/table-column/mixins/custom-sort-order.js +1 -1
  578. package/dist/esm/table-column/mixins/custom-sort-order.js.map +1 -1
  579. package/dist/esm/table-column/mixins/fractional-width-column.js +1 -1
  580. package/dist/esm/table-column/mixins/fractional-width-column.js.map +1 -1
  581. package/dist/esm/table-column/mixins/groupable-column.js +1 -1
  582. package/dist/esm/table-column/mixins/groupable-column.js.map +1 -1
  583. package/dist/esm/table-column/mixins/placeholder.js +1 -1
  584. package/dist/esm/table-column/mixins/placeholder.js.map +1 -1
  585. package/dist/esm/table-column/mixins/sortable-column.js +1 -1
  586. package/dist/esm/table-column/mixins/sortable-column.js.map +1 -1
  587. package/dist/esm/table-column/number-text/cell-view/index.js +1 -1
  588. package/dist/esm/table-column/number-text/cell-view/index.js.map +1 -1
  589. package/dist/esm/table-column/number-text/group-header-view/index.js +1 -1
  590. package/dist/esm/table-column/number-text/group-header-view/index.js.map +1 -1
  591. package/dist/esm/table-column/number-text/index.d.ts +3 -3
  592. package/dist/esm/table-column/number-text/index.js +2 -2
  593. package/dist/esm/table-column/number-text/index.js.map +1 -1
  594. package/dist/esm/table-column/number-text/template.d.ts +1 -1
  595. package/dist/esm/table-column/number-text/template.js +1 -1
  596. package/dist/esm/table-column/number-text/template.js.map +1 -1
  597. package/dist/esm/table-column/text/cell-view/index.js +1 -1
  598. package/dist/esm/table-column/text/cell-view/index.js.map +1 -1
  599. package/dist/esm/table-column/text/group-header-view/index.js +1 -1
  600. package/dist/esm/table-column/text/group-header-view/index.js.map +1 -1
  601. package/dist/esm/table-column/text/index.d.ts +4 -4
  602. package/dist/esm/table-column/text/index.js +1 -1
  603. package/dist/esm/table-column/text/index.js.map +1 -1
  604. package/dist/esm/table-column/text-base/cell-view/index.js +1 -1
  605. package/dist/esm/table-column/text-base/cell-view/index.js.map +1 -1
  606. package/dist/esm/table-column/text-base/cell-view/styles.d.ts +1 -1
  607. package/dist/esm/table-column/text-base/cell-view/styles.js +1 -1
  608. package/dist/esm/table-column/text-base/cell-view/styles.js.map +1 -1
  609. package/dist/esm/table-column/text-base/cell-view/template.d.ts +1 -1
  610. package/dist/esm/table-column/text-base/cell-view/template.js +1 -1
  611. package/dist/esm/table-column/text-base/cell-view/template.js.map +1 -1
  612. package/dist/esm/table-column/text-base/group-header-view/index.js +1 -1
  613. package/dist/esm/table-column/text-base/group-header-view/index.js.map +1 -1
  614. package/dist/esm/table-column/text-base/group-header-view/styles.d.ts +1 -1
  615. package/dist/esm/table-column/text-base/group-header-view/styles.js +1 -1
  616. package/dist/esm/table-column/text-base/group-header-view/styles.js.map +1 -1
  617. package/dist/esm/table-column/text-base/group-header-view/template.d.ts +1 -1
  618. package/dist/esm/table-column/text-base/group-header-view/template.js +1 -1
  619. package/dist/esm/table-column/text-base/group-header-view/template.js.map +1 -1
  620. package/dist/esm/table-column/text-base/index.js +1 -1
  621. package/dist/esm/table-column/text-base/index.js.map +1 -1
  622. package/dist/esm/tabs/index.d.ts +1 -1
  623. package/dist/esm/tabs/index.js +2 -2
  624. package/dist/esm/tabs/index.js.map +1 -1
  625. package/dist/esm/tabs/styles.d.ts +1 -1
  626. package/dist/esm/tabs/styles.js +1 -1
  627. package/dist/esm/tabs/styles.js.map +1 -1
  628. package/dist/esm/tabs-toolbar/index.d.ts +1 -1
  629. package/dist/esm/tabs-toolbar/index.js +1 -1
  630. package/dist/esm/tabs-toolbar/index.js.map +1 -1
  631. package/dist/esm/tabs-toolbar/styles.d.ts +1 -1
  632. package/dist/esm/tabs-toolbar/styles.js +1 -1
  633. package/dist/esm/tabs-toolbar/styles.js.map +1 -1
  634. package/dist/esm/tabs-toolbar/template.d.ts +1 -1
  635. package/dist/esm/tabs-toolbar/template.js +1 -1
  636. package/dist/esm/tabs-toolbar/template.js.map +1 -1
  637. package/dist/esm/testing/async-helpers.js +1 -1
  638. package/dist/esm/testing/async-helpers.js.map +1 -1
  639. package/dist/esm/text-area/index.d.ts +3 -7
  640. package/dist/esm/text-area/index.js +2 -2
  641. package/dist/esm/text-area/index.js.map +1 -1
  642. package/dist/esm/text-area/styles.d.ts +1 -1
  643. package/dist/esm/text-area/styles.js +1 -1
  644. package/dist/esm/text-area/styles.js.map +1 -1
  645. package/dist/esm/text-area/template.d.ts +2 -2
  646. package/dist/esm/text-area/template.js +1 -1
  647. package/dist/esm/text-area/template.js.map +1 -1
  648. package/dist/esm/text-area/types.d.ts +1 -1
  649. package/dist/esm/text-area/types.js +1 -1
  650. package/dist/esm/text-area/types.js.map +1 -1
  651. package/dist/esm/text-field/index.d.ts +3 -3
  652. package/dist/esm/text-field/index.js +2 -2
  653. package/dist/esm/text-field/index.js.map +1 -1
  654. package/dist/esm/text-field/styles.d.ts +1 -1
  655. package/dist/esm/text-field/styles.js +1 -1
  656. package/dist/esm/text-field/styles.js.map +1 -1
  657. package/dist/esm/text-field/template.d.ts +3 -3
  658. package/dist/esm/text-field/template.js +3 -3
  659. package/dist/esm/text-field/template.js.map +1 -1
  660. package/dist/esm/text-field/types.d.ts +1 -1
  661. package/dist/esm/text-field/types.js +1 -1
  662. package/dist/esm/text-field/types.js.map +1 -1
  663. package/dist/esm/theme-provider/design-tokens.d.ts +1 -1
  664. package/dist/esm/theme-provider/design-tokens.js +2 -2
  665. package/dist/esm/theme-provider/design-tokens.js.map +1 -1
  666. package/dist/esm/theme-provider/index.d.ts +2 -2
  667. package/dist/esm/theme-provider/index.js +3 -3
  668. package/dist/esm/theme-provider/index.js.map +1 -1
  669. package/dist/esm/theme-provider/styles.d.ts +1 -1
  670. package/dist/esm/theme-provider/styles.js +1 -1
  671. package/dist/esm/theme-provider/styles.js.map +1 -1
  672. package/dist/esm/theme-provider/template.d.ts +1 -1
  673. package/dist/esm/theme-provider/template.js +1 -1
  674. package/dist/esm/theme-provider/template.js.map +1 -1
  675. package/dist/esm/toggle-button/index.d.ts +1 -1
  676. package/dist/esm/toggle-button/index.js +2 -2
  677. package/dist/esm/toggle-button/index.js.map +1 -1
  678. package/dist/esm/toggle-button/styles.d.ts +1 -1
  679. package/dist/esm/toggle-button/styles.js +1 -1
  680. package/dist/esm/toggle-button/styles.js.map +1 -1
  681. package/dist/esm/toggle-button/template.d.ts +2 -2
  682. package/dist/esm/toggle-button/template.js +2 -2
  683. package/dist/esm/toggle-button/template.js.map +1 -1
  684. package/dist/esm/toolbar/index.d.ts +1 -1
  685. package/dist/esm/toolbar/index.js +1 -1
  686. package/dist/esm/toolbar/index.js.map +1 -1
  687. package/dist/esm/toolbar/styles.d.ts +1 -1
  688. package/dist/esm/toolbar/styles.js +1 -1
  689. package/dist/esm/toolbar/styles.js.map +1 -1
  690. package/dist/esm/tooltip/index.d.ts +1 -1
  691. package/dist/esm/tooltip/index.js +2 -2
  692. package/dist/esm/tooltip/index.js.map +1 -1
  693. package/dist/esm/tooltip/styles.d.ts +1 -1
  694. package/dist/esm/tooltip/styles.js +1 -1
  695. package/dist/esm/tooltip/styles.js.map +1 -1
  696. package/dist/esm/tooltip/template.d.ts +1 -1
  697. package/dist/esm/tooltip/template.js +1 -1
  698. package/dist/esm/tooltip/template.js.map +1 -1
  699. package/dist/esm/tree-item/index.d.ts +2 -2
  700. package/dist/esm/tree-item/index.js +3 -3
  701. package/dist/esm/tree-item/index.js.map +1 -1
  702. package/dist/esm/tree-item/styles.d.ts +1 -1
  703. package/dist/esm/tree-item/styles.js +1 -1
  704. package/dist/esm/tree-item/styles.js.map +1 -1
  705. package/dist/esm/tree-view/index.d.ts +2 -2
  706. package/dist/esm/tree-view/index.js +3 -3
  707. package/dist/esm/tree-view/index.js.map +1 -1
  708. package/dist/esm/tree-view/styles.d.ts +1 -1
  709. package/dist/esm/tree-view/styles.js +1 -1
  710. package/dist/esm/tree-view/styles.js.map +1 -1
  711. package/dist/esm/tree-view/template.d.ts +1 -1
  712. package/dist/esm/tree-view/template.js +1 -1
  713. package/dist/esm/tree-view/template.js.map +1 -1
  714. package/dist/esm/unit/base/styles.d.ts +1 -1
  715. package/dist/esm/unit/base/styles.js +1 -1
  716. package/dist/esm/unit/base/styles.js.map +1 -1
  717. package/dist/esm/unit/base/template.d.ts +1 -1
  718. package/dist/esm/unit/base/template.js +1 -1
  719. package/dist/esm/unit/base/template.js.map +1 -1
  720. package/dist/esm/unit/base/unit.d.ts +1 -1
  721. package/dist/esm/unit/base/unit.js +2 -2
  722. package/dist/esm/unit/base/unit.js.map +1 -1
  723. package/dist/esm/unit/byte/index.js +2 -2
  724. package/dist/esm/unit/byte/index.js.map +1 -1
  725. package/dist/esm/unit/celsius/index.js +1 -1
  726. package/dist/esm/unit/celsius/index.js.map +1 -1
  727. package/dist/esm/unit/fahrenheit/index.js +1 -1
  728. package/dist/esm/unit/fahrenheit/index.js.map +1 -1
  729. package/dist/esm/unit/volt/index.js +1 -1
  730. package/dist/esm/unit/volt/index.js.map +1 -1
  731. package/dist/esm/utilities/directive/overflow.d.ts +1 -1
  732. package/dist/esm/utilities/directive/overflow.js +1 -1
  733. package/dist/esm/utilities/directive/overflow.js.map +1 -1
  734. package/dist/esm/utilities/models/converter.d.ts +1 -1
  735. package/dist/esm/utilities/models/converter.js.map +1 -1
  736. package/dist/esm/utilities/models/document-element-lang.js +1 -1
  737. package/dist/esm/utilities/models/document-element-lang.js.map +1 -1
  738. package/dist/esm/utilities/style/accessibly-hidden.d.ts +1 -1
  739. package/dist/esm/utilities/style/accessibly-hidden.js +1 -1
  740. package/dist/esm/utilities/style/accessibly-hidden.js.map +1 -1
  741. package/dist/esm/utilities/style/appearance.d.ts +1 -1
  742. package/dist/esm/utilities/style/appearance.js.map +1 -1
  743. package/dist/esm/utilities/style/colors.js +1 -1
  744. package/dist/esm/utilities/style/colors.js.map +1 -1
  745. package/dist/esm/utilities/style/direction.d.ts +3 -3
  746. package/dist/esm/utilities/style/direction.js +2 -2
  747. package/dist/esm/utilities/style/direction.js.map +1 -1
  748. package/dist/esm/utilities/style/display.d.ts +1 -1
  749. package/dist/esm/utilities/style/display.js +1 -1
  750. package/dist/esm/utilities/style/display.js.map +1 -1
  751. package/dist/esm/utilities/style/focus.js +1 -1
  752. package/dist/esm/utilities/style/focus.js.map +1 -1
  753. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.d.ts +1 -1
  754. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.js +1 -1
  755. package/dist/esm/utilities/style/multivalue-property-stylesheet-behavior.js.map +1 -1
  756. package/dist/esm/utilities/style/theme.d.ts +1 -1
  757. package/dist/esm/utilities/style/theme.js.map +1 -1
  758. package/dist/esm/utilities/style/user-select.d.ts +1 -1
  759. package/dist/esm/utilities/style/user-select.js +1 -1
  760. package/dist/esm/utilities/style/user-select.js.map +1 -1
  761. package/dist/esm/wafer-map/index.d.ts +1 -1
  762. package/dist/esm/wafer-map/index.js +2 -2
  763. package/dist/esm/wafer-map/index.js.map +1 -1
  764. package/dist/esm/wafer-map/modules/prerendering.js +1 -1
  765. package/dist/esm/wafer-map/modules/prerendering.js.map +1 -1
  766. package/dist/esm/wafer-map/modules/wafer-map-update-tracker.js +1 -1
  767. package/dist/esm/wafer-map/modules/wafer-map-update-tracker.js.map +1 -1
  768. package/dist/esm/wafer-map/modules/zoom-handler.js +1 -1
  769. package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -1
  770. package/dist/esm/wafer-map/styles.d.ts +1 -1
  771. package/dist/esm/wafer-map/styles.js +1 -1
  772. package/dist/esm/wafer-map/styles.js.map +1 -1
  773. package/dist/esm/wafer-map/template.d.ts +1 -1
  774. package/dist/esm/wafer-map/template.js +1 -1
  775. package/dist/esm/wafer-map/template.js.map +1 -1
  776. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"create-tiptap-editor.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/models/create-tiptap-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import { Editor, Mark, Node, mergeAttributes } from '@tiptap/core';\nimport Bold from '@tiptap/extension-bold';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport Document from '@tiptap/extension-document';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport History from '@tiptap/extension-history';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport ListItem from '@tiptap/extension-list-item';\nimport Mention from '@tiptap/extension-mention';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Text from '@tiptap/extension-text';\nimport { Slice, Fragment, Node as FragmentNode } from 'prosemirror-model';\nimport { PluginKey } from 'prosemirror-state';\n\nimport { keyEscape } from '@microsoft/fast-web-utilities';\nimport {\n type ActiveMentionCommandEmitter,\n type ActiveMentionCharacterEmitter,\n mentionPluginPrefix\n} from '../types';\n\nimport { anchorTag } from '../../../anchor';\nimport type { MentionExtensionConfiguration } from '../../models/mention-extension-configuration';\nimport type { RichTextMentionListbox } from '../../mention-listbox';\n\nconst validAbsoluteLinkRegex = /^https?:\\/\\//i;\n\nexport function createTiptapEditor(\n activeMentionCharacterEmitter: ActiveMentionCharacterEmitter,\n activeMentionCommandEmitter: ActiveMentionCommandEmitter,\n editor: HTMLDivElement,\n mentionExtensionConfig: MentionExtensionConfiguration[],\n mentionListbox?: RichTextMentionListbox,\n placeholder?: string\n): Editor {\n const customLink = createCustomLinkExtension();\n const mentionExtensions = mentionExtensionConfig.map(config => createCustomMentionExtension(\n config,\n activeMentionCharacterEmitter,\n activeMentionCommandEmitter,\n mentionListbox\n ));\n\n /**\n * For more information on the extensions for the supported formatting options, refer to the links below.\n * Tiptap marks: https://tiptap.dev/api/marks\n * Tiptap nodes: https://tiptap.dev/api/nodes\n */\n const tipTapEditor = new Editor({\n element: editor,\n // The editor will detect markdown syntax for an input only for these items\n // https://tiptap.dev/api/editor#enable-input-rules\n enableInputRules: [BulletList, OrderedList],\n // The editor will not detect markdown syntax when pasting content in any supported items\n // Lists do not have any default paste rules, they have only input rules, so disabled paste rules\n // https://tiptap.dev/api/editor#enable-paste-rules\n enablePasteRules: false,\n editorProps: {\n // Validating whether the links in the pasted content belongs to the supported scheme (HTTPS/HTTP),\n // and rendering it as a link in the editor. If not, rendering it as a plain text.\n // Also, updating the link text content with its href as we support only the absolute link.\n\n // `transformPasted` can be updated/removed when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n transformPasted\n },\n extensions: [\n Document,\n Paragraph,\n Text,\n BulletList,\n OrderedList,\n ListItem,\n Bold,\n Italic,\n History,\n Placeholder.configure({\n placeholder,\n showOnlyWhenEditable: false\n }),\n HardBreak,\n customLink,\n ...mentionExtensions\n ]\n });\n\n /**\n * @param slice contains the Fragment of the copied content. If the content is a link, the slice contains Text node with Link mark.\n * ProseMirror reference for `transformPasted`: https://prosemirror.net/docs/ref/#view.EditorProps.transformPasted\n */\n function transformPasted(slice: Slice): Slice {\n const modifiedFragment = updateLinkAndMentionNodes(\n tipTapEditor,\n slice.content\n );\n return new Slice(modifiedFragment, slice.openStart, slice.openEnd);\n }\n\n return tipTapEditor;\n}\n\n/**\n * Extending the default link mark schema defined in the TipTap.\n *\n * \"excludes\": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes\n * \"inclusive\": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive\n * \"parseHTML\": https://tiptap.dev/guide/custom-extensions#parse-html\n * \"renderHTML\": https://tiptap.dev/guide/custom-extensions/#render-html\n */\nfunction createCustomLinkExtension(): Mark {\n return Link.extend({\n // Excludes can be removed/enabled when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n excludes: '_',\n // Inclusive can be updated when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n inclusive: false,\n parseHTML() {\n return [\n // To load the `nimble-anchor` from the HTML parsed content by markdown-parser as links in the Tiptap editor, the `parseHTML`\n // of Link extension should return nimble `anchorTag`.\n // This is because the link mark schema in `markdown-parser.ts` file uses `<nimble-anchor>` as anchor tag and not `<a>`.\n {\n tag: anchorTag\n },\n // `<a>` tag is added here to support when pasting a link from external source.\n {\n tag: 'a'\n }\n ];\n },\n // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap\n // eslint-disable-next-line @typescript-eslint/naming-convention\n renderHTML({ HTMLAttributes }) {\n // The below 'a' tag should be replaced with 'nimble-anchor' once the below issue is fixed.\n // https://github.com/ni/nimble/issues/1516\n return ['a', HTMLAttributes];\n }\n }).configure({\n // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: null,\n // Adding `class` here is a workaround to render two mentions without a whitespace as display names\n // This attribute can be removed when the below issue is resolved\n // https://github.com/ni/nimble/issues/1707\n class: ''\n },\n autolink: true,\n openOnClick: false,\n // linkOnPaste can be enabled when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n linkOnPaste: false,\n shouldAutoLink: href => validAbsoluteLinkRegex.test(href)\n });\n}\n\nfunction createCustomMentionExtension(\n config: MentionExtensionConfiguration,\n activeMentionCharacterEmitter: ActiveMentionCharacterEmitter,\n activeMentionCommandEmitter: ActiveMentionCommandEmitter,\n mentionListbox?: RichTextMentionListbox\n): Node {\n return Mention.extend({\n name: config.name,\n parseHTML() {\n return [\n {\n tag: config.viewElement\n }\n ];\n },\n addAttributes() {\n return {\n href: {\n default: null,\n parseHTML: element => element.getAttribute('mention-href'),\n renderHTML: attributes => {\n return {\n 'mention-href': attributes.href as string\n };\n }\n },\n label: {\n default: null,\n parseHTML: element => element.getAttribute('mention-label'),\n renderHTML: attributes => {\n return {\n 'mention-label': attributes.label as string\n };\n }\n },\n disabled: {\n default: null,\n parseHTML: element => element.getAttribute('disabled'),\n renderHTML: attributes => {\n return {\n disabled: attributes.disabled as string\n };\n }\n }\n };\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n renderHTML({ node, HTMLAttributes }) {\n return [\n config.viewElement,\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n this.options.renderText({\n options: this.options,\n node\n })\n ];\n }\n }).configure({\n suggestion: {\n char: config.character,\n decorationClass: 'nimble-mention-view-edit',\n pluginKey: new PluginKey(config.key),\n allowSpaces: true,\n render: () => {\n let inSuggestionMode = false;\n return {\n onStart: (props): void => {\n /**\n * If the cursor position moves to outside of the mention and configuration element changes,\n * the setMarkdown() will trigger this `onStart` without a decoration node because the cursor\n * position is temporarily moved out of the suggestion decoration. Ignore `onStart` in that case\n * and don't show the mention list box since it doesn't have anything to anchor to.\n */\n if (props.decorationNode === null) {\n return;\n }\n inSuggestionMode = true;\n config.mentionUpdateEmitter(props.query);\n activeMentionCharacterEmitter(props.text.slice(0, 1));\n activeMentionCommandEmitter(props.command);\n mentionListbox?.show({\n filter: props.query,\n anchorNode: props.decorationNode as HTMLElement\n });\n },\n onUpdate: (props): void => {\n if (!inSuggestionMode) {\n return;\n }\n config.mentionUpdateEmitter(props.query);\n activeMentionCommandEmitter(props.command);\n mentionListbox?.show({\n filter: props.query,\n anchorNode: props.decorationNode as HTMLElement\n });\n },\n onKeyDown: (props): boolean => {\n if (!inSuggestionMode) {\n return false;\n }\n if (props.event.key === keyEscape) {\n inSuggestionMode = false;\n }\n return (\n mentionListbox?.keydownHandler(props.event) ?? false\n );\n },\n onExit: (): void => {\n activeMentionCharacterEmitter('');\n activeMentionCommandEmitter(undefined);\n mentionListbox?.close();\n }\n };\n }\n }\n });\n}\n\n/**\n * This method finds the Link mark in the pasted content and update its Text node.\n * If there is no text node, pass the node's fragment recursively and updates only node containing Link mark.\n * If the Text node does not contains Link mark, push the same node to `updatedNodes`.\n *\n * @param fragment Fragment containing the pasted content. [Fragment](https://prosemirror.net/docs/ref/#model.Fragment)\n * @returns modified fragment from the `updatedNode` after updating the valid link text with its href value.\n */\nfunction updateLinkAndMentionNodes(\n tiptapEditor: Editor,\n fragment: Fragment\n): Fragment {\n const updatedNodes: FragmentNode[] = [];\n\n fragment.forEach(node => {\n if (node.isText && node.marks.length > 0) {\n const linkMark = node.marks.find(\n mark => mark.type.name === 'link' && mark.attrs\n );\n if (linkMark) {\n // Checks if the link is valid link or not\n // Needing to separately validate the link on paste is a workaround for a tiptap issue\n // See: https://github.com/ni/nimble/issues/1527\n if (\n validAbsoluteLinkRegex.test(linkMark.attrs.href as string)\n ) {\n // The below lines of code is responsible for updating the text content with its href value and creates a new updated text node.\n // This code needs an update when the hyperlink support is added.\n // See: https://github.com/ni/nimble/issues/1527\n updatedNodes.push(\n tiptapEditor.schema.text(\n linkMark.attrs.href as string,\n node.marks\n )\n );\n } else {\n // If it is a invalid link, creates a new Text node with the same text content and without a Link mark.\n updatedNodes.push(\n tiptapEditor.schema.text(\n node.textContent,\n linkMark.removeFromSet(node.marks)\n )\n );\n }\n } else {\n updatedNodes.push(node);\n }\n } else if (node.type.name.startsWith(mentionPluginPrefix)) {\n updatedNodes.push(\n tiptapEditor.schema.text(node.attrs.label as string)\n );\n } else {\n const updatedContent = updateLinkAndMentionNodes(\n tiptapEditor,\n node.content\n );\n updatedNodes.push(node.copy(updatedContent));\n }\n });\n\n return Fragment.fromArray(updatedNodes);\n}\n"]}
1
+ {"version":3,"file":"create-tiptap-editor.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/models/create-tiptap-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,UAAU,MAAM,+BAA+B,CAAC;AACvD,OAAO,QAAQ,MAAM,4BAA4B,CAAC;AAClD,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAGH,mBAAmB,EACtB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,sBAAsB,GAAG,eAAe,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAC9B,6BAA4D,EAC5D,2BAAwD,EACxD,MAAsB,EACtB,sBAAuD,EACvD,cAAuC,EACvC,WAAoB;IAEpB,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;IAC/C,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,4BAA4B,CACvF,MAAM,EACN,6BAA6B,EAC7B,2BAA2B,EAC3B,cAAc,CACjB,CAAC,CAAC;IAEH;;;;OAIG;IACH,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC;QAC5B,OAAO,EAAE,MAAM;QACf,2EAA2E;QAC3E,mDAAmD;QACnD,gBAAgB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;QAC3C,yFAAyF;QACzF,iGAAiG;QACjG,mDAAmD;QACnD,gBAAgB,EAAE,KAAK;QACvB,WAAW,EAAE;YACT,mGAAmG;YACnG,kFAAkF;YAClF,2FAA2F;YAE3F,wEAAwE;YACxE,gDAAgD;YAChD,eAAe;SAClB;QACD,UAAU,EAAE;YACR,QAAQ;YACR,SAAS;YACT,IAAI;YACJ,UAAU;YACV,WAAW;YACX,QAAQ;YACR,IAAI;YACJ,MAAM;YACN,OAAO;YACP,WAAW,CAAC,SAAS,CAAC;gBAClB,WAAW;gBACX,oBAAoB,EAAE,KAAK;aAC9B,CAAC;YACF,SAAS;YACT,UAAU;YACV,GAAG,iBAAiB;SACvB;KACJ,CAAC,CAAC;IAEH;;;OAGG;IACH,SAAS,eAAe,CAAC,KAAY;QACjC,MAAM,gBAAgB,GAAG,yBAAyB,CAC9C,YAAY,EACZ,KAAK,CAAC,OAAO,CAChB,CAAC;QACF,OAAO,IAAI,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB;IAC9B,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,+DAA+D;QAC/D,gDAAgD;QAChD,QAAQ,EAAE,GAAG;QACb,wDAAwD;QACxD,gDAAgD;QAChD,SAAS,EAAE,KAAK;QAChB,SAAS;YACL,OAAO;gBACH,6HAA6H;gBAC7H,sDAAsD;gBACtD,wHAAwH;gBACxH;oBACI,GAAG,EAAE,SAAS;iBACjB;gBACD,+EAA+E;gBAC/E;oBACI,GAAG,EAAE,GAAG;iBACX;aACJ,CAAC;QACN,CAAC;QACD,sFAAsF;QACtF,gEAAgE;QAChE,UAAU,CAAC,EAAE,cAAc,EAAE;YACzB,2FAA2F;YAC3F,2CAA2C;YAC3C,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACjC,CAAC;KACJ,CAAC,CAAC,SAAS,CAAC;QACT,sFAAsF;QACtF,gEAAgE;QAChE,cAAc,EAAE;YACZ,GAAG,EAAE,qBAAqB;YAC1B,MAAM,EAAE,IAAI;YACZ,mGAAmG;YACnG,iEAAiE;YACjE,2CAA2C;YAC3C,KAAK,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,KAAK;QAClB,0DAA0D;QAC1D,gDAAgD;QAChD,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5D,CAAC,CAAC;AACP,CAAC;AAED,SAAS,4BAA4B,CACjC,MAAqC,EACrC,6BAA4D,EAC5D,2BAAwD,EACxD,cAAuC;IAEvC,OAAO,OAAO,CAAC,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS;YACL,OAAO;gBACH;oBACI,GAAG,EAAE,MAAM,CAAC,WAAW;iBAC1B;aACJ,CAAC;QACN,CAAC;QACD,aAAa;YACT,OAAO;gBACH,IAAI,EAAE;oBACF,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC;oBAC1D,UAAU,EAAE,UAAU,CAAC,EAAE;wBACrB,OAAO;4BACH,cAAc,EAAE,UAAU,CAAC,IAAc;yBAC5C,CAAC;oBACN,CAAC;iBACJ;gBACD,KAAK,EAAE;oBACH,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC;oBAC3D,UAAU,EAAE,UAAU,CAAC,EAAE;wBACrB,OAAO;4BACH,eAAe,EAAE,UAAU,CAAC,KAAe;yBAC9C,CAAC;oBACN,CAAC;iBACJ;gBACD,QAAQ,EAAE;oBACN,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;oBACtD,UAAU,EAAE,UAAU,CAAC,EAAE;wBACrB,OAAO;4BACH,QAAQ,EAAE,UAAU,CAAC,QAAkB;yBAC1C,CAAC;oBACN,CAAC;iBACJ;aACJ,CAAC;QACN,CAAC;QACD,gEAAgE;QAChE,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;YAC/B,OAAO;gBACH,MAAM,CAAC,WAAW;gBAClB,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;gBAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;oBACpB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,IAAI;iBACP,CAAC;aACL,CAAC;QACN,CAAC;KACJ,CAAC,CAAC,SAAS,CAAC;QACT,UAAU,EAAE;YACR,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,eAAe,EAAE,0BAA0B;YAC3C,SAAS,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;YACpC,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,GAAG,EAAE;gBACT,IAAI,gBAAgB,GAAG,KAAK,CAAC;gBAC7B,OAAO;oBACH,OAAO,EAAE,CAAC,KAAK,EAAQ,EAAE;wBACrB;;;;;2BAKG;wBACH,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;4BAChC,OAAO;wBACX,CAAC;wBACD,gBAAgB,GAAG,IAAI,CAAC;wBACxB,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACzC,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACtD,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC3C,cAAc,EAAE,IAAI,CAAC;4BACjB,MAAM,EAAE,KAAK,CAAC,KAAK;4BACnB,UAAU,EAAE,KAAK,CAAC,cAA6B;yBAClD,CAAC,CAAC;oBACP,CAAC;oBACD,QAAQ,EAAE,CAAC,KAAK,EAAQ,EAAE;wBACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACpB,OAAO;wBACX,CAAC;wBACD,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACzC,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC3C,cAAc,EAAE,IAAI,CAAC;4BACjB,MAAM,EAAE,KAAK,CAAC,KAAK;4BACnB,UAAU,EAAE,KAAK,CAAC,cAA6B;yBAClD,CAAC,CAAC;oBACP,CAAC;oBACD,SAAS,EAAE,CAAC,KAAK,EAAW,EAAE;wBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;4BACpB,OAAO,KAAK,CAAC;wBACjB,CAAC;wBACD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;4BAChC,gBAAgB,GAAG,KAAK,CAAC;wBAC7B,CAAC;wBACD,OAAO,CACH,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CACvD,CAAC;oBACN,CAAC;oBACD,MAAM,EAAE,GAAS,EAAE;wBACf,6BAA6B,CAAC,EAAE,CAAC,CAAC;wBAClC,2BAA2B,CAAC,SAAS,CAAC,CAAC;wBACvC,cAAc,EAAE,KAAK,EAAE,CAAC;oBAC5B,CAAC;iBACJ,CAAC;YACN,CAAC;SACJ;KACJ,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAC9B,YAAoB,EACpB,QAAkB;IAElB,MAAM,YAAY,GAAmB,EAAE,CAAC;IAExC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC5B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAClD,CAAC;YACF,IAAI,QAAQ,EAAE,CAAC;gBACX,0CAA0C;gBAC1C,sFAAsF;gBACtF,gDAAgD;gBAChD,IACI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAc,CAAC,EAC5D,CAAC;oBACC,gIAAgI;oBAChI,iEAAiE;oBACjE,gDAAgD;oBAChD,YAAY,CAAC,IAAI,CACb,YAAY,CAAC,MAAM,CAAC,IAAI,CACpB,QAAQ,CAAC,KAAK,CAAC,IAAc,EAC7B,IAAI,CAAC,KAAK,CACb,CACJ,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACJ,uGAAuG;oBACvG,YAAY,CAAC,IAAI,CACb,YAAY,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,CAAC,WAAW,EAChB,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CACrC,CACJ,CAAC;gBACN,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACxD,YAAY,CAAC,IAAI,CACb,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAe,CAAC,CACvD,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,cAAc,GAAG,yBAAyB,CAC5C,YAAY,EACZ,IAAI,CAAC,OAAO,CACf,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import { Editor, Mark, Node, mergeAttributes } from '@tiptap/core';\nimport Bold from '@tiptap/extension-bold';\nimport BulletList from '@tiptap/extension-bullet-list';\nimport Document from '@tiptap/extension-document';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport History from '@tiptap/extension-history';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport ListItem from '@tiptap/extension-list-item';\nimport Mention from '@tiptap/extension-mention';\nimport OrderedList from '@tiptap/extension-ordered-list';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Text from '@tiptap/extension-text';\nimport { Slice, Fragment, Node as FragmentNode } from 'prosemirror-model';\nimport { PluginKey } from 'prosemirror-state';\n\nimport { keyEscape } from '@ni/fast-web-utilities';\nimport {\n type ActiveMentionCommandEmitter,\n type ActiveMentionCharacterEmitter,\n mentionPluginPrefix\n} from '../types';\n\nimport { anchorTag } from '../../../anchor';\nimport type { MentionExtensionConfiguration } from '../../models/mention-extension-configuration';\nimport type { RichTextMentionListbox } from '../../mention-listbox';\n\nconst validAbsoluteLinkRegex = /^https?:\\/\\//i;\n\nexport function createTiptapEditor(\n activeMentionCharacterEmitter: ActiveMentionCharacterEmitter,\n activeMentionCommandEmitter: ActiveMentionCommandEmitter,\n editor: HTMLDivElement,\n mentionExtensionConfig: MentionExtensionConfiguration[],\n mentionListbox?: RichTextMentionListbox,\n placeholder?: string\n): Editor {\n const customLink = createCustomLinkExtension();\n const mentionExtensions = mentionExtensionConfig.map(config => createCustomMentionExtension(\n config,\n activeMentionCharacterEmitter,\n activeMentionCommandEmitter,\n mentionListbox\n ));\n\n /**\n * For more information on the extensions for the supported formatting options, refer to the links below.\n * Tiptap marks: https://tiptap.dev/api/marks\n * Tiptap nodes: https://tiptap.dev/api/nodes\n */\n const tipTapEditor = new Editor({\n element: editor,\n // The editor will detect markdown syntax for an input only for these items\n // https://tiptap.dev/api/editor#enable-input-rules\n enableInputRules: [BulletList, OrderedList],\n // The editor will not detect markdown syntax when pasting content in any supported items\n // Lists do not have any default paste rules, they have only input rules, so disabled paste rules\n // https://tiptap.dev/api/editor#enable-paste-rules\n enablePasteRules: false,\n editorProps: {\n // Validating whether the links in the pasted content belongs to the supported scheme (HTTPS/HTTP),\n // and rendering it as a link in the editor. If not, rendering it as a plain text.\n // Also, updating the link text content with its href as we support only the absolute link.\n\n // `transformPasted` can be updated/removed when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n transformPasted\n },\n extensions: [\n Document,\n Paragraph,\n Text,\n BulletList,\n OrderedList,\n ListItem,\n Bold,\n Italic,\n History,\n Placeholder.configure({\n placeholder,\n showOnlyWhenEditable: false\n }),\n HardBreak,\n customLink,\n ...mentionExtensions\n ]\n });\n\n /**\n * @param slice contains the Fragment of the copied content. If the content is a link, the slice contains Text node with Link mark.\n * ProseMirror reference for `transformPasted`: https://prosemirror.net/docs/ref/#view.EditorProps.transformPasted\n */\n function transformPasted(slice: Slice): Slice {\n const modifiedFragment = updateLinkAndMentionNodes(\n tipTapEditor,\n slice.content\n );\n return new Slice(modifiedFragment, slice.openStart, slice.openEnd);\n }\n\n return tipTapEditor;\n}\n\n/**\n * Extending the default link mark schema defined in the TipTap.\n *\n * \"excludes\": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes\n * \"inclusive\": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive\n * \"parseHTML\": https://tiptap.dev/guide/custom-extensions#parse-html\n * \"renderHTML\": https://tiptap.dev/guide/custom-extensions/#render-html\n */\nfunction createCustomLinkExtension(): Mark {\n return Link.extend({\n // Excludes can be removed/enabled when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n excludes: '_',\n // Inclusive can be updated when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n inclusive: false,\n parseHTML() {\n return [\n // To load the `nimble-anchor` from the HTML parsed content by markdown-parser as links in the Tiptap editor, the `parseHTML`\n // of Link extension should return nimble `anchorTag`.\n // This is because the link mark schema in `markdown-parser.ts` file uses `<nimble-anchor>` as anchor tag and not `<a>`.\n {\n tag: anchorTag\n },\n // `<a>` tag is added here to support when pasting a link from external source.\n {\n tag: 'a'\n }\n ];\n },\n // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap\n // eslint-disable-next-line @typescript-eslint/naming-convention\n renderHTML({ HTMLAttributes }) {\n // The below 'a' tag should be replaced with 'nimble-anchor' once the below issue is fixed.\n // https://github.com/ni/nimble/issues/1516\n return ['a', HTMLAttributes];\n }\n }).configure({\n // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap\n // eslint-disable-next-line @typescript-eslint/naming-convention\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: null,\n // Adding `class` here is a workaround to render two mentions without a whitespace as display names\n // This attribute can be removed when the below issue is resolved\n // https://github.com/ni/nimble/issues/1707\n class: ''\n },\n autolink: true,\n openOnClick: false,\n // linkOnPaste can be enabled when hyperlink support added\n // See: https://github.com/ni/nimble/issues/1527\n linkOnPaste: false,\n shouldAutoLink: href => validAbsoluteLinkRegex.test(href)\n });\n}\n\nfunction createCustomMentionExtension(\n config: MentionExtensionConfiguration,\n activeMentionCharacterEmitter: ActiveMentionCharacterEmitter,\n activeMentionCommandEmitter: ActiveMentionCommandEmitter,\n mentionListbox?: RichTextMentionListbox\n): Node {\n return Mention.extend({\n name: config.name,\n parseHTML() {\n return [\n {\n tag: config.viewElement\n }\n ];\n },\n addAttributes() {\n return {\n href: {\n default: null,\n parseHTML: element => element.getAttribute('mention-href'),\n renderHTML: attributes => {\n return {\n 'mention-href': attributes.href as string\n };\n }\n },\n label: {\n default: null,\n parseHTML: element => element.getAttribute('mention-label'),\n renderHTML: attributes => {\n return {\n 'mention-label': attributes.label as string\n };\n }\n },\n disabled: {\n default: null,\n parseHTML: element => element.getAttribute('disabled'),\n renderHTML: attributes => {\n return {\n disabled: attributes.disabled as string\n };\n }\n }\n };\n },\n // eslint-disable-next-line @typescript-eslint/naming-convention\n renderHTML({ node, HTMLAttributes }) {\n return [\n config.viewElement,\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n this.options.renderText({\n options: this.options,\n node\n })\n ];\n }\n }).configure({\n suggestion: {\n char: config.character,\n decorationClass: 'nimble-mention-view-edit',\n pluginKey: new PluginKey(config.key),\n allowSpaces: true,\n render: () => {\n let inSuggestionMode = false;\n return {\n onStart: (props): void => {\n /**\n * If the cursor position moves to outside of the mention and configuration element changes,\n * the setMarkdown() will trigger this `onStart` without a decoration node because the cursor\n * position is temporarily moved out of the suggestion decoration. Ignore `onStart` in that case\n * and don't show the mention list box since it doesn't have anything to anchor to.\n */\n if (props.decorationNode === null) {\n return;\n }\n inSuggestionMode = true;\n config.mentionUpdateEmitter(props.query);\n activeMentionCharacterEmitter(props.text.slice(0, 1));\n activeMentionCommandEmitter(props.command);\n mentionListbox?.show({\n filter: props.query,\n anchorNode: props.decorationNode as HTMLElement\n });\n },\n onUpdate: (props): void => {\n if (!inSuggestionMode) {\n return;\n }\n config.mentionUpdateEmitter(props.query);\n activeMentionCommandEmitter(props.command);\n mentionListbox?.show({\n filter: props.query,\n anchorNode: props.decorationNode as HTMLElement\n });\n },\n onKeyDown: (props): boolean => {\n if (!inSuggestionMode) {\n return false;\n }\n if (props.event.key === keyEscape) {\n inSuggestionMode = false;\n }\n return (\n mentionListbox?.keydownHandler(props.event) ?? false\n );\n },\n onExit: (): void => {\n activeMentionCharacterEmitter('');\n activeMentionCommandEmitter(undefined);\n mentionListbox?.close();\n }\n };\n }\n }\n });\n}\n\n/**\n * This method finds the Link mark in the pasted content and update its Text node.\n * If there is no text node, pass the node's fragment recursively and updates only node containing Link mark.\n * If the Text node does not contains Link mark, push the same node to `updatedNodes`.\n *\n * @param fragment Fragment containing the pasted content. [Fragment](https://prosemirror.net/docs/ref/#model.Fragment)\n * @returns modified fragment from the `updatedNode` after updating the valid link text with its href value.\n */\nfunction updateLinkAndMentionNodes(\n tiptapEditor: Editor,\n fragment: Fragment\n): Fragment {\n const updatedNodes: FragmentNode[] = [];\n\n fragment.forEach(node => {\n if (node.isText && node.marks.length > 0) {\n const linkMark = node.marks.find(\n mark => mark.type.name === 'link' && mark.attrs\n );\n if (linkMark) {\n // Checks if the link is valid link or not\n // Needing to separately validate the link on paste is a workaround for a tiptap issue\n // See: https://github.com/ni/nimble/issues/1527\n if (\n validAbsoluteLinkRegex.test(linkMark.attrs.href as string)\n ) {\n // The below lines of code is responsible for updating the text content with its href value and creates a new updated text node.\n // This code needs an update when the hyperlink support is added.\n // See: https://github.com/ni/nimble/issues/1527\n updatedNodes.push(\n tiptapEditor.schema.text(\n linkMark.attrs.href as string,\n node.marks\n )\n );\n } else {\n // If it is a invalid link, creates a new Text node with the same text content and without a Link mark.\n updatedNodes.push(\n tiptapEditor.schema.text(\n node.textContent,\n linkMark.removeFromSet(node.marks)\n )\n );\n }\n } else {\n updatedNodes.push(node);\n }\n } else if (node.type.name.startsWith(mentionPluginPrefix)) {\n updatedNodes.push(\n tiptapEditor.schema.text(node.attrs.label as string)\n );\n } else {\n const updatedContent = updateLinkAndMentionNodes(\n tiptapEditor,\n node.content\n );\n updatedNodes.push(node.copy(updatedContent));\n }\n });\n\n return Fragment.fromArray(updatedNodes);\n}\n"]}
@@ -1 +1 @@
1
- export declare const styles: import("@microsoft/fast-element").ElementStyles;
1
+ export declare const styles: import("@ni/fast-element").ElementStyles;
@@ -1,4 +1,4 @@
1
- import { css } from '@microsoft/fast-element';
1
+ import { css } from '@ni/fast-element';
2
2
  import { display } from '../../utilities/style/display';
3
3
  import { bodyDisabledFontColor, bodyFont, bodyFontColor, borderHoverColor, borderRgbPartialColor, borderWidth, controlLabelFontColor, controlLabelDisabledFontColor, failColor, iconSize, smallDelay, mediumPadding, standardPadding, linkFontColor, controlSlimHeight } from '../../theme-provider/design-tokens';
4
4
  import { styles as errorStyles } from '../../patterns/error/styles';
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EACH,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,aAAa,CAAC;MACtB,WAAW;;;gBAGD,QAAQ;;iBAEP,aAAa;;;cAGhB,WAAW;;;UAGf;AACE,yFAAyF,CAAC,EAC9F;;;;UAIE;AACE,qHAAqH,CAAC,EAC1H;;;;;;;;;kBASU,WAAW,eAAe,qBAAqB;;;;;;;4BAOrC,WAAW;;;;;yBAKd,gBAAgB;;4BAEb,UAAU;;;;+BAIP,gBAAgB;;;;;;;;;;iBAU9B,qBAAqB;kBACpB,WAAW,eAAe,qBAAqB;;;;+BAIlC,SAAS;;;;iCAIP,WAAW;;;;;;;;+BAQb,SAAS;;;;;;;;;;kBAUtB,WAAW;;;;;;;;;;;;;;;;;;UAkBnB;AACE,wFAAwF,CAAC,EAC7F;8BACsB,QAAQ;;;;;MAKhC;AACE;;;;;GAKG,CAAC,EACR;;;;;;;;;;;;;;;;;MAiBE,CAAA,+DAAgE,EAAE;;;;;;;;;;;;;;;;;;MAkBlE;AACE;;;GAGG,CAAC,EACR;;iBAEa,qBAAqB;;;;;;;;;iBASrB,6BAA6B;;;MAGxC;AACE;;;GAGG,CAAC,EACR;;iBAEa,aAAa;;UAEpB;AACE;;;;;;;;GAQG,CAAC,EACR;;;;;iBAKS,qBAAqB;;;;;MAKhC,CAAA,2BAA4B,EAAE;;MAE9B,CAAA,uDAAwD,EAAE;;iBAE/C,aAAa;;;;iBAIb,qBAAqB;;;;;;;;;;;yBAWb,qBAAqB;;;;;;;;;MASxC,UAAU;;;;;;;MAOV,UAAU;;;;MAIV,SAAS;MACT,eAAe;kBACH,iBAAiB;;;;;;6BAMN,eAAe;eAC7B,eAAe;;;;gBAId,SAAS;gBACT,eAAe;gBACf,eAAe;gBACf,aAAa;kBACX,iBAAiB;;;;;;;;;;eAUpB,aAAa;;;CAG3B,CAAC","sourcesContent":["import { css } from '@microsoft/fast-element';\nimport { display } from '../../utilities/style/display';\nimport {\n bodyDisabledFontColor,\n bodyFont,\n bodyFontColor,\n borderHoverColor,\n borderRgbPartialColor,\n borderWidth,\n controlLabelFontColor,\n controlLabelDisabledFontColor,\n failColor,\n iconSize,\n smallDelay,\n mediumPadding,\n standardPadding,\n linkFontColor,\n controlSlimHeight\n} from '../../theme-provider/design-tokens';\nimport { styles as errorStyles } from '../../patterns/error/styles';\nimport { toolbarTag } from '../../toolbar';\nimport { toggleButtonTag } from '../../toggle-button';\nimport { buttonTag } from '../../button';\nimport { anchorButtonTag } from '../../anchor-button';\nimport { menuButtonTag } from '../../menu-button';\n\nexport const styles = css`\n ${display('inline-flex')}\n ${errorStyles}\n\n :host {\n font: ${bodyFont};\n outline: none;\n color: ${bodyFontColor};\n flex-direction: column;\n --ni-private-rich-text-editor-hover-indicator-width: calc(\n ${borderWidth} + 1px\n );\n\n ${\n /** Initial height of rich text editor with one line space when the footer is visible. */ ''\n }\n height: 82px;\n --ni-private-rich-text-editor-footer-section-height: 40px;\n --ni-private-rich-text-editor-footer-section-border-top-width: 2px;\n ${\n /** Minimum width is added to accommodate all the possible buttons in the toolbar and to support the mobile width. */ ''\n }\n min-width: 360px;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n border: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.3);\n }\n\n .container::after {\n display: block;\n content: ' ';\n position: absolute;\n bottom: calc(-1 * ${borderWidth});\n width: 0px;\n height: 0px;\n left: 50%;\n transform: translate(-50%, 50%);\n border-bottom: ${borderHoverColor}\n var(--ni-private-rich-text-editor-hover-indicator-width) solid;\n transition: width ${smallDelay} ease-in;\n }\n\n .container:focus-within {\n border-bottom-color: ${borderHoverColor};\n }\n\n @media (prefers-reduced-motion) {\n .container::after {\n transition-duration: 0s;\n }\n }\n\n :host([disabled]) .container {\n color: ${bodyDisabledFontColor};\n border: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.1);\n }\n\n :host([error-visible]) .container {\n border-bottom-color: ${failColor};\n }\n\n :host(:hover) .container::after {\n width: calc(100% + 2 * ${borderWidth});\n }\n\n :host([disabled]:hover) .container::after {\n width: 0px;\n }\n\n :host([error-visible]) .container::after {\n border-bottom-color: ${failColor};\n }\n\n .editor-container {\n display: contents;\n }\n\n .editor {\n display: flex;\n flex-direction: column;\n border: ${borderWidth} solid transparent;\n border-radius: 0px;\n flex: 1;\n overflow: hidden;\n }\n\n :host([footer-hidden]) .editor {\n height: 100%;\n }\n\n .ProseMirror {\n overflow: auto;\n height: 100%;\n border: 0px;\n border-radius: 0px;\n background-color: transparent;\n font: inherit;\n padding: 8px;\n ${\n /* This padding ensures that showing/hiding the error icon doesn't affect text layout */ ''\n }\n padding-right: calc(${iconSize});\n position: relative;\n color: inherit;\n }\n\n ${\n /**\n * Below are the styles from prosemirror-view as the Prose mirror expects the \"white-space\" to be set. The recommendation is to load the style from the below package.\n * However, the other classes used in the below file like \".ProseMirror-selectednode\", \".ProseMirror-hideselection\" were not used anywhere in the \".Prosemirror\" content editable div in the DOM. So added only the necessary styles below.\n *\n * https://github.com/ProseMirror/prosemirror-view/blob/db2223a88b540a8f381fc2720198342e29a60566/style/prosemirror.css#L5C1-L12C2\n */ ''\n }\n .ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: 'liga' 0;\n }\n\n .ProseMirror pre {\n white-space: pre-wrap;\n }\n\n .ProseMirror li {\n position: relative;\n }\n\n ${/** End of Prose Mirror defined styles from prosemirror-view */ ''}\n\n .ProseMirror-focused {\n outline: none;\n }\n\n .ProseMirror > :first-child {\n margin-block-start: 0;\n }\n\n .ProseMirror > :last-child {\n margin-block-end: 0;\n }\n\n .ProseMirror li > p {\n margin-block: 0;\n }\n\n ${\n /**\n * Styles provided by Tiptap are necessary to display the placeholder value when the editor is empty.\n * Tiptap doc reference: https://tiptap.dev/api/extensions/placeholder#additional-setup\n */ ''\n }\n .ProseMirror p.is-editor-empty:first-child::before {\n color: ${controlLabelFontColor};\n content: attr(data-placeholder);\n float: left;\n height: 0;\n pointer-events: none;\n word-break: break-word;\n }\n\n :host([disabled]) .ProseMirror p.is-editor-empty:first-child::before {\n color: ${controlLabelDisabledFontColor};\n }\n\n ${\n /**\n * Custom anchor stylings can be removed once leveraging 'nimble-anchor' is supported.\n * See: https://github.com/ni/nimble/issues/1516\n */ ''\n }\n .ProseMirror a {\n color: ${linkFontColor};\n white-space: normal;\n ${\n /**\n * Setting 'pointer-events: none;' to restrict the user from opening a link using the right-click context menu: If the user manually edits\n * the link's text content, the 'href' attribute of the anchor tag will not be updated. If they attempt to open it using\n * the right-click context menu with 'Open in new tab/window,' it will still navigate to the link specified\n * in the 'href' attribute, which may create unnecessary confusion while trying to open the link.\n *\n * Using pointer-events: none to disable link interactions can be removed when hyperlink support is added.\n * see: https://github.com/ni/nimble/issues/1527\n */ ''\n }\n pointer-events: none;\n }\n\n :host([disabled]) .ProseMirror a {\n color: ${bodyDisabledFontColor};\n fill: currentcolor;\n cursor: default;\n }\n\n ${/** End of anchor styles */ ''}\n\n ${/* Shared styles for all mention views at edit time. */ ''}\n .ProseMirror .nimble-mention-view-edit {\n color: ${bodyFontColor};\n }\n\n :host([disabled]) .ProseMirror .nimble-mention-view-edit {\n color: ${bodyDisabledFontColor};\n }\n\n .footer-section {\n display: flex;\n justify-content: space-between;\n flex-shrink: 0;\n border: 0px;\n border-top: var(\n --ni-private-rich-text-editor-footer-section-border-top-width\n )\n solid rgba(${borderRgbPartialColor}, 0.1);\n height: var(--ni-private-rich-text-editor-footer-section-height);\n overflow: hidden;\n }\n\n :host([footer-hidden]) .footer-section {\n display: none;\n }\n\n ${toolbarTag}::part(positioning-region) {\n background: transparent;\n padding-right: 8px;\n gap: 0px;\n height: var(--ni-private-rich-text-editor-footer-section-height);\n }\n\n ${toolbarTag}::part(start) {\n gap: 8px;\n }\n\n ${buttonTag},\n ${toggleButtonTag} {\n height: ${controlSlimHeight};\n }\n\n .footer-actions {\n display: flex;\n justify-content: flex-end;\n margin-inline-end: ${standardPadding};\n gap: ${standardPadding};\n place-items: center;\n }\n\n ::slotted(${buttonTag}),\n ::slotted(${toggleButtonTag}),\n ::slotted(${anchorButtonTag}),\n ::slotted(${menuButtonTag}) {\n height: ${controlSlimHeight};\n }\n\n :host([error-visible]) .error-icon {\n display: none;\n }\n\n :host([error-visible]) .error-icon.scrollbar-width-calculated {\n display: inline-flex;\n position: absolute;\n top: ${mediumPadding};\n right: var(--ni-private-rich-text-editor-scrollbar-width);\n }\n`;\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EACH,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,aAAa,CAAC;MACtB,WAAW;;;gBAGD,QAAQ;;iBAEP,aAAa;;;cAGhB,WAAW;;;UAGf;AACE,yFAAyF,CAAC,EAC9F;;;;UAIE;AACE,qHAAqH,CAAC,EAC1H;;;;;;;;;kBASU,WAAW,eAAe,qBAAqB;;;;;;;4BAOrC,WAAW;;;;;yBAKd,gBAAgB;;4BAEb,UAAU;;;;+BAIP,gBAAgB;;;;;;;;;;iBAU9B,qBAAqB;kBACpB,WAAW,eAAe,qBAAqB;;;;+BAIlC,SAAS;;;;iCAIP,WAAW;;;;;;;;+BAQb,SAAS;;;;;;;;;;kBAUtB,WAAW;;;;;;;;;;;;;;;;;;UAkBnB;AACE,wFAAwF,CAAC,EAC7F;8BACsB,QAAQ;;;;;MAKhC;AACE;;;;;GAKG,CAAC,EACR;;;;;;;;;;;;;;;;;MAiBE,CAAA,+DAAgE,EAAE;;;;;;;;;;;;;;;;;;MAkBlE;AACE;;;GAGG,CAAC,EACR;;iBAEa,qBAAqB;;;;;;;;;iBASrB,6BAA6B;;;MAGxC;AACE;;;GAGG,CAAC,EACR;;iBAEa,aAAa;;UAEpB;AACE;;;;;;;;GAQG,CAAC,EACR;;;;;iBAKS,qBAAqB;;;;;MAKhC,CAAA,2BAA4B,EAAE;;MAE9B,CAAA,uDAAwD,EAAE;;iBAE/C,aAAa;;;;iBAIb,qBAAqB;;;;;;;;;;;yBAWb,qBAAqB;;;;;;;;;MASxC,UAAU;;;;;;;MAOV,UAAU;;;;MAIV,SAAS;MACT,eAAe;kBACH,iBAAiB;;;;;;6BAMN,eAAe;eAC7B,eAAe;;;;gBAId,SAAS;gBACT,eAAe;gBACf,eAAe;gBACf,aAAa;kBACX,iBAAiB;;;;;;;;;;eAUpB,aAAa;;;CAG3B,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport { display } from '../../utilities/style/display';\nimport {\n bodyDisabledFontColor,\n bodyFont,\n bodyFontColor,\n borderHoverColor,\n borderRgbPartialColor,\n borderWidth,\n controlLabelFontColor,\n controlLabelDisabledFontColor,\n failColor,\n iconSize,\n smallDelay,\n mediumPadding,\n standardPadding,\n linkFontColor,\n controlSlimHeight\n} from '../../theme-provider/design-tokens';\nimport { styles as errorStyles } from '../../patterns/error/styles';\nimport { toolbarTag } from '../../toolbar';\nimport { toggleButtonTag } from '../../toggle-button';\nimport { buttonTag } from '../../button';\nimport { anchorButtonTag } from '../../anchor-button';\nimport { menuButtonTag } from '../../menu-button';\n\nexport const styles = css`\n ${display('inline-flex')}\n ${errorStyles}\n\n :host {\n font: ${bodyFont};\n outline: none;\n color: ${bodyFontColor};\n flex-direction: column;\n --ni-private-rich-text-editor-hover-indicator-width: calc(\n ${borderWidth} + 1px\n );\n\n ${\n /** Initial height of rich text editor with one line space when the footer is visible. */ ''\n }\n height: 82px;\n --ni-private-rich-text-editor-footer-section-height: 40px;\n --ni-private-rich-text-editor-footer-section-border-top-width: 2px;\n ${\n /** Minimum width is added to accommodate all the possible buttons in the toolbar and to support the mobile width. */ ''\n }\n min-width: 360px;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n position: relative;\n height: 100%;\n border: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.3);\n }\n\n .container::after {\n display: block;\n content: ' ';\n position: absolute;\n bottom: calc(-1 * ${borderWidth});\n width: 0px;\n height: 0px;\n left: 50%;\n transform: translate(-50%, 50%);\n border-bottom: ${borderHoverColor}\n var(--ni-private-rich-text-editor-hover-indicator-width) solid;\n transition: width ${smallDelay} ease-in;\n }\n\n .container:focus-within {\n border-bottom-color: ${borderHoverColor};\n }\n\n @media (prefers-reduced-motion) {\n .container::after {\n transition-duration: 0s;\n }\n }\n\n :host([disabled]) .container {\n color: ${bodyDisabledFontColor};\n border: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.1);\n }\n\n :host([error-visible]) .container {\n border-bottom-color: ${failColor};\n }\n\n :host(:hover) .container::after {\n width: calc(100% + 2 * ${borderWidth});\n }\n\n :host([disabled]:hover) .container::after {\n width: 0px;\n }\n\n :host([error-visible]) .container::after {\n border-bottom-color: ${failColor};\n }\n\n .editor-container {\n display: contents;\n }\n\n .editor {\n display: flex;\n flex-direction: column;\n border: ${borderWidth} solid transparent;\n border-radius: 0px;\n flex: 1;\n overflow: hidden;\n }\n\n :host([footer-hidden]) .editor {\n height: 100%;\n }\n\n .ProseMirror {\n overflow: auto;\n height: 100%;\n border: 0px;\n border-radius: 0px;\n background-color: transparent;\n font: inherit;\n padding: 8px;\n ${\n /* This padding ensures that showing/hiding the error icon doesn't affect text layout */ ''\n }\n padding-right: calc(${iconSize});\n position: relative;\n color: inherit;\n }\n\n ${\n /**\n * Below are the styles from prosemirror-view as the Prose mirror expects the \"white-space\" to be set. The recommendation is to load the style from the below package.\n * However, the other classes used in the below file like \".ProseMirror-selectednode\", \".ProseMirror-hideselection\" were not used anywhere in the \".Prosemirror\" content editable div in the DOM. So added only the necessary styles below.\n *\n * https://github.com/ProseMirror/prosemirror-view/blob/db2223a88b540a8f381fc2720198342e29a60566/style/prosemirror.css#L5C1-L12C2\n */ ''\n }\n .ProseMirror {\n word-wrap: break-word;\n white-space: pre-wrap;\n -webkit-font-variant-ligatures: none;\n font-variant-ligatures: none;\n font-feature-settings: 'liga' 0;\n }\n\n .ProseMirror pre {\n white-space: pre-wrap;\n }\n\n .ProseMirror li {\n position: relative;\n }\n\n ${/** End of Prose Mirror defined styles from prosemirror-view */ ''}\n\n .ProseMirror-focused {\n outline: none;\n }\n\n .ProseMirror > :first-child {\n margin-block-start: 0;\n }\n\n .ProseMirror > :last-child {\n margin-block-end: 0;\n }\n\n .ProseMirror li > p {\n margin-block: 0;\n }\n\n ${\n /**\n * Styles provided by Tiptap are necessary to display the placeholder value when the editor is empty.\n * Tiptap doc reference: https://tiptap.dev/api/extensions/placeholder#additional-setup\n */ ''\n }\n .ProseMirror p.is-editor-empty:first-child::before {\n color: ${controlLabelFontColor};\n content: attr(data-placeholder);\n float: left;\n height: 0;\n pointer-events: none;\n word-break: break-word;\n }\n\n :host([disabled]) .ProseMirror p.is-editor-empty:first-child::before {\n color: ${controlLabelDisabledFontColor};\n }\n\n ${\n /**\n * Custom anchor stylings can be removed once leveraging 'nimble-anchor' is supported.\n * See: https://github.com/ni/nimble/issues/1516\n */ ''\n }\n .ProseMirror a {\n color: ${linkFontColor};\n white-space: normal;\n ${\n /**\n * Setting 'pointer-events: none;' to restrict the user from opening a link using the right-click context menu: If the user manually edits\n * the link's text content, the 'href' attribute of the anchor tag will not be updated. If they attempt to open it using\n * the right-click context menu with 'Open in new tab/window,' it will still navigate to the link specified\n * in the 'href' attribute, which may create unnecessary confusion while trying to open the link.\n *\n * Using pointer-events: none to disable link interactions can be removed when hyperlink support is added.\n * see: https://github.com/ni/nimble/issues/1527\n */ ''\n }\n pointer-events: none;\n }\n\n :host([disabled]) .ProseMirror a {\n color: ${bodyDisabledFontColor};\n fill: currentcolor;\n cursor: default;\n }\n\n ${/** End of anchor styles */ ''}\n\n ${/* Shared styles for all mention views at edit time. */ ''}\n .ProseMirror .nimble-mention-view-edit {\n color: ${bodyFontColor};\n }\n\n :host([disabled]) .ProseMirror .nimble-mention-view-edit {\n color: ${bodyDisabledFontColor};\n }\n\n .footer-section {\n display: flex;\n justify-content: space-between;\n flex-shrink: 0;\n border: 0px;\n border-top: var(\n --ni-private-rich-text-editor-footer-section-border-top-width\n )\n solid rgba(${borderRgbPartialColor}, 0.1);\n height: var(--ni-private-rich-text-editor-footer-section-height);\n overflow: hidden;\n }\n\n :host([footer-hidden]) .footer-section {\n display: none;\n }\n\n ${toolbarTag}::part(positioning-region) {\n background: transparent;\n padding-right: 8px;\n gap: 0px;\n height: var(--ni-private-rich-text-editor-footer-section-height);\n }\n\n ${toolbarTag}::part(start) {\n gap: 8px;\n }\n\n ${buttonTag},\n ${toggleButtonTag} {\n height: ${controlSlimHeight};\n }\n\n .footer-actions {\n display: flex;\n justify-content: flex-end;\n margin-inline-end: ${standardPadding};\n gap: ${standardPadding};\n place-items: center;\n }\n\n ::slotted(${buttonTag}),\n ::slotted(${toggleButtonTag}),\n ::slotted(${anchorButtonTag}),\n ::slotted(${menuButtonTag}) {\n height: ${controlSlimHeight};\n }\n\n :host([error-visible]) .error-icon {\n display: none;\n }\n\n :host([error-visible]) .error-icon.scrollbar-width-calculated {\n display: inline-flex;\n position: absolute;\n top: ${mediumPadding};\n right: var(--ni-private-rich-text-editor-scrollbar-width);\n }\n`;\n"]}
@@ -1,2 +1,2 @@
1
1
  import type { RichTextEditor } from '.';
2
- export declare const template: import("@microsoft/fast-element").ViewTemplate<RichTextEditor, any>;
2
+ export declare const template: import("@ni/fast-element").ViewTemplate<RichTextEditor, any>;
@@ -1,4 +1,4 @@
1
- import { children, elements, html, ref, repeat } from '@microsoft/fast-element';
1
+ import { children, elements, html, ref, repeat } from '@ni/fast-element';
2
2
  import { toolbarTag } from '../../toolbar';
3
3
  import { toggleButtonTag } from '../../toggle-button';
4
4
  import { iconBoldBTag } from '../../icons/bold-b';
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/template.ts"],"names":[],"mappings":"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","sourcesContent":["import { children, elements, html, ref, repeat } from '@microsoft/fast-element';\nimport type { RichTextEditor } from '.';\nimport { toolbarTag } from '../../toolbar';\nimport { toggleButtonTag } from '../../toggle-button';\nimport { iconBoldBTag } from '../../icons/bold-b';\nimport { iconItalicITag } from '../../icons/italic-i';\nimport { iconListTag } from '../../icons/list';\nimport { iconNumberListTag } from '../../icons/number-list';\nimport {\n richTextToggleBoldLabel,\n richTextToggleItalicsLabel,\n richTextToggleBulletedListLabel,\n richTextToggleNumberedListLabel\n} from '../../label-provider/rich-text/label-tokens';\nimport { errorTextTemplate } from '../../patterns/error/template';\nimport { iconExclamationMarkTag } from '../../icons/exclamation-mark';\nimport { richTextMentionListboxTag } from '../mention-listbox';\nimport type { MentionExtensionConfiguration } from '../models/mention-extension-configuration';\nimport { buttonTag } from '../../button';\nimport type { MappingConfig } from '../../rich-text-mention/base/models/mapping-config';\nimport { listOptionTag } from '../../list-option';\nimport type { MentionDetail } from './types';\n\n// prettier-ignore\nexport const template = html<RichTextEditor>`\n <template\n ${children({ property: 'childItems', filter: elements() })}\n @focusout=\"${x => x.focusoutHandler()}\"\n >\n <div class=\"container\">\n <section ${ref('editorContainer')} class=\"editor-container\">\n </section>\n <${iconExclamationMarkTag}\n severity=\"error\"\n class=\"error-icon ${x => (x.scrollbarWidth >= 0 ? 'scrollbar-width-calculated' : '')}\"\n style=\"--ni-private-rich-text-editor-scrollbar-width: ${x => x.scrollbarWidth}px;\"\n ></${iconExclamationMarkTag}>\n <section class=\"footer-section\">\n <${toolbarTag}>\n <${toggleButtonTag}\n ${ref('boldButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleBoldLabel.getValueFor(x)}\n @click=${x => x.boldButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.boldButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleBoldLabel.getValueFor(x)}\n <${iconBoldBTag} slot=\"start\"></${iconBoldBTag}>\n </${toggleButtonTag}>\n <${toggleButtonTag}\n ${ref('italicsButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleItalicsLabel.getValueFor(x)}\n @click=${x => x.italicsButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.italicsButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleItalicsLabel.getValueFor(x)}\n <${iconItalicITag} slot=\"start\"></${iconItalicITag}>\n </${toggleButtonTag}>\n <${toggleButtonTag}\n ${ref('bulletListButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleBulletedListLabel.getValueFor(x)}\n @click=${x => x.bulletListButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.bulletListButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleBulletedListLabel.getValueFor(x)}\n <${iconListTag} slot=\"start\"></${iconListTag}>\n </${toggleButtonTag}>\n <${toggleButtonTag}\n ${ref('numberedListButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleNumberedListLabel.getValueFor(x)}\n @click=${x => x.numberedListButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.numberedListButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleNumberedListLabel.getValueFor(x)}\n <${iconNumberListTag} slot=\"start\"></${iconNumberListTag}>\n </${toggleButtonTag}>\n ${repeat(x => x.getMentionExtensionConfig(), html<MentionExtensionConfiguration, RichTextEditor>`\n <${buttonTag}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${(_x, c) => c.parent.disabled}\"\n slot=\"start\"\n title=${x => x.buttonLabel}\n @click=${(x, c) => c.parent.mentionButtonClick(x.character)}\n >\n ${x => x.buttonLabel}\n ${x => x.iconTemplate}\n </${buttonTag}>\n `)}\n </${toolbarTag}>\n <span class=\"footer-actions\" part=\"footer-actions\">\n <slot name=\"footer-actions\"></slot>\n </span>\n </section>\n ${errorTextTemplate}\n </div>\n <${richTextMentionListboxTag}\n ${ref('mentionListbox')}\n @mention-selected=${(x, c) => x.onMentionSelect(c.event as CustomEvent<MentionDetail>)}\n >\n ${repeat(x => Array.from(x.activeMappingConfigs ? x.activeMappingConfigs.values() : []), html<MappingConfig>`\n <${listOptionTag} value=\"${x => x.mentionHref}\">${x => x.displayName}</${listOptionTag}>\n `, { recycle: false })}\n </${richTextMentionListboxTag}>\n </template>\n`;\n"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/template.ts"],"names":[],"mappings":"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","sourcesContent":["import { children, elements, html, ref, repeat } from '@ni/fast-element';\nimport type { RichTextEditor } from '.';\nimport { toolbarTag } from '../../toolbar';\nimport { toggleButtonTag } from '../../toggle-button';\nimport { iconBoldBTag } from '../../icons/bold-b';\nimport { iconItalicITag } from '../../icons/italic-i';\nimport { iconListTag } from '../../icons/list';\nimport { iconNumberListTag } from '../../icons/number-list';\nimport {\n richTextToggleBoldLabel,\n richTextToggleItalicsLabel,\n richTextToggleBulletedListLabel,\n richTextToggleNumberedListLabel\n} from '../../label-provider/rich-text/label-tokens';\nimport { errorTextTemplate } from '../../patterns/error/template';\nimport { iconExclamationMarkTag } from '../../icons/exclamation-mark';\nimport { richTextMentionListboxTag } from '../mention-listbox';\nimport type { MentionExtensionConfiguration } from '../models/mention-extension-configuration';\nimport { buttonTag } from '../../button';\nimport type { MappingConfig } from '../../rich-text-mention/base/models/mapping-config';\nimport { listOptionTag } from '../../list-option';\nimport type { MentionDetail } from './types';\n\n// prettier-ignore\nexport const template = html<RichTextEditor>`\n <template\n ${children({ property: 'childItems', filter: elements() })}\n @focusout=\"${x => x.focusoutHandler()}\"\n >\n <div class=\"container\">\n <section ${ref('editorContainer')} class=\"editor-container\">\n </section>\n <${iconExclamationMarkTag}\n severity=\"error\"\n class=\"error-icon ${x => (x.scrollbarWidth >= 0 ? 'scrollbar-width-calculated' : '')}\"\n style=\"--ni-private-rich-text-editor-scrollbar-width: ${x => x.scrollbarWidth}px;\"\n ></${iconExclamationMarkTag}>\n <section class=\"footer-section\">\n <${toolbarTag}>\n <${toggleButtonTag}\n ${ref('boldButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleBoldLabel.getValueFor(x)}\n @click=${x => x.boldButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.boldButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleBoldLabel.getValueFor(x)}\n <${iconBoldBTag} slot=\"start\"></${iconBoldBTag}>\n </${toggleButtonTag}>\n <${toggleButtonTag}\n ${ref('italicsButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleItalicsLabel.getValueFor(x)}\n @click=${x => x.italicsButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.italicsButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleItalicsLabel.getValueFor(x)}\n <${iconItalicITag} slot=\"start\"></${iconItalicITag}>\n </${toggleButtonTag}>\n <${toggleButtonTag}\n ${ref('bulletListButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleBulletedListLabel.getValueFor(x)}\n @click=${x => x.bulletListButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.bulletListButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleBulletedListLabel.getValueFor(x)}\n <${iconListTag} slot=\"start\"></${iconListTag}>\n </${toggleButtonTag}>\n <${toggleButtonTag}\n ${ref('numberedListButton')}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${x => x.disabled}\"\n slot=\"start\"\n title=${x => richTextToggleNumberedListLabel.getValueFor(x)}\n @click=${x => x.numberedListButtonClick()}\n @change=${(x, c) => x.stopEventPropagation(c.event)}\n @keydown=${(x, c) => x.numberedListButtonKeyDown(c.event as KeyboardEvent)}\n >\n ${x => richTextToggleNumberedListLabel.getValueFor(x)}\n <${iconNumberListTag} slot=\"start\"></${iconNumberListTag}>\n </${toggleButtonTag}>\n ${repeat(x => x.getMentionExtensionConfig(), html<MentionExtensionConfiguration, RichTextEditor>`\n <${buttonTag}\n appearance=\"ghost\"\n content-hidden\n ?disabled=\"${(_x, c) => c.parent.disabled}\"\n slot=\"start\"\n title=${x => x.buttonLabel}\n @click=${(x, c) => c.parent.mentionButtonClick(x.character)}\n >\n ${x => x.buttonLabel}\n ${x => x.iconTemplate}\n </${buttonTag}>\n `)}\n </${toolbarTag}>\n <span class=\"footer-actions\" part=\"footer-actions\">\n <slot name=\"footer-actions\"></slot>\n </span>\n </section>\n ${errorTextTemplate}\n </div>\n <${richTextMentionListboxTag}\n ${ref('mentionListbox')}\n @mention-selected=${(x, c) => x.onMentionSelect(c.event as CustomEvent<MentionDetail>)}\n >\n ${repeat(x => Array.from(x.activeMappingConfigs ? x.activeMappingConfigs.values() : []), html<MappingConfig>`\n <${listOptionTag} value=\"${x => x.mentionHref}\">${x => x.displayName}</${listOptionTag}>\n `, { recycle: false })}\n </${richTextMentionListboxTag}>\n </template>\n`;\n"]}
@@ -1,4 +1,4 @@
1
- import { keySpace, keyEnter, keyTab, keyEscape } from '@microsoft/fast-web-utilities';
1
+ import { keySpace, keyEnter, keyTab, keyEscape } from '@ni/fast-web-utilities';
2
2
  import { waitForUpdatesAsync } from '../../../testing/async-helpers';
3
3
  import { toggleButtonTag } from '../../../toggle-button';
4
4
  import { ArrowKeyButton, ToolbarButton } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"rich-text-editor.pageobject.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/rich-text-editor.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n keySpace,\n keyEnter,\n keyTab,\n keyEscape\n} from '@microsoft/fast-web-utilities';\nimport type { RichTextEditor } from '..';\nimport { waitForUpdatesAsync } from '../../../testing/async-helpers';\nimport { toggleButtonTag, type ToggleButton } from '../../../toggle-button';\nimport {\n ArrowKeyButton,\n type MappingConfiguration,\n ToolbarButton,\n type ToolbarButtonKey\n} from './types';\nimport {\n getTagsFromElement,\n getLeafContentsFromElement,\n getLastChildElement,\n getLastChildElementAttribute\n} from '../../models/testing/markdown-parser-utils';\nimport { richTextMentionUsersViewTag } from '../../../rich-text-mention/users/view';\nimport { RichTextMarkdownParser } from '../../models/markdown-parser';\nimport { buttonTag, type Button } from '../../../button';\nimport { richTextMentionListboxTag } from '../../mention-listbox';\nimport { listOptionTag, type ListOption } from '../../../list-option';\nimport { anchoredRegionTag } from '../../../anchored-region';\nimport { iconAtTag } from '../../../icons/at';\nimport { MarkdownParserMentionConfiguration } from '../../models/markdown-parser-mention-configuration';\nimport { MentionInternals } from '../../../rich-text-mention/base/models/mention-internals';\nimport { MappingUserConfig } from '../../../rich-text-mention/users/models/mapping-user-config';\nimport { RichTextMentionUsersValidator } from '../../../rich-text-mention/users/models/rich-text-mention-users-validator';\n\n/**\n * Page object for the `nimble-rich-text-editor` component.\n */\nexport class RichTextEditorPageObject {\n public constructor(\n private readonly richTextEditorElement: RichTextEditor\n ) {}\n\n public editorSectionHasChildNodes(): boolean {\n const editorSection = this.getEditorSection();\n return editorSection!.hasChildNodes();\n }\n\n public getEditorSectionFirstElementChildClassName(): string {\n const editorSection = this.getEditorSection();\n return editorSection!.firstElementChild!.className;\n }\n\n public async clickEditorShortcutKeys(\n shortcutKey: string,\n isShiftKey: boolean\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: shortcutKey,\n ctrlKey: true,\n shiftKey: isShiftKey,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEnterKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEnter,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEscapeKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEscape,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressArrowKeyInEditor(\n arrowButton: ArrowKeyButton\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: arrowButton,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftEnterKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftEnterEvent = new KeyboardEvent('keydown', {\n key: keyEnter,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftEnterEvent);\n await waitForUpdatesAsync();\n }\n\n public async pressTabKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyTab,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftTabKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftTabEvent = new KeyboardEvent('keydown', {\n key: keyTab,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftTabEvent);\n await waitForUpdatesAsync();\n }\n\n /**\n * In testing environment, when clicking on the footer button, it may not persist in the same state if any editor transaction occurs in between.\n * This behavior is likely due to dynamic modifications of formatting button states based on cursor positions during editor transactions.\n * Setting the \"force\" parameter to true activates the formatting button state; when set to false, it deactivates the state.\n * If unset, the state toggles by interacting with it once.\n */\n public async toggleFooterButton(\n button: ToolbarButton,\n force?: boolean\n ): Promise<void> {\n const toggleButton = this.getFormattingButton(button);\n const event = new Event('mousedown', { bubbles: true });\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n let format = Object.keys(ToolbarButton).find(\n key => ToolbarButton[key as ToolbarButtonKey] === button\n );\n // In the editor, the isActive() method expects the format name to be 'italic' instead of 'italics.'\n // As it was consistently represent it as 'italics' elsewhere just updated it here\n if (format === 'italics') {\n format = 'italic';\n }\n if (force === true || force === false) {\n if (\n this.richTextEditorElement.tiptapEditor.isActive(format!)\n !== force\n ) {\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n }\n }\n await waitForUpdatesAsync();\n }\n\n public async clickUserMentionButton(): Promise<void> {\n const userMentionButton = this.getUserMentionButton();\n userMentionButton!.click();\n await waitForUpdatesAsync();\n }\n\n public getMentionButtonIcon(buttonIndex: number): string | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.firstElementChild?.tagName;\n }\n\n public getMentionButtonTitle(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.getAttribute('title') ?? '';\n }\n\n public getMentionButtonLabel(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.innerText ?? '';\n }\n\n public getButtonCheckedState(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.checked;\n }\n\n public getButtonTabIndex(button: ToolbarButton): number {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.tabIndex;\n }\n\n public spaceKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keySpace\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public enterKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keyEnter\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public async pasteToEditor(text: string): Promise<void> {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/plain', text);\n editor.dispatchEvent(pasteEvent);\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n // Simulate the actual pasting of content by passing the extracted HTML string as an argument and setting the format to 'text/html',\n // as in the [DataFormat](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.\n // For example, when copying a link, the clipboard stores information that includes the anchor tag, href attribute value etc, and paste it as an HTML string\n public async pasteHTMLToEditor(htmlString: string): Promise<void> {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/html', htmlString);\n editor.dispatchEvent(pasteEvent);\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async setEditorTextContent(value: string): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .insertContent({\n type: 'text',\n text: value\n })\n .run();\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async setCursorPosition(position: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor.commands.setTextSelection(\n position\n );\n await waitForUpdatesAsync();\n }\n\n public async replaceEditorContent(value: string): Promise<void> {\n const lastElement = this.getEditorLastChildElement();\n lastElement.parentElement!.textContent = value;\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async sliceEditorContent(from: number, to: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .deleteRange({ from, to })\n .run();\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public getEditorLastChildAttribute(attribute: string): string {\n return getLastChildElementAttribute(attribute, this.getTiptapEditor());\n }\n\n public async isMentionListboxOpened(): Promise<boolean> {\n await waitForUpdatesAsync();\n\n return !this.getMentionListbox()?.shadowRoot?.querySelector(\n anchoredRegionTag\n )?.hidden;\n }\n\n public getEditorMentionViewAttributeValues(attribute: string): string[] {\n return Array.from(\n this.getTiptapEditor().querySelectorAll(richTextMentionUsersViewTag)\n ).map(el => el.getAttribute(attribute) || '');\n }\n\n public getEditorFirstChildTagName(): string {\n return this.getTiptapEditor().firstElementChild?.tagName ?? '';\n }\n\n public getEditorFirstChildTextContent(): string {\n return this.getTiptapEditor().firstElementChild?.textContent ?? '';\n }\n\n public getEditorTextContents(): string[] {\n return Array.from(this.getTiptapEditor().querySelectorAll('*')).map(\n el => el.textContent || ''\n );\n }\n\n public getEditorTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor());\n }\n\n // Return list of tags, excluding those such as 'IMG' (prosemirror-separator) that do not affect the UI or markdown output.\n // These tags are considered extraneous and are added by prosemirror.\n public getMarkdownRenderedTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor()).filter(\n tag => tag !== 'IMG'\n );\n }\n\n public getEditorLeafContents(): string[] {\n return getLeafContentsFromElement(this.getTiptapEditor());\n }\n\n public getEditorTagNamesWithClosingTags(): string[] {\n const tagNames: string[] = [];\n const tiptapEditor = this.getTiptapEditor();\n\n const processNode = (node: Node): void => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as Element;\n tagNames.push(el.tagName);\n\n el.childNodes.forEach(processNode);\n\n tagNames.push(`/${el.tagName}`);\n }\n };\n\n if (tiptapEditor) {\n processNode(tiptapEditor);\n }\n\n return tagNames.slice(1, -1);\n }\n\n public getFormattingButtonTextContent(\n toolbarButton: ToolbarButton\n ): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.textContent!.trim();\n }\n\n public getFormattingButtonTitle(toolbarButton: ToolbarButton): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.title;\n }\n\n public isRichTextEditorActiveElement(): boolean {\n return (\n document.activeElement === this.richTextEditorElement\n && document.activeElement?.shadowRoot?.activeElement\n === this.getTiptapEditor()\n );\n }\n\n public getEditorTabIndex(): string {\n return this.getTiptapEditor().getAttribute('tabindex') ?? '';\n }\n\n public async setFooterHidden(footerHidden: boolean): Promise<void> {\n if (footerHidden) {\n this.richTextEditorElement.setAttribute('footer-hidden', '');\n } else {\n this.richTextEditorElement.removeAttribute('footer-hidden');\n }\n await waitForUpdatesAsync();\n }\n\n public isFooterHidden(): boolean {\n const footerSection = this.getFooter()!;\n return window.getComputedStyle(footerSection).display === 'none';\n }\n\n public async setDisabled(disabled: boolean): Promise<void> {\n if (disabled) {\n this.richTextEditorElement.setAttribute('disabled', '');\n } else {\n this.richTextEditorElement.removeAttribute('disabled');\n }\n await waitForUpdatesAsync();\n }\n\n public isButtonDisabled(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button)!;\n return toggleButton.hasAttribute('disabled');\n }\n\n public getPlaceholderValue(): string {\n const editor = this.getTiptapEditor();\n return editor.firstElementChild?.getAttribute('data-placeholder') ?? '';\n }\n\n public getParsedHtmlFromMarkdown(\n markdown: string,\n mappings?: MappingConfiguration[]\n ): string {\n const parserMentionConfigForUser = this.getParserMentionConfigForUser(mappings);\n const parseResult = RichTextMarkdownParser.parseMarkdownToDOM(\n markdown,\n [parserMentionConfigForUser]\n );\n return this.richTextEditorElement.xmlSerializer.serializeToString(\n parseResult.fragment\n );\n }\n\n public async focusOutEditor(): Promise<void> {\n const focusout = new FocusEvent('focusout');\n this.richTextEditorElement.dispatchEvent(focusout);\n await waitForUpdatesAsync();\n }\n\n public getMentionListboxItemsName(): string[] {\n const listItemsName: string[] = [];\n this.getAllListItemsInMentionBox().forEach(item => (item.hidden ? null : listItemsName.push(item.textContent!)));\n return listItemsName;\n }\n\n public getSelectedOption(): string {\n const nodeList = this.getAllListItemsInMentionBox();\n return (\n Array.from(nodeList).find(\n item => item.selected && !item.hasAttribute('hidden')\n )?.textContent ?? ''\n );\n }\n\n public async clickMentionListboxOption(index: number): Promise<void> {\n await this.focusEditorIfMentionListboxOpened();\n\n const listOption = this.getAllListItemsInMentionBox()[index];\n listOption?.click();\n await waitForUpdatesAsync();\n }\n\n public moveCursorToStart(): void {\n this.richTextEditorElement.tiptapEditor.commands.focus('start');\n }\n\n public getCursorPosition(): number {\n return this.richTextEditorElement.tiptapEditor.state.selection.anchor;\n }\n\n private getEditorSection(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot?.querySelector('.editor');\n }\n\n private getFooter(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n '.footer-section'\n );\n }\n\n private getTiptapEditor(): HTMLDivElement {\n return this.richTextEditorElement.shadowRoot!.querySelector<HTMLDivElement>(\n '.ProseMirror'\n )!;\n }\n\n private getFormattingButton(\n button: ToolbarButton\n ): ToggleButton | null | undefined {\n const buttons: NodeListOf<ToggleButton> = this.richTextEditorElement.shadowRoot!.querySelectorAll(\n toggleButtonTag\n );\n return buttons[button];\n }\n\n private getUserMentionButton(): Button | null | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons.find(button => button.querySelector(iconAtTag));\n }\n\n private getMentionButtons(): Button[] | null | undefined {\n return Array.from(\n this.richTextEditorElement.shadowRoot!.querySelectorAll(buttonTag)\n );\n }\n\n private getMentionListbox(): Element | null {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n richTextMentionListboxTag\n );\n }\n\n private getAllListItemsInMentionBox(): NodeListOf<ListOption> {\n return this.getMentionListbox()!.querySelectorAll(listOptionTag);\n }\n\n private getEditorLastChildElement(): Element {\n return getLastChildElement(this.getTiptapEditor())!;\n }\n\n private getParserMentionConfigForUser(\n mappings: MappingConfiguration[] = []\n ): MarkdownParserMentionConfiguration {\n const mentionInternals = new MentionInternals(\n {\n character: '',\n icon: '',\n viewElement: richTextMentionUsersViewTag,\n validator: new RichTextMentionUsersValidator()\n },\n () => {}\n );\n mentionInternals.pattern = '^user:(.*)';\n mappings.forEach(mapping => {\n const mappingConfig = new MappingUserConfig(\n mapping.key,\n mapping.displayName\n );\n mentionInternals.mappingConfigs = new Map().set(\n mapping.key,\n mappingConfig\n );\n });\n const parserMentionConfig = new MarkdownParserMentionConfiguration(\n mentionInternals\n );\n return parserMentionConfig;\n }\n\n private async focusEditorIfMentionListboxOpened(): Promise<void> {\n if (await this.isMentionListboxOpened()) {\n this.richTextEditorElement.tiptapEditor.commands.focus();\n await waitForUpdatesAsync();\n }\n }\n}\n"]}
1
+ {"version":3,"file":"rich-text-editor.pageobject.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/rich-text-editor.pageobject.ts"],"names":[],"mappings":"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","sourcesContent":["import { keySpace, keyEnter, keyTab, keyEscape } from '@ni/fast-web-utilities';\nimport type { RichTextEditor } from '..';\nimport { waitForUpdatesAsync } from '../../../testing/async-helpers';\nimport { toggleButtonTag, type ToggleButton } from '../../../toggle-button';\nimport {\n ArrowKeyButton,\n type MappingConfiguration,\n ToolbarButton,\n type ToolbarButtonKey\n} from './types';\nimport {\n getTagsFromElement,\n getLeafContentsFromElement,\n getLastChildElement,\n getLastChildElementAttribute\n} from '../../models/testing/markdown-parser-utils';\nimport { richTextMentionUsersViewTag } from '../../../rich-text-mention/users/view';\nimport { RichTextMarkdownParser } from '../../models/markdown-parser';\nimport { buttonTag, type Button } from '../../../button';\nimport { richTextMentionListboxTag } from '../../mention-listbox';\nimport { listOptionTag, type ListOption } from '../../../list-option';\nimport { anchoredRegionTag } from '../../../anchored-region';\nimport { iconAtTag } from '../../../icons/at';\nimport { MarkdownParserMentionConfiguration } from '../../models/markdown-parser-mention-configuration';\nimport { MentionInternals } from '../../../rich-text-mention/base/models/mention-internals';\nimport { MappingUserConfig } from '../../../rich-text-mention/users/models/mapping-user-config';\nimport { RichTextMentionUsersValidator } from '../../../rich-text-mention/users/models/rich-text-mention-users-validator';\n\n/**\n * Page object for the `nimble-rich-text-editor` component.\n */\nexport class RichTextEditorPageObject {\n public constructor(\n private readonly richTextEditorElement: RichTextEditor\n ) {}\n\n public editorSectionHasChildNodes(): boolean {\n const editorSection = this.getEditorSection();\n return editorSection!.hasChildNodes();\n }\n\n public getEditorSectionFirstElementChildClassName(): string {\n const editorSection = this.getEditorSection();\n return editorSection!.firstElementChild!.className;\n }\n\n public async clickEditorShortcutKeys(\n shortcutKey: string,\n isShiftKey: boolean\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: shortcutKey,\n ctrlKey: true,\n shiftKey: isShiftKey,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEnterKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEnter,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressEscapeKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyEscape,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressArrowKeyInEditor(\n arrowButton: ArrowKeyButton\n ): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: arrowButton,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftEnterKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftEnterEvent = new KeyboardEvent('keydown', {\n key: keyEnter,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftEnterEvent);\n await waitForUpdatesAsync();\n }\n\n public async pressTabKeyInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const event = new KeyboardEvent('keydown', {\n key: keyTab,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(event);\n await waitForUpdatesAsync();\n }\n\n public async pressShiftTabKeysInEditor(): Promise<void> {\n const editor = this.getTiptapEditor();\n const shiftTabEvent = new KeyboardEvent('keydown', {\n key: keyTab,\n shiftKey: true,\n bubbles: true,\n cancelable: true\n });\n editor.dispatchEvent(shiftTabEvent);\n await waitForUpdatesAsync();\n }\n\n /**\n * In testing environment, when clicking on the footer button, it may not persist in the same state if any editor transaction occurs in between.\n * This behavior is likely due to dynamic modifications of formatting button states based on cursor positions during editor transactions.\n * Setting the \"force\" parameter to true activates the formatting button state; when set to false, it deactivates the state.\n * If unset, the state toggles by interacting with it once.\n */\n public async toggleFooterButton(\n button: ToolbarButton,\n force?: boolean\n ): Promise<void> {\n const toggleButton = this.getFormattingButton(button);\n const event = new Event('mousedown', { bubbles: true });\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n let format = Object.keys(ToolbarButton).find(\n key => ToolbarButton[key as ToolbarButtonKey] === button\n );\n // In the editor, the isActive() method expects the format name to be 'italic' instead of 'italics.'\n // As it was consistently represent it as 'italics' elsewhere just updated it here\n if (format === 'italics') {\n format = 'italic';\n }\n if (force === true || force === false) {\n if (\n this.richTextEditorElement.tiptapEditor.isActive(format!)\n !== force\n ) {\n toggleButton!.dispatchEvent(event);\n toggleButton!.click();\n }\n }\n await waitForUpdatesAsync();\n }\n\n public async clickUserMentionButton(): Promise<void> {\n const userMentionButton = this.getUserMentionButton();\n userMentionButton!.click();\n await waitForUpdatesAsync();\n }\n\n public getMentionButtonIcon(buttonIndex: number): string | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.firstElementChild?.tagName;\n }\n\n public getMentionButtonTitle(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.getAttribute('title') ?? '';\n }\n\n public getMentionButtonLabel(buttonIndex: number): string {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons[buttonIndex]?.innerText ?? '';\n }\n\n public getButtonCheckedState(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.checked;\n }\n\n public getButtonTabIndex(button: ToolbarButton): number {\n const toggleButton = this.getFormattingButton(button);\n return toggleButton!.tabIndex;\n }\n\n public spaceKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keySpace\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public enterKeyActivatesButton(button: ToolbarButton): void {\n const toggleButton = this.getFormattingButton(button)!;\n const event = new KeyboardEvent('keypress', {\n key: keyEnter\n } as KeyboardEventInit);\n toggleButton.control.dispatchEvent(event);\n }\n\n public async pasteToEditor(text: string): Promise<void> {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/plain', text);\n editor.dispatchEvent(pasteEvent);\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n // Simulate the actual pasting of content by passing the extracted HTML string as an argument and setting the format to 'text/html',\n // as in the [DataFormat](https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer) object.\n // For example, when copying a link, the clipboard stores information that includes the anchor tag, href attribute value etc, and paste it as an HTML string\n public async pasteHTMLToEditor(htmlString: string): Promise<void> {\n const editor = this.getTiptapEditor();\n const pasteEvent = new ClipboardEvent('paste', {\n clipboardData: new DataTransfer()\n });\n pasteEvent.clipboardData?.setData('text/html', htmlString);\n editor.dispatchEvent(pasteEvent);\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async setEditorTextContent(value: string): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .insertContent({\n type: 'text',\n text: value\n })\n .run();\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async setCursorPosition(position: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor.commands.setTextSelection(\n position\n );\n await waitForUpdatesAsync();\n }\n\n public async replaceEditorContent(value: string): Promise<void> {\n const lastElement = this.getEditorLastChildElement();\n lastElement.parentElement!.textContent = value;\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public async sliceEditorContent(from: number, to: number): Promise<void> {\n this.richTextEditorElement.tiptapEditor\n .chain()\n .focus()\n .deleteRange({ from, to })\n .run();\n await waitForUpdatesAsync();\n\n await this.focusEditorIfMentionListboxOpened();\n }\n\n public getEditorLastChildAttribute(attribute: string): string {\n return getLastChildElementAttribute(attribute, this.getTiptapEditor());\n }\n\n public async isMentionListboxOpened(): Promise<boolean> {\n await waitForUpdatesAsync();\n\n return !this.getMentionListbox()?.shadowRoot?.querySelector(\n anchoredRegionTag\n )?.hidden;\n }\n\n public getEditorMentionViewAttributeValues(attribute: string): string[] {\n return Array.from(\n this.getTiptapEditor().querySelectorAll(richTextMentionUsersViewTag)\n ).map(el => el.getAttribute(attribute) || '');\n }\n\n public getEditorFirstChildTagName(): string {\n return this.getTiptapEditor().firstElementChild?.tagName ?? '';\n }\n\n public getEditorFirstChildTextContent(): string {\n return this.getTiptapEditor().firstElementChild?.textContent ?? '';\n }\n\n public getEditorTextContents(): string[] {\n return Array.from(this.getTiptapEditor().querySelectorAll('*')).map(\n el => el.textContent || ''\n );\n }\n\n public getEditorTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor());\n }\n\n // Return list of tags, excluding those such as 'IMG' (prosemirror-separator) that do not affect the UI or markdown output.\n // These tags are considered extraneous and are added by prosemirror.\n public getMarkdownRenderedTagNames(): string[] {\n return getTagsFromElement(this.getTiptapEditor()).filter(\n tag => tag !== 'IMG'\n );\n }\n\n public getEditorLeafContents(): string[] {\n return getLeafContentsFromElement(this.getTiptapEditor());\n }\n\n public getEditorTagNamesWithClosingTags(): string[] {\n const tagNames: string[] = [];\n const tiptapEditor = this.getTiptapEditor();\n\n const processNode = (node: Node): void => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as Element;\n tagNames.push(el.tagName);\n\n el.childNodes.forEach(processNode);\n\n tagNames.push(`/${el.tagName}`);\n }\n };\n\n if (tiptapEditor) {\n processNode(tiptapEditor);\n }\n\n return tagNames.slice(1, -1);\n }\n\n public getFormattingButtonTextContent(\n toolbarButton: ToolbarButton\n ): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.textContent!.trim();\n }\n\n public getFormattingButtonTitle(toolbarButton: ToolbarButton): string {\n const button = this.getFormattingButton(toolbarButton);\n return button!.title;\n }\n\n public isRichTextEditorActiveElement(): boolean {\n return (\n document.activeElement === this.richTextEditorElement\n && document.activeElement?.shadowRoot?.activeElement\n === this.getTiptapEditor()\n );\n }\n\n public getEditorTabIndex(): string {\n return this.getTiptapEditor().getAttribute('tabindex') ?? '';\n }\n\n public async setFooterHidden(footerHidden: boolean): Promise<void> {\n if (footerHidden) {\n this.richTextEditorElement.setAttribute('footer-hidden', '');\n } else {\n this.richTextEditorElement.removeAttribute('footer-hidden');\n }\n await waitForUpdatesAsync();\n }\n\n public isFooterHidden(): boolean {\n const footerSection = this.getFooter()!;\n return window.getComputedStyle(footerSection).display === 'none';\n }\n\n public async setDisabled(disabled: boolean): Promise<void> {\n if (disabled) {\n this.richTextEditorElement.setAttribute('disabled', '');\n } else {\n this.richTextEditorElement.removeAttribute('disabled');\n }\n await waitForUpdatesAsync();\n }\n\n public isButtonDisabled(button: ToolbarButton): boolean {\n const toggleButton = this.getFormattingButton(button)!;\n return toggleButton.hasAttribute('disabled');\n }\n\n public getPlaceholderValue(): string {\n const editor = this.getTiptapEditor();\n return editor.firstElementChild?.getAttribute('data-placeholder') ?? '';\n }\n\n public getParsedHtmlFromMarkdown(\n markdown: string,\n mappings?: MappingConfiguration[]\n ): string {\n const parserMentionConfigForUser = this.getParserMentionConfigForUser(mappings);\n const parseResult = RichTextMarkdownParser.parseMarkdownToDOM(\n markdown,\n [parserMentionConfigForUser]\n );\n return this.richTextEditorElement.xmlSerializer.serializeToString(\n parseResult.fragment\n );\n }\n\n public async focusOutEditor(): Promise<void> {\n const focusout = new FocusEvent('focusout');\n this.richTextEditorElement.dispatchEvent(focusout);\n await waitForUpdatesAsync();\n }\n\n public getMentionListboxItemsName(): string[] {\n const listItemsName: string[] = [];\n this.getAllListItemsInMentionBox().forEach(item => (item.hidden ? null : listItemsName.push(item.textContent!)));\n return listItemsName;\n }\n\n public getSelectedOption(): string {\n const nodeList = this.getAllListItemsInMentionBox();\n return (\n Array.from(nodeList).find(\n item => item.selected && !item.hasAttribute('hidden')\n )?.textContent ?? ''\n );\n }\n\n public async clickMentionListboxOption(index: number): Promise<void> {\n await this.focusEditorIfMentionListboxOpened();\n\n const listOption = this.getAllListItemsInMentionBox()[index];\n listOption?.click();\n await waitForUpdatesAsync();\n }\n\n public moveCursorToStart(): void {\n this.richTextEditorElement.tiptapEditor.commands.focus('start');\n }\n\n public getCursorPosition(): number {\n return this.richTextEditorElement.tiptapEditor.state.selection.anchor;\n }\n\n private getEditorSection(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot?.querySelector('.editor');\n }\n\n private getFooter(): Element | null | undefined {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n '.footer-section'\n );\n }\n\n private getTiptapEditor(): HTMLDivElement {\n return this.richTextEditorElement.shadowRoot!.querySelector<HTMLDivElement>(\n '.ProseMirror'\n )!;\n }\n\n private getFormattingButton(\n button: ToolbarButton\n ): ToggleButton | null | undefined {\n const buttons: NodeListOf<ToggleButton> = this.richTextEditorElement.shadowRoot!.querySelectorAll(\n toggleButtonTag\n );\n return buttons[button];\n }\n\n private getUserMentionButton(): Button | null | undefined {\n const buttons: Button[] = this.getMentionButtons()!;\n return buttons.find(button => button.querySelector(iconAtTag));\n }\n\n private getMentionButtons(): Button[] | null | undefined {\n return Array.from(\n this.richTextEditorElement.shadowRoot!.querySelectorAll(buttonTag)\n );\n }\n\n private getMentionListbox(): Element | null {\n return this.richTextEditorElement.shadowRoot!.querySelector(\n richTextMentionListboxTag\n );\n }\n\n private getAllListItemsInMentionBox(): NodeListOf<ListOption> {\n return this.getMentionListbox()!.querySelectorAll(listOptionTag);\n }\n\n private getEditorLastChildElement(): Element {\n return getLastChildElement(this.getTiptapEditor())!;\n }\n\n private getParserMentionConfigForUser(\n mappings: MappingConfiguration[] = []\n ): MarkdownParserMentionConfiguration {\n const mentionInternals = new MentionInternals(\n {\n character: '',\n icon: '',\n viewElement: richTextMentionUsersViewTag,\n validator: new RichTextMentionUsersValidator()\n },\n () => {}\n );\n mentionInternals.pattern = '^user:(.*)';\n mappings.forEach(mapping => {\n const mappingConfig = new MappingUserConfig(\n mapping.key,\n mapping.displayName\n );\n mentionInternals.mappingConfigs = new Map().set(\n mapping.key,\n mappingConfig\n );\n });\n const parserMentionConfig = new MarkdownParserMentionConfiguration(\n mentionInternals\n );\n return parserMentionConfig;\n }\n\n private async focusEditorIfMentionListboxOpened(): Promise<void> {\n if (await this.isMentionListboxOpened()) {\n this.richTextEditorElement.tiptapEditor.commands.focus();\n await waitForUpdatesAsync();\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp } from '@microsoft/fast-web-utilities';
1
+ import { keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp } from '@ni/fast-web-utilities';
2
2
  export const ToolbarButton = {
3
3
  bold: 0,
4
4
  italics: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EACb,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;CACT,CAAC;AAGX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;CACd,CAAC","sourcesContent":["import {\n keyArrowDown,\n keyArrowLeft,\n keyArrowRight,\n keyArrowUp\n} from '@microsoft/fast-web-utilities';\n\nexport const ToolbarButton = {\n bold: 0,\n italics: 1,\n bulletList: 2,\n numberedList: 3\n} as const;\nexport type ToolbarButton = (typeof ToolbarButton)[keyof typeof ToolbarButton];\n\nexport const ArrowKeyButton = {\n up: keyArrowUp,\n down: keyArrowDown,\n left: keyArrowLeft,\n right: keyArrowRight\n} as const;\nexport type ArrowKeyButton =\n (typeof ArrowKeyButton)[keyof typeof ArrowKeyButton];\n\nexport type LabelProvider =\n | 'toggleBold'\n | 'toggleItalics'\n | 'toggleBulletedList'\n | 'toggleNumberedList';\n\nexport type ToolbarButtonKey = keyof typeof ToolbarButton;\n\nexport interface MappingConfiguration {\n key?: string;\n displayName?: string;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EACb,MAAM,wBAAwB,CAAC;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;CACT,CAAC;AAGX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;CACd,CAAC","sourcesContent":["import {\n keyArrowDown,\n keyArrowLeft,\n keyArrowRight,\n keyArrowUp\n} from '@ni/fast-web-utilities';\n\nexport const ToolbarButton = {\n bold: 0,\n italics: 1,\n bulletList: 2,\n numberedList: 3\n} as const;\nexport type ToolbarButton = (typeof ToolbarButton)[keyof typeof ToolbarButton];\n\nexport const ArrowKeyButton = {\n up: keyArrowUp,\n down: keyArrowDown,\n left: keyArrowLeft,\n right: keyArrowRight\n} as const;\nexport type ArrowKeyButton =\n (typeof ArrowKeyButton)[keyof typeof ArrowKeyButton];\n\nexport type LabelProvider =\n | 'toggleBold'\n | 'toggleItalics'\n | 'toggleBulletedList'\n | 'toggleNumberedList';\n\nexport type ToolbarButtonKey = keyof typeof ToolbarButton;\n\nexport interface MappingConfiguration {\n key?: string;\n displayName?: string;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ListboxElement as FoundationListbox, ListboxOption } from '@microsoft/fast-foundation';
1
+ import { ListboxElement as FoundationListbox, ListboxOption } from '@ni/fast-foundation';
2
2
  import type { AnchoredRegion } from '../../anchored-region';
3
3
  import type { MentionListboxShowOptions } from './types';
4
4
  declare global {
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
- import { Observable, observable } from '@microsoft/fast-element';
3
- import { DesignSystem, ListboxElement as FoundationListbox, ListboxOption } from '@microsoft/fast-foundation';
4
- import { keyEnter, keyEscape, keyTab } from '@microsoft/fast-web-utilities';
2
+ import { Observable, observable } from '@ni/fast-element';
3
+ import { DesignSystem, ListboxElement as FoundationListbox, ListboxOption } from '@ni/fast-foundation';
4
+ import { keyEnter, keyEscape, keyTab } from '@ni/fast-web-utilities';
5
5
  import { styles } from './styles';
6
6
  import { template } from './template';
7
7
  import { diacriticInsensitiveStringNormalizer } from '../../utilities/models/string-normalizers';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Notifier, Observable, observable } from '@microsoft/fast-element';\nimport {\n DesignSystem,\n ListboxElement as FoundationListbox,\n ListboxOption\n} from '@microsoft/fast-foundation';\nimport { keyEnter, keyEscape, keyTab } from '@microsoft/fast-web-utilities';\nimport type { MentionDetail } from '../editor/types';\nimport { styles } from './styles';\nimport { template } from './template';\nimport type { AnchoredRegion } from '../../anchored-region';\nimport { diacriticInsensitiveStringNormalizer } from '../../utilities/models/string-normalizers';\nimport type { ListOption } from '../../list-option';\nimport type { MentionListboxShowOptions } from './types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-rich-text-mention-listbox': RichTextMentionListbox;\n }\n}\n\n/**\n * A rich text mention listbox which acts as a popup for \"@mention\" support in editor\n */\nexport class RichTextMentionListbox extends FoundationListbox {\n /**\n * @internal\n */\n @observable\n public open?: boolean;\n\n /**\n * @internal\n */\n @observable\n public region?: AnchoredRegion;\n\n /**\n * The space available in the viewport for the listbox when opened.\n *\n * @internal\n */\n @observable\n public availableViewportHeight = 0;\n\n /**\n * @internal\n */\n public filter = '';\n\n /**\n * The collection of currently filtered options.\n * The approach is defined based on the `Combobox.filteredOptions` implementation.\n *\n * @internal\n */\n @observable\n public filteredOptions: ListboxOption[] = [];\n\n /**\n * Reference to the internal listbox element.\n *\n * @internal\n */\n public listbox!: HTMLDivElement;\n\n @observable\n private anchorElement?: HTMLElement;\n\n private regionNotifier?: Notifier;\n\n private readonly anchorElementIntersectionObserver: IntersectionObserver = new IntersectionObserver(\n entries => {\n if (!entries[0]?.isIntersecting) {\n this.setOpen(false);\n }\n },\n { threshold: 1.0, root: document }\n );\n\n /**\n * @public\n */\n public close(): void {\n this.setOpen(false);\n }\n\n /**\n * The list of options.\n *\n * @public\n * @remarks\n * Overrides `Listbox.options`.\n */\n public override get options(): ListboxOption[] {\n Observable.track(this, 'options');\n return this.filteredOptions?.length ? this.filteredOptions : [];\n }\n\n public override set options(value: ListboxOption[]) {\n this._options = value;\n Observable.notify(this, 'options');\n }\n\n /**\n * Triggers when the mention plugin is activated upon pressing the `key`\n *\n * @public\n */\n public show(options: MentionListboxShowOptions): void {\n const listboxTop = options.anchorNode.getBoundingClientRect().bottom;\n this.availableViewportHeight = Math.trunc(\n window.innerHeight - listboxTop\n );\n this.filter = options.filter;\n this.anchorElement = options.anchorNode;\n this.setOpen(true);\n this.filterOptions();\n }\n\n /**\n * Handle keydown actions for listbox navigation and selection.\n *\n * @param e - the keyboard event\n * @public\n */\n public override keydownHandler(event: KeyboardEvent): boolean {\n if (!this.open) {\n return false;\n }\n switch (event.key) {\n case keyTab:\n case keyEnter: {\n if (!this.hasSelectableOptions) {\n return false;\n }\n const mentionDetail: MentionDetail = {\n href: this.firstSelectedOption.value,\n displayName: this.firstSelectedOption.text\n };\n this.$emit('mention-selected', mentionDetail);\n this.setOpen(false);\n return true;\n }\n case keyEscape: {\n this.setOpen(false);\n return false;\n }\n default: {\n super.keydownHandler(event);\n return false;\n }\n }\n }\n\n /**\n * Filter available options by filter value.\n * The method is defined based on the `Combobox.filterOptions` and `Combobox.inputHandler` implementation.\n *\n * @internal\n */\n public filterOptions(): void {\n if (!this.filter) {\n this.filteredOptions = this._options;\n } else {\n const normalizedFilter = diacriticInsensitiveStringNormalizer(\n this.filter\n );\n this.filteredOptions = this._options.filter(o => diacriticInsensitiveStringNormalizer(o.text).includes(\n normalizedFilter\n ));\n }\n\n this._options.forEach(o => {\n o.hidden = !this.filteredOptions.includes(o);\n });\n\n if (this.filteredOptions.length) {\n this.selectedOptions = [this.filteredOptions[0]!];\n this.selectedIndex = this.options.indexOf(this.firstSelectedOption);\n } else {\n this.selectedOptions = [];\n this.selectedIndex = -1;\n }\n }\n\n /**\n * Synchronize the form-associated proxy and update the value property of the element.\n *\n * @param prev - the previous collection of slotted option elements\n * @param next - the next collection of slotted option elements\n *\n * @internal\n */\n public override slottedOptionsChanged(\n prev: Element[] | undefined,\n next: Element[]\n ): void {\n super.slottedOptionsChanged(prev, next);\n this.filterOptions();\n }\n\n /**\n * Triggers the `suggestionProps` command to notify the tiptap editor to select the option.\n * The method is defined based on the `Listbox.clickHandler` implementation.\n *\n * @internal\n */\n public override clickHandler(e: MouseEvent): boolean {\n const capturedElement = (e.target as HTMLElement).closest(\n 'option,[role=option]'\n );\n\n const capturedListOption = capturedElement as ListOption | null;\n\n if (!capturedListOption || capturedListOption.disabled) {\n return false;\n }\n const mentionDetail: MentionDetail = {\n href: capturedListOption.value,\n displayName: capturedListOption.text\n };\n this.$emit('mention-selected', mentionDetail);\n this.setOpen(false);\n return true;\n }\n\n /**\n * Observes the anchor element using intersection observer.\n * Once the anchor element intersects, the anchor region will be closed.\n *\n * @internal\n */\n public anchorElementChanged(prev: HTMLElement, next: HTMLElement): void {\n if (prev) {\n this.anchorElementIntersectionObserver.unobserve(prev);\n }\n if (this.region && this.anchorElement) {\n this.region.anchorElement = this.anchorElement;\n this.region.update();\n this.anchorElementIntersectionObserver.observe(next);\n }\n }\n\n /**\n * Observes the anchor region.\n *\n * @internal\n */\n public regionChanged(): void {\n if (this.regionNotifier) {\n this.regionNotifier.unsubscribe(this);\n }\n this.regionNotifier = Observable.getNotifier(this.region);\n this.regionNotifier.subscribe(this);\n }\n\n /**\n * Handles the events of the anchored region.\n * Repositions the listbox scroll bar when the `initialLayoutComplete` event is triggered.\n * Other events will be passed to the base class.\n *\n * @internal\n */\n public override handleChange(source: unknown, args: string): void {\n super.handleChange(source, args);\n if (args === 'initialLayoutComplete') {\n this.focusAndScrollOptionIntoView();\n }\n }\n\n /**\n * Focus the control and scroll the first selected option into view.\n *\n * @internal\n * @remarks\n * Overrides: `Listbox.focusAndScrollOptionIntoView`\n */\n protected override focusAndScrollOptionIntoView(): void {\n if (this.open && this.firstSelectedOption) {\n requestAnimationFrame(() => {\n this.firstSelectedOption?.scrollIntoView({ block: 'nearest' });\n });\n }\n }\n\n private setOpen(value: boolean): void {\n this.open = value;\n }\n}\n\nconst nimbleRichTextMentionListbox = RichTextMentionListbox.compose({\n baseName: 'rich-text-mention-listbox',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleRichTextMentionListbox());\nexport const richTextMentionListboxTag = 'nimble-rich-text-mention-listbox';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Notifier, Observable, observable } from '@ni/fast-element';\nimport {\n DesignSystem,\n ListboxElement as FoundationListbox,\n ListboxOption\n} from '@ni/fast-foundation';\nimport { keyEnter, keyEscape, keyTab } from '@ni/fast-web-utilities';\nimport type { MentionDetail } from '../editor/types';\nimport { styles } from './styles';\nimport { template } from './template';\nimport type { AnchoredRegion } from '../../anchored-region';\nimport { diacriticInsensitiveStringNormalizer } from '../../utilities/models/string-normalizers';\nimport type { ListOption } from '../../list-option';\nimport type { MentionListboxShowOptions } from './types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-rich-text-mention-listbox': RichTextMentionListbox;\n }\n}\n\n/**\n * A rich text mention listbox which acts as a popup for \"@mention\" support in editor\n */\nexport class RichTextMentionListbox extends FoundationListbox {\n /**\n * @internal\n */\n @observable\n public open?: boolean;\n\n /**\n * @internal\n */\n @observable\n public region?: AnchoredRegion;\n\n /**\n * The space available in the viewport for the listbox when opened.\n *\n * @internal\n */\n @observable\n public availableViewportHeight = 0;\n\n /**\n * @internal\n */\n public filter = '';\n\n /**\n * The collection of currently filtered options.\n * The approach is defined based on the `Combobox.filteredOptions` implementation.\n *\n * @internal\n */\n @observable\n public filteredOptions: ListboxOption[] = [];\n\n /**\n * Reference to the internal listbox element.\n *\n * @internal\n */\n public listbox!: HTMLDivElement;\n\n @observable\n private anchorElement?: HTMLElement;\n\n private regionNotifier?: Notifier;\n\n private readonly anchorElementIntersectionObserver: IntersectionObserver = new IntersectionObserver(\n entries => {\n if (!entries[0]?.isIntersecting) {\n this.setOpen(false);\n }\n },\n { threshold: 1.0, root: document }\n );\n\n /**\n * @public\n */\n public close(): void {\n this.setOpen(false);\n }\n\n /**\n * The list of options.\n *\n * @public\n * @remarks\n * Overrides `Listbox.options`.\n */\n public override get options(): ListboxOption[] {\n Observable.track(this, 'options');\n return this.filteredOptions?.length ? this.filteredOptions : [];\n }\n\n public override set options(value: ListboxOption[]) {\n this._options = value;\n Observable.notify(this, 'options');\n }\n\n /**\n * Triggers when the mention plugin is activated upon pressing the `key`\n *\n * @public\n */\n public show(options: MentionListboxShowOptions): void {\n const listboxTop = options.anchorNode.getBoundingClientRect().bottom;\n this.availableViewportHeight = Math.trunc(\n window.innerHeight - listboxTop\n );\n this.filter = options.filter;\n this.anchorElement = options.anchorNode;\n this.setOpen(true);\n this.filterOptions();\n }\n\n /**\n * Handle keydown actions for listbox navigation and selection.\n *\n * @param e - the keyboard event\n * @public\n */\n public override keydownHandler(event: KeyboardEvent): boolean {\n if (!this.open) {\n return false;\n }\n switch (event.key) {\n case keyTab:\n case keyEnter: {\n if (!this.hasSelectableOptions) {\n return false;\n }\n const mentionDetail: MentionDetail = {\n href: this.firstSelectedOption.value,\n displayName: this.firstSelectedOption.text\n };\n this.$emit('mention-selected', mentionDetail);\n this.setOpen(false);\n return true;\n }\n case keyEscape: {\n this.setOpen(false);\n return false;\n }\n default: {\n super.keydownHandler(event);\n return false;\n }\n }\n }\n\n /**\n * Filter available options by filter value.\n * The method is defined based on the `Combobox.filterOptions` and `Combobox.inputHandler` implementation.\n *\n * @internal\n */\n public filterOptions(): void {\n if (!this.filter) {\n this.filteredOptions = this._options;\n } else {\n const normalizedFilter = diacriticInsensitiveStringNormalizer(\n this.filter\n );\n this.filteredOptions = this._options.filter(o => diacriticInsensitiveStringNormalizer(o.text).includes(\n normalizedFilter\n ));\n }\n\n this._options.forEach(o => {\n o.hidden = !this.filteredOptions.includes(o);\n });\n\n if (this.filteredOptions.length) {\n this.selectedOptions = [this.filteredOptions[0]!];\n this.selectedIndex = this.options.indexOf(this.firstSelectedOption);\n } else {\n this.selectedOptions = [];\n this.selectedIndex = -1;\n }\n }\n\n /**\n * Synchronize the form-associated proxy and update the value property of the element.\n *\n * @param prev - the previous collection of slotted option elements\n * @param next - the next collection of slotted option elements\n *\n * @internal\n */\n public override slottedOptionsChanged(\n prev: Element[] | undefined,\n next: Element[]\n ): void {\n super.slottedOptionsChanged(prev, next);\n this.filterOptions();\n }\n\n /**\n * Triggers the `suggestionProps` command to notify the tiptap editor to select the option.\n * The method is defined based on the `Listbox.clickHandler` implementation.\n *\n * @internal\n */\n public override clickHandler(e: MouseEvent): boolean {\n const capturedElement = (e.target as HTMLElement).closest(\n 'option,[role=option]'\n );\n\n const capturedListOption = capturedElement as ListOption | null;\n\n if (!capturedListOption || capturedListOption.disabled) {\n return false;\n }\n const mentionDetail: MentionDetail = {\n href: capturedListOption.value,\n displayName: capturedListOption.text\n };\n this.$emit('mention-selected', mentionDetail);\n this.setOpen(false);\n return true;\n }\n\n /**\n * Observes the anchor element using intersection observer.\n * Once the anchor element intersects, the anchor region will be closed.\n *\n * @internal\n */\n public anchorElementChanged(prev: HTMLElement, next: HTMLElement): void {\n if (prev) {\n this.anchorElementIntersectionObserver.unobserve(prev);\n }\n if (this.region && this.anchorElement) {\n this.region.anchorElement = this.anchorElement;\n this.region.update();\n this.anchorElementIntersectionObserver.observe(next);\n }\n }\n\n /**\n * Observes the anchor region.\n *\n * @internal\n */\n public regionChanged(): void {\n if (this.regionNotifier) {\n this.regionNotifier.unsubscribe(this);\n }\n this.regionNotifier = Observable.getNotifier(this.region);\n this.regionNotifier.subscribe(this);\n }\n\n /**\n * Handles the events of the anchored region.\n * Repositions the listbox scroll bar when the `initialLayoutComplete` event is triggered.\n * Other events will be passed to the base class.\n *\n * @internal\n */\n public override handleChange(source: unknown, args: string): void {\n super.handleChange(source, args);\n if (args === 'initialLayoutComplete') {\n this.focusAndScrollOptionIntoView();\n }\n }\n\n /**\n * Focus the control and scroll the first selected option into view.\n *\n * @internal\n * @remarks\n * Overrides: `Listbox.focusAndScrollOptionIntoView`\n */\n protected override focusAndScrollOptionIntoView(): void {\n if (this.open && this.firstSelectedOption) {\n requestAnimationFrame(() => {\n this.firstSelectedOption?.scrollIntoView({ block: 'nearest' });\n });\n }\n }\n\n private setOpen(value: boolean): void {\n this.open = value;\n }\n}\n\nconst nimbleRichTextMentionListbox = RichTextMentionListbox.compose({\n baseName: 'rich-text-mention-listbox',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleRichTextMentionListbox());\nexport const richTextMentionListboxTag = 'nimble-rich-text-mention-listbox';\n"]}
@@ -1 +1 @@
1
- export declare const styles: import("@microsoft/fast-element").ElementStyles;
1
+ export declare const styles: import("@ni/fast-element").ElementStyles;
@@ -1,4 +1,4 @@
1
- import { css } from '@microsoft/fast-element';
1
+ import { css } from '@ni/fast-element';
2
2
  import { styles as dropdownStyles } from '../../patterns/dropdown/styles';
3
3
  import { focusVisible } from '../../utilities/style/focus';
4
4
  import { menuMinWidth } from '../../theme-provider/design-tokens';
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,cAAc;;;;;;;YAOR,YAAY;;;;;;;qBAOH,YAAY;;CAEhC,CAAC","sourcesContent":["import { css } from '@microsoft/fast-element';\nimport { styles as dropdownStyles } from '../../patterns/dropdown/styles';\nimport { focusVisible } from '../../utilities/style/focus';\nimport { menuMinWidth } from '../../theme-provider/design-tokens';\n\nexport const styles = css`\n ${dropdownStyles}\n\n :host {\n height: auto;\n }\n\n :host(:hover)::after,\n :host(${focusVisible})::after {\n width: auto;\n }\n\n .listbox {\n --ni-private-listbox-visible-option-count: 5.5;\n --ni-private-listbox-anchor-element-gap: 0px;\n min-width: ${menuMinWidth};\n }\n`;\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,cAAc;;;;;;;YAOR,YAAY;;;;;;;qBAOH,YAAY;;CAEhC,CAAC","sourcesContent":["import { css } from '@ni/fast-element';\nimport { styles as dropdownStyles } from '../../patterns/dropdown/styles';\nimport { focusVisible } from '../../utilities/style/focus';\nimport { menuMinWidth } from '../../theme-provider/design-tokens';\n\nexport const styles = css`\n ${dropdownStyles}\n\n :host {\n height: auto;\n }\n\n :host(:hover)::after,\n :host(${focusVisible})::after {\n width: auto;\n }\n\n .listbox {\n --ni-private-listbox-visible-option-count: 5.5;\n --ni-private-listbox-anchor-element-gap: 0px;\n min-width: ${menuMinWidth};\n }\n`;\n"]}
@@ -1,2 +1,2 @@
1
1
  import type { RichTextMentionListbox } from '.';
2
- export declare const template: import("@microsoft/fast-element").ViewTemplate<RichTextMentionListbox, any>;
2
+ export declare const template: import("@ni/fast-element").ViewTemplate<RichTextMentionListbox, any>;
@@ -1,5 +1,5 @@
1
- import { html, ref, slotted, when } from '@microsoft/fast-element';
2
- import { Listbox } from '@microsoft/fast-foundation';
1
+ import { html, ref, slotted, when } from '@ni/fast-element';
2
+ import { Listbox } from '@ni/fast-foundation';
3
3
  import { anchoredRegionTag } from '../../anchored-region';
4
4
  import { filterNoResultsLabel } from '../../label-provider/core/label-tokens';
5
5
  /* eslint-disable @typescript-eslint/indent */
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,8CAA8C;AAC9C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAwB;;WAEzC,iBAAiB;cACd,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;uBASJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;;;;;sBAKb,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;;;;0BAIhD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAmB,CAAC;6BAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;yEAC6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB;kBACrF,GAAG,CAAC,SAAS,CAAC;;;sBAGV,OAAO,CAAC;IACN,MAAM,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,YAAY,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,gBAAgB;CAC7B,CAAC;;;kBAGJ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAwB;;0BAE9D,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;;iBAEjD,CAAC;;YAEN,iBAAiB;;CAE5B,CAAC","sourcesContent":["import { html, ref, slotted, when } from '@microsoft/fast-element';\nimport { Listbox } from '@microsoft/fast-foundation';\nimport type { RichTextMentionListbox } from '.';\nimport { anchoredRegionTag } from '../../anchored-region';\nimport { filterNoResultsLabel } from '../../label-provider/core/label-tokens';\n\n/* eslint-disable @typescript-eslint/indent */\n// prettier-ignore\nexport const template = html<RichTextMentionListbox>`\n <template>\n <${anchoredRegionTag}\n ${ref('region')}\n class=\"anchored-region\"\n fixed-placement\n auto-update-mode=\"auto\"\n vertical-default-position=\"bottom\"\n vertical-positioning-mode=\"locktodefault\"\n horizontal-default-position=\"center\"\n horizontal-positioning-mode=\"locktodefault\"\n horizontal-scaling=\"anchor\"\n ?hidden=\"${x => !x.open}\">\n <div\n class=\"\n listbox\n scrollable-region\n ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}\n \"\n part=\"listbox\"\n role=\"listbox\"\n @click=\"${(x, c) => x.clickHandler(c.event as MouseEvent)}\"\n ?disabled=\"${x => x.disabled}\"\n style=\"--ni-private-listbox-available-viewport-height: ${x => x.availableViewportHeight}px;\"\n ${ref('listbox')}\n >\n <slot name=\"option\"\n ${slotted({\n filter: (n: Node) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),\n flatten: true,\n property: 'slottedOptions'\n })}\n >\n </slot>\n ${when(x => x.filteredOptions.length === 0, html<RichTextMentionListbox>`\n <span class=\"no-results-label\">\n ${x => filterNoResultsLabel.getValueFor(x)}\n </span>\n `)}\n </div>\n </${anchoredRegionTag}>\n </template>\n`;\n"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,8CAA8C;AAC9C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAwB;;WAEzC,iBAAiB;cACd,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;uBASJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;;;;;sBAKb,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;;;;0BAIhD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAmB,CAAC;6BAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;yEAC6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB;kBACrF,GAAG,CAAC,SAAS,CAAC;;;sBAGV,OAAO,CAAC;IACN,MAAM,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,YAAY,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC/E,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,gBAAgB;CAC7B,CAAC;;;kBAGJ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,IAAI,CAAwB;;0BAE9D,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;;iBAEjD,CAAC;;YAEN,iBAAiB;;CAE5B,CAAC","sourcesContent":["import { html, ref, slotted, when } from '@ni/fast-element';\nimport { Listbox } from '@ni/fast-foundation';\nimport type { RichTextMentionListbox } from '.';\nimport { anchoredRegionTag } from '../../anchored-region';\nimport { filterNoResultsLabel } from '../../label-provider/core/label-tokens';\n\n/* eslint-disable @typescript-eslint/indent */\n// prettier-ignore\nexport const template = html<RichTextMentionListbox>`\n <template>\n <${anchoredRegionTag}\n ${ref('region')}\n class=\"anchored-region\"\n fixed-placement\n auto-update-mode=\"auto\"\n vertical-default-position=\"bottom\"\n vertical-positioning-mode=\"locktodefault\"\n horizontal-default-position=\"center\"\n horizontal-positioning-mode=\"locktodefault\"\n horizontal-scaling=\"anchor\"\n ?hidden=\"${x => !x.open}\">\n <div\n class=\"\n listbox\n scrollable-region\n ${x => (x.filteredOptions.length === 0 ? 'empty' : '')}\n \"\n part=\"listbox\"\n role=\"listbox\"\n @click=\"${(x, c) => x.clickHandler(c.event as MouseEvent)}\"\n ?disabled=\"${x => x.disabled}\"\n style=\"--ni-private-listbox-available-viewport-height: ${x => x.availableViewportHeight}px;\"\n ${ref('listbox')}\n >\n <slot name=\"option\"\n ${slotted({\n filter: (n: Node) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n),\n flatten: true,\n property: 'slottedOptions'\n })}\n >\n </slot>\n ${when(x => x.filteredOptions.length === 0, html<RichTextMentionListbox>`\n <span class=\"no-results-label\">\n ${x => filterNoResultsLabel.getValueFor(x)}\n </span>\n `)}\n </div>\n </${anchoredRegionTag}>\n </template>\n`;\n"]}