@aquera/nile-elements 2.0.16 → 2.0.18

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 (383) hide show
  1. package/README.md +6 -0
  2. package/dist/{index-f6944844.cjs.js → index-0c0c869d.cjs.js} +2 -2
  3. package/dist/{index-f6944844.cjs.js.map → index-0c0c869d.cjs.js.map} +1 -1
  4. package/dist/{index-403841c7.cjs.js → index-129ef6fb.cjs.js} +3 -3
  5. package/dist/{index-403841c7.cjs.js.map → index-129ef6fb.cjs.js.map} +1 -1
  6. package/dist/{index-1faa963c.esm.js → index-36f2a6b5.esm.js} +1 -1
  7. package/dist/index-4df50481.esm.js +1 -0
  8. package/dist/index-5d34cff1.esm.js +1 -0
  9. package/dist/index-7ae95edd.cjs.js +2 -0
  10. package/dist/{index-3ca67627.cjs.js.map → index-7ae95edd.cjs.js.map} +1 -1
  11. package/dist/index-7ca72b78.esm.js +1 -0
  12. package/dist/index-bbe23ad8.cjs.js +2 -0
  13. package/dist/index-bbe23ad8.cjs.js.map +1 -0
  14. package/dist/index-ccc6a799.cjs.js +5 -0
  15. package/dist/index-ccc6a799.cjs.js.map +1 -0
  16. package/dist/index.cjs.js +1 -1
  17. package/dist/index.esm.js +1 -1
  18. package/dist/index.js +686 -464
  19. package/dist/nile-auto-complete/index.cjs.js +1 -1
  20. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
  21. package/dist/nile-auto-complete/portal-manager.cjs.js +1 -1
  22. package/dist/nile-auto-complete/portal-utils.cjs.js +1 -1
  23. package/dist/nile-code-editor/extensionSetup.cjs.js +2 -2
  24. package/dist/nile-code-editor/index.cjs.js +1 -1
  25. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  26. package/dist/nile-code-editor/theme.cjs.js +1 -1
  27. package/dist/nile-color-picker/index.cjs.js +1 -1
  28. package/dist/nile-color-picker/nile-color-picker.cjs.js +1 -1
  29. package/dist/nile-combobox/index.cjs.js +1 -1
  30. package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
  31. package/dist/nile-combobox/portal-manager.cjs.js +1 -1
  32. package/dist/nile-context-menu/index.cjs.js +1 -1
  33. package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
  34. package/dist/nile-context-submenu/index.cjs.js +1 -1
  35. package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
  36. package/dist/nile-detail/index.cjs.js +1 -1
  37. package/dist/nile-detail/nile-detail.cjs.js +1 -1
  38. package/dist/nile-dropdown/index.cjs.js +1 -1
  39. package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
  40. package/dist/nile-dropdown/portal-manager.cjs.js +1 -1
  41. package/dist/nile-file-upload/index.cjs.js +1 -1
  42. package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
  43. package/dist/nile-file-upload/nile-file-upload.template.cjs.js +1 -1
  44. package/dist/nile-floating-panel/index.cjs.js +1 -1
  45. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  46. package/dist/nile-lite-tooltip/index.cjs.js +1 -1
  47. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
  48. package/dist/nile-markdown-editor/index.cjs.js +1 -1
  49. package/dist/nile-markdown-editor/nile-markdown-editor.cjs.js +1 -1
  50. package/dist/nile-minimap/index.cjs.js +2 -0
  51. package/dist/nile-minimap/index.cjs.js.map +1 -0
  52. package/dist/nile-minimap/index.esm.js +1 -0
  53. package/dist/nile-minimap/nile-minimap.cjs.js +2 -0
  54. package/dist/nile-minimap/nile-minimap.cjs.js.map +1 -0
  55. package/dist/nile-minimap/nile-minimap.css.cjs.js +2 -0
  56. package/dist/nile-minimap/nile-minimap.css.cjs.js.map +1 -0
  57. package/dist/nile-minimap/nile-minimap.css.esm.js +150 -0
  58. package/dist/nile-minimap/nile-minimap.esm.js +22 -0
  59. package/dist/nile-popover/index.cjs.js +1 -1
  60. package/dist/nile-popover/nile-popover.cjs.js +1 -1
  61. package/dist/nile-popover/portal-manager.cjs.js +1 -1
  62. package/dist/nile-popup/index.cjs.js +1 -1
  63. package/dist/nile-popup/nile-popup.cjs.js +1 -1
  64. package/dist/nile-segmented-progress-bar/index.cjs.js +1 -1
  65. package/dist/nile-segmented-progress-bar/nile-segmented-progress-bar.cjs.js +1 -1
  66. package/dist/nile-select/index.cjs.js +1 -1
  67. package/dist/nile-select/nile-select.cjs.js +1 -1
  68. package/dist/nile-select/portal-manager.cjs.js +1 -1
  69. package/dist/nile-side-bar-action/index.cjs.js +1 -1
  70. package/dist/nile-side-bar-action/nile-side-bar-action.cjs.js +1 -1
  71. package/dist/nile-side-bar-action/portal-manager.cjs.js +1 -1
  72. package/dist/nile-tooltip/index.cjs.js +1 -1
  73. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  74. package/dist/nile-virtual-select/index.cjs.js +1 -1
  75. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
  76. package/dist/nile-virtual-select/portal-manager.cjs.js +1 -1
  77. package/dist/nile-virtual-select/renderer.cjs.js +1 -1
  78. package/dist/nile-wysiwyg-editor/engine/commands.cjs.js +1 -1
  79. package/dist/nile-wysiwyg-editor/engine/commands.cjs.js.map +1 -1
  80. package/dist/nile-wysiwyg-editor/engine/commands.esm.js +1 -1
  81. package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js +1 -1
  82. package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js.map +1 -1
  83. package/dist/nile-wysiwyg-editor/engine/create-state.esm.js +1 -1
  84. package/dist/nile-wysiwyg-editor/engine/email-css.cjs.js +2 -0
  85. package/dist/nile-wysiwyg-editor/engine/email-css.cjs.js.map +1 -0
  86. package/dist/nile-wysiwyg-editor/engine/email-css.esm.js +1 -0
  87. package/dist/nile-wysiwyg-editor/engine/email-render.cjs.js +2 -0
  88. package/dist/nile-wysiwyg-editor/engine/email-render.cjs.js.map +1 -0
  89. package/dist/nile-wysiwyg-editor/engine/email-render.esm.js +1 -0
  90. package/dist/nile-wysiwyg-editor/engine/html-detect.cjs.js +2 -0
  91. package/dist/nile-wysiwyg-editor/engine/html-detect.cjs.js.map +1 -0
  92. package/dist/nile-wysiwyg-editor/engine/html-detect.esm.js +1 -0
  93. package/dist/nile-wysiwyg-editor/engine/index.cjs.js +1 -1
  94. package/dist/nile-wysiwyg-editor/engine/index.esm.js +1 -1
  95. package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js +1 -1
  96. package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js.map +1 -1
  97. package/dist/nile-wysiwyg-editor/engine/inputrules.esm.js +1 -1
  98. package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js +1 -1
  99. package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js.map +1 -1
  100. package/dist/nile-wysiwyg-editor/engine/keymap.esm.js +1 -1
  101. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js +1 -1
  102. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js.map +1 -1
  103. package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.esm.js +1 -1
  104. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js +1 -1
  105. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js.map +1 -1
  106. package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.esm.js +1 -1
  107. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js +1 -1
  108. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js.map +1 -1
  109. package/dist/nile-wysiwyg-editor/engine/plugins/embeds.esm.js +1 -1
  110. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js +1 -1
  111. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js.map +1 -1
  112. package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.esm.js +1 -1
  113. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js +1 -1
  114. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js.map +1 -1
  115. package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.esm.js +1 -1
  116. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js +1 -1
  117. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js.map +1 -1
  118. package/dist/nile-wysiwyg-editor/engine/plugins/image-view.esm.js +1 -1
  119. package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js +1 -1
  120. package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js.map +1 -1
  121. package/dist/nile-wysiwyg-editor/engine/plugins/image.esm.js +1 -1
  122. package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js +1 -1
  123. package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js.map +1 -1
  124. package/dist/nile-wysiwyg-editor/engine/plugins/link.esm.js +1 -1
  125. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js +1 -1
  126. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js.map +1 -1
  127. package/dist/nile-wysiwyg-editor/engine/plugins/max-length.esm.js +1 -1
  128. package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js +1 -1
  129. package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js.map +1 -1
  130. package/dist/nile-wysiwyg-editor/engine/plugins/paste.esm.js +1 -1
  131. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js +1 -1
  132. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js.map +1 -1
  133. package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.esm.js +1 -1
  134. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js +1 -1
  135. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js.map +1 -1
  136. package/dist/nile-wysiwyg-editor/engine/plugins/single-line.esm.js +1 -1
  137. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js +1 -1
  138. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js.map +1 -1
  139. package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.esm.js +1 -1
  140. package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js +1 -1
  141. package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js.map +1 -1
  142. package/dist/nile-wysiwyg-editor/engine/plugins/tables.esm.js +1 -1
  143. package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js +2 -1
  144. package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js.map +1 -1
  145. package/dist/nile-wysiwyg-editor/engine/sanitize.esm.js +1 -1
  146. package/dist/nile-wysiwyg-editor/engine/schema.cjs.js +1 -1
  147. package/dist/nile-wysiwyg-editor/engine/schema.cjs.js.map +1 -1
  148. package/dist/nile-wysiwyg-editor/engine/schema.esm.js +1 -1
  149. package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js +1 -1
  150. package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js.map +1 -1
  151. package/dist/nile-wysiwyg-editor/engine/selection-state.esm.js +1 -1
  152. package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js +1 -1
  153. package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js.map +1 -1
  154. package/dist/nile-wysiwyg-editor/engine/serializer.esm.js +1 -1
  155. package/dist/nile-wysiwyg-editor/index.cjs.js +1 -1
  156. package/dist/nile-wysiwyg-editor/index.esm.js +1 -1
  157. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +1 -1
  158. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js.map +1 -1
  159. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js +1 -1
  160. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js.map +1 -1
  161. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.esm.js +45 -4
  162. package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +2 -2
  163. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js +1 -1
  164. package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js +1 -1
  165. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js +1 -1
  166. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js.map +1 -1
  167. package/dist/nile-wysiwyg-editor/ui/bookmark-panel.esm.js +2 -2
  168. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +1 -1
  169. package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -1
  170. package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +5 -5
  171. package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js +1 -1
  172. package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js.map +1 -1
  173. package/dist/nile-wysiwyg-editor/ui/code-block-menu.esm.js +1 -1
  174. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +1 -1
  175. package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -1
  176. package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +1 -1
  177. package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js +1 -1
  178. package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js.map +1 -1
  179. package/dist/nile-wysiwyg-editor/ui/embed-panel.esm.js +2 -2
  180. package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js +1 -1
  181. package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js.map +1 -1
  182. package/dist/nile-wysiwyg-editor/ui/emoji-picker.esm.js +1 -1
  183. package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js +1 -1
  184. package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js.map +1 -1
  185. package/dist/nile-wysiwyg-editor/ui/find-replace.esm.js +3 -3
  186. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +1 -1
  187. package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -1
  188. package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +3 -3
  189. package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js +1 -1
  190. package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js.map +1 -1
  191. package/dist/nile-wysiwyg-editor/ui/image-panel.esm.js +1 -1
  192. package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js +1 -1
  193. package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js.map +1 -1
  194. package/dist/nile-wysiwyg-editor/ui/insert-menu.esm.js +1 -1
  195. package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js +1 -1
  196. package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js.map +1 -1
  197. package/dist/nile-wysiwyg-editor/ui/link-editor.esm.js +9 -9
  198. package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js +1 -1
  199. package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js.map +1 -1
  200. package/dist/nile-wysiwyg-editor/ui/markdown-panel.esm.js +1 -1
  201. package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js +1 -1
  202. package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js.map +1 -1
  203. package/dist/nile-wysiwyg-editor/ui/math-panel.esm.js +1 -1
  204. package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js +1 -1
  205. package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js.map +1 -1
  206. package/dist/nile-wysiwyg-editor/ui/shortcut-help.esm.js +1 -1
  207. package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js +1 -1
  208. package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js.map +1 -1
  209. package/dist/nile-wysiwyg-editor/ui/source-view.esm.js +4 -4
  210. package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js +1 -1
  211. package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js.map +1 -1
  212. package/dist/nile-wysiwyg-editor/ui/special-chars.esm.js +1 -1
  213. package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js +1 -1
  214. package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js.map +1 -1
  215. package/dist/nile-wysiwyg-editor/ui/suggest-list.esm.js +23 -12
  216. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js +1 -1
  217. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js.map +1 -1
  218. package/dist/nile-wysiwyg-editor/ui/table-grid-picker.esm.js +7 -7
  219. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +1 -1
  220. package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -1
  221. package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +1 -1
  222. package/dist/src/index.d.ts +1 -0
  223. package/dist/src/index.js +1 -0
  224. package/dist/src/index.js.map +1 -1
  225. package/dist/src/nile-minimap/index.d.ts +1 -0
  226. package/dist/src/nile-minimap/index.js +2 -0
  227. package/dist/src/nile-minimap/index.js.map +1 -0
  228. package/dist/src/nile-minimap/nile-minimap.css.d.ts +12 -0
  229. package/dist/src/nile-minimap/nile-minimap.css.js +162 -0
  230. package/dist/src/nile-minimap/nile-minimap.css.js.map +1 -0
  231. package/dist/src/nile-minimap/nile-minimap.d.ts +131 -0
  232. package/dist/src/nile-minimap/nile-minimap.js +704 -0
  233. package/dist/src/nile-minimap/nile-minimap.js.map +1 -0
  234. package/dist/src/nile-minimap/nile-minimap.test.d.ts +1 -0
  235. package/dist/src/nile-minimap/nile-minimap.test.js +785 -0
  236. package/dist/src/nile-minimap/nile-minimap.test.js.map +1 -0
  237. package/dist/src/nile-wysiwyg-editor/engine/create-state.d.ts +5 -0
  238. package/dist/src/nile-wysiwyg-editor/engine/create-state.js +2 -0
  239. package/dist/src/nile-wysiwyg-editor/engine/create-state.js.map +1 -1
  240. package/dist/src/nile-wysiwyg-editor/engine/email-css.d.ts +14 -0
  241. package/dist/src/nile-wysiwyg-editor/engine/email-css.js +140 -0
  242. package/dist/src/nile-wysiwyg-editor/engine/email-css.js.map +1 -0
  243. package/dist/src/nile-wysiwyg-editor/engine/email-fidelity.test.d.ts +1 -0
  244. package/dist/src/nile-wysiwyg-editor/engine/email-fidelity.test.js +1045 -0
  245. package/dist/src/nile-wysiwyg-editor/engine/email-fidelity.test.js.map +1 -0
  246. package/dist/src/nile-wysiwyg-editor/engine/email-render.d.ts +11 -0
  247. package/dist/src/nile-wysiwyg-editor/engine/email-render.js +93 -0
  248. package/dist/src/nile-wysiwyg-editor/engine/email-render.js.map +1 -0
  249. package/dist/src/nile-wysiwyg-editor/engine/html-detect.d.ts +2 -0
  250. package/dist/src/nile-wysiwyg-editor/engine/html-detect.js +24 -0
  251. package/dist/src/nile-wysiwyg-editor/engine/html-detect.js.map +1 -0
  252. package/dist/src/nile-wysiwyg-editor/engine/index.d.ts +4 -1
  253. package/dist/src/nile-wysiwyg-editor/engine/index.js +3 -1
  254. package/dist/src/nile-wysiwyg-editor/engine/index.js.map +1 -1
  255. package/dist/src/nile-wysiwyg-editor/engine/inputrules.d.ts +0 -5
  256. package/dist/src/nile-wysiwyg-editor/engine/inputrules.js +19 -0
  257. package/dist/src/nile-wysiwyg-editor/engine/inputrules.js.map +1 -1
  258. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js +3 -2
  259. package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js.map +1 -1
  260. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.d.ts +4 -0
  261. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js +56 -1
  262. package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js.map +1 -1
  263. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.d.ts +5 -0
  264. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js +27 -6
  265. package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js.map +1 -1
  266. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js +30 -7
  267. package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js.map +1 -1
  268. package/dist/src/nile-wysiwyg-editor/engine/pm.test.js +46 -0
  269. package/dist/src/nile-wysiwyg-editor/engine/pm.test.js.map +1 -1
  270. package/dist/src/nile-wysiwyg-editor/engine/sanitize.d.ts +9 -1
  271. package/dist/src/nile-wysiwyg-editor/engine/sanitize.js +730 -7
  272. package/dist/src/nile-wysiwyg-editor/engine/sanitize.js.map +1 -1
  273. package/dist/src/nile-wysiwyg-editor/engine/schema.d.ts +3 -0
  274. package/dist/src/nile-wysiwyg-editor/engine/schema.js +215 -34
  275. package/dist/src/nile-wysiwyg-editor/engine/schema.js.map +1 -1
  276. package/dist/src/nile-wysiwyg-editor/engine/selection-state.js +3 -1
  277. package/dist/src/nile-wysiwyg-editor/engine/selection-state.js.map +1 -1
  278. package/dist/src/nile-wysiwyg-editor/engine/serializer.d.ts +12 -4
  279. package/dist/src/nile-wysiwyg-editor/engine/serializer.js +18 -8
  280. package/dist/src/nile-wysiwyg-editor/engine/serializer.js.map +1 -1
  281. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.d.ts +1 -0
  282. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.js +287 -0
  283. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.js.map +1 -0
  284. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js +45 -4
  285. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js.map +1 -1
  286. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.d.ts +23 -0
  287. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js +113 -15
  288. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js.map +1 -1
  289. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js +213 -0
  290. package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js.map +1 -1
  291. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js +2 -2
  292. package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js.map +1 -1
  293. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js +1 -1
  294. package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js.map +1 -1
  295. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js +1 -1
  296. package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js.map +1 -1
  297. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js +1 -1
  298. package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js.map +1 -1
  299. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js +1 -1
  300. package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js.map +1 -1
  301. package/dist/src/nile-wysiwyg-editor/ui/find-replace.js +1 -1
  302. package/dist/src/nile-wysiwyg-editor/ui/find-replace.js.map +1 -1
  303. package/dist/src/nile-wysiwyg-editor/ui/image-menu.js +1 -1
  304. package/dist/src/nile-wysiwyg-editor/ui/image-menu.js.map +1 -1
  305. package/dist/src/nile-wysiwyg-editor/ui/image-panel.js +1 -1
  306. package/dist/src/nile-wysiwyg-editor/ui/image-panel.js.map +1 -1
  307. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js +1 -1
  308. package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js.map +1 -1
  309. package/dist/src/nile-wysiwyg-editor/ui/link-editor.js +2 -2
  310. package/dist/src/nile-wysiwyg-editor/ui/link-editor.js.map +1 -1
  311. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js +1 -1
  312. package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js.map +1 -1
  313. package/dist/src/nile-wysiwyg-editor/ui/math-panel.js +1 -1
  314. package/dist/src/nile-wysiwyg-editor/ui/math-panel.js.map +1 -1
  315. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js +1 -1
  316. package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js.map +1 -1
  317. package/dist/src/nile-wysiwyg-editor/ui/source-view.js +2 -2
  318. package/dist/src/nile-wysiwyg-editor/ui/source-view.js.map +1 -1
  319. package/dist/src/nile-wysiwyg-editor/ui/special-chars.js +1 -1
  320. package/dist/src/nile-wysiwyg-editor/ui/special-chars.js.map +1 -1
  321. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js +14 -3
  322. package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js.map +1 -1
  323. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js +2 -2
  324. package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js.map +1 -1
  325. package/dist/src/nile-wysiwyg-editor/ui/table-menu.js +1 -1
  326. package/dist/src/nile-wysiwyg-editor/ui/table-menu.js.map +1 -1
  327. package/dist/src/version.js +1 -1
  328. package/dist/src/version.js.map +1 -1
  329. package/dist/tsconfig.tsbuildinfo +1 -1
  330. package/package.json +2 -1
  331. package/src/index.ts +1 -0
  332. package/src/nile-minimap/index.ts +1 -0
  333. package/src/nile-minimap/nile-minimap.css.ts +164 -0
  334. package/src/nile-minimap/nile-minimap.test.ts +924 -0
  335. package/src/nile-minimap/nile-minimap.ts +796 -0
  336. package/src/nile-wysiwyg-editor/engine/create-state.ts +7 -0
  337. package/src/nile-wysiwyg-editor/engine/email-css.ts +136 -0
  338. package/src/nile-wysiwyg-editor/engine/email-fidelity.test.ts +1347 -0
  339. package/src/nile-wysiwyg-editor/engine/email-render.ts +99 -0
  340. package/src/nile-wysiwyg-editor/engine/html-detect.ts +26 -0
  341. package/src/nile-wysiwyg-editor/engine/index.ts +10 -1
  342. package/src/nile-wysiwyg-editor/engine/inputrules.ts +18 -1
  343. package/src/nile-wysiwyg-editor/engine/plugins/image-view.ts +3 -2
  344. package/src/nile-wysiwyg-editor/engine/plugins/link.ts +58 -2
  345. package/src/nile-wysiwyg-editor/engine/plugins/paste.ts +31 -8
  346. package/src/nile-wysiwyg-editor/engine/plugins/tables.ts +29 -7
  347. package/src/nile-wysiwyg-editor/engine/pm.test.ts +73 -0
  348. package/src/nile-wysiwyg-editor/engine/sanitize.ts +729 -7
  349. package/src/nile-wysiwyg-editor/engine/schema.ts +206 -33
  350. package/src/nile-wysiwyg-editor/engine/selection-state.ts +3 -1
  351. package/src/nile-wysiwyg-editor/engine/serializer.ts +30 -8
  352. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor-email-fidelity.test.ts +357 -0
  353. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.ts +45 -4
  354. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.ts +258 -0
  355. package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.ts +119 -12
  356. package/src/nile-wysiwyg-editor/ui/bookmark-panel.ts +2 -2
  357. package/src/nile-wysiwyg-editor/ui/bubble-menu.ts +1 -1
  358. package/src/nile-wysiwyg-editor/ui/embed-menu.ts +1 -1
  359. package/src/nile-wysiwyg-editor/ui/embed-panel.ts +1 -1
  360. package/src/nile-wysiwyg-editor/ui/emoji-picker.ts +1 -1
  361. package/src/nile-wysiwyg-editor/ui/find-replace.ts +1 -1
  362. package/src/nile-wysiwyg-editor/ui/image-menu.ts +1 -1
  363. package/src/nile-wysiwyg-editor/ui/image-panel.ts +1 -1
  364. package/src/nile-wysiwyg-editor/ui/insert-menu.ts +1 -1
  365. package/src/nile-wysiwyg-editor/ui/link-editor.ts +2 -2
  366. package/src/nile-wysiwyg-editor/ui/markdown-panel.ts +1 -1
  367. package/src/nile-wysiwyg-editor/ui/math-panel.ts +1 -1
  368. package/src/nile-wysiwyg-editor/ui/shortcut-help.ts +1 -1
  369. package/src/nile-wysiwyg-editor/ui/source-view.ts +2 -2
  370. package/src/nile-wysiwyg-editor/ui/special-chars.ts +1 -1
  371. package/src/nile-wysiwyg-editor/ui/suggest-list.ts +14 -3
  372. package/src/nile-wysiwyg-editor/ui/table-grid-picker.ts +2 -2
  373. package/src/nile-wysiwyg-editor/ui/table-menu.ts +1 -1
  374. package/vscode-html-custom-data.json +116 -25
  375. package/web-test-runner.config.mjs +4 -0
  376. package/dist/index-3ca67627.cjs.js +0 -2
  377. package/dist/index-6f3fa4ab.esm.js +0 -1
  378. package/dist/index-7b1c9857.esm.js +0 -1
  379. package/dist/index-89c520e9.cjs.js +0 -5
  380. package/dist/index-89c520e9.cjs.js.map +0 -1
  381. package/dist/index-ba47645d.esm.js +0 -1
  382. package/dist/index-c3210a9c.cjs.js +0 -2
  383. package/dist/index-c3210a9c.cjs.js.map +0 -1
@@ -0,0 +1,704 @@
1
+ /**
2
+ * Copyright Aquera Inc 2023
3
+ *
4
+ * This source code is licensed under the BSD-3-Clause license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { __decorate } from "tslib";
8
+ import { html } from 'lit';
9
+ import { customElement, property, query, state } from 'lit/decorators.js';
10
+ import { classMap } from 'lit/directives/class-map.js';
11
+ import NileElement from '../internal/nile-element';
12
+ import { styles } from './nile-minimap.css';
13
+ const AXES = {
14
+ horizontal: {
15
+ len: 'clientWidth',
16
+ size: 'scrollWidth',
17
+ pos: 'scrollLeft',
18
+ border: 'clientLeft',
19
+ rectStart: 'left',
20
+ rectExt: 'width',
21
+ client: 'clientX',
22
+ scrollKey: 'left',
23
+ },
24
+ vertical: {
25
+ len: 'clientHeight',
26
+ size: 'scrollHeight',
27
+ pos: 'scrollTop',
28
+ border: 'clientTop',
29
+ rectStart: 'top',
30
+ rectExt: 'height',
31
+ client: 'clientY',
32
+ scrollKey: 'top',
33
+ },
34
+ };
35
+ const MIN_THUMB = 14;
36
+ const MIN_SEG = 3;
37
+ const MAX_ITEMS = 48;
38
+ const defaultValueText = (first, last, total) => {
39
+ if (first === last)
40
+ return `Item ${first} of ${total}`;
41
+ return `Items ${first}–${last} of ${total}`;
42
+ };
43
+ /**
44
+ * A small overview of any scrolling container. It mirrors the container's
45
+ * scroll position and lets people drag, click, wheel or key to another part of
46
+ * it. One axis at a time: horizontal for boards and wide tables, vertical for
47
+ * long documents and lists. It adds to the native scrollbar; it never replaces
48
+ * it.
49
+ *
50
+ * NxtGen theme only: styles use `--ng-*` tokens with no legacy `--nile-*`
51
+ * fallbacks, so the page must load the NxtGen theme (e.g. `nxtgen.css`).
52
+ *
53
+ * @tag nile-minimap
54
+ * @summary Scroll overview that attaches to a scroll container by id and lets people navigate it.
55
+ *
56
+ * @event nile-navigate - Fired before the minimap scrolls the container. Cancelable: `preventDefault()` skips the scroll. Detail: { position: number, ratio: number, source: 'drag' | 'click' | 'wheel' | 'keyboard', orientation: 'horizontal' | 'vertical' }
57
+ * @event nile-overflow-change - Fired once on first measure, then whenever overflow on the active axis starts or stops. Detail: { overflowing: boolean, orientation: 'horizontal' | 'vertical' }
58
+ *
59
+ * @csspart base - The container surface.
60
+ * @csspart track - The scaled area; drawn as a rail in track mode.
61
+ * @csspart segment - One block per item matched by `itemSelector`.
62
+ * @csspart viewport - The focusable, draggable thumb (`role="scrollbar"`).
63
+ *
64
+ * @cssproperty --nile-minimap-width - Width of the minimap (112px). Swaps with height in vertical mode.
65
+ * @cssproperty --nile-minimap-height - Height of the minimap (40px). Swaps with width in vertical mode.
66
+ */
67
+ let NileMinimap = class NileMinimap extends NileElement {
68
+ constructor() {
69
+ super(...arguments);
70
+ /** Id of the scroll container, resolved in the minimap's root node. The only way to attach. */
71
+ this.for = '';
72
+ /** Which axis the minimap represents. `auto` picks the overflowing axis (horizontal first). */
73
+ this.orientation = 'auto';
74
+ /** `segments` draws one block per item; `track` draws a single rail. */
75
+ this.mode = 'segments';
76
+ /** Selector queried on the container to find the segment items. */
77
+ this.itemSelector = ':scope > *';
78
+ /** Hides the host while nothing overflows. */
79
+ this.hideWhenFits = true;
80
+ /** Smooth scroll for click and keyboard. Always off under reduced motion. */
81
+ this.smooth = true;
82
+ /** Still mirrors scrolling, but can't be used. */
83
+ this.disabled = false;
84
+ /** Accessible name on the viewport. */
85
+ this.label = 'Scroll position';
86
+ /**
87
+ * Keeps the minimap hidden until the container scrolls, then fades it out
88
+ * after `hideDelay` ms without scrolling. It stays visible while it is
89
+ * hovered, focused or being dragged. Hidden, it keeps its space and ignores
90
+ * the pointer.
91
+ */
92
+ this.autoHide = false;
93
+ /** With `autoHide`, milliseconds without scrolling before the minimap fades out. */
94
+ this.hideDelay = 1200;
95
+ /** Builds the `aria-valuetext` in segments mode. */
96
+ this.formatValueText = defaultValueText;
97
+ this.resolvedDir = 'horizontal';
98
+ this.target = null;
99
+ this.axis = AXES.horizontal;
100
+ this.geo = [];
101
+ this.observed = new Set();
102
+ this.overflowing = null;
103
+ this.segOn = false;
104
+ this.rtl = false;
105
+ this.raf = 0;
106
+ this.full = false;
107
+ this.pending = null;
108
+ this.pendingAt = 0;
109
+ this.retried = false;
110
+ this.retryRaf = 0;
111
+ // Live geometry cache used by the pointer/keyboard handlers.
112
+ this.contentSize = 0;
113
+ this.clientSize = 0;
114
+ this.maxScroll = 0;
115
+ this.trackLen = 0;
116
+ this.vpLen = 0;
117
+ this.ro = null;
118
+ this.mo = null;
119
+ this.onScroll = () => {
120
+ this.schedule(false);
121
+ this.reveal();
122
+ };
123
+ // autoHide state: the minimap stays visible while any of these hold.
124
+ this.hideTimer = 0;
125
+ this.hovered = false;
126
+ this.focused = false;
127
+ this.onPointerEnter = () => {
128
+ this.hovered = true;
129
+ };
130
+ this.onPointerLeave = () => {
131
+ this.hovered = false;
132
+ this.queueHide();
133
+ };
134
+ this.onFocusIn = () => {
135
+ this.focused = true;
136
+ this.reveal();
137
+ };
138
+ this.onFocusOut = () => {
139
+ this.focused = false;
140
+ this.queueHide();
141
+ };
142
+ // Drag state.
143
+ this.drag = null;
144
+ this.dragRaf = 0;
145
+ this.lastMove = null;
146
+ this.reduceMotion = matchMedia('(prefers-reduced-motion: reduce)');
147
+ }
148
+ connectedCallback() {
149
+ super.connectedCallback();
150
+ this.addEventListener('pointerenter', this.onPointerEnter);
151
+ this.addEventListener('pointerleave', this.onPointerLeave);
152
+ this.addEventListener('focusin', this.onFocusIn);
153
+ this.addEventListener('focusout', this.onFocusOut);
154
+ if (this.hasUpdated) {
155
+ this.attach();
156
+ }
157
+ }
158
+ disconnectedCallback() {
159
+ this.detach();
160
+ this.removeEventListener('pointerenter', this.onPointerEnter);
161
+ this.removeEventListener('pointerleave', this.onPointerLeave);
162
+ this.removeEventListener('focusin', this.onFocusIn);
163
+ this.removeEventListener('focusout', this.onFocusOut);
164
+ clearTimeout(this.hideTimer);
165
+ this.hideTimer = 0;
166
+ super.disconnectedCallback();
167
+ }
168
+ firstUpdated() {
169
+ this.bindInteractions();
170
+ this.attach();
171
+ }
172
+ updated(changed) {
173
+ if (changed.has('autoHide')) {
174
+ clearTimeout(this.hideTimer);
175
+ this.hideTimer = 0;
176
+ this.toggleAttribute('data-idle', this.autoHide && !this.held);
177
+ }
178
+ if (changed.has('for')) {
179
+ this.attach();
180
+ return;
181
+ }
182
+ if (changed.has('orientation') ||
183
+ changed.has('mode') ||
184
+ changed.has('itemSelector') ||
185
+ changed.has('hideWhenFits') ||
186
+ changed.has('disabled') ||
187
+ changed.has('label')) {
188
+ this.schedule(true);
189
+ }
190
+ }
191
+ render() {
192
+ return html `
193
+ <div
194
+ part="base"
195
+ class=${classMap({
196
+ base: true,
197
+ 'base--track': !this.segOn,
198
+ 'base--disabled': this.disabled,
199
+ 'base--rtl': this.rtl && this.resolvedDir === 'horizontal',
200
+ })}
201
+ >
202
+ <div part="track" class="track">
203
+ <div class="segments"></div>
204
+ <div
205
+ part="viewport"
206
+ class="viewport"
207
+ role="scrollbar"
208
+ tabindex=${this.disabled ? -1 : 0}
209
+ aria-controls=${this.for}
210
+ aria-orientation=${this.resolvedDir}
211
+ aria-label=${this.label}
212
+ aria-valuemin="0"
213
+ aria-valuemax="100"
214
+ aria-valuenow="0"
215
+ ></div>
216
+ </div>
217
+ </div>
218
+ `;
219
+ }
220
+ // --- autoHide -------------------------------------------------------------
221
+ get held() {
222
+ return this.hovered || this.focused || this.drag !== null;
223
+ }
224
+ /** Shows an auto-hidden minimap and restarts the countdown to hiding it. */
225
+ reveal() {
226
+ if (!this.autoHide)
227
+ return;
228
+ this.removeAttribute('data-idle');
229
+ this.queueHide();
230
+ }
231
+ queueHide() {
232
+ clearTimeout(this.hideTimer);
233
+ this.hideTimer = 0;
234
+ if (!this.autoHide)
235
+ return;
236
+ this.hideTimer = window.setTimeout(() => {
237
+ this.hideTimer = 0;
238
+ if (this.autoHide && !this.held)
239
+ this.setAttribute('data-idle', '');
240
+ }, Math.max(0, this.hideDelay));
241
+ }
242
+ // --- attach / detach ------------------------------------------------------
243
+ resolveTarget() {
244
+ if (!this.for)
245
+ return null;
246
+ const root = this.getRootNode();
247
+ if (root instanceof Document) {
248
+ return root.getElementById(this.for);
249
+ }
250
+ const shadow = root;
251
+ if (typeof shadow.getElementById === 'function') {
252
+ return shadow.getElementById(this.for);
253
+ }
254
+ return shadow.querySelector(`#${CSS.escape(this.for)}`);
255
+ }
256
+ attach() {
257
+ this.detach();
258
+ const el = this.resolveTarget();
259
+ this.toggleAttribute('data-unresolved', !el);
260
+ if (!el) {
261
+ if (!this.retried && this.for) {
262
+ this.retried = true;
263
+ this.retryRaf = requestAnimationFrame(() => {
264
+ this.retryRaf = 0;
265
+ this.attach();
266
+ });
267
+ }
268
+ else if (this.for) {
269
+ this.retried = false;
270
+ // eslint-disable-next-line no-console
271
+ console.warn(`nile-minimap: no element with id "${this.for}" found in the minimap's root node.`);
272
+ }
273
+ return;
274
+ }
275
+ this.retried = false;
276
+ this.target = el;
277
+ this.ro = new ResizeObserver(() => this.schedule(true));
278
+ this.mo = new MutationObserver(() => this.schedule(true));
279
+ this.ro.observe(el);
280
+ this.ro.observe(this);
281
+ this.mo.observe(el, { childList: true, subtree: true });
282
+ el.addEventListener('scroll', this.onScroll, { passive: true });
283
+ // Defer the first measure out of the Lit update lifecycle: attach() runs
284
+ // synchronously from firstUpdated()/updated(), and layout() sets @state
285
+ // (resolvedDir) and calls requestUpdate(), which otherwise triggers the
286
+ // dev-mode "scheduled an update after an update completed" warning.
287
+ this.schedule(true);
288
+ }
289
+ detach() {
290
+ if (this.raf) {
291
+ cancelAnimationFrame(this.raf);
292
+ this.raf = 0;
293
+ }
294
+ if (this.retryRaf) {
295
+ cancelAnimationFrame(this.retryRaf);
296
+ this.retryRaf = 0;
297
+ }
298
+ if (this.dragRaf) {
299
+ cancelAnimationFrame(this.dragRaf);
300
+ this.dragRaf = 0;
301
+ }
302
+ this.ro?.disconnect();
303
+ this.mo?.disconnect();
304
+ this.ro = null;
305
+ this.mo = null;
306
+ this.observed.clear();
307
+ if (this.target) {
308
+ this.target.removeEventListener('scroll', this.onScroll);
309
+ }
310
+ this.target = null;
311
+ this.drag = null;
312
+ this.full = false;
313
+ }
314
+ // --- scheduling -----------------------------------------------------------
315
+ schedule(full) {
316
+ if (full)
317
+ this.full = true;
318
+ if (this.raf)
319
+ return;
320
+ this.raf = requestAnimationFrame(() => {
321
+ this.raf = 0;
322
+ // The held element may have been re-rendered (e.g. *ngIf): re-resolve.
323
+ if (this.target && !this.target.isConnected) {
324
+ this.attach();
325
+ return;
326
+ }
327
+ const needsLayout = this.full;
328
+ this.full = false;
329
+ if (needsLayout)
330
+ this.layout();
331
+ else
332
+ this.refresh();
333
+ });
334
+ }
335
+ // --- measurement ----------------------------------------------------------
336
+ layout() {
337
+ const t = this.target;
338
+ if (!t)
339
+ return;
340
+ let dir;
341
+ if (this.orientation === 'auto') {
342
+ const vOver = t.scrollHeight - t.clientHeight > 1;
343
+ const hOver = t.scrollWidth - t.clientWidth > 1;
344
+ dir = !hOver && vOver ? 'vertical' : 'horizontal';
345
+ }
346
+ else {
347
+ dir = this.orientation;
348
+ }
349
+ this.resolvedDir = dir;
350
+ this.axis = AXES[dir];
351
+ this.rtl = dir === 'horizontal' && getComputedStyle(t).direction === 'rtl';
352
+ const a = this.axis;
353
+ const el = t;
354
+ const size = el[a.size];
355
+ const client = el[a.len];
356
+ const over = size - client > 1;
357
+ if (over !== this.overflowing) {
358
+ this.overflowing = over;
359
+ this.emit('nile-overflow-change', { overflowing: over, orientation: dir }, true, true, false);
360
+ }
361
+ // hideWhenFits toggles an internal attribute; never the consumer's [hidden].
362
+ if (this.hideWhenFits && !over) {
363
+ this.setAttribute('data-fit', '');
364
+ }
365
+ else {
366
+ this.removeAttribute('data-fit');
367
+ }
368
+ if (dir === 'vertical')
369
+ this.setAttribute('data-vertical', '');
370
+ else
371
+ this.removeAttribute('data-vertical');
372
+ const items = this.mode === 'segments'
373
+ ? Array.from(t.querySelectorAll(this.itemSelector))
374
+ : [];
375
+ // Keep the per-item ResizeObserver set in sync without triggering loops.
376
+ for (const old of Array.from(this.observed)) {
377
+ if (!items.includes(old)) {
378
+ this.ro?.unobserve(old);
379
+ this.observed.delete(old);
380
+ }
381
+ }
382
+ for (const it of items) {
383
+ if (!this.observed.has(it)) {
384
+ this.ro?.observe(it);
385
+ this.observed.add(it);
386
+ }
387
+ }
388
+ const tr = t.getBoundingClientRect();
389
+ const scrollPos = el[a.pos];
390
+ this.geo = items.map(it => {
391
+ const r = it.getBoundingClientRect();
392
+ return {
393
+ start: r[a.rectStart] - tr[a.rectStart] - el[a.border] + scrollPos,
394
+ len: r[a.rectExt],
395
+ };
396
+ });
397
+ const trackLen = this.trackEl[a.len];
398
+ const scale = size ? trackLen / size : 0;
399
+ const dense = this.geo.length > MAX_ITEMS ||
400
+ this.geo.some(g => g.len * scale < MIN_SEG);
401
+ this.segOn = this.mode === 'segments' && this.geo.length > 0 && !dense;
402
+ this.renderSegments(scale);
403
+ this.refresh();
404
+ }
405
+ renderSegments(scale) {
406
+ const segs = this.segsEl;
407
+ if (!segs)
408
+ return;
409
+ if (!this.segOn) {
410
+ segs.textContent = '';
411
+ this.requestUpdate();
412
+ return;
413
+ }
414
+ while (segs.children.length < this.geo.length) {
415
+ const d = document.createElement('div');
416
+ d.className = 'segment';
417
+ d.setAttribute('part', 'segment');
418
+ segs.appendChild(d);
419
+ }
420
+ while (segs.children.length > this.geo.length) {
421
+ segs.lastChild?.remove();
422
+ }
423
+ this.geo.forEach((g, i) => {
424
+ const s = segs.children[i].style;
425
+ s.setProperty('--s', `${(g.start * scale).toFixed(2)}px`);
426
+ s.setProperty('--l', `${(g.len * scale).toFixed(2)}px`);
427
+ });
428
+ this.requestUpdate();
429
+ }
430
+ refresh() {
431
+ const t = this.target;
432
+ if (!t)
433
+ return;
434
+ const a = this.axis;
435
+ const el = t;
436
+ const size = el[a.size];
437
+ const client = el[a.len];
438
+ const maxScroll = Math.max(0, size - client);
439
+ const trackLen = this.trackEl[a.len];
440
+ let vpLen = size
441
+ ? Math.max(MIN_THUMB, (trackLen * client) / size)
442
+ : trackLen;
443
+ vpLen = Math.min(vpLen, trackLen);
444
+ const pos = Math.abs(el[a.pos]);
445
+ const ratio = maxScroll ? Math.min(1, Math.max(0, pos / maxScroll)) : 0;
446
+ const vpStart = ratio * (trackLen - vpLen);
447
+ this.contentSize = size;
448
+ this.clientSize = client;
449
+ this.maxScroll = maxScroll;
450
+ this.trackLen = trackLen;
451
+ this.vpLen = vpLen;
452
+ const vp = this.viewport;
453
+ if (vp) {
454
+ vp.style.setProperty('--vs', `${vpStart.toFixed(2)}px`);
455
+ vp.style.setProperty('--vl', `${vpLen.toFixed(2)}px`);
456
+ vp.setAttribute('aria-orientation', this.resolvedDir);
457
+ vp.setAttribute('aria-label', this.label);
458
+ vp.setAttribute('aria-controls', this.for);
459
+ vp.setAttribute('aria-valuenow', String(Math.round(ratio * 100)));
460
+ if (this.disabled)
461
+ vp.setAttribute('aria-disabled', 'true');
462
+ else
463
+ vp.removeAttribute('aria-disabled');
464
+ let valueText = '';
465
+ if (this.segOn) {
466
+ const visible = [];
467
+ this.geo.forEach((g, i) => {
468
+ if (g.start + g.len > pos + 1 && g.start < pos + client - 1) {
469
+ visible.push(i + 1);
470
+ }
471
+ });
472
+ if (visible.length) {
473
+ valueText = this.formatValueText(visible[0], visible[visible.length - 1], this.geo.length);
474
+ }
475
+ }
476
+ if (valueText)
477
+ vp.setAttribute('aria-valuetext', valueText);
478
+ else
479
+ vp.removeAttribute('aria-valuetext');
480
+ }
481
+ if (this.pending !== null && Math.abs(pos - this.pending) < 2) {
482
+ this.pending = null;
483
+ }
484
+ }
485
+ // --- navigation -----------------------------------------------------------
486
+ go(rawPos, source, smooth) {
487
+ const t = this.target;
488
+ if (!t)
489
+ return;
490
+ const a = this.axis;
491
+ const el = t;
492
+ const max = el[a.size] - el[a.len];
493
+ const pos = Math.max(0, Math.min(max, rawPos));
494
+ const ev = this.emit('nile-navigate', {
495
+ position: Math.round(pos),
496
+ ratio: max ? Number((pos / max).toFixed(3)) : 0,
497
+ source,
498
+ orientation: this.resolvedDir,
499
+ }, true, true, true);
500
+ if (ev.defaultPrevented)
501
+ return;
502
+ const sm = smooth && this.smooth && !this.reduceMotion.matches;
503
+ this.pending = sm ? pos : null;
504
+ this.pendingAt = performance.now();
505
+ const signed = this.rtl ? -pos : pos;
506
+ t.scrollTo({ [a.scrollKey]: signed, behavior: sm ? 'smooth' : 'auto' });
507
+ }
508
+ cur() {
509
+ if (!this.target)
510
+ return 0;
511
+ if (this.pending !== null && performance.now() - this.pendingAt < 600) {
512
+ return this.pending;
513
+ }
514
+ const el = this.target;
515
+ return Math.abs(el[this.axis.pos]);
516
+ }
517
+ step(dir) {
518
+ const cur = this.cur();
519
+ if (this.segOn && this.geo.length) {
520
+ const inset = this.geo[0].start;
521
+ const stops = this.geo.map(g => Math.max(0, g.start - inset));
522
+ if (dir > 0) {
523
+ const next = stops.find(s => s > cur + 2);
524
+ return next === undefined ? Infinity : next;
525
+ }
526
+ const prev = [...stops].reverse().find(s => s < cur - 2);
527
+ return prev === undefined ? 0 : prev;
528
+ }
529
+ return cur + dir * Math.max(40, this.clientSize * 0.1);
530
+ }
531
+ // --- interactions ---------------------------------------------------------
532
+ bindInteractions() {
533
+ const vp = this.viewport;
534
+ const track = this.trackEl;
535
+ const { base } = this;
536
+ vp.addEventListener('pointerdown', e => {
537
+ if (this.disabled)
538
+ return;
539
+ e.preventDefault();
540
+ e.stopPropagation();
541
+ try {
542
+ vp.setPointerCapture(e.pointerId);
543
+ }
544
+ catch {
545
+ // Synthetic or already-released pointers can't be captured; drag still works.
546
+ }
547
+ const el = this.target;
548
+ this.drag = {
549
+ pointer: e[this.axis.client],
550
+ start: this.target ? Math.abs(el[this.axis.pos]) : 0,
551
+ };
552
+ this.base.classList.add('base--drag');
553
+ vp.focus({ preventScroll: true });
554
+ });
555
+ vp.addEventListener('pointermove', e => {
556
+ if (!this.drag)
557
+ return;
558
+ this.lastMove = e;
559
+ if (this.dragRaf)
560
+ return;
561
+ this.dragRaf = requestAnimationFrame(() => {
562
+ this.dragRaf = 0;
563
+ applyDrag();
564
+ });
565
+ });
566
+ const applyDrag = () => {
567
+ if (!this.drag || !this.lastMove)
568
+ return;
569
+ const room = this.trackLen - this.vpLen;
570
+ if (room <= 0)
571
+ return;
572
+ const delta = this.lastMove[this.axis.client] - this.drag.pointer;
573
+ this.go(this.drag.start + (delta * this.maxScroll) / room, 'drag', false);
574
+ };
575
+ const end = () => {
576
+ if (!this.drag)
577
+ return;
578
+ // Flush a move still waiting for its frame so the release position isn't lost.
579
+ if (this.dragRaf) {
580
+ cancelAnimationFrame(this.dragRaf);
581
+ this.dragRaf = 0;
582
+ applyDrag();
583
+ }
584
+ this.lastMove = null;
585
+ this.drag = null;
586
+ this.base.classList.remove('base--drag');
587
+ this.queueHide();
588
+ };
589
+ vp.addEventListener('pointerup', end);
590
+ vp.addEventListener('pointercancel', end);
591
+ vp.addEventListener('lostpointercapture', end);
592
+ track.addEventListener('pointerdown', e => {
593
+ if (e.target === vp || this.disabled || !this.target)
594
+ return;
595
+ const r = track.getBoundingClientRect();
596
+ const p = e[this.axis.client] - r[this.axis.rectStart];
597
+ this.go((p / this.trackLen) * this.contentSize - this.clientSize / 2, 'click', true);
598
+ });
599
+ base.addEventListener('wheel', e => {
600
+ if (this.disabled || !this.overflowing || !this.target)
601
+ return;
602
+ let d = Math.abs(e.deltaX) > Math.abs(e.deltaY) ? e.deltaX : e.deltaY;
603
+ if (e.deltaMode === 1)
604
+ d *= 16;
605
+ else if (e.deltaMode === 2)
606
+ d *= this.clientSize;
607
+ const el = this.target;
608
+ const cur = Math.abs(el[this.axis.pos]);
609
+ if ((d < 0 && cur <= 0) || (d > 0 && cur >= this.maxScroll - 1))
610
+ return;
611
+ e.preventDefault();
612
+ this.pending = null;
613
+ this.go(cur + d, 'wheel', false);
614
+ }, { passive: false });
615
+ vp.addEventListener('keydown', e => {
616
+ if (this.disabled || !this.target)
617
+ return;
618
+ let n = null;
619
+ switch (e.key) {
620
+ case 'ArrowRight':
621
+ case 'ArrowDown':
622
+ n = this.step(1);
623
+ break;
624
+ case 'ArrowLeft':
625
+ case 'ArrowUp':
626
+ n = this.step(-1);
627
+ break;
628
+ case 'PageDown':
629
+ n = this.cur() + this.clientSize;
630
+ break;
631
+ case 'PageUp':
632
+ n = this.cur() - this.clientSize;
633
+ break;
634
+ case 'Home':
635
+ n = 0;
636
+ break;
637
+ case 'End':
638
+ n = this.maxScroll;
639
+ break;
640
+ default:
641
+ n = null;
642
+ }
643
+ if (n !== null) {
644
+ e.preventDefault();
645
+ this.go(n, 'keyboard', true);
646
+ }
647
+ });
648
+ }
649
+ };
650
+ NileMinimap.styles = styles;
651
+ __decorate([
652
+ property({ reflect: true })
653
+ ], NileMinimap.prototype, "for", void 0);
654
+ __decorate([
655
+ property({ reflect: true })
656
+ ], NileMinimap.prototype, "orientation", void 0);
657
+ __decorate([
658
+ property({ reflect: true })
659
+ ], NileMinimap.prototype, "mode", void 0);
660
+ __decorate([
661
+ property()
662
+ ], NileMinimap.prototype, "itemSelector", void 0);
663
+ __decorate([
664
+ property({ type: Boolean, reflect: true })
665
+ ], NileMinimap.prototype, "hideWhenFits", void 0);
666
+ __decorate([
667
+ property({ type: Boolean })
668
+ ], NileMinimap.prototype, "smooth", void 0);
669
+ __decorate([
670
+ property({ type: Boolean, reflect: true })
671
+ ], NileMinimap.prototype, "disabled", void 0);
672
+ __decorate([
673
+ property()
674
+ ], NileMinimap.prototype, "label", void 0);
675
+ __decorate([
676
+ property({ type: Boolean, reflect: true })
677
+ ], NileMinimap.prototype, "autoHide", void 0);
678
+ __decorate([
679
+ property({ type: Number })
680
+ ], NileMinimap.prototype, "hideDelay", void 0);
681
+ __decorate([
682
+ property({ attribute: false })
683
+ ], NileMinimap.prototype, "formatValueText", void 0);
684
+ __decorate([
685
+ query('.base')
686
+ ], NileMinimap.prototype, "base", void 0);
687
+ __decorate([
688
+ query('.track')
689
+ ], NileMinimap.prototype, "trackEl", void 0);
690
+ __decorate([
691
+ query('.segments')
692
+ ], NileMinimap.prototype, "segsEl", void 0);
693
+ __decorate([
694
+ query('.viewport')
695
+ ], NileMinimap.prototype, "viewport", void 0);
696
+ __decorate([
697
+ state()
698
+ ], NileMinimap.prototype, "resolvedDir", void 0);
699
+ NileMinimap = __decorate([
700
+ customElement('nile-minimap')
701
+ ], NileMinimap);
702
+ export { NileMinimap };
703
+ export default NileMinimap;
704
+ //# sourceMappingURL=nile-minimap.js.map