@hkyhy/marsun-components-core 0.1.89 → 0.1.99

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 (299) hide show
  1. package/README.md +5 -4
  2. package/dist/components/Audit/AuditLogList.d.ts +27 -0
  3. package/dist/components/Audit/AuditLogList.js +272 -0
  4. package/dist/components/Audit/AuditLogList.js.map +1 -0
  5. package/dist/components/Audit/formatAuditCurl.d.ts +27 -0
  6. package/dist/components/Audit/formatAuditCurl.js +115 -0
  7. package/dist/components/Audit/formatAuditCurl.js.map +1 -0
  8. package/dist/components/Audit/formatAuditJson.d.ts +15 -0
  9. package/dist/components/Audit/formatAuditJson.js +135 -0
  10. package/dist/components/Audit/formatAuditJson.js.map +1 -0
  11. package/dist/components/Audit/index.d.ts +3 -0
  12. package/dist/components/Audit/style.module.scss.js +30 -0
  13. package/dist/components/Audit/style.module.scss.js.map +1 -0
  14. package/dist/components/Audit/types.d.ts +39 -0
  15. package/dist/components/Disposition/AlertDispositionPanel/LevelLegend.d.ts +13 -0
  16. package/dist/components/Disposition/AlertDispositionPanel/LevelLegend.js +36 -0
  17. package/dist/components/Disposition/AlertDispositionPanel/LevelLegend.js.map +1 -0
  18. package/dist/components/Disposition/AlertDispositionPanel/index.d.ts +21 -0
  19. package/dist/components/Disposition/AlertDispositionPanel/index.js +80 -0
  20. package/dist/components/Disposition/AlertDispositionPanel/index.js.map +1 -0
  21. package/dist/components/Disposition/AlertDispositionPanel/levelLegend.module.scss.js +10 -0
  22. package/dist/components/Disposition/AlertDispositionPanel/levelLegend.module.scss.js.map +1 -0
  23. package/dist/components/Disposition/AlertDispositionPanel/style.module.scss.js +11 -0
  24. package/dist/components/Disposition/AlertDispositionPanel/types.d.ts +51 -0
  25. package/dist/components/Disposition/AlertDispositionPanel/types.js +26 -0
  26. package/dist/components/Disposition/AlertDispositionPanel/types.js.map +1 -0
  27. package/dist/components/Disposition/DispositionBar/index.js.map +1 -0
  28. package/dist/components/Disposition/DispositionBar/style.module.scss.js.map +1 -0
  29. package/dist/components/Disposition/index.d.ts +4 -0
  30. package/dist/components/Editor/RichTextEditor/RichTextEditor.d.ts +24 -0
  31. package/dist/components/Editor/RichTextEditor/RichTextEditor.js +93 -0
  32. package/dist/components/Editor/RichTextEditor/RichTextEditor.js.map +1 -0
  33. package/dist/components/Editor/RichTextEditor/index.d.ts +2 -0
  34. package/dist/components/Editor/RichTextEditor/style.module.scss.js +11 -0
  35. package/dist/components/Editor/RichTextEditor/style.module.scss.js.map +1 -0
  36. package/dist/components/Editor/VariablePicker.d.ts +19 -0
  37. package/dist/components/Editor/VariablePicker.js +55 -0
  38. package/dist/components/Editor/VariablePicker.js.map +1 -0
  39. package/dist/components/Editor/index.d.ts +7 -0
  40. package/dist/components/Editor/index.js +21 -0
  41. package/dist/components/Editor/index.js.map +1 -0
  42. package/dist/components/Editor/msgVarTokenPlugin.d.ts +13 -0
  43. package/dist/components/Editor/msgVarTokenPlugin.js +94 -0
  44. package/dist/components/Editor/msgVarTokenPlugin.js.map +1 -0
  45. package/dist/components/Editor/variableMention.d.ts +37 -0
  46. package/dist/components/Editor/variableMention.js +64 -0
  47. package/dist/components/Editor/variableMention.js.map +1 -0
  48. package/dist/components/FormInfo/RichTextField/index.d.ts +21 -0
  49. package/dist/components/FormInfo/RichTextField/index.js +82 -0
  50. package/dist/components/FormInfo/RichTextField/index.js.map +1 -0
  51. package/dist/components/FormInfo/RichTextField/style.module.scss.js +9 -0
  52. package/dist/components/FormInfo/RichTextField/style.module.scss.js.map +1 -0
  53. package/dist/components/FormInfo/VariableMentionInput/index.d.ts +17 -0
  54. package/dist/components/FormInfo/VariableMentionInput/index.js +73 -0
  55. package/dist/components/FormInfo/VariableMentionInput/index.js.map +1 -0
  56. package/dist/components/FormInfo/VariableMentionInput/style.module.scss.js +11 -0
  57. package/dist/components/FormInfo/VariableMentionInput/style.module.scss.js.map +1 -0
  58. package/dist/components/FormInfo/fields.d.ts +5 -0
  59. package/dist/components/FormInfo/fields.js +32 -23
  60. package/dist/components/FormInfo/fields.js.map +1 -1
  61. package/dist/components/FormInfo/index.d.ts +4 -0
  62. package/dist/components/StateBar/StateBar.d.ts +19 -6
  63. package/dist/components/StateBar/StateBar.js +87 -50
  64. package/dist/components/StateBar/StateBar.js.map +1 -1
  65. package/dist/components/StateBar/style.module.scss.js +13 -10
  66. package/dist/components/StateBar/style.module.scss.js.map +1 -1
  67. package/dist/components/Tools/Inbox/InboxBell/InboxBell.d.ts +45 -0
  68. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js +156 -0
  69. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js.map +1 -0
  70. package/dist/components/Tools/Inbox/InboxBell/index.d.ts +2 -0
  71. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js +30 -0
  72. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js.map +1 -0
  73. package/dist/components/Tools/Inbox/index.d.ts +2 -0
  74. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.d.ts +8 -0
  75. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js +56 -0
  76. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js.map +1 -0
  77. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.d.ts +8 -0
  78. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +216 -0
  79. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -0
  80. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.d.ts +26 -0
  81. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js +190 -0
  82. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js.map +1 -0
  83. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +3 -0
  84. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js +12 -0
  85. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js.map +1 -0
  86. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +76 -0
  87. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js +26 -0
  88. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -0
  89. package/dist/components/Tools/MessageCenter/index.d.ts +3 -0
  90. package/dist/components/Tools/MessageCenter/utils/templateCode.d.ts +8 -0
  91. package/dist/components/Tools/MessageCenter/utils/templateCode.js +25 -0
  92. package/dist/components/Tools/MessageCenter/utils/templateCode.js.map +1 -0
  93. package/dist/components/Tools/index.d.ts +5 -0
  94. package/dist/components/index.d.ts +5 -2
  95. package/dist/editor.d.ts +5 -0
  96. package/dist/editor.js +21 -0
  97. package/dist/editor.js.map +1 -0
  98. package/dist/form-info.js +33 -29
  99. package/dist/form-info.js.map +1 -1
  100. package/dist/index.d.ts +7 -2
  101. package/dist/index.js +799 -759
  102. package/dist/index.js.map +1 -1
  103. package/dist/marsun-components-core.css +4 -1
  104. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +301 -0
  105. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js.map +1 -0
  106. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +1256 -0
  107. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js.map +1 -0
  108. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js +2107 -0
  109. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js.map +1 -0
  110. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +259 -0
  111. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js.map +1 -0
  112. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +23990 -0
  113. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js.map +1 -0
  114. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +249 -0
  115. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js.map +1 -0
  116. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +47 -0
  117. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js.map +1 -0
  118. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js +100 -0
  119. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js.map +1 -0
  120. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +31 -0
  121. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js.map +1 -0
  122. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js +194 -0
  123. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js.map +1 -0
  124. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js +2042 -0
  125. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js.map +1 -0
  126. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +9 -0
  127. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js.map +1 -0
  128. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +167 -0
  129. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js.map +1 -0
  130. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js +471 -0
  131. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js.map +1 -0
  132. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +139 -0
  133. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js.map +1 -0
  134. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +755 -0
  135. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js.map +1 -0
  136. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +7838 -0
  137. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js.map +1 -0
  138. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js +422 -0
  139. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js.map +1 -0
  140. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js +33 -0
  141. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js.map +1 -0
  142. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js +47 -0
  143. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js.map +1 -0
  144. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js +156 -0
  145. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js.map +1 -0
  146. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +313 -0
  147. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js.map +1 -0
  148. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +2942 -0
  149. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js.map +1 -0
  150. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +892 -0
  151. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js.map +1 -0
  152. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +1047 -0
  153. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js.map +1 -0
  154. package/dist/node_modules/color-parse/node_modules/color-name/index.js +153 -0
  155. package/dist/node_modules/color-parse/node_modules/color-name/index.js.map +1 -0
  156. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js +7 -0
  157. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js.map +1 -0
  158. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +7 -0
  159. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +1 -0
  160. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js +7 -0
  161. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js.map +1 -0
  162. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +9 -0
  163. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js.map +1 -0
  164. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +7 -0
  165. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +1 -0
  166. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js +7 -0
  167. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +1 -0
  168. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +16 -0
  169. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js.map +1 -0
  170. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +15 -0
  171. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js.map +1 -0
  172. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js +9 -0
  173. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js.map +1 -0
  174. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +8 -0
  175. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +1 -0
  176. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js +30 -0
  177. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +1 -0
  178. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js +8 -0
  179. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js.map +1 -0
  180. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js +17 -0
  181. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js.map +1 -0
  182. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js +13 -0
  183. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js.map +1 -0
  184. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js +17 -0
  185. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js.map +1 -0
  186. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js +102 -0
  187. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js.map +1 -0
  188. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +8 -0
  189. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +1 -0
  190. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +33 -0
  191. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +1 -0
  192. package/dist/node_modules/es-toolkit/dist/compat/object/get.js +39 -0
  193. package/dist/node_modules/es-toolkit/dist/compat/object/get.js.map +1 -0
  194. package/dist/node_modules/es-toolkit/dist/compat/object/has.js +21 -0
  195. package/dist/node_modules/es-toolkit/dist/compat/object/has.js.map +1 -0
  196. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js +33 -0
  197. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js.map +1 -0
  198. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js +10 -0
  199. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js.map +1 -0
  200. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js +9 -0
  201. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js.map +1 -0
  202. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js +53 -0
  203. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +1 -0
  204. package/dist/node_modules/es-toolkit/dist/compat/object/property.js +10 -0
  205. package/dist/node_modules/es-toolkit/dist/compat/object/property.js.map +1 -0
  206. package/dist/node_modules/es-toolkit/dist/compat/object/set.js +9 -0
  207. package/dist/node_modules/es-toolkit/dist/compat/object/set.js.map +1 -0
  208. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js +31 -0
  209. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js.map +1 -0
  210. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +8 -0
  211. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +1 -0
  212. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js +7 -0
  213. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +1 -0
  214. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +8 -0
  215. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +1 -0
  216. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +9 -0
  217. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +1 -0
  218. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js +9 -0
  219. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js.map +1 -0
  220. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +15 -0
  221. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js.map +1 -0
  222. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +7 -0
  223. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +1 -0
  224. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +9 -0
  225. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js.map +1 -0
  226. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +81 -0
  227. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js.map +1 -0
  228. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js +7 -0
  229. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js.map +1 -0
  230. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +7 -0
  231. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +1 -0
  232. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +16 -0
  233. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +1 -0
  234. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js +7 -0
  235. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js.map +1 -0
  236. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +7 -0
  237. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js.map +1 -0
  238. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +8 -0
  239. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +1 -0
  240. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js +9 -0
  241. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js.map +1 -0
  242. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +23 -0
  243. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js.map +1 -0
  244. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js +7 -0
  245. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js.map +1 -0
  246. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js +19 -0
  247. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js.map +1 -0
  248. package/dist/node_modules/es-toolkit/dist/compat/util/times.js +11 -0
  249. package/dist/node_modules/es-toolkit/dist/compat/util/times.js.map +1 -0
  250. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js +8 -0
  251. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js.map +1 -0
  252. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js +9 -0
  253. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js.map +1 -0
  254. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js +8 -0
  255. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js.map +1 -0
  256. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js +37 -0
  257. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js.map +1 -0
  258. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js +15 -0
  259. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js.map +1 -0
  260. package/dist/node_modules/es-toolkit/dist/function/after.js +11 -0
  261. package/dist/node_modules/es-toolkit/dist/function/after.js.map +1 -0
  262. package/dist/node_modules/es-toolkit/dist/function/debounce.js +30 -0
  263. package/dist/node_modules/es-toolkit/dist/function/debounce.js.map +1 -0
  264. package/dist/node_modules/es-toolkit/dist/function/identity.js +7 -0
  265. package/dist/node_modules/es-toolkit/dist/function/identity.js.map +1 -0
  266. package/dist/node_modules/es-toolkit/dist/function/noop.js +6 -0
  267. package/dist/node_modules/es-toolkit/dist/function/noop.js.map +1 -0
  268. package/dist/node_modules/es-toolkit/dist/object/clone.js +27 -0
  269. package/dist/node_modules/es-toolkit/dist/object/clone.js.map +1 -0
  270. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +8 -0
  271. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js.map +1 -0
  272. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js +121 -0
  273. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +1 -0
  274. package/dist/node_modules/es-toolkit/dist/object/mapValues.js +12 -0
  275. package/dist/node_modules/es-toolkit/dist/object/mapValues.js.map +1 -0
  276. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js +8 -0
  277. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +1 -0
  278. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js +9 -0
  279. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js.map +1 -0
  280. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js +110 -0
  281. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js.map +1 -0
  282. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js +7 -0
  283. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js.map +1 -0
  284. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js +9 -0
  285. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js.map +1 -0
  286. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js +7 -0
  287. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +1 -0
  288. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js +7 -0
  289. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +1 -0
  290. package/dist/styles/global.css +4 -1
  291. package/dist/utils/copyText.d.ts +4 -0
  292. package/dist/utils/copyText.js +21 -0
  293. package/dist/utils/copyText.js.map +1 -0
  294. package/package.json +9 -1
  295. package/dist/components/DispositionBar/index.js.map +0 -1
  296. /package/dist/components/{DispositionBar → Disposition/AlertDispositionPanel}/style.module.scss.js.map +0 -0
  297. /package/dist/components/{DispositionBar → Disposition/DispositionBar}/index.d.ts +0 -0
  298. /package/dist/components/{DispositionBar → Disposition/DispositionBar}/index.js +0 -0
  299. /package/dist/components/{DispositionBar → Disposition/DispositionBar}/style.module.scss.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js"],"sourcesContent":["/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nimport { cloneDeepWith, isElement, isPlainObject, throttle } from \"es-toolkit/compat\";\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* An abstract watchdog class that handles most of the error handling process and the state of the underlying component.\n*\n* See the {@glink features/watchdog Watchdog feature guide} to learn the rationale behind it and how to use it.\n*\n* @internal\n*/\nvar Watchdog = class {\n\t/**\n\t* An array of crashes saved as an object with the following properties:\n\t*\n\t* * `message`: `String`,\n\t* * `stack`: `String`,\n\t* * `date`: `Number`,\n\t* * `filename`: `String | undefined`,\n\t* * `lineno`: `Number | undefined`,\n\t* * `colno`: `Number | undefined`,\n\t*/\n\tcrashes = [];\n\t/**\n\t* Specifies the state of the item watched by the watchdog. The state can be one of the following values:\n\t*\n\t* * `initializing` &ndash; Before the first initialization, and after crashes, before the item is ready.\n\t* * `ready` &ndash; A state when the user can interact with the item.\n\t* * `crashed` &ndash; A state when an error occurs. It quickly changes to `initializing` or `crashedPermanently`\n\t* depending on how many and how frequent errors have been caught recently.\n\t* * `crashedPermanently` &ndash; A state when the watchdog stops reacting to errors and keeps the item it is watching crashed,\n\t* * `destroyed` &ndash; A state when the item is manually destroyed by the user after calling `watchdog.destroy()`.\n\t*/\n\tstate = \"initializing\";\n\t/**\n\t* @see module:watchdog/watchdog~WatchdogConfig\n\t*/\n\t_crashNumberLimit;\n\t/**\n\t* Returns the result of the `Date.now()` call. It can be overridden in tests to mock time as some popular\n\t* approaches like `sinon.useFakeTimers()` do not work well with error handling.\n\t*/\n\t_now = Date.now;\n\t/**\n\t* @see module:watchdog/watchdog~WatchdogConfig\n\t*/\n\t_minimumNonErrorTimePeriod;\n\t/**\n\t* Checks if the event error comes from the underlying item and restarts the item.\n\t*/\n\t_boundErrorHandler;\n\t/**\n\t* A dictionary of event emitter listeners.\n\t*/\n\t_listeners;\n\t/**\n\t* @param {module:watchdog/watchdog~WatchdogConfig} config The watchdog plugin configuration.\n\t*/\n\tconstructor(config) {\n\t\tthis.crashes = [];\n\t\tthis._crashNumberLimit = typeof config.crashNumberLimit === \"number\" ? config.crashNumberLimit : 3;\n\t\tthis._minimumNonErrorTimePeriod = typeof config.minimumNonErrorTimePeriod === \"number\" ? config.minimumNonErrorTimePeriod : 5e3;\n\t\tthis._boundErrorHandler = (evt) => {\n\t\t\tconst error = \"error\" in evt ? evt.error : evt.reason;\n\t\t\tif (error instanceof Error) this._handleError(error, evt);\n\t\t};\n\t\tthis._listeners = {};\n\t\tif (!this._restart) throw new Error(\"The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. Please, use `EditorWatchdog` if you have used the `Watchdog` class previously.\");\n\t}\n\t/**\n\t* Destroys the watchdog and releases the resources.\n\t*/\n\tdestroy() {\n\t\tthis._stopErrorHandling();\n\t\tthis._listeners = {};\n\t}\n\t/**\n\t* Starts listening to a specific event name by registering a callback that will be executed\n\t* whenever an event with a given name fires.\n\t*\n\t* Note that this method differs from the CKEditor 5's default `EventEmitterMixin` implementation.\n\t*\n\t* @param eventName The event name.\n\t* @param callback A callback which will be added to event listeners.\n\t*/\n\ton(eventName, callback) {\n\t\tif (!this._listeners[eventName]) this._listeners[eventName] = [];\n\t\tthis._listeners[eventName].push(callback);\n\t}\n\t/**\n\t* Stops listening to the specified event name by removing the callback from event listeners.\n\t*\n\t* Note that this method differs from the CKEditor 5's default `EventEmitterMixin` implementation.\n\t*\n\t* @param eventName The event name.\n\t* @param callback A callback which will be removed from event listeners.\n\t*/\n\toff(eventName, callback) {\n\t\tthis._listeners[eventName] = this._listeners[eventName].filter((cb) => cb !== callback);\n\t}\n\t/**\n\t* Fires an event with a given event name and arguments.\n\t*\n\t* Note that this method differs from the CKEditor 5's default `EventEmitterMixin` implementation.\n\t*/\n\t_fire(eventName, ...args) {\n\t\tconst callbacks = this._listeners[eventName] || [];\n\t\tfor (const callback of callbacks) callback.apply(this, [null, ...args]);\n\t}\n\t/**\n\t* Starts error handling by attaching global error handlers.\n\t*/\n\t_startErrorHandling() {\n\t\twindow.addEventListener(\"error\", this._boundErrorHandler);\n\t\twindow.addEventListener(\"unhandledrejection\", this._boundErrorHandler);\n\t}\n\t/**\n\t* Stops error handling by detaching global error handlers.\n\t*/\n\t_stopErrorHandling() {\n\t\twindow.removeEventListener(\"error\", this._boundErrorHandler);\n\t\twindow.removeEventListener(\"unhandledrejection\", this._boundErrorHandler);\n\t}\n\t/**\n\t* Checks if an error comes from the watched item and restarts it.\n\t* It reacts to {@link module:utils/ckeditorerror~CKEditorError `CKEditorError` errors} only.\n\t*\n\t* @fires error\n\t* @param error Error.\n\t* @param evt An error event.\n\t*/\n\t_handleError(error, evt) {\n\t\tif (this._shouldReactToError(error)) {\n\t\t\tthis.crashes.push({\n\t\t\t\tmessage: error.message,\n\t\t\t\tstack: error.stack,\n\t\t\t\tfilename: evt instanceof ErrorEvent ? evt.filename : void 0,\n\t\t\t\tlineno: evt instanceof ErrorEvent ? evt.lineno : void 0,\n\t\t\t\tcolno: evt instanceof ErrorEvent ? evt.colno : void 0,\n\t\t\t\tdate: this._now()\n\t\t\t});\n\t\t\tconst causesRestart = this._shouldRestart();\n\t\t\tthis.state = \"crashed\";\n\t\t\tthis._fire(\"stateChange\");\n\t\t\tthis._fire(\"error\", {\n\t\t\t\terror,\n\t\t\t\tcausesRestart\n\t\t\t});\n\t\t\tif (causesRestart) this._restart();\n\t\t\telse {\n\t\t\t\tthis.state = \"crashedPermanently\";\n\t\t\t\tthis._fire(\"stateChange\");\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Checks whether an error should be handled by the watchdog.\n\t*\n\t* @param error An error that was caught by the error handling process.\n\t*/\n\t_shouldReactToError(error) {\n\t\treturn error.is && error.is(\"CKEditorError\") && error.context !== void 0 && error.context !== null && this.state === \"ready\" && this._isErrorComingFromThisItem(error);\n\t}\n\t/**\n\t* Checks if the watchdog should restart the underlying item.\n\t*/\n\t_shouldRestart() {\n\t\tif (this.crashes.length <= this._crashNumberLimit) return true;\n\t\treturn (this.crashes[this.crashes.length - 1].date - this.crashes[this.crashes.length - 1 - this._crashNumberLimit].date) / this._crashNumberLimit > this._minimumNonErrorTimePeriod;\n\t}\n};\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module watchdog/utils/getsubnodes\n*/\n/**\n* @internal\n*/\nfunction getSubNodes(head, excludedProperties = /* @__PURE__ */ new Set()) {\n\tconst nodes = [head];\n\tconst subNodes = /* @__PURE__ */ new Set();\n\tlet nodeIndex = 0;\n\twhile (nodes.length > nodeIndex) {\n\t\tconst node = nodes[nodeIndex++];\n\t\tif (subNodes.has(node) || !shouldNodeBeIncluded(node) || excludedProperties.has(node)) continue;\n\t\tsubNodes.add(node);\n\t\tif (Symbol.iterator in node) try {\n\t\t\tfor (const n of node) nodes.push(n);\n\t\t} catch {}\n\t\telse for (const key in node) {\n\t\t\tif (key === \"defaultValue\") continue;\n\t\t\tnodes.push(node[key]);\n\t\t}\n\t}\n\treturn subNodes;\n}\nfunction shouldNodeBeIncluded(node) {\n\tconst type = Object.prototype.toString.call(node);\n\tconst typeOfNode = typeof node;\n\treturn !(typeOfNode === \"number\" || typeOfNode === \"boolean\" || typeOfNode === \"string\" || typeOfNode === \"symbol\" || typeOfNode === \"function\" || type === \"[object Date]\" || type === \"[object RegExp]\" || type === \"[object Module]\" || node === void 0 || node === null || node._watchdogExcluded || node instanceof EventTarget || node instanceof Event);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module watchdog/utils/areconnectedthroughproperties\n*/\n/**\n* Traverses both structures to find out whether there is a reference that is shared between both structures.\n*\n* @internal\n*/\nfunction areConnectedThroughProperties(target1, target2, excludedNodes = /* @__PURE__ */ new Set()) {\n\tif (target1 === target2 && isObject(target1)) return true;\n\tconst subNodes1 = getSubNodes(target1, excludedNodes);\n\tconst subNodes2 = getSubNodes(target2, excludedNodes);\n\tfor (const node of subNodes1) if (subNodes2.has(node)) return true;\n\treturn false;\n}\n/* v8 ignore stop -- @preserve */\nfunction isObject(structure) {\n\treturn typeof structure === \"object\" && structure !== null;\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module watchdog/utils/normalizerootsconfig\n*/\n/**\n* Normalizes the editor roots configuration. It ensures that all root configurations are defined in `config.roots`\n* and that they have `initialData` defined.\n*\n* It normalizes a single-root configuration (where `config.root` is used) to a multi-root configuration\n* (where all roots are defined in `config.roots`). This is considered a standard configuration format,\n* so the editor features can always expect roots to be defined in `config.roots`.\n*\n* It also handles legacy configuration options, such as `config.initialData`, `config.placeholder`, and `config.label`.\n*\n* @internal\n*/\nfunction normalizeRootsConfig(sourceElementsOrData, config, defaultRootName) {\n\tconst mainRootConfig = config.root;\n\tconst rootsConfig = config.roots || Object.create(null);\n\tif (defaultRootName && !rootsConfig[defaultRootName]) rootsConfig[defaultRootName] = mainRootConfig || Object.create(null);\n\tconst sourceElementIsPlainObject = isPlainObject$1(sourceElementsOrData);\n\tconst legacyInitialData = getLegacyInitialData(config, sourceElementIsPlainObject, defaultRootName);\n\tconst rootNames = Array.from(/* @__PURE__ */ new Set([\n\t\t...sourceElementIsPlainObject ? Object.keys(sourceElementsOrData) : [],\n\t\t...Object.keys(rootsConfig),\n\t\t...Object.keys(legacyInitialData)\n\t]));\n\tfor (const rootName of rootNames) {\n\t\tconst rootConfig = rootsConfig[rootName] || Object.create(null);\n\t\trootConfig.initialData = \"\";\n\t\trootConfig.placeholder ??= getLegacyPlainConfigValue(config, \"placeholder\", rootName);\n\t\trootConfig.label ??= getLegacyPlainConfigValue(config, \"label\", rootName);\n\t\trootsConfig[rootName] = rootConfig;\n\t}\n\tconfig.roots = rootsConfig;\n}\n/**\n* Type guard to check if the provided value is a plain object.\n*/\nfunction isPlainObject$1(sourceElementsOrData) {\n\treturn !!sourceElementsOrData && typeof sourceElementsOrData == \"object\" && !Array.isArray(sourceElementsOrData) && !isElement$2(sourceElementsOrData);\n}\n/**\n* Retrieve legacy configuration value for `initialData` from the config.\n* Normalize single-root config so returned value is always an object with root names as keys.\n*/\nfunction getLegacyInitialData(config, sourceElementIsObject, defaultRootName) {\n\treturn sourceElementIsObject || !defaultRootName ? config.initialData || Object.create(null) : { [defaultRootName]: config.initialData };\n}\n/**\n* Retrieve legacy configuration value for `placeholder` or `label` from the config for a specific root.\n*/\nfunction getLegacyPlainConfigValue(config, key, rootName) {\n\tconst legacyValue = config[key];\n\tif (legacyValue) return typeof legacyValue == \"string\" ? legacyValue : legacyValue[rootName];\n}\n/**\n* An alias for `isElement` from `es-toolkit/compat` with additional type guard.\n*/\nfunction isElement$2(value) {\n\treturn isElement(value);\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module watchdog/editorwatchdog\n*/\n/**\n* A watchdog for CKEditor 5 editors.\n*\n* See the {@glink features/watchdog Watchdog feature guide} to learn the rationale behind it and\n* how to use it.\n*/\nvar EditorWatchdog = class extends Watchdog {\n\t/**\n\t* The current editor instance.\n\t*/\n\t_editor = null;\n\t/**\n\t* A promise associated with the life cycle of the editor (creation or destruction processes).\n\t*\n\t* It is used to prevent the initialization of the editor if the previous instance has not been destroyed yet,\n\t* and conversely, to prevent the destruction of the editor if it has not been initialized.\n\t*/\n\t_lifecyclePromise = null;\n\t/**\n\t* Throttled save method. The `save()` method is called the specified `saveInterval` after `throttledSave()` is called,\n\t* unless a new action happens in the meantime.\n\t*/\n\t_throttledSave;\n\t/**\n\t* The latest saved editor data represented as a root name -> root data object.\n\t*/\n\t_data;\n\t/**\n\t* The last document version.\n\t*/\n\t_lastDocumentVersion;\n\t/**\n\t* The editor source element or data.\n\t*/\n\t_elementOrData;\n\t/**\n\t* Stores the original DOM element for single-root editors.\n\t*/\n\t_editorAttachTo = null;\n\t/**\n\t* Specifies whether the editor is a single-root editor (e.g. ClassicEditor) or a multi-root editor (e.g. MultiRootEditor).\n\t*/\n\t_isSingleRootEditor = true;\n\t/**\n\t* Specifies whether the editor was created using config-based creator mode (without a source element or data as the first argument).\n\t*\n\t* @internal\n\t*/\n\t_isUsingConfigBasedCreator = false;\n\t/**\n\t* The latest record of the editor editable elements. Used to restart the editor.\n\t*/\n\t_editables = {};\n\t/**\n\t* The editor configuration.\n\t*/\n\t_config;\n\t_excludedProps;\n\t/**\n\t* @param Editor The editor class.\n\t* @param watchdogConfig The watchdog plugin configuration.\n\t*/\n\tconstructor(Editor, watchdogConfig = {}) {\n\t\tsuper(watchdogConfig);\n\t\tthis._throttledSave = throttle(this._save.bind(this), typeof watchdogConfig.saveInterval === \"number\" ? watchdogConfig.saveInterval : 5e3);\n\t\tif (Editor) this._creator = ((elementOrDataOrConfig, config) => {\n\t\t\tif (config === void 0) return Editor.create(elementOrDataOrConfig);\n\t\t\treturn Editor.create(elementOrDataOrConfig, config);\n\t\t});\n\t\tthis._destructor = (editor) => editor.destroy();\n\t}\n\t/**\n\t* The current editor instance.\n\t*/\n\tget editor() {\n\t\treturn this._editor;\n\t}\n\t/**\n\t* @internal\n\t*/\n\tget _item() {\n\t\treturn this._editor;\n\t}\n\t/**\n\t* Sets the function that is responsible for the editor creation.\n\t* It expects a function that should return a promise.\n\t*\n\t* For config-based editor creation:\n\t*\n\t* ```ts\n\t* watchdog.setCreator( config => ClassicEditor.create( config ) );\n\t* ```\n\t*\n\t* For legacy editor creation (with element or data as the first argument):\n\t*\n\t* ```ts\n\t* watchdog.setCreator( ( element, config ) => ClassicEditor.create( element, config ) );\n\t* ```\n\t*/\n\tsetCreator(creator) {\n\t\tthis._creator = creator;\n\t}\n\t/**\n\t* Sets the function that is responsible for the editor destruction.\n\t* Overrides the default destruction function, which destroys only the editor instance.\n\t* It expects a function that should return a promise or `undefined`.\n\t*\n\t* ```ts\n\t* watchdog.setDestructor( editor => {\n\t* \t// Do something before the editor is destroyed.\n\t*\n\t* \treturn editor\n\t* \t\t.destroy()\n\t* \t\t.then( () => {\n\t* \t\t\t// Do something after the editor is destroyed.\n\t* \t\t} );\n\t* } );\n\t* ```\n\t*/\n\tsetDestructor(destructor) {\n\t\tthis._destructor = destructor;\n\t}\n\t/**\n\t* Restarts the editor instance. This method is called whenever an editor error occurs. It fires the `restart` event and changes\n\t* the state to `initializing`.\n\t*\n\t* @fires restart\n\t*/\n\t_restart() {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tthis.state = \"initializing\";\n\t\t\tthis._fire(\"stateChange\");\n\t\t\treturn this._destroy();\n\t\t}).catch((err) => {\n\t\t\tconsole.error(\"An error happened during the editor destroying.\", err);\n\t\t}).then(() => {\n\t\t\tif (this._isUsingConfigBasedCreator) normalizeRootsConfig(this._isSingleRootEditor ? \"\" : {}, this._config, this._isSingleRootEditor ? \"main\" : false);\n\t\t\telse normalizeRootsConfig(this._isSingleRootEditor ? this._editorAttachTo || \"\" : this._editables, this._config, this._isSingleRootEditor ? \"main\" : false);\n\t\t\tconst updatedConfig = {\n\t\t\t\t...this._config,\n\t\t\t\textraPlugins: this._config.extraPlugins || [],\n\t\t\t\t_watchdogInitialData: this._data\n\t\t\t};\n\t\t\tupdatedConfig.extraPlugins.push(EditorWatchdogInitPlugin);\n\t\t\tconst updatedRootsConfig = {};\n\t\t\tfor (const [rootName, rootData] of Object.entries(this._data.roots)) {\n\t\t\t\tconst rootConfig = updatedConfig.roots[rootName] || Object.create(null);\n\t\t\t\trootConfig.initialData = \"\";\n\t\t\t\trootConfig.modelElement = rootData.modelElement;\n\t\t\t\tif (this._isUsingConfigBasedCreator) {\n\t\t\t\t\tif (this._editables[rootName]?.isConnected) rootConfig.element = this._editables[rootName];\n\t\t\t\t\telse if (rootData.isLoaded && !rootConfig.element) Object.assign(rootConfig, getSavedRootEditableOptions(rootData.attributes));\n\t\t\t\t}\n\t\t\t\tif (rootData.isLoaded) rootConfig.lazyLoad = false;\n\t\t\t\telse delete rootConfig.modelAttributes;\n\t\t\t\tupdatedRootsConfig[rootName] = rootConfig;\n\t\t\t}\n\t\t\tupdatedConfig.roots = updatedRootsConfig;\n\t\t\tdelete updatedConfig.initialData;\n\t\t\tdelete updatedConfig.root;\n\t\t\tif (this._isUsingConfigBasedCreator) return this.create(updatedConfig, updatedConfig.context);\n\t\t\tconst elementOrData = this._isSingleRootEditor ? this._editorAttachTo || \"\" : this._editables;\n\t\t\treturn this.create(elementOrData, updatedConfig, updatedConfig.context);\n\t\t}).then(() => {\n\t\t\tthis._fire(\"restart\");\n\t\t});\n\t}\n\tcreate(elementOrDataOrConfig = this._isUsingConfigBasedCreator ? this._config : this._elementOrData, configOrContext = this._isUsingConfigBasedCreator ? void 0 : this._config, context) {\n\t\tconst isUsingConfigBasedCreator = this._detectConfigBasedCreator(elementOrDataOrConfig, configOrContext);\n\t\tconst elementOrData = isUsingConfigBasedCreator ? void 0 : elementOrDataOrConfig;\n\t\tconst config = isUsingConfigBasedCreator ? elementOrDataOrConfig : configOrContext;\n\t\tconst resolvedContext = isUsingConfigBasedCreator ? configOrContext : context;\n\t\tthis._lifecyclePromise = Promise.resolve(this._lifecyclePromise).then(() => {\n\t\t\tsuper._startErrorHandling();\n\t\t\tthis._isUsingConfigBasedCreator = isUsingConfigBasedCreator;\n\t\t\tthis._elementOrData = elementOrData;\n\t\t\tthis._config = this._cloneEditorConfiguration(config || {});\n\t\t\tthis._config.context = resolvedContext;\n\t\t\tif (isUsingConfigBasedCreator) {\n\t\t\t\tthis._editorAttachTo = null;\n\t\t\t\tconst rootsCount = this._config.roots ? Object.keys(this._config.roots).length : 0;\n\t\t\t\tconst legacyInitialData = this._config.initialData;\n\t\t\t\tconst isMultiRootFromLegacy = legacyInitialData && typeof legacyInitialData === \"object\";\n\t\t\t\tthis._isSingleRootEditor = !isMultiRootFromLegacy && rootsCount <= 1;\n\t\t\t} else {\n\t\t\t\tthis._editorAttachTo = isElement$1(elementOrData) ? elementOrData : null;\n\t\t\t\tthis._isSingleRootEditor = isElement$1(elementOrData) || typeof elementOrData == \"string\";\n\t\t\t}\n\t\t\tif (isUsingConfigBasedCreator) return this._creator(this._config);\n\t\t\treturn this._creator(elementOrData, this._config);\n\t\t}).then((editor) => {\n\t\t\tthis._editor = editor;\n\t\t\teditor.model.document.on(\"change:data\", this._throttledSave);\n\t\t\tthis._lastDocumentVersion = editor.model.document.version;\n\t\t\tthis._data = this._getData();\n\t\t\tif (!this._editorAttachTo) this._editables = this._getEditables();\n\t\t\tthis.state = \"ready\";\n\t\t\tthis._fire(\"stateChange\");\n\t\t}).finally(() => {\n\t\t\tthis._lifecyclePromise = null;\n\t\t});\n\t\treturn this._lifecyclePromise;\n\t}\n\t/**\n\t* Destroys the watchdog and the current editor instance. It fires the callback\n\t* registered in {@link #setDestructor `setDestructor()`} and uses it to destroy the editor instance.\n\t* It also sets the state to `destroyed`.\n\t*/\n\tdestroy() {\n\t\tthis._lifecyclePromise = Promise.resolve(this._lifecyclePromise).then(() => {\n\t\t\tthis.state = \"destroyed\";\n\t\t\tthis._fire(\"stateChange\");\n\t\t\tsuper.destroy();\n\t\t\treturn this._destroy();\n\t\t}).finally(() => {\n\t\t\tthis._lifecyclePromise = null;\n\t\t});\n\t\treturn this._lifecyclePromise;\n\t}\n\t_destroy() {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tthis._stopErrorHandling();\n\t\t\tthis._throttledSave.cancel();\n\t\t\tconst editor = this._editor;\n\t\t\tthis._editor = null;\n\t\t\teditor.model.document.off(\"change:data\", this._throttledSave);\n\t\t\treturn this._destructor(editor);\n\t\t});\n\t}\n\t/**\n\t* Saves the editor data, so it can be restored after the crash even if the data cannot be fetched at\n\t* the moment of the crash.\n\t*/\n\t_save() {\n\t\tconst version = this._editor.model.document.version;\n\t\ttry {\n\t\t\tthis._data = this._getData();\n\t\t\tif (!this._editorAttachTo) this._editables = this._getEditables();\n\t\t\tthis._lastDocumentVersion = version;\n\t\t} catch (err) {\n\t\t\tconsole.error(err, \"An error happened during restoring editor data. Editor will be restored from the previously saved data.\");\n\t\t}\n\t}\n\t/**\n\t* @internal\n\t*/\n\t_setExcludedProperties(props) {\n\t\tthis._excludedProps = props;\n\t}\n\t/**\n\t* Gets all data that is required to reinitialize editor instance.\n\t*/\n\t_getData() {\n\t\tconst editor = this._editor;\n\t\tconst roots = editor.model.document.roots.filter((root) => root.isAttached() && root.rootName != \"$graveyard\");\n\t\tconst { plugins } = editor;\n\t\tconst commentsRepository = plugins.has(\"CommentsRepository\") && plugins.get(\"CommentsRepository\");\n\t\tconst trackChanges = plugins.has(\"TrackChanges\") && plugins.get(\"TrackChanges\");\n\t\tconst data = {\n\t\t\troots: {},\n\t\t\tmarkers: {},\n\t\t\tcommentThreads: JSON.stringify([]),\n\t\t\tsuggestions: JSON.stringify([])\n\t\t};\n\t\troots.forEach((root) => {\n\t\t\tdata.roots[root.rootName] = {\n\t\t\t\tcontent: JSON.stringify(Array.from(root.getChildren())),\n\t\t\t\tattributes: JSON.stringify(Array.from(root.getAttributes())),\n\t\t\t\tmodelElement: root.name,\n\t\t\t\tisLoaded: root._isLoaded\n\t\t\t};\n\t\t});\n\t\tfor (const marker of editor.model.markers) {\n\t\t\tif (!marker._affectsData) continue;\n\t\t\tdata.markers[marker.name] = {\n\t\t\t\trangeJSON: marker.getRange().toJSON(),\n\t\t\t\tusingOperation: marker._managedUsingOperations,\n\t\t\t\taffectsData: marker._affectsData\n\t\t\t};\n\t\t}\n\t\tif (commentsRepository) data.commentThreads = JSON.stringify(commentsRepository.getCommentThreads({\n\t\t\ttoJSON: true,\n\t\t\tskipNotAttached: true\n\t\t}));\n\t\tif (trackChanges) data.suggestions = JSON.stringify(trackChanges.getSuggestions({\n\t\t\ttoJSON: true,\n\t\t\tskipNotAttached: true\n\t\t}));\n\t\treturn data;\n\t}\n\t/**\n\t* For each attached model root, returns its HTML editable element (if available).\n\t*/\n\t_getEditables() {\n\t\tconst editables = {};\n\t\tfor (const rootName of this.editor.model.document.getRootNames()) {\n\t\t\tconst editable = this.editor.ui.getEditableElement(rootName);\n\t\t\tif (editable) editables[rootName] = editable;\n\t\t}\n\t\treturn editables;\n\t}\n\t/**\n\t* Traverses the error context and the current editor to find out whether these structures are connected\n\t* to each other via properties.\n\t*\n\t* @internal\n\t*/\n\t_isErrorComingFromThisItem(error) {\n\t\treturn areConnectedThroughProperties(this._editor, error.context, this._excludedProps);\n\t}\n\t/**\n\t* Detects whether the `create()` call was made in config-based creator mode\n\t* (i.e., the first argument is a config object rather than a source element or data).\n\t*/\n\t_detectConfigBasedCreator(elementOrDataOrConfig, configOrContext) {\n\t\tif (typeof elementOrDataOrConfig === \"string\" || isElement$1(elementOrDataOrConfig)) return false;\n\t\tif (configOrContext && typeof configOrContext === \"object\" && !(\"destroy\" in configOrContext) && Object.keys(configOrContext).length > 0) return false;\n\t\tif (elementOrDataOrConfig && typeof elementOrDataOrConfig === \"object\") {\n\t\t\tconst values = Object.values(elementOrDataOrConfig);\n\t\t\tif (values.length > 0 && values.every((v) => typeof v === \"string\" || isElement$1(v))) return false;\n\t\t}\n\t\treturn true;\n\t}\n\t/**\n\t* Clones the editor configuration.\n\t*/\n\t_cloneEditorConfiguration(config) {\n\t\treturn cloneDeepWith(config, (value, key) => {\n\t\t\tif (isElement$1(value)) return value;\n\t\t\tif (key === \"context\") return value;\n\t\t});\n\t}\n};\n/**\n* Internal plugin that is used to stop the default editor initialization and restoring the editor state\n* based on the `editor.config._watchdogInitialData` data.\n*/\nvar EditorWatchdogInitPlugin = class {\n\teditor;\n\t_data;\n\tconstructor(editor) {\n\t\tthis.editor = editor;\n\t\tthis._data = editor.config.get(\"_watchdogInitialData\");\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tthis.editor.data.on(\"init\", (evt) => {\n\t\t\tevt.stop();\n\t\t\tthis.editor.model.enqueueChange({ isUndoable: false }, (writer) => {\n\t\t\t\tthis._restoreCollaborationData();\n\t\t\t\tthis._restoreEditorData(writer);\n\t\t\t});\n\t\t\tthis.editor.data.fire(\"ready\");\n\t\t}, { priority: 999 });\n\t}\n\t/**\n\t* Creates a model node (element or text) based on provided JSON.\n\t*/\n\t_createNode(writer, jsonNode) {\n\t\tif (\"name\" in jsonNode) {\n\t\t\tconst element = writer.createElement(jsonNode.name, jsonNode.attributes);\n\t\t\tif (jsonNode.children) for (const child of jsonNode.children) element._appendChild(this._createNode(writer, child));\n\t\t\treturn element;\n\t\t} else return writer.createText(jsonNode.data, jsonNode.attributes);\n\t}\n\t/**\n\t* Restores the editor by setting the document data, roots attributes and markers.\n\t*/\n\t_restoreEditorData(writer) {\n\t\tconst editor = this.editor;\n\t\tObject.entries(this._data.roots).forEach(([rootName, { content, attributes }]) => {\n\t\t\tconst parsedNodes = JSON.parse(content);\n\t\t\tconst parsedAttributes = JSON.parse(attributes);\n\t\t\tconst rootElement = editor.model.document.getRoot(rootName);\n\t\t\tfor (const [key, value] of parsedAttributes) writer.setAttribute(key, value, rootElement);\n\t\t\tfor (const child of parsedNodes) {\n\t\t\t\tconst node = this._createNode(writer, child);\n\t\t\t\twriter.insert(node, rootElement, \"end\");\n\t\t\t}\n\t\t});\n\t\tObject.entries(this._data.markers).forEach(([markerName, markerOptions]) => {\n\t\t\tconst { document } = editor.model;\n\t\t\tconst { rangeJSON: { start, end }, ...options } = markerOptions;\n\t\t\tconst root = document.getRoot(start.root);\n\t\t\tconst startPosition = writer.createPositionFromPath(root, start.path, start.stickiness);\n\t\t\tconst endPosition = writer.createPositionFromPath(root, end.path, end.stickiness);\n\t\t\tconst range = writer.createRange(startPosition, endPosition);\n\t\t\twriter.addMarker(markerName, {\n\t\t\t\trange,\n\t\t\t\t...options\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Restores the editor collaboration data - comment threads and suggestions.\n\t*/\n\t_restoreCollaborationData() {\n\t\tconst parsedCommentThreads = JSON.parse(this._data.commentThreads);\n\t\tconst parsedSuggestions = JSON.parse(this._data.suggestions);\n\t\tif (this.editor.plugins.has(\"CommentsRepository\")) {\n\t\t\tconst commentsRepository = this.editor.plugins.get(\"CommentsRepository\");\n\t\t\tfor (const commentThread of commentsRepository.getCommentThreads()) commentsRepository._removeCommentThread({ threadId: commentThread.id });\n\t\t\tparsedCommentThreads.forEach((commentThreadData) => {\n\t\t\t\tconst channelId = this.editor.config.get(\"collaboration.channelId\");\n\t\t\t\tthis.editor.plugins.get(\"CommentsRepository\").addCommentThread({\n\t\t\t\t\tchannelId,\n\t\t\t\t\t...commentThreadData\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tif (this.editor.plugins.has(\"TrackChangesEditing\")) {\n\t\t\tconst trackChangesEditing = this.editor.plugins.get(\"TrackChangesEditing\");\n\t\t\tfor (const suggestion of trackChangesEditing.getSuggestions()) trackChangesEditing._removeSuggestion(suggestion);\n\t\t\tparsedSuggestions.forEach((suggestionData) => {\n\t\t\t\ttrackChangesEditing.addSuggestionData(suggestionData);\n\t\t\t});\n\t\t}\n\t}\n};\n/**\n* An alias for `isElement` from `es-toolkit/compat` with additional type guard.\n*/\nfunction isElement$1(value) {\n\treturn isElement(value);\n}\n/**\n* Reads the editable options persisted in the root's `$rootEditableOptions` model attribute and returns them as a\n* {@link module:core/editor/editorconfig~RootConfig} partial. It is used to recreate a detached editable when the\n* editor is restarted in the config-based creator mode.\n*\n* Only the known `placeholder`, `label` and `element` fields with a value are copied; their values are validated and\n* normalized later by the editor constructor. Fields are returned only when set, so merging the result does not\n* overwrite the existing restart config with `undefined`. A missing or tampered (non-object) value is dropped so it\n* cannot break the restart.\n*\n* @param serializedAttributes The root attributes serialized as a JSON string of `[ key, value ]` entries.\n*/\nfunction getSavedRootEditableOptions(serializedAttributes) {\n\tconst { $rootEditableOptions: options } = Object.fromEntries(JSON.parse(serializedAttributes));\n\tif (!options || typeof options != \"object\") return {};\n\treturn {\n\t\t...options.placeholder && { placeholder: options.placeholder },\n\t\t...options.label && { label: options.label },\n\t\t...options.element && { element: options.element }\n\t};\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* @module watchdog/contextwatchdog\n*/\nconst mainQueueId = Symbol(\"MainQueueId\");\n/**\n* A watchdog for the {@link module:core/context~Context} class.\n*\n* See the {@glink features/watchdog Watchdog feature guide} to learn the rationale behind it and\n* how to use it.\n*/\nvar ContextWatchdog = class extends Watchdog {\n\t/**\n\t* A map of internal watchdogs for added items.\n\t*/\n\t_watchdogs = /* @__PURE__ */ new Map();\n\t/**\n\t* The watchdog configuration.\n\t*/\n\t_watchdogConfig;\n\t/**\n\t* The current context instance.\n\t*/\n\t_context = null;\n\t/**\n\t* Context properties (nodes/references) that are gathered during the initial context creation\n\t* and are used to distinguish the origin of an error.\n\t*/\n\t_contextProps = /* @__PURE__ */ new Set();\n\t/**\n\t* An action queue, which is used to handle async functions queuing.\n\t*/\n\t_actionQueues = new ActionQueues();\n\t/**\n\t* The configuration for the {@link module:core/context~Context}.\n\t*/\n\t_contextConfig;\n\t/**\n\t* The watched item.\n\t*/\n\t_item;\n\t/**\n\t* The context watchdog class constructor.\n\t*\n\t* ```ts\n\t* const watchdog = new ContextWatchdog( Context );\n\t*\n\t* await watchdog.create( contextConfiguration );\n\t*\n\t* await watchdog.add( item );\n\t* ```\n\t*\n\t* See the {@glink features/watchdog Watchdog feature guide} to learn more how to use this feature.\n\t*\n\t* @param Context The {@link module:core/context~Context} class.\n\t* @param watchdogConfig The watchdog configuration.\n\t*/\n\tconstructor(Context, watchdogConfig = {}) {\n\t\tsuper(watchdogConfig);\n\t\tthis._watchdogConfig = watchdogConfig;\n\t\tthis._creator = (contextConfig) => Context.create(contextConfig);\n\t\tthis._destructor = (context) => context.destroy();\n\t\tthis._actionQueues.onEmpty(() => {\n\t\t\tif (this.state === \"initializing\") {\n\t\t\t\tthis.state = \"ready\";\n\t\t\t\tthis._fire(\"stateChange\");\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Sets the function that is responsible for the context creation.\n\t* It expects a function that should return a promise (or `undefined`).\n\t*\n\t* ```ts\n\t* watchdog.setCreator( config => Context.create( config ) );\n\t* ```\n\t*/\n\tsetCreator(creator) {\n\t\tthis._creator = creator;\n\t}\n\t/**\n\t* Sets the function that is responsible for the context destruction.\n\t* Overrides the default destruction function, which destroys only the context instance.\n\t* It expects a function that should return a promise (or `undefined`).\n\t*\n\t* ```ts\n\t* watchdog.setDestructor( context => {\n\t* \t// Do something before the context is destroyed.\n\t*\n\t* \treturn context\n\t* \t\t.destroy()\n\t* \t\t.then( () => {\n\t* \t\t\t// Do something after the context is destroyed.\n\t* \t\t} );\n\t* } );\n\t* ```\n\t*/\n\tsetDestructor(destructor) {\n\t\tthis._destructor = destructor;\n\t}\n\t/**\n\t* The context instance. Keep in mind that this property might be changed when the context watchdog restarts,\n\t* so do not keep this instance internally. Always operate on the `ContextWatchdog#context` property.\n\t*/\n\tget context() {\n\t\treturn this._context;\n\t}\n\t/**\n\t* Initializes the context watchdog. Once it is created, the watchdog takes care about\n\t* recreating the context and the provided items, and starts the error handling mechanism.\n\t*\n\t* ```ts\n\t* await watchdog.create( {\n\t* \tplugins: []\n\t* } );\n\t* ```\n\t*\n\t* @param contextConfig The context configuration. See {@link module:core/context~Context}.\n\t*/\n\tcreate(contextConfig = {}) {\n\t\treturn this._actionQueues.enqueue(mainQueueId, () => {\n\t\t\tthis._contextConfig = contextConfig;\n\t\t\treturn this._create();\n\t\t});\n\t}\n\t/**\n\t* Returns an item instance with the given `itemId`.\n\t*\n\t* ```ts\n\t* const editor1 = watchdog.getItem( 'editor1' );\n\t* ```\n\t*\n\t* @param itemId The item ID.\n\t* @returns The item instance or `undefined` if an item with a given ID has not been found.\n\t*/\n\tgetItem(itemId) {\n\t\treturn this._getWatchdog(itemId)._item;\n\t}\n\t/**\n\t* Gets the state of the given item. See {@link #state} for a list of available states.\n\t*\n\t* ```ts\n\t* const editor1State = watchdog.getItemState( 'editor1' );\n\t* ```\n\t*\n\t* @param itemId Item ID.\n\t* @returns The state of the item.\n\t*/\n\tgetItemState(itemId) {\n\t\treturn this._getWatchdog(itemId).state;\n\t}\n\t/**\n\t* Adds items to the watchdog. Once created, instances of these items will be available using the {@link #getItem} method.\n\t*\n\t* Items can be passed together as an array of objects:\n\t*\n\t* ```ts\n\t* await watchdog.add( [ {\n\t* \tid: 'editor1',\n\t* \ttype: 'editor',\n\t* \tconfig: {\n\t* \t\tattachTo: document.querySelector( '#editor' ),\n\t* \t\tplugins: [ Essentials, Paragraph, Bold, Italic ],\n\t* \t\ttoolbar: [ 'bold', 'italic', 'alignment' ]\n\t* \t},\n\t* \tcreator: config => ClassicEditor.create( config )\n\t* } ] );\n\t* ```\n\t*\n\t* Or one by one as objects:\n\t*\n\t* ```ts\n\t* await watchdog.add( {\n\t* \tid: 'editor1',\n\t* \ttype: 'editor',\n\t* \tconfig: {\n\t* \t\tattachTo: document.querySelector( '#editor' ),\n\t* \t\tplugins: [ Essentials, Paragraph, Bold, Italic ],\n\t* \t\ttoolbar: [ 'bold', 'italic', 'alignment' ]\n\t* \t},\n\t* \tcreator: config => ClassicEditor.create( config )\n\t* } );\n\t* ```\n\t*\n\t* Then an instance can be retrieved using the {@link #getItem} method:\n\t*\n\t* ```ts\n\t* const editor1 = watchdog.getItem( 'editor1' );\n\t* ```\n\t*\n\t* Note that this method can be called multiple times, but for performance reasons it is better\n\t* to pass all items together.\n\t*\n\t* @param itemConfigurationOrItemConfigurations An item configuration object or an array of item configurations.\n\t*/\n\tadd(itemConfigurationOrItemConfigurations) {\n\t\tconst itemConfigurations = toArray(itemConfigurationOrItemConfigurations);\n\t\treturn Promise.all(itemConfigurations.map((item) => {\n\t\t\treturn this._actionQueues.enqueue(item.id, () => {\n\t\t\t\tif (this.state === \"destroyed\") throw new Error(\"Cannot add items to destroyed watchdog.\");\n\t\t\t\tif (!this._context) throw new Error(\"Context was not created yet. You should call the `ContextWatchdog#create()` method first.\");\n\t\t\t\tlet watchdog;\n\t\t\t\tif (this._watchdogs.has(item.id)) throw new Error(`Item with the given id is already added: '${item.id}'.`);\n\t\t\t\tif (item.type === \"editor\") {\n\t\t\t\t\twatchdog = new EditorWatchdog(null, this._watchdogConfig);\n\t\t\t\t\twatchdog.setCreator(item.creator);\n\t\t\t\t\twatchdog._setExcludedProperties(this._contextProps);\n\t\t\t\t\tif (item.destructor) watchdog.setDestructor(item.destructor);\n\t\t\t\t\tthis._watchdogs.set(item.id, watchdog);\n\t\t\t\t\twatchdog.on(\"error\", (evt, { error, causesRestart }) => {\n\t\t\t\t\t\tthis._fire(\"itemError\", {\n\t\t\t\t\t\t\titemId: item.id,\n\t\t\t\t\t\t\terror\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!causesRestart) return;\n\t\t\t\t\t\tthis._actionQueues.enqueue(item.id, () => new Promise((res) => {\n\t\t\t\t\t\t\tconst rethrowRestartEventOnce = () => {\n\t\t\t\t\t\t\t\twatchdog.off(\"restart\", rethrowRestartEventOnce);\n\t\t\t\t\t\t\t\tthis._fire(\"itemRestart\", { itemId: item.id });\n\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\twatchdog.on(\"restart\", rethrowRestartEventOnce);\n\t\t\t\t\t\t}));\n\t\t\t\t\t});\n\t\t\t\t\tif (item.sourceElementOrData !== void 0) return watchdog.create(item.sourceElementOrData, item.config, this._context);\n\t\t\t\t\treturn watchdog.create(item.config, this._context);\n\t\t\t\t} else throw new Error(`Not supported item type: '${item.type}'.`);\n\t\t\t});\n\t\t}));\n\t}\n\t/**\n\t* Removes and destroys item(s) with given ID(s).\n\t*\n\t* ```ts\n\t* await watchdog.remove( 'editor1' );\n\t* ```\n\t*\n\t* Or\n\t*\n\t* ```ts\n\t* await watchdog.remove( [ 'editor1', 'editor2' ] );\n\t* ```\n\t*\n\t* @param itemIdOrItemIds Item ID or an array of item IDs.\n\t*/\n\tremove(itemIdOrItemIds) {\n\t\tconst itemIds = toArray(itemIdOrItemIds);\n\t\treturn Promise.all(itemIds.map((itemId) => {\n\t\t\treturn this._actionQueues.enqueue(itemId, () => {\n\t\t\t\tconst watchdog = this._getWatchdog(itemId);\n\t\t\t\tthis._watchdogs.delete(itemId);\n\t\t\t\treturn watchdog.destroy();\n\t\t\t});\n\t\t}));\n\t}\n\t/**\n\t* Destroys the context watchdog and all added items.\n\t* Once the context watchdog is destroyed, new items cannot be added.\n\t*\n\t* ```ts\n\t* await watchdog.destroy();\n\t* ```\n\t*/\n\tdestroy() {\n\t\treturn this._actionQueues.enqueue(mainQueueId, () => {\n\t\t\tthis.state = \"destroyed\";\n\t\t\tthis._fire(\"stateChange\");\n\t\t\tsuper.destroy();\n\t\t\treturn this._destroy();\n\t\t});\n\t}\n\t/**\n\t* Restarts the context watchdog.\n\t*/\n\t_restart() {\n\t\treturn this._actionQueues.enqueue(mainQueueId, () => {\n\t\t\tthis.state = \"initializing\";\n\t\t\tthis._fire(\"stateChange\");\n\t\t\treturn this._destroy().catch((err) => {\n\t\t\t\tconsole.error(\"An error happened during destroying the context or items.\", err);\n\t\t\t}).then(() => this._create()).then(() => this._fire(\"restart\"));\n\t\t});\n\t}\n\t/**\n\t* Initializes the context watchdog.\n\t*/\n\t_create() {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tthis._startErrorHandling();\n\t\t\treturn this._creator(this._contextConfig);\n\t\t}).then((context) => {\n\t\t\tthis._context = context;\n\t\t\tthis._contextProps = getSubNodes(this._context);\n\t\t\treturn Promise.all(Array.from(this._watchdogs.values()).map((watchdog) => {\n\t\t\t\twatchdog._setExcludedProperties(this._contextProps);\n\t\t\t\tif (watchdog._isUsingConfigBasedCreator) return watchdog.create(void 0, this._context);\n\t\t\t\treturn watchdog.create(void 0, void 0, this._context);\n\t\t\t}));\n\t\t});\n\t}\n\t/**\n\t* Destroys the context instance and all added items.\n\t*/\n\t_destroy() {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tthis._stopErrorHandling();\n\t\t\tconst context = this._context;\n\t\t\tthis._context = null;\n\t\t\tthis._contextProps = /* @__PURE__ */ new Set();\n\t\t\treturn Promise.all(Array.from(this._watchdogs.values()).map((watchdog) => watchdog.destroy())).then(() => this._destructor(context));\n\t\t});\n\t}\n\t/**\n\t* Returns the watchdog for a given item ID.\n\t*\n\t* @param itemId Item ID.\n\t*/\n\t_getWatchdog(itemId) {\n\t\tconst watchdog = this._watchdogs.get(itemId);\n\t\tif (!watchdog) throw new Error(`Item with the given id was not registered: ${itemId}.`);\n\t\treturn watchdog;\n\t}\n\t/**\n\t* Checks whether an error comes from the context instance and not from the item instances.\n\t*\n\t* @internal\n\t*/\n\t_isErrorComingFromThisItem(error) {\n\t\tfor (const watchdog of this._watchdogs.values()) if (watchdog._isErrorComingFromThisItem(error)) return false;\n\t\treturn areConnectedThroughProperties(this._context, error.context);\n\t}\n};\n/**\n* Manager of action queues that allows queuing async functions.\n*/\nvar ActionQueues = class {\n\t_onEmptyCallbacks = [];\n\t_queues = /* @__PURE__ */ new Map();\n\t_activeActions = 0;\n\t/**\n\t* Used to register callbacks that will be run when the queue becomes empty.\n\t*\n\t* @param onEmptyCallback A callback that will be run whenever the queue becomes empty.\n\t*/\n\tonEmpty(onEmptyCallback) {\n\t\tthis._onEmptyCallbacks.push(onEmptyCallback);\n\t}\n\t/**\n\t* It adds asynchronous actions (functions) to the proper queue and runs them one by one.\n\t*\n\t* @param queueId The action queue ID.\n\t* @param action A function that should be enqueued.\n\t*/\n\tenqueue(queueId, action) {\n\t\tconst isMainAction = queueId === mainQueueId;\n\t\tthis._activeActions++;\n\t\tif (!this._queues.get(queueId)) this._queues.set(queueId, Promise.resolve());\n\t\tconst queueWithAction = (isMainAction ? Promise.all(this._queues.values()) : Promise.all([this._queues.get(mainQueueId), this._queues.get(queueId)])).then(action);\n\t\tconst nonErrorQueue = queueWithAction.catch(() => {});\n\t\tthis._queues.set(queueId, nonErrorQueue);\n\t\treturn queueWithAction.finally(() => {\n\t\t\tthis._activeActions--;\n\t\t\tif (this._queues.get(queueId) === nonErrorQueue && this._activeActions === 0) this._onEmptyCallbacks.forEach((cb) => cb());\n\t\t});\n\t}\n};\n/**\n* Transforms any value to an array. If the provided value is already an array, it is returned unchanged.\n*\n* @param elementOrArray The value to transform to an array.\n* @returns An array created from data.\n*/\nfunction toArray(elementOrArray) {\n\treturn Array.isArray(elementOrArray) ? elementOrArray : [elementOrArray];\n}\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n/**\n* A plugin that records user actions and editor state changes for debugging purposes. It tracks commands execution, model operations,\n* UI interactions, and document events. It just collects data locally, and does not send it anywhere, integrator is responsible\n* for gathering data from this plugin for further processing.\n*\n* **Important! `ActionsRecorder` is an experimental feature, and may become deprecated.**\n*\n* By default, plugin stores latest 1000 action entries. Integrator can register an `onError` callback to collect those entries\n* in case of exception. Integrator should augment this data with application specific data such as page-id or session-id,\n* depending on the application. Augmented data should be processed by the integrator, for example integrator should send it\n* to some data collecting endpoint for later analysis.\n*\n* Example:\n*\n* ```ts\n* \tClassicEditor\n* \t\t.create( {\n* \t\t\tplugins: [ ActionsRecorder, ... ],\n* \t\t\tactionsRecorder: {\n* \t\t\t\tmaxEntries: 1000, // This is the default value and could be adjusted.\n*\n* \t\t\t\tonError( error, entries ) {\n* \t\t\t\t\tconsole.error( 'ActionsRecorder - Error detected:', error );\n* \t\t\t\t\tconsole.warn( 'Actions recorded before error:', entries );\n*\n* \t\t\t\t\tthis.flushEntries();\n*\n* \t\t\t\t\t// Integrator should send and store the entries. The error is already in the last entry in serializable form.\n* \t\t\t\t}\n* \t\t\t}\n* \t\t} )\n* \t\t.then( ... )\n* \t\t.catch( ... );\n* ```\n*\n* Alternatively integrator could continuously collect actions in batches and send them to theirs endpoint for later analysis:\n*\n* ```ts\n* \tClassicEditor\n* \t\t.create( {\n* \t\t\tplugins: [ ActionsRecorder, ... ],\n* \t\t\tactionsRecorder: {\n* \t\t\t\tmaxEntries: 50, // This is the batch size.\n*\n* \t\t\t\tonMaxEntries() {\n* \t\t\t\t\tconst entries = this.getEntries();\n*\n* \t\t\t\t\tthis.flushEntries();\n*\n* \t\t\t\t\tconsole.log( 'ActionsRecorder - Batch of entries:', entries );\n*\n* \t\t\t\t\t// Integrator should send and store the entries.\n* \t\t\t\t},\n*\n* \t\t\t\tonError( error, entries ) {\n* \t\t\t\t\tconsole.error( 'ActionsRecorder - Error detected:', error );\n* \t\t\t\t\tconsole.warn( 'Actions recorded before error:', entries );\n*\n* \t\t\t\t\tthis.flushEntries();\n*\n* \t\t\t\t\t// Integrator should send and store the entries. The error is already in the last entry in serializable form.\n* \t\t\t\t}\n* \t\t\t}\n* \t\t} )\n* \t\t.then( ... )\n* \t\t.catch( ... );\n* ```\n*\n* See {@link module:watchdog/actionsrecorderconfig~ActionsRecorderConfig plugin configuration} for more details.\n*\n*/\nvar ActionsRecorder = class {\n\t/**\n\t* The editor instance.\n\t*/\n\teditor;\n\t/**\n\t* Array storing all recorded action entries with their context and state snapshots.\n\t*/\n\t_entries = [];\n\t/**\n\t* Stack tracking nested action frames to maintain call hierarchy.\n\t*/\n\t_frameStack = [];\n\t/**\n\t* Set of already reported errors used to notify only once for each error (not on every try-catch nested block).\n\t*/\n\t_errors = /* @__PURE__ */ new Set();\n\t/**\n\t* Maximum number of action entries to keep in memory.\n\t*/\n\t_maxEntries;\n\t/**\n\t* Error callback.\n\t*/\n\t_errorCallback;\n\t/**\n\t* Filter function to determine which entries should be stored.\n\t*/\n\t_filterCallback;\n\t/**\n\t* Callback triggered every time count of recorded entries reaches maxEntries.\n\t*/\n\t_maxEntriesCallback;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ActionsRecorder\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor(editor) {\n\t\tthis.editor = editor;\n\t\teditor.config.define(\"actionsRecorder.maxEntries\", 1e3);\n\t\tconst config = editor.config.get(\"actionsRecorder\");\n\t\tthis._maxEntries = config.maxEntries;\n\t\tthis._filterCallback = config.onFilter;\n\t\tthis._errorCallback = config.onError;\n\t\tthis._maxEntriesCallback = config.onMaxEntries || this._maxEntriesDefaultHandler;\n\t\tthis._tapCommands();\n\t\tthis._tapOperationApply();\n\t\tthis._tapModelMethods();\n\t\tthis._tapModelSelection();\n\t\tthis._tapComponentFactory();\n\t\tthis._tapViewDocumentEvents();\n\t}\n\t/**\n\t* Returns all recorded action entries.\n\t*/\n\tgetEntries() {\n\t\treturn this._entries.slice();\n\t}\n\t/**\n\t* Flushes all recorded entries.\n\t*/\n\tflushEntries() {\n\t\tthis._entries = [];\n\t}\n\t/**\n\t* Creates a new action frame and adds it to the recording stack.\n\t*\n\t* @param action The name/type of the action being recorded.\n\t* @param params Optional parameters associated with the event.\n\t* @returns The created call frame object.\n\t*/\n\t_enterFrame(action, params) {\n\t\tconst callFrame = {\n\t\t\ttimeStamp: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t...this._frameStack.length && { parentEntry: this._frameStack.at(-1) },\n\t\t\taction,\n\t\t\tparams: params?.map((param) => serializeValue(param)),\n\t\t\tbefore: this._buildStateSnapshot()\n\t\t};\n\t\tif (!this._filterCallback || this._filterCallback(callFrame, this._entries)) this._entries.push(callFrame);\n\t\tthis._frameStack.push(callFrame);\n\t\treturn callFrame;\n\t}\n\t/**\n\t* Closes an action frame and records its final state and results.\n\t*\n\t* @param callFrame The call frame to close.\n\t* @param result Optional result value from the action.\n\t* @param error Optional error that occurred during the action.\n\t*/\n\t_leaveFrame(callFrame, result, error) {\n\t\tconst topFrame = this._frameStack.pop();\n\t\tif (!topFrame || topFrame !== callFrame) return;\n\t\tif (result !== void 0) topFrame.result = serializeValue(result);\n\t\tif (error) topFrame.error = serializeValue(error);\n\t\ttopFrame.after = this._buildStateSnapshot();\n\t\tif (error) this._callErrorCallback(error);\n\t\tif (this._frameStack.length == 0) this._errors.clear();\n\t\tif (this._entries.length >= this._maxEntries) this._maxEntriesCallback();\n\t}\n\t/**\n\t* Builds a snapshot of the current editor state including document version,\n\t* read-only status, focus state, and model selection.\n\t*\n\t* @returns An object containing the current editor state snapshot.\n\t*/\n\t_buildStateSnapshot() {\n\t\tconst { model, isReadOnly, editing } = this.editor;\n\t\treturn {\n\t\t\tdocumentVersion: model.document.version,\n\t\t\teditorReadOnly: isReadOnly,\n\t\t\teditorFocused: editing.view.document.isFocused,\n\t\t\tmodelSelection: serializeValue(model.document.selection)\n\t\t};\n\t}\n\t/**\n\t* Sets up recording for all editor commands, both existing and future ones.\n\t* Taps into the command execution to track when commands are run.\n\t*/\n\t_tapCommands() {\n\t\tfor (const [commandName, command] of this.editor.commands) this._tapCommand(commandName, command);\n\t\ttapObjectMethod(this.editor.commands, \"add\", { before: (callContext, [commandName, command]) => {\n\t\t\tthis._tapCommand(commandName, command);\n\t\t\treturn false;\n\t\t} });\n\t}\n\t/**\n\t* Sets up recording for model operation applications.\n\t* Tracks when operations are applied to the model document.\n\t*/\n\t_tapOperationApply() {\n\t\ttapObjectMethod(this.editor.model, \"applyOperation\", {\n\t\t\tbefore: (callContext, [operation]) => {\n\t\t\t\tif (operation.baseVersion === null) return false;\n\t\t\t\tcallContext.callFrame = this._enterFrame(\"model.applyOperation\", [operation]);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tafter: (callContext) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame);\n\t\t\t},\n\t\t\terror: (callContext, error) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, void 0, error);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Sets up recording for key model methods like insertContent, insertObject, and deleteContent.\n\t* These methods represent high-level model manipulation operations.\n\t*/\n\t_tapModelMethods() {\n\t\tfor (const methodName of [\n\t\t\t\"insertContent\",\n\t\t\t\"insertObject\",\n\t\t\t\"deleteContent\"\n\t\t]) tapObjectMethod(this.editor.model, methodName, {\n\t\t\tbefore: (callContext, ...params) => {\n\t\t\t\tcallContext.callFrame = this._enterFrame(`model.${methodName}`, params);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tafter: (callContext, result) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, result);\n\t\t\t},\n\t\t\terror: (callContext, error) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, void 0, error);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Sets up recording for model selection changes.\n\t* Tracks when the selection range, attributes, or markers change.\n\t*/\n\t_tapModelSelection() {\n\t\tthis._tapFireMethod(this.editor.model.document.selection, [\n\t\t\t\"change:range\",\n\t\t\t\"change:attribute\",\n\t\t\t\"change:marker\"\n\t\t], { eventSource: \"model-selection\" });\n\t}\n\t/**\n\t* Sets up recording for a specific command execution.\n\t*\n\t* @param commandName The name of the command to record.\n\t* @param command The command instance to tap into.\n\t*/\n\t_tapCommand(commandName, command) {\n\t\ttapObjectMethod(command, \"execute\", {\n\t\t\tbefore: (callContext, params) => {\n\t\t\t\tcallContext.callFrame = this._enterFrame(`commands.${commandName}:execute`, params);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tafter: (callContext, result) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, result);\n\t\t\t},\n\t\t\terror: (callContext, error) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, void 0, error);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Sets up recording for UI component factory creation and component interactions.\n\t* Tracks when components are created and their execute events.\n\t*/\n\t_tapComponentFactory() {\n\t\ttapObjectMethod(this.editor.ui.componentFactory, \"create\", {\n\t\t\tbefore: (callContext, [componentName]) => {\n\t\t\t\tcallContext.componentName = componentName;\n\t\t\t\tcallContext.callFrame = this._enterFrame(`component-factory.create:${componentName}`);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tafter: (callContext, componentInstance) => {\n\t\t\t\tconst executeContext = {\n\t\t\t\t\t...callContext,\n\t\t\t\t\teventSource: `component.${callContext.componentName}`\n\t\t\t\t};\n\t\t\t\tif (typeof componentInstance.fire == \"function\") this._tapFireMethod(componentInstance, [\"execute\"], executeContext);\n\t\t\t\tif (typeof componentInstance.panelView?.fire == \"function\") this._tapFireMethod(componentInstance.panelView, [\"execute\"], executeContext);\n\t\t\t\tif (typeof componentInstance.buttonView?.actionView?.fire == \"function\") this._tapFireMethod(componentInstance.buttonView.actionView, [\"execute\"], executeContext);\n\t\t\t\tthis._leaveFrame(callContext.callFrame);\n\t\t\t},\n\t\t\terror: (callContext, error) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, void 0, error);\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Sets up recording for view document events like clicks, keyboard input,\n\t* selection changes, and other user interactions.\n\t*/\n\t_tapViewDocumentEvents() {\n\t\tthis._tapFireMethod(this.editor.editing.view.document, [\n\t\t\t\"click\",\n\t\t\t\"mousedown\",\n\t\t\t\"mouseup\",\n\t\t\t\"pointerdown\",\n\t\t\t\"pointerup\",\n\t\t\t\"focus\",\n\t\t\t\"blur\",\n\t\t\t\"keydown\",\n\t\t\t\"keyup\",\n\t\t\t\"selectionChange\",\n\t\t\t\"compositionstart\",\n\t\t\t\"compositionend\",\n\t\t\t\"beforeinput\",\n\t\t\t\"mutations\",\n\t\t\t\"enter\",\n\t\t\t\"delete\",\n\t\t\t\"insertText\",\n\t\t\t\"paste\",\n\t\t\t\"copy\",\n\t\t\t\"cut\",\n\t\t\t\"dragstart\",\n\t\t\t\"drop\"\n\t\t], { eventSource: \"observers\" });\n\t}\n\t/**\n\t* Sets up recording for specific events fired by an emitter object.\n\t*\n\t* @param emitter The object that fires events to be recorded.\n\t* @param eventNames Array of event names to record.\n\t* @param context Additional context to include with recorded events.\n\t*/\n\t_tapFireMethod(emitter, eventNames, context = {}) {\n\t\ttapObjectMethod(emitter, \"fire\", {\n\t\t\tbefore: (callContext, [eventInfoOrName, ...params]) => {\n\t\t\t\tconst eventName = typeof eventInfoOrName == \"string\" ? eventInfoOrName : eventInfoOrName.name;\n\t\t\t\tif (!eventNames.includes(eventName)) return false;\n\t\t\t\tcallContext.callFrame = this._enterFrame(`${callContext.eventSource}:${eventName}`, params);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tafter: (callContext, result) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, result);\n\t\t\t},\n\t\t\terror: (callContext, error) => {\n\t\t\t\tthis._leaveFrame(callContext.callFrame, void 0, error);\n\t\t\t}\n\t\t}, context);\n\t}\n\t/**\n\t* Triggers error callback.\n\t*/\n\t_callErrorCallback(error) {\n\t\tif (!this._errorCallback || this._errors.has(error)) return;\n\t\tthis._errors.add(error);\n\t\ttry {\n\t\t\tthis._errorCallback(error, this.getEntries());\n\t\t} catch (observerError) {\n\t\t\tconsole.error(\"ActionsRecorder onError callback error:\", observerError);\n\t\t}\n\t}\n\t/**\n\t* The default handler for maxEntries callback.\n\t*/\n\t_maxEntriesDefaultHandler() {\n\t\tthis._entries.shift();\n\t}\n};\n/**\n* Creates a wrapper around a method to record its calls, results, and errors.\n*\n* @internal\n*\n* @param object The object containing the method to tap.\n* @param methodName The name of the method to tap.\n* @param tap The tap configuration with before/after/error hooks.\n* @param context Additional context to include with the method calls.\n*/\nfunction tapObjectMethod(object, methodName, tap, context = {}) {\n\tconst originalMethod = object[methodName];\n\tif (originalMethod[Symbol.for(\"Tapped method\")]) return;\n\tobject[methodName] = (...args) => {\n\t\tconst callContext = Object.assign({}, context);\n\t\tlet shouldHandle;\n\t\ttry {\n\t\t\tshouldHandle = tap.before?.(callContext, args);\n\t\t\tconst result = originalMethod.apply(object, args);\n\t\t\tif (shouldHandle) tap.after?.(callContext, result);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (shouldHandle) tap.error?.(callContext, error);\n\t\t\tthrow error;\n\t\t}\n\t};\n\tobject[methodName][Symbol.for(\"Tapped method\")] = originalMethod;\n}\n/**\n* Serializes a value into a JSON-serializable format.\n*\n* @internal\n*\n* @param value The value to serialize.\n* @param visited Set of already serialized objects to avoid circular references.\n* @returns A JSON-serializable representation of the value.\n*/\nfunction serializeValue(value, visited = /* @__PURE__ */ new WeakSet()) {\n\tif (!value || [\n\t\t\"boolean\",\n\t\t\"number\",\n\t\t\"string\"\n\t].includes(typeof value)) return value;\n\tif (typeof value.toJSON == \"function\") {\n\t\tconst jsonData = value.toJSON();\n\t\tif (isPlainObject(jsonData) || Array.isArray(jsonData) || [\n\t\t\t\"string\",\n\t\t\t\"number\",\n\t\t\t\"boolean\"\n\t\t].includes(typeof jsonData)) return serializeValue(jsonData, visited);\n\t}\n\tif (value instanceof Error) return {\n\t\tname: value.name,\n\t\tmessage: value.message,\n\t\tstack: value.stack\n\t};\n\tif (isTypeCheckable(value) || typeof value != \"object\") return {\n\t\ttype: typeof value,\n\t\tconstructor: value.constructor?.name || \"unknown\",\n\t\tstring: String(value)\n\t};\n\tif (value instanceof File || value instanceof Blob || value instanceof FormData || value instanceof DataTransfer) return String(value);\n\tif (visited.has(value)) return;\n\tvisited.add(value);\n\tif (Array.isArray(value)) return value.length ? value.map((item) => serializeValue(item, visited)) : void 0;\n\tconst result = {};\n\tconst ignoreFields = [];\n\tif (value.domEvent) {\n\t\tignoreFields.push(\"domEvent\", \"domTarget\", \"view\", \"document\");\n\t\tresult.domEvent = serializeDomEvent(value.domEvent);\n\t\tresult.target = serializeValue(value.target);\n\t\tif (value.dataTransfer) result.dataTransfer = {\n\t\t\ttypes: value.dataTransfer.types,\n\t\t\thtmlData: value.dataTransfer.getData(\"text/html\"),\n\t\t\tfiles: serializeValue(value.dataTransfer.files)\n\t\t};\n\t}\n\tfor (const [key, val] of Object.entries(value)) {\n\t\tif (key.startsWith(\"_\") || ignoreFields.includes(key) || typeof val == \"function\") continue;\n\t\tconst serializedValue = serializeValue(val, visited);\n\t\tif (serializedValue !== void 0) result[key] = serializedValue;\n\t}\n\tif (Symbol.iterator in value) {\n\t\tconst items = Array.from(value[Symbol.iterator]()).map((item) => serializeValue(item, visited));\n\t\tif (items.length) result._items = items;\n\t}\n\treturn Object.keys(result).length ? result : void 0;\n}\n/**\n* Serializes a DOM event into a plain object representation.\n*\n* Extracts common properties from DOM events such as type, target information,\n* coordinates, key codes, and other relevant event data for debugging purposes.\n*\n* @param event The DOM event to serialize.\n* @returns A serialized object containing the event's key properties.\n*/\nfunction serializeDomEvent(event) {\n\tlet serialized = {\n\t\ttype: event.type,\n\t\ttarget: serializeDOMTarget(event.target)\n\t};\n\tif (event instanceof MouseEvent) serialized = {\n\t\t...serialized,\n\t\tbutton: event.button,\n\t\tbuttons: event.buttons,\n\t\tctrlKey: event.ctrlKey,\n\t\tshiftKey: event.shiftKey,\n\t\taltKey: event.altKey,\n\t\tmetaKey: event.metaKey\n\t};\n\tif (event instanceof KeyboardEvent) serialized = {\n\t\t...serialized,\n\t\tkey: event.key,\n\t\tcode: event.code,\n\t\tkeyCode: event.keyCode,\n\t\tctrlKey: event.ctrlKey,\n\t\tshiftKey: event.shiftKey,\n\t\taltKey: event.altKey,\n\t\tmetaKey: event.metaKey,\n\t\trepeat: event.repeat\n\t};\n\tif (event instanceof InputEvent) serialized = {\n\t\t...serialized,\n\t\tdata: event.data,\n\t\tinputType: event.inputType,\n\t\tisComposing: event.isComposing\n\t};\n\tif (event instanceof PointerEvent) serialized = {\n\t\t...serialized,\n\t\tisPrimary: event.isPrimary\n\t};\n\t/**\n\t* Serializes a DOM event target into a plain object representation.\n\t*\n\t* @param target The DOM event target to serialize.\n\t* @returns A serialized object containing the target's information.\n\t*/\n\tfunction serializeDOMTarget(target) {\n\t\tif (!target) return null;\n\t\tif (target instanceof Element) return {\n\t\t\ttagName: target.tagName,\n\t\t\tclassName: target.className,\n\t\t\tid: target.id\n\t\t};\n\t\tif (target instanceof Window || target instanceof Document) return { type: target.constructor.name };\n\t\treturn {};\n\t}\n\treturn serialized;\n}\n/**\n* Checks if a value is type-checkable, meaning it has an `is` method.\n*/\nfunction isTypeCheckable(value) {\n\treturn value && typeof value.is === \"function\";\n}\n/* v8 ignore stop -- @preserve */\n\n/**\n* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n*/\n\nexport { ActionsRecorder, ContextWatchdog, EditorWatchdog, Watchdog };\n//# sourceMappingURL=index.js.map"],"names":["Watchdog","config","__publicField","evt","error","eventName","callback","cb","args","callbacks","causesRestart","getSubNodes","head","excludedProperties","nodes","subNodes","nodeIndex","node","shouldNodeBeIncluded","n","key","type","typeOfNode","areConnectedThroughProperties","target1","target2","excludedNodes","isObject","subNodes1","subNodes2","structure","normalizeRootsConfig","sourceElementsOrData","defaultRootName","mainRootConfig","rootsConfig","sourceElementIsPlainObject","isPlainObject$1","legacyInitialData","getLegacyInitialData","rootNames","rootName","rootConfig","getLegacyPlainConfigValue","isElement$2","sourceElementIsObject","legacyValue","value","isElement","EditorWatchdog","Editor","watchdogConfig","throttle","elementOrDataOrConfig","editor","creator","destructor","err","updatedConfig","EditorWatchdogInitPlugin","updatedRootsConfig","rootData","_a","getSavedRootEditableOptions","elementOrData","configOrContext","context","isUsingConfigBasedCreator","resolvedContext","rootsCount","isMultiRootFromLegacy","isElement$1","version","props","roots","root","plugins","commentsRepository","trackChanges","data","marker","editables","editable","values","v","cloneDeepWith","writer","jsonNode","element","child","content","attributes","parsedNodes","parsedAttributes","rootElement","markerName","markerOptions","document","start","end","options","startPosition","endPosition","range","parsedCommentThreads","parsedSuggestions","commentThread","commentThreadData","channelId","trackChangesEditing","suggestion","suggestionData","serializedAttributes","mainQueueId","ContextWatchdog","Context","ActionQueues","contextConfig","itemId","itemConfigurationOrItemConfigurations","itemConfigurations","toArray","item","watchdog","res","rethrowRestartEventOnce","itemIdOrItemIds","itemIds","onEmptyCallback","queueId","action","isMainAction","queueWithAction","nonErrorQueue","elementOrArray"],"mappings":"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","x_google_ignoreList":[0]}