@vonage/vivid 5.15.0 → 5.15.1

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 (340) hide show
  1. package/README.md +1 -1
  2. package/accordion/definition.cjs +0 -5
  3. package/accordion/definition.js +0 -5
  4. package/accordion/index.cjs +1 -1
  5. package/accordion/index.js +3 -14
  6. package/accordion-item/definition.cjs +1 -1
  7. package/accordion-item/definition.js +1 -1
  8. package/alert/definition.cjs +2 -2
  9. package/alert/definition.js +2 -2
  10. package/alert/index.cjs +1 -1
  11. package/alert/index.js +1 -1
  12. package/audio-player/definition.cjs +2 -6
  13. package/audio-player/definition.js +2 -6
  14. package/audio-player/index.cjs +1 -1
  15. package/audio-player/index.js +2 -8
  16. package/banner/definition.cjs +1 -1
  17. package/banner/definition.js +1 -1
  18. package/breadcrumb/definition.cjs +0 -1
  19. package/breadcrumb/definition.js +0 -1
  20. package/breadcrumb/index.cjs +1 -1
  21. package/breadcrumb/index.js +0 -1
  22. package/breadcrumb-item/definition.cjs +1 -1
  23. package/breadcrumb-item/definition.js +1 -1
  24. package/breadcrumb-item/index.cjs +1 -1
  25. package/breadcrumb-item/index.js +1 -1
  26. package/bundled/attribute-binding-behaviour.cjs +1 -1
  27. package/bundled/attribute-binding-behaviour.js +1 -3
  28. package/bundled/base-color-picker.cjs +1 -1
  29. package/bundled/base-color-picker.js +2 -7
  30. package/bundled/base-progress.cjs +1 -1
  31. package/bundled/base-progress.js +0 -3
  32. package/bundled/button.cjs +1 -1
  33. package/bundled/button.js +1 -10
  34. package/bundled/calendar-picker.template.cjs +1 -1
  35. package/bundled/calendar-picker.template.js +90 -42
  36. package/bundled/children.js +1 -1
  37. package/bundled/definition.cjs +1 -1
  38. package/bundled/definition.js +1 -1
  39. package/bundled/definition10.cjs +1 -1
  40. package/bundled/definition10.js +0 -10
  41. package/bundled/definition11.cjs +1 -1
  42. package/bundled/definition11.js +0 -1
  43. package/bundled/definition12.cjs +2 -2
  44. package/bundled/definition12.js +1 -2
  45. package/bundled/definition13.cjs +1 -1
  46. package/bundled/definition13.js +1 -1
  47. package/bundled/definition17.cjs +1 -1
  48. package/bundled/definition17.js +1 -4
  49. package/bundled/definition18.cjs +1 -1
  50. package/bundled/definition18.js +6 -18
  51. package/bundled/definition19.cjs +2 -2
  52. package/bundled/definition19.js +8 -24
  53. package/bundled/definition2.cjs +5 -5
  54. package/bundled/definition2.js +26 -27
  55. package/bundled/definition20.cjs +1 -1
  56. package/bundled/definition20.js +1 -1
  57. package/bundled/definition22.cjs +5 -5
  58. package/bundled/definition22.js +2 -3
  59. package/bundled/definition3.cjs +1 -1
  60. package/bundled/definition3.js +1 -2
  61. package/bundled/definition5.cjs +1 -1
  62. package/bundled/definition5.js +1 -6
  63. package/bundled/definition6.cjs +1 -1
  64. package/bundled/definition6.js +1 -2
  65. package/bundled/definition7.cjs +1 -1
  66. package/bundled/definition7.js +2 -5
  67. package/bundled/definition8.cjs +1 -1
  68. package/bundled/definition8.js +2 -13
  69. package/bundled/definition9.js +9 -9
  70. package/bundled/delegates-aria.cjs +1 -1
  71. package/bundled/delegates-aria.js +1 -3
  72. package/bundled/floating-ui.dom.cjs +1 -1
  73. package/bundled/floating-ui.dom.js +491 -487
  74. package/bundled/form-associated.cjs +1 -1
  75. package/bundled/form-associated.js +9 -18
  76. package/bundled/key-codes.cjs +1 -1
  77. package/bundled/listbox.cjs +1 -1
  78. package/bundled/listbox.js +10 -27
  79. package/bundled/localized.cjs +1 -1
  80. package/bundled/localized.js +48 -48
  81. package/bundled/mixins.cjs +2 -2
  82. package/bundled/mixins.js +1 -4
  83. package/bundled/normalize.js +2 -2
  84. package/bundled/picker-field.template.cjs +1 -1
  85. package/bundled/picker-field.template.js +0 -1
  86. package/bundled/scrollIntoView.cjs +1 -1
  87. package/bundled/scrollIntoView.js +1 -4
  88. package/bundled/slider.template.cjs +1 -1
  89. package/bundled/slider.template.js +1 -1
  90. package/bundled/slottable-request.js +1 -1
  91. package/bundled/text-field.cjs +1 -1
  92. package/bundled/text-field.js +1 -1
  93. package/bundled/time-selection-picker.template.cjs +2 -2
  94. package/bundled/time-selection-picker.template.js +3 -6
  95. package/bundled/vivid-element.cjs +3 -3
  96. package/bundled/vivid-element.js +302 -293
  97. package/button/definition.cjs +1 -1
  98. package/button/definition.js +1 -1
  99. package/calendar/definition.cjs +0 -2
  100. package/calendar/definition.js +1 -3
  101. package/calendar/index.cjs +1 -1
  102. package/calendar/index.js +6 -8
  103. package/card/definition.cjs +1 -1
  104. package/card/definition.js +1 -1
  105. package/card/index.cjs +1 -1
  106. package/card/index.js +1 -1
  107. package/checkbox/definition.cjs +1 -2
  108. package/checkbox/definition.js +1 -2
  109. package/color-picker/definition.cjs +1 -6
  110. package/color-picker/definition.js +1 -6
  111. package/color-picker/index.cjs +1 -1
  112. package/color-picker/index.js +2 -7
  113. package/combobox/definition.cjs +2 -8
  114. package/combobox/definition.js +2 -8
  115. package/combobox/index.cjs +1 -1
  116. package/combobox/index.js +2 -9
  117. package/contextual-help/definition.cjs +1 -1
  118. package/contextual-help/definition.js +1 -1
  119. package/custom-elements.json +37 -720
  120. package/data-grid/definition.cjs +72 -85
  121. package/data-grid/definition.js +75 -88
  122. package/data-grid/index.cjs +2 -2
  123. package/data-grid/index.js +7 -39
  124. package/date-picker/definition.cjs +1 -1
  125. package/date-picker/definition.js +1 -1
  126. package/date-range-picker/definition.cjs +1 -3
  127. package/date-range-picker/definition.js +1 -3
  128. package/date-range-picker/index.cjs +1 -1
  129. package/date-range-picker/index.js +1 -5
  130. package/date-time-picker/definition.cjs +1 -1
  131. package/date-time-picker/definition.js +1 -1
  132. package/dial-pad/definition.cjs +2 -11
  133. package/dial-pad/definition.js +3 -12
  134. package/dial-pad/index.cjs +1 -1
  135. package/dial-pad/index.js +14 -38
  136. package/dialog/definition.cjs +2 -3
  137. package/dialog/definition.js +2 -3
  138. package/dialog/index.cjs +1 -1
  139. package/dialog/index.js +1 -2
  140. package/empty-state/definition.js +1 -1
  141. package/fab/definition.cjs +1 -2
  142. package/fab/definition.js +1 -2
  143. package/fab/index.cjs +1 -1
  144. package/fab/index.js +1 -2
  145. package/file-picker/definition.cjs +2 -5
  146. package/file-picker/definition.js +3 -6
  147. package/file-picker/index.cjs +1 -1
  148. package/file-picker/index.js +1 -4
  149. package/icon/definition.cjs +7 -5
  150. package/icon/definition.js +7 -5
  151. package/index.cjs +95 -95
  152. package/index.js +18 -18
  153. package/layout/definition.cjs +1 -1
  154. package/layout/definition.js +1 -1
  155. package/layout/index.cjs +1 -1
  156. package/layout/index.js +1 -1
  157. package/lib/card/card.d.ts +0 -2
  158. package/lib/combobox/combobox.d.ts +1 -1
  159. package/lib/icon/icon.d.ts +0 -1
  160. package/lib/menu/menu.d.ts +0 -1
  161. package/lib/menu-item/menu-item.d.ts +0 -1
  162. package/lib/pagination/pagination.d.ts +0 -3
  163. package/lib/select/select.d.ts +2 -2
  164. package/lib/table/table-head.d.ts +1 -0
  165. package/lib/tabs/tabs.d.ts +0 -1
  166. package/lib/text-field/text-field.d.ts +0 -1
  167. package/locales/de-DE.cjs +95 -95
  168. package/locales/de-DE.js +95 -95
  169. package/locales/en-GB.cjs +1 -1
  170. package/locales/en-GB.js +1 -1
  171. package/locales/en-US.cjs +95 -95
  172. package/locales/en-US.js +95 -95
  173. package/locales/ja-JP.cjs +94 -94
  174. package/locales/ja-JP.js +94 -94
  175. package/locales/zh-CN.cjs +94 -94
  176. package/locales/zh-CN.js +94 -94
  177. package/menu/definition.cjs +2 -3
  178. package/menu/definition.js +2 -3
  179. package/menu-item/definition.cjs +1 -1
  180. package/menu-item/definition.js +1 -1
  181. package/nav-disclosure/definition.cjs +1 -1
  182. package/nav-disclosure/definition.js +1 -1
  183. package/nav-disclosure/index.cjs +1 -1
  184. package/nav-disclosure/index.js +1 -1
  185. package/nav-item/definition.cjs +1 -1
  186. package/nav-item/definition.js +1 -1
  187. package/nav-item/index.cjs +1 -1
  188. package/nav-item/index.js +1 -1
  189. package/number-field/definition.cjs +2 -2
  190. package/number-field/definition.js +2 -2
  191. package/number-field/index.cjs +1 -1
  192. package/number-field/index.js +1 -1
  193. package/package.json +20 -18
  194. package/pagination/definition.cjs +1 -3
  195. package/pagination/definition.js +3 -5
  196. package/pagination/index.cjs +3 -3
  197. package/pagination/index.js +4 -6
  198. package/popover/definition.cjs +1 -8
  199. package/popover/definition.js +1 -8
  200. package/popover/index.cjs +1 -1
  201. package/popover/index.js +6 -17
  202. package/popup/definition.cjs +1 -1
  203. package/popup/definition.js +1 -1
  204. package/radio/definition.cjs +1 -5
  205. package/radio/definition.js +1 -5
  206. package/radio-group/definition.js +2 -2
  207. package/range-slider/definition.cjs +1 -1
  208. package/range-slider/definition.js +2 -2
  209. package/range-slider/index.cjs +1 -1
  210. package/range-slider/index.js +1 -1
  211. package/rich-text-editor/definition.cjs +128 -43
  212. package/rich-text-editor/definition.js +128 -43
  213. package/rich-text-editor/index.cjs +12 -12
  214. package/rich-text-editor/index.js +1577 -1532
  215. package/rich-text-view/definition.js +1 -1
  216. package/searchable-select/definition.cjs +2 -5
  217. package/searchable-select/definition.js +2 -5
  218. package/searchable-select/index.cjs +1 -1
  219. package/searchable-select/index.js +2 -6
  220. package/select/definition.cjs +4 -14
  221. package/select/definition.js +5 -15
  222. package/selectable-box/definition.cjs +1 -1
  223. package/selectable-box/definition.js +2 -2
  224. package/selectable-box/index.cjs +1 -1
  225. package/selectable-box/index.js +1 -1
  226. package/side-drawer/definition.cjs +1 -1
  227. package/side-drawer/definition.js +2 -2
  228. package/side-drawer/index.cjs +1 -1
  229. package/side-drawer/index.js +2 -5
  230. package/simple-color-picker/definition.cjs +18 -9
  231. package/simple-color-picker/definition.js +19 -10
  232. package/simple-color-picker/index.cjs +5 -5
  233. package/simple-color-picker/index.js +23 -23
  234. package/slider/definition.cjs +1 -6
  235. package/slider/definition.js +3 -8
  236. package/split-button/definition.cjs +1 -1
  237. package/split-button/definition.js +2 -2
  238. package/split-button/index.cjs +1 -1
  239. package/split-button/index.js +1 -1
  240. package/status/definition.cjs +9 -3
  241. package/status/definition.js +11 -5
  242. package/status/index.cjs +10 -7
  243. package/status/index.js +46 -39
  244. package/styles/core/all.css +6 -5
  245. package/styles/core/theme.css +6 -5
  246. package/styles/core/typography.css +1 -2
  247. package/styles/tokens/theme-dark.css +17 -21
  248. package/styles/tokens/theme-light.css +17 -21
  249. package/styles/tokens/vivid-2-compat.css +1 -2
  250. package/switch/definition.cjs +1 -2
  251. package/switch/definition.js +2 -3
  252. package/switch/index.cjs +1 -1
  253. package/switch/index.js +1 -2
  254. package/tab/definition.cjs +1 -1
  255. package/tab/definition.js +2 -2
  256. package/tab-panel/definition.js +1 -1
  257. package/table/definition.cjs +17 -11
  258. package/table/definition.js +19 -13
  259. package/table/index.cjs +18 -14
  260. package/table/index.js +55 -48
  261. package/tabs/definition.cjs +0 -2
  262. package/tabs/definition.js +2 -4
  263. package/tabs/index.cjs +1 -1
  264. package/tabs/index.js +0 -2
  265. package/tag/definition.cjs +1 -1
  266. package/tag/definition.js +2 -2
  267. package/tag/index.cjs +1 -1
  268. package/tag/index.js +1 -1
  269. package/tag-group/definition.js +1 -1
  270. package/text-area/definition.cjs +1 -7
  271. package/text-area/definition.js +2 -8
  272. package/text-area/index.cjs +1 -1
  273. package/text-area/index.js +1 -7
  274. package/text-field/definition.cjs +0 -10
  275. package/text-field/definition.js +1 -11
  276. package/time-picker/definition.cjs +1 -1
  277. package/time-picker/definition.js +2 -2
  278. package/toggletip/definition.cjs +0 -2
  279. package/toggletip/definition.js +1 -3
  280. package/tooltip/definition.cjs +0 -1
  281. package/tooltip/definition.js +1 -2
  282. package/tree-view/definition.cjs +0 -16
  283. package/tree-view/definition.js +1 -17
  284. package/tree-view/index.cjs +1 -1
  285. package/tree-view/index.js +0 -16
  286. package/unbundled/_commonjsHelpers.cjs +6 -2
  287. package/unbundled/_commonjsHelpers.js +6 -2
  288. package/unbundled/anchored.js +1 -1
  289. package/unbundled/attribute-binding-behaviour.cjs +0 -1
  290. package/unbundled/attribute-binding-behaviour.js +0 -1
  291. package/unbundled/base-color-picker.cjs +0 -3
  292. package/unbundled/base-color-picker.js +0 -3
  293. package/unbundled/base-progress.cjs +0 -3
  294. package/unbundled/base-progress.js +0 -3
  295. package/unbundled/button.cjs +1 -10
  296. package/unbundled/button.js +1 -10
  297. package/unbundled/calendar-picker.template.cjs +2 -4
  298. package/unbundled/calendar-picker.template.js +2 -4
  299. package/unbundled/data-grid.options.js +1 -1
  300. package/unbundled/definition.cjs +349 -170
  301. package/unbundled/definition.js +348 -170
  302. package/unbundled/definition2.cjs +169 -351
  303. package/unbundled/definition2.js +169 -350
  304. package/unbundled/definition3.cjs +1 -2
  305. package/unbundled/definition3.js +1 -2
  306. package/unbundled/definition4.cjs +1 -2
  307. package/unbundled/definition4.js +3 -4
  308. package/unbundled/definition5.cjs +1 -1
  309. package/unbundled/definition5.js +2 -2
  310. package/unbundled/delegates-aria.cjs +1 -1
  311. package/unbundled/delegates-aria.js +1 -1
  312. package/unbundled/enums.js +1 -1
  313. package/unbundled/form-associated.cjs +4 -5
  314. package/unbundled/form-associated.js +4 -5
  315. package/unbundled/host-semantics.cjs +1 -0
  316. package/unbundled/host-semantics.js +2 -1
  317. package/unbundled/key-codes.js +1 -1
  318. package/unbundled/listbox.cjs +6 -14
  319. package/unbundled/listbox.js +6 -14
  320. package/unbundled/mixins.cjs +0 -2
  321. package/unbundled/mixins.js +2 -4
  322. package/unbundled/picker-field.template.cjs +1 -2
  323. package/unbundled/picker-field.template.js +1 -2
  324. package/unbundled/scrollIntoView.cjs +0 -1
  325. package/unbundled/scrollIntoView.js +0 -1
  326. package/unbundled/slider.template.js +1 -1
  327. package/unbundled/slottable-request.cjs +2 -2
  328. package/unbundled/slottable-request.js +2 -2
  329. package/unbundled/text-field.cjs +1 -1
  330. package/unbundled/text-field.js +1 -1
  331. package/unbundled/time-selection-picker.template.cjs +1 -4
  332. package/unbundled/time-selection-picker.template.js +1 -4
  333. package/unbundled/vivid-element.cjs +2 -1
  334. package/unbundled/vivid-element.js +2 -1
  335. package/video-player/definition.cjs +7953 -7720
  336. package/video-player/definition.js +7955 -7722
  337. package/video-player/index.cjs +38 -54
  338. package/video-player/index.js +12785 -12735
  339. package/visually-hidden/definition.js +1 -1
  340. package/vivid.api.json +16 -341
@@ -7,9 +7,9 @@ import { dividerDefinition } from '../divider/definition.js';
7
7
  import { VwcSelectElement as Select, selectDefinition } from '../select/definition.js';
8
8
  import { L as ListboxOption, l as listboxOptionDefinition } from '../unbundled/definition3.js';
9
9
  import { VwcMenuElement as Menu, menuDefinition } from '../menu/definition.js';
10
- import { M as MenuItem, m as menuItemDefinition } from '../unbundled/definition2.js';
10
+ import { a as MenuItem, m as menuItemDefinition } from '../unbundled/definition.js';
11
11
  import { VwcProgressRingElement as ProgressRing, progressRingDefinition } from '../progress-ring/definition.js';
12
- import { B as Button, b as buttonDefinition } from '../unbundled/definition.js';
12
+ import { B as Button, b as buttonDefinition } from '../unbundled/definition2.js';
13
13
  import { VwcTooltipElement as Tooltip, tooltipDefinition } from '../tooltip/definition.js';
14
14
  import { VwcTextFieldElement as TextField, textFieldDefinition } from '../text-field/definition.js';
15
15
  import { D as Divider } from '../unbundled/divider.js';
@@ -1895,6 +1895,27 @@ class Transform {
1895
1895
  return this.steps.length > 0;
1896
1896
  }
1897
1897
  /**
1898
+ Return a single range, in post-transform document positions,
1899
+ that covers all content changed by this transform. Returns null
1900
+ if no replacements are made. Note that this will ignore changes
1901
+ that add/remove marks without replacing the underlying content.
1902
+ */
1903
+ changedRange() {
1904
+ let from = 1e9, to = -1e9;
1905
+ for (let i = 0; i < this.mapping.maps.length; i++) {
1906
+ let map = this.mapping.maps[i];
1907
+ if (i) {
1908
+ from = map.map(from, 1);
1909
+ to = map.map(to, -1);
1910
+ }
1911
+ map.forEach((_f, _t, fromB, toB) => {
1912
+ from = Math.min(from, fromB);
1913
+ to = Math.max(to, toB);
1914
+ });
1915
+ }
1916
+ return from == 1e9 ? null : { from, to };
1917
+ }
1918
+ /**
1898
1919
  @internal
1899
1920
  */
1900
1921
  addStep(step, doc) {
@@ -3469,17 +3490,20 @@ function findOffsetInNode(node, coords) {
3469
3490
  }
3470
3491
  function findOffsetInText(node, coords) {
3471
3492
  let len = node.nodeValue.length;
3472
- let range = document.createRange();
3493
+ let range = document.createRange(), result;
3473
3494
  for (let i = 0; i < len; i++) {
3474
3495
  range.setEnd(node, i + 1);
3475
3496
  range.setStart(node, i);
3476
3497
  let rect = singleRect(range, 1);
3477
3498
  if (rect.top == rect.bottom)
3478
3499
  continue;
3479
- if (inRect(coords, rect))
3480
- return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };
3500
+ if (inRect(coords, rect)) {
3501
+ result = { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };
3502
+ break;
3503
+ }
3481
3504
  }
3482
- return { node, offset: 0 };
3505
+ range.detach();
3506
+ return result || { node, offset: 0 };
3483
3507
  }
3484
3508
  function inRect(coords, rect) {
3485
3509
  return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&
@@ -4475,15 +4499,15 @@ class NodeViewDesc extends ViewDesc {
4475
4499
  let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);
4476
4500
  iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {
4477
4501
  if (widget.spec.marks)
4478
- updater.syncToMarks(widget.spec.marks, inline, view);
4502
+ updater.syncToMarks(widget.spec.marks, inline, view, i);
4479
4503
  else if (widget.type.side >= 0 && !insideNode)
4480
- updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);
4504
+ updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view, i);
4481
4505
  // If the next node is a desc matching this widget, reuse it,
4482
4506
  // otherwise insert the widget as a new view desc.
4483
4507
  updater.placeWidget(widget, view, off);
4484
4508
  }, (child, outerDeco, innerDeco, i) => {
4485
4509
  // Make sure the wrapping mark descs match the node's marks.
4486
- updater.syncToMarks(child.marks, inline, view);
4510
+ updater.syncToMarks(child.marks, inline, view, i);
4487
4511
  // Try several strategies for drawing this node
4488
4512
  let compIndex;
4489
4513
  if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;
@@ -4499,7 +4523,7 @@ class NodeViewDesc extends ViewDesc {
4499
4523
  off += child.nodeSize;
4500
4524
  });
4501
4525
  // Drop all remaining descs after the current position.
4502
- updater.syncToMarks([], inline, view);
4526
+ updater.syncToMarks([], inline, view, 0);
4503
4527
  if (this.node.isTextblock)
4504
4528
  updater.addTextblockHacks();
4505
4529
  updater.destroyRest();
@@ -4889,7 +4913,7 @@ class ViewTreeUpdater {
4889
4913
  }
4890
4914
  // Sync the current stack of mark descs with the given array of
4891
4915
  // marks, reusing existing mark descs when possible.
4892
- syncToMarks(marks, inline, view) {
4916
+ syncToMarks(marks, inline, view, parentIndex) {
4893
4917
  let keep = 0, depth = this.stack.length >> 1;
4894
4918
  let maxKeep = Math.min(depth, marks.length);
4895
4919
  while (keep < maxKeep &&
@@ -4905,8 +4929,10 @@ class ViewTreeUpdater {
4905
4929
  }
4906
4930
  while (depth < marks.length) {
4907
4931
  this.stack.push(this.top, this.index + 1);
4908
- let found = -1;
4909
- for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {
4932
+ let found = -1, scanTo = this.top.children.length;
4933
+ if (parentIndex < this.preMatch.index)
4934
+ scanTo = Math.min(this.index + 3, scanTo);
4935
+ for (let i = this.index; i < scanTo; i++) {
4910
4936
  let next = this.top.children[i];
4911
4937
  if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {
4912
4938
  found = i;
@@ -5102,9 +5128,7 @@ class ViewTreeUpdater {
5102
5128
  }
5103
5129
  // Iterate from the end of the fragment and array of descs to find
5104
5130
  // directly matching ones, in order to avoid overeagerly reusing those
5105
- // for other nodes. Returns the fragment index of the first node that
5106
- // is part of the sequence of matched nodes at the end of the
5107
- // fragment.
5131
+ // for other nodes.
5108
5132
  function preMatch(frag, parentDesc) {
5109
5133
  let curDesc = parentDesc, descI = curDesc.children.length;
5110
5134
  let fI = frag.childCount, matched = new Map, matches = [];
@@ -5127,7 +5151,6 @@ function preMatch(frag, parentDesc) {
5127
5151
  break outer;
5128
5152
  }
5129
5153
  else {
5130
- // FIXME
5131
5154
  descI = curDesc.parent.children.indexOf(curDesc);
5132
5155
  curDesc = curDesc.parent;
5133
5156
  }
@@ -6174,6 +6197,7 @@ class InputState {
6174
6197
  this.compositionNodes = [];
6175
6198
  this.compositionEndedAt = -2e8;
6176
6199
  this.compositionID = 1;
6200
+ this.badSafariComposition = false;
6177
6201
  // Set to a composition ID when there are pending changes at compositionend
6178
6202
  this.compositionPendingChanges = 0;
6179
6203
  this.domChangeCount = 0;
@@ -6572,7 +6596,8 @@ editHandlers.compositionstart = editHandlers.compositionupdate = view => {
6572
6596
  let { state } = view, $pos = state.selection.$to;
6573
6597
  if (state.selection instanceof TextSelection &&
6574
6598
  (state.storedMarks ||
6575
- (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {
6599
+ (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)) ||
6600
+ chrome && windows$1 && selectionBeforeUneditable(view))) { // Issue #1500
6576
6601
  // Need to wrap the cursor in mark nodes different from the ones in the DOM context
6577
6602
  view.markCursor = view.state.storedMarks || $pos.marks();
6578
6603
  endComposition(view, true);
@@ -6606,13 +6631,22 @@ editHandlers.compositionstart = editHandlers.compositionupdate = view => {
6606
6631
  }
6607
6632
  scheduleComposeEnd(view, timeoutComposition);
6608
6633
  };
6634
+ function selectionBeforeUneditable(view) {
6635
+ let { focusNode, focusOffset } = view.domSelectionRange();
6636
+ if (!focusNode || focusNode.nodeType != 1 || focusOffset >= focusNode.childNodes.length)
6637
+ return false;
6638
+ let next = focusNode.childNodes[focusOffset];
6639
+ return next.nodeType == 1 && next.contentEditable == "false";
6640
+ }
6609
6641
  editHandlers.compositionend = (view, event) => {
6610
6642
  if (view.composing) {
6611
6643
  view.input.composing = false;
6612
6644
  view.input.compositionEndedAt = event.timeStamp;
6613
6645
  view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;
6614
6646
  view.input.compositionNode = null;
6615
- if (view.input.compositionPendingChanges)
6647
+ if (view.input.badSafariComposition)
6648
+ view.domObserver.forceFlush();
6649
+ else if (view.input.compositionPendingChanges)
6616
6650
  Promise.resolve().then(() => view.domObserver.flush());
6617
6651
  view.input.compositionID++;
6618
6652
  scheduleComposeEnd(view, 20);
@@ -6833,10 +6867,15 @@ handlers.dragend = view => {
6833
6867
  }, 50);
6834
6868
  };
6835
6869
  editHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();
6836
- editHandlers.drop = (view, _event) => {
6837
- let event = _event;
6838
- let dragging = view.dragging;
6839
- view.dragging = null;
6870
+ editHandlers.drop = (view, event) => {
6871
+ try {
6872
+ handleDrop(view, event, view.dragging);
6873
+ }
6874
+ finally {
6875
+ view.dragging = null;
6876
+ }
6877
+ };
6878
+ function handleDrop(view, event, dragging) {
6840
6879
  if (!event.dataTransfer)
6841
6880
  return;
6842
6881
  let eventPos = view.posAtCoords(eventCoords(event));
@@ -6890,7 +6929,7 @@ editHandlers.drop = (view, _event) => {
6890
6929
  }
6891
6930
  view.focus();
6892
6931
  view.dispatch(tr.setMeta("uiEvent", "drop"));
6893
- };
6932
+ }
6894
6933
  handlers.focus = view => {
6895
6934
  view.input.lastFocus = Date.now();
6896
6935
  if (!view.focused) {
@@ -7670,15 +7709,24 @@ class DOMObserver {
7670
7709
  new window.MutationObserver(mutations => {
7671
7710
  for (let i = 0; i < mutations.length; i++)
7672
7711
  this.queue.push(mutations[i]);
7673
- // IE11 will sometimes (on backspacing out a single character
7674
- // text node after a BR node) call the observer callback
7675
- // before actually updating the DOM, which will cause
7676
- // ProseMirror to miss the change (see #930)
7677
7712
  if (ie$1 && ie_version <= 11 && mutations.some(m => m.type == "childList" && m.removedNodes.length ||
7678
- m.type == "characterData" && m.oldValue.length > m.target.nodeValue.length))
7713
+ m.type == "characterData" && m.oldValue.length > m.target.nodeValue.length)) {
7714
+ // IE11 will sometimes (on backspacing out a single character
7715
+ // text node after a BR node) call the observer callback
7716
+ // before actually updating the DOM, which will cause
7717
+ // ProseMirror to miss the change (see #930)
7679
7718
  this.flushSoon();
7680
- else
7719
+ }
7720
+ else if (safari && view.composing && mutations.some(m => m.type == "childList" && m.target.nodeName == "TR")) {
7721
+ // Safari does weird stuff when finishing a composition in a
7722
+ // table cell, which tends to involve inserting inappropriate
7723
+ // nodes in the table row.
7724
+ view.input.badSafariComposition = true;
7725
+ this.flushSoon();
7726
+ }
7727
+ else {
7681
7728
  this.flush();
7729
+ }
7682
7730
  });
7683
7731
  if (useCharData) {
7684
7732
  this.onCharData = e => {
@@ -7798,7 +7846,17 @@ class DOMObserver {
7798
7846
  }
7799
7847
  }
7800
7848
  }
7801
- if (gecko && added.length) {
7849
+ if (added.some(n => n.nodeName == "BR") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {
7850
+ // Browsers sometimes insert a bogus break node if you
7851
+ // backspace out the last bit of text before an inline-flex node (#1552)
7852
+ for (let node of added)
7853
+ if (node.nodeName == "BR" && node.parentNode) {
7854
+ let after = node.nextSibling;
7855
+ if (after && after.nodeType == 1 && after.contentEditable == "false")
7856
+ node.parentNode.removeChild(node);
7857
+ }
7858
+ }
7859
+ else if (gecko && added.length) {
7802
7860
  let brs = added.filter(n => n.nodeName == "BR");
7803
7861
  if (brs.length == 2) {
7804
7862
  let [a, b] = brs;
@@ -7834,6 +7892,10 @@ class DOMObserver {
7834
7892
  view.docView.markDirty(from, to);
7835
7893
  checkCSS(view);
7836
7894
  }
7895
+ if (view.input.badSafariComposition) {
7896
+ view.input.badSafariComposition = false;
7897
+ fixUpBadSafariComposition(view, added);
7898
+ }
7837
7899
  this.handleDOMChange(from, to, typeOver, added);
7838
7900
  if (view.docView && view.docView.dirty)
7839
7901
  view.updateState(view.state);
@@ -7957,6 +8019,37 @@ function blockParent(view, node) {
7957
8019
  }
7958
8020
  return null;
7959
8021
  }
8022
+ // Kludge for a Safari bug where, on ending a composition in an
8023
+ // otherwise empty table cell, it randomly moves the composed text
8024
+ // into the table row around that cell, greatly confusing everything
8025
+ // (#188).
8026
+ function fixUpBadSafariComposition(view, addedNodes) {
8027
+ var _a;
8028
+ let { focusNode, focusOffset } = view.domSelectionRange();
8029
+ for (let node of addedNodes) {
8030
+ if (((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName) == "TR") {
8031
+ let nextCell = node.nextSibling;
8032
+ while (nextCell && (nextCell.nodeName != "TD" && nextCell.nodeName != "TH"))
8033
+ nextCell = nextCell.nextSibling;
8034
+ if (nextCell) {
8035
+ let parent = nextCell;
8036
+ for (;;) {
8037
+ let first = parent.firstChild;
8038
+ if (!first || first.nodeType != 1 || first.contentEditable == "false" ||
8039
+ /^(BR|IMG)$/.test(first.nodeName))
8040
+ break;
8041
+ parent = first;
8042
+ }
8043
+ parent.insertBefore(node, parent.firstChild);
8044
+ if (focusNode == node)
8045
+ view.domSelection().collapse(node, focusOffset);
8046
+ }
8047
+ else {
8048
+ node.parentNode.removeChild(node);
8049
+ }
8050
+ }
8051
+ }
8052
+ }
7960
8053
 
7961
8054
  // Note that all referencing and parsing is done with the
7962
8055
  // start-of-operation selection and document, since that's the one
@@ -8520,7 +8613,7 @@ class EditorView {
8520
8613
  this.docView.destroy();
8521
8614
  this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);
8522
8615
  }
8523
- if (chromeKludge && !this.trackWrites)
8616
+ if (chromeKludge && (!this.trackWrites || !this.dom.contains(this.trackWrites)))
8524
8617
  forceSelUpdate = true;
8525
8618
  }
8526
8619
  // Work around for an issue where an update arriving right between
@@ -8971,11 +9064,9 @@ const convertToView = (doc, ctx) => {
8971
9064
  const attrsA = a.attrs;
8972
9065
  const attrsB = b.attrs;
8973
9066
  if (attrsA === attrsB) return true;
8974
- /* v8 ignore next -- not currently reachable since all attrs are required @preserve */
8975
9067
  if (!attrsA || !attrsB) return false;
8976
9068
  const keysA = Object.keys(attrsA);
8977
9069
  const keysB = Object.keys(attrsB);
8978
- /* v8 ignore next -- not currently reachable since all attrs are required @preserve */
8979
9070
  if (keysA.length !== keysB.length) return false;
8980
9071
  for (const key of keysA) {
8981
9072
  if (attrsA[key] !== attrsB[key]) return false;
@@ -10347,10 +10438,8 @@ function drawGapCursor(state) {
10347
10438
  function defaultTextblockForMatch(match) {
10348
10439
  for (let i = 0; i < match.edgeCount; i++) {
10349
10440
  const { type } = match.edge(i);
10350
- /* v8 ignore if -- @preserve It's currently not possible to exercise this code in our RTE */
10351
10441
  if (type.isTextblock && !type.hasRequiredAttrs()) return type;
10352
10442
  }
10353
- /* v8 ignore next 1 -- @preserve*/
10354
10443
  throw new Error("No default textblock found.");
10355
10444
  }
10356
10445
 
@@ -11588,7 +11677,6 @@ const sanitizeLinkHref = (url) => {
11588
11677
  RETURN_DOM: true,
11589
11678
  ...domPurifyConfig
11590
11679
  }).querySelector("a");
11591
- /* v8 ignore next -- since href is already validated it's probably always present @preserve */
11592
11680
  return sanitizedAnchor.getAttribute("href") ?? "";
11593
11681
  };
11594
11682
  const sanitizeImageSrc = (url) => {
@@ -12756,7 +12844,7 @@ class RteHardBreakFeatureImpl extends RteFeatureImpl {
12756
12844
  }
12757
12845
  const RteHardBreakFeature = featureFacade(RteHardBreakFeatureImpl);
12758
12846
 
12759
- const mixedFontSize = Symbol("mixedFontSize");
12847
+ const mixedFontSize = /* @__PURE__ */ Symbol("mixedFontSize");
12760
12848
  class RteFontSizePickerFeatureImpl extends RteFeatureImpl {
12761
12849
  constructor(config) {
12762
12850
  super();
@@ -13416,7 +13504,7 @@ function markApplies(doc, ranges, type) {
13416
13504
  }
13417
13505
  return false;
13418
13506
  }
13419
- const mixedColor = Symbol("mixedColor");
13507
+ const mixedColor = /* @__PURE__ */ Symbol("mixedColor");
13420
13508
  class RteTextColorPickerFeatureImpl extends RteFeatureImpl {
13421
13509
  constructor(config) {
13422
13510
  super();
@@ -14312,7 +14400,7 @@ class RteLinkFeatureImpl extends RteFeatureImpl {
14312
14400
  try {
14313
14401
  new URL(url);
14314
14402
  return true;
14315
- } catch (e) {
14403
+ } catch {
14316
14404
  return false;
14317
14405
  }
14318
14406
  };
@@ -14651,7 +14739,6 @@ class RteInlineImageFeatureImpl extends RteFeatureImpl {
14651
14739
  new Plugin({
14652
14740
  props: {
14653
14741
  nodeViews: {
14654
- // eslint-disable-next-line @typescript-eslint/naming-convention
14655
14742
  inlineImage: (node, view, getPos) => new InlineImageView(node, view, getPos, this.config)
14656
14743
  }
14657
14744
  },
@@ -15322,7 +15409,6 @@ class RteSuggestFeatureImpl extends RteFeatureImpl {
15322
15409
  loadingDecoration: loadingDecoration(false)
15323
15410
  };
15324
15411
  case "navigate": {
15325
- /* v8 ignore next 3 -- defensive: navigate is only dispatched after results are loaded @preserve */
15326
15412
  if (!prevState.suggestions?.items.length) {
15327
15413
  return prevState;
15328
15414
  }
@@ -15520,7 +15606,6 @@ class RteSuggestFeatureImpl extends RteFeatureImpl {
15520
15606
  return false;
15521
15607
  }
15522
15608
  const suggestion = suggestState.suggestions.items[suggestState.suggestions.selectedIndex];
15523
- /* v8 ignore next 3 -- defensive: view is always passed by keymap @preserve */
15524
15609
  if (view) {
15525
15610
  this.selectSuggestion(view, suggestState, suggestion);
15526
15611
  }