@hkyhy/marsun-components-core 0.1.89 → 0.1.98

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 (278) hide show
  1. package/dist/components/Audit/AuditLogList.d.ts +27 -0
  2. package/dist/components/Audit/AuditLogList.js +272 -0
  3. package/dist/components/Audit/AuditLogList.js.map +1 -0
  4. package/dist/components/Audit/formatAuditCurl.d.ts +27 -0
  5. package/dist/components/Audit/formatAuditCurl.js +115 -0
  6. package/dist/components/Audit/formatAuditCurl.js.map +1 -0
  7. package/dist/components/Audit/formatAuditJson.d.ts +15 -0
  8. package/dist/components/Audit/formatAuditJson.js +135 -0
  9. package/dist/components/Audit/formatAuditJson.js.map +1 -0
  10. package/dist/components/Audit/index.d.ts +3 -0
  11. package/dist/components/Audit/style.module.scss.js +30 -0
  12. package/dist/components/Audit/style.module.scss.js.map +1 -0
  13. package/dist/components/Audit/types.d.ts +39 -0
  14. package/dist/components/Editor/RichTextEditor/RichTextEditor.d.ts +24 -0
  15. package/dist/components/Editor/RichTextEditor/RichTextEditor.js +93 -0
  16. package/dist/components/Editor/RichTextEditor/RichTextEditor.js.map +1 -0
  17. package/dist/components/Editor/RichTextEditor/index.d.ts +2 -0
  18. package/dist/components/Editor/RichTextEditor/style.module.scss.js +11 -0
  19. package/dist/components/Editor/RichTextEditor/style.module.scss.js.map +1 -0
  20. package/dist/components/Editor/VariablePicker.d.ts +19 -0
  21. package/dist/components/Editor/VariablePicker.js +55 -0
  22. package/dist/components/Editor/VariablePicker.js.map +1 -0
  23. package/dist/components/Editor/index.d.ts +7 -0
  24. package/dist/components/Editor/index.js +21 -0
  25. package/dist/components/Editor/index.js.map +1 -0
  26. package/dist/components/Editor/msgVarTokenPlugin.d.ts +13 -0
  27. package/dist/components/Editor/msgVarTokenPlugin.js +94 -0
  28. package/dist/components/Editor/msgVarTokenPlugin.js.map +1 -0
  29. package/dist/components/Editor/variableMention.d.ts +37 -0
  30. package/dist/components/Editor/variableMention.js +64 -0
  31. package/dist/components/Editor/variableMention.js.map +1 -0
  32. package/dist/components/FormInfo/RichTextField/index.d.ts +21 -0
  33. package/dist/components/FormInfo/RichTextField/index.js +82 -0
  34. package/dist/components/FormInfo/RichTextField/index.js.map +1 -0
  35. package/dist/components/FormInfo/RichTextField/style.module.scss.js +9 -0
  36. package/dist/components/FormInfo/RichTextField/style.module.scss.js.map +1 -0
  37. package/dist/components/FormInfo/VariableMentionInput/index.d.ts +17 -0
  38. package/dist/components/FormInfo/VariableMentionInput/index.js +73 -0
  39. package/dist/components/FormInfo/VariableMentionInput/index.js.map +1 -0
  40. package/dist/components/FormInfo/VariableMentionInput/style.module.scss.js +11 -0
  41. package/dist/components/FormInfo/VariableMentionInput/style.module.scss.js.map +1 -0
  42. package/dist/components/FormInfo/fields.d.ts +5 -0
  43. package/dist/components/FormInfo/fields.js +32 -23
  44. package/dist/components/FormInfo/fields.js.map +1 -1
  45. package/dist/components/FormInfo/index.d.ts +4 -0
  46. package/dist/components/StateBar/StateBar.d.ts +19 -6
  47. package/dist/components/StateBar/StateBar.js +87 -50
  48. package/dist/components/StateBar/StateBar.js.map +1 -1
  49. package/dist/components/StateBar/style.module.scss.js +13 -10
  50. package/dist/components/StateBar/style.module.scss.js.map +1 -1
  51. package/dist/components/Tools/Inbox/InboxBell/InboxBell.d.ts +45 -0
  52. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js +156 -0
  53. package/dist/components/Tools/Inbox/InboxBell/InboxBell.js.map +1 -0
  54. package/dist/components/Tools/Inbox/InboxBell/index.d.ts +2 -0
  55. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js +30 -0
  56. package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js.map +1 -0
  57. package/dist/components/Tools/Inbox/index.d.ts +2 -0
  58. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.d.ts +8 -0
  59. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js +56 -0
  60. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js.map +1 -0
  61. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.d.ts +8 -0
  62. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +216 -0
  63. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -0
  64. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.d.ts +26 -0
  65. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js +190 -0
  66. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js.map +1 -0
  67. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +3 -0
  68. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js +12 -0
  69. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js.map +1 -0
  70. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +76 -0
  71. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js +26 -0
  72. package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -0
  73. package/dist/components/Tools/MessageCenter/index.d.ts +3 -0
  74. package/dist/components/Tools/MessageCenter/utils/templateCode.d.ts +8 -0
  75. package/dist/components/Tools/MessageCenter/utils/templateCode.js +25 -0
  76. package/dist/components/Tools/MessageCenter/utils/templateCode.js.map +1 -0
  77. package/dist/components/Tools/index.d.ts +5 -0
  78. package/dist/components/index.d.ts +3 -0
  79. package/dist/editor.d.ts +5 -0
  80. package/dist/editor.js +21 -0
  81. package/dist/editor.js.map +1 -0
  82. package/dist/form-info.js +33 -29
  83. package/dist/form-info.js.map +1 -1
  84. package/dist/index.d.ts +5 -0
  85. package/dist/index.js +805 -773
  86. package/dist/index.js.map +1 -1
  87. package/dist/marsun-components-core.css +4 -1
  88. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +301 -0
  89. package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js.map +1 -0
  90. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +1256 -0
  91. package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js.map +1 -0
  92. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js +2107 -0
  93. package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js.map +1 -0
  94. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +259 -0
  95. package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js.map +1 -0
  96. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +23990 -0
  97. package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js.map +1 -0
  98. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +249 -0
  99. package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js.map +1 -0
  100. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +47 -0
  101. package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js.map +1 -0
  102. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js +100 -0
  103. package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js.map +1 -0
  104. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +31 -0
  105. package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js.map +1 -0
  106. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js +194 -0
  107. package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js.map +1 -0
  108. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js +2042 -0
  109. package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js.map +1 -0
  110. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +9 -0
  111. package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js.map +1 -0
  112. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +167 -0
  113. package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js.map +1 -0
  114. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js +471 -0
  115. package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js.map +1 -0
  116. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +139 -0
  117. package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js.map +1 -0
  118. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +755 -0
  119. package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js.map +1 -0
  120. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +7838 -0
  121. package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js.map +1 -0
  122. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js +422 -0
  123. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js.map +1 -0
  124. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js +33 -0
  125. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js.map +1 -0
  126. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js +47 -0
  127. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js.map +1 -0
  128. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js +156 -0
  129. package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js.map +1 -0
  130. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +313 -0
  131. package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js.map +1 -0
  132. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +2942 -0
  133. package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js.map +1 -0
  134. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +892 -0
  135. package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js.map +1 -0
  136. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +1047 -0
  137. package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js.map +1 -0
  138. package/dist/node_modules/color-parse/node_modules/color-name/index.js +153 -0
  139. package/dist/node_modules/color-parse/node_modules/color-name/index.js.map +1 -0
  140. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js +7 -0
  141. package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js.map +1 -0
  142. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +7 -0
  143. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +1 -0
  144. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js +7 -0
  145. package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js.map +1 -0
  146. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +9 -0
  147. package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js.map +1 -0
  148. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +7 -0
  149. package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +1 -0
  150. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js +7 -0
  151. package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +1 -0
  152. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +16 -0
  153. package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js.map +1 -0
  154. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +15 -0
  155. package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js.map +1 -0
  156. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js +9 -0
  157. package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js.map +1 -0
  158. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +8 -0
  159. package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +1 -0
  160. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js +30 -0
  161. package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +1 -0
  162. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js +8 -0
  163. package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js.map +1 -0
  164. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js +17 -0
  165. package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js.map +1 -0
  166. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js +13 -0
  167. package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js.map +1 -0
  168. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js +17 -0
  169. package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js.map +1 -0
  170. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js +102 -0
  171. package/dist/node_modules/es-toolkit/dist/compat/object/clone.js.map +1 -0
  172. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +8 -0
  173. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +1 -0
  174. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +33 -0
  175. package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +1 -0
  176. package/dist/node_modules/es-toolkit/dist/compat/object/get.js +39 -0
  177. package/dist/node_modules/es-toolkit/dist/compat/object/get.js.map +1 -0
  178. package/dist/node_modules/es-toolkit/dist/compat/object/has.js +21 -0
  179. package/dist/node_modules/es-toolkit/dist/compat/object/has.js.map +1 -0
  180. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js +33 -0
  181. package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js.map +1 -0
  182. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js +10 -0
  183. package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js.map +1 -0
  184. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js +9 -0
  185. package/dist/node_modules/es-toolkit/dist/compat/object/merge.js.map +1 -0
  186. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js +53 -0
  187. package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +1 -0
  188. package/dist/node_modules/es-toolkit/dist/compat/object/property.js +10 -0
  189. package/dist/node_modules/es-toolkit/dist/compat/object/property.js.map +1 -0
  190. package/dist/node_modules/es-toolkit/dist/compat/object/set.js +9 -0
  191. package/dist/node_modules/es-toolkit/dist/compat/object/set.js.map +1 -0
  192. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js +31 -0
  193. package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js.map +1 -0
  194. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +8 -0
  195. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +1 -0
  196. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js +7 -0
  197. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +1 -0
  198. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +8 -0
  199. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +1 -0
  200. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +9 -0
  201. package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +1 -0
  202. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js +9 -0
  203. package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js.map +1 -0
  204. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +15 -0
  205. package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js.map +1 -0
  206. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +7 -0
  207. package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +1 -0
  208. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +9 -0
  209. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js.map +1 -0
  210. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +81 -0
  211. package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js.map +1 -0
  212. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js +7 -0
  213. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js.map +1 -0
  214. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +7 -0
  215. package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +1 -0
  216. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +16 -0
  217. package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +1 -0
  218. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js +7 -0
  219. package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js.map +1 -0
  220. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +7 -0
  221. package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js.map +1 -0
  222. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +8 -0
  223. package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +1 -0
  224. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js +9 -0
  225. package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js.map +1 -0
  226. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +23 -0
  227. package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js.map +1 -0
  228. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js +7 -0
  229. package/dist/node_modules/es-toolkit/dist/compat/util/eq.js.map +1 -0
  230. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js +19 -0
  231. package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js.map +1 -0
  232. package/dist/node_modules/es-toolkit/dist/compat/util/times.js +11 -0
  233. package/dist/node_modules/es-toolkit/dist/compat/util/times.js.map +1 -0
  234. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js +8 -0
  235. package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js.map +1 -0
  236. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js +9 -0
  237. package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js.map +1 -0
  238. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js +8 -0
  239. package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js.map +1 -0
  240. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js +37 -0
  241. package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js.map +1 -0
  242. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js +15 -0
  243. package/dist/node_modules/es-toolkit/dist/compat/util/toString.js.map +1 -0
  244. package/dist/node_modules/es-toolkit/dist/function/after.js +11 -0
  245. package/dist/node_modules/es-toolkit/dist/function/after.js.map +1 -0
  246. package/dist/node_modules/es-toolkit/dist/function/debounce.js +30 -0
  247. package/dist/node_modules/es-toolkit/dist/function/debounce.js.map +1 -0
  248. package/dist/node_modules/es-toolkit/dist/function/identity.js +7 -0
  249. package/dist/node_modules/es-toolkit/dist/function/identity.js.map +1 -0
  250. package/dist/node_modules/es-toolkit/dist/function/noop.js +6 -0
  251. package/dist/node_modules/es-toolkit/dist/function/noop.js.map +1 -0
  252. package/dist/node_modules/es-toolkit/dist/object/clone.js +27 -0
  253. package/dist/node_modules/es-toolkit/dist/object/clone.js.map +1 -0
  254. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +8 -0
  255. package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js.map +1 -0
  256. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js +121 -0
  257. package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +1 -0
  258. package/dist/node_modules/es-toolkit/dist/object/mapValues.js +12 -0
  259. package/dist/node_modules/es-toolkit/dist/object/mapValues.js.map +1 -0
  260. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js +8 -0
  261. package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +1 -0
  262. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js +9 -0
  263. package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js.map +1 -0
  264. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js +110 -0
  265. package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js.map +1 -0
  266. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js +7 -0
  267. package/dist/node_modules/es-toolkit/dist/predicate/isLength.js.map +1 -0
  268. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js +9 -0
  269. package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js.map +1 -0
  270. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js +7 -0
  271. package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +1 -0
  272. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js +7 -0
  273. package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +1 -0
  274. package/dist/styles/global.css +4 -1
  275. package/dist/utils/copyText.d.ts +4 -0
  276. package/dist/utils/copyText.js +21 -0
  277. package/dist/utils/copyText.js.map +1 -0
  278. package/package.json +9 -2
@@ -0,0 +1,194 @@
1
+ function b() {
2
+ const t = {
3
+ resolve: null,
4
+ promise: null
5
+ };
6
+ return t.promise = new Promise((n) => {
7
+ t.resolve = n;
8
+ }), t;
9
+ }
10
+ function V(t) {
11
+ let n = null;
12
+ return (...e) => (n || (n = {
13
+ current: t(...e)
14
+ }), n.current);
15
+ }
16
+ const o = new Array(256).fill("").map((t, n) => ("0" + n.toString(16)).slice(-2));
17
+ function w() {
18
+ const [t, n, e, r] = crypto.getRandomValues(new Uint32Array(4));
19
+ return "e" + o[t >> 0 & 255] + o[t >> 8 & 255] + o[t >> 16 & 255] + o[t >> 24 & 255] + o[n >> 0 & 255] + o[n >> 8 & 255] + o[n >> 16 & 255] + o[n >> 24 & 255] + o[e >> 0 & 255] + o[e >> 8 & 255] + o[e >> 16 & 255] + o[e >> 24 & 255] + o[r >> 0 & 255] + o[r >> 8 & 255] + o[r >> 16 & 255] + o[r >> 24 & 255];
20
+ }
21
+ function y(t, n) {
22
+ return Object.fromEntries(
23
+ Object.entries(t).map(([e, r]) => [n(e), r])
24
+ );
25
+ }
26
+ function K(t) {
27
+ return t.replace(/-([a-z])/g, (n, e) => e.toUpperCase());
28
+ }
29
+ function l(t) {
30
+ return !!t && /^\d+\.\d+\.\d+/.test(t);
31
+ }
32
+ function u(t) {
33
+ if (!l(t))
34
+ throw new Error(`Invalid semantic version: ${t || "<blank>"}.`);
35
+ const [n, e, r] = t.split(".");
36
+ return {
37
+ major: Number.parseInt(n, 10),
38
+ minor: Number.parseInt(e, 10),
39
+ patch: Number.parseInt(r, 10)
40
+ };
41
+ }
42
+ function m(t, n) {
43
+ const e = u(t), r = u(n);
44
+ return Math.sign(
45
+ e.major - r.major || e.minor - r.minor || e.patch - r.patch
46
+ );
47
+ }
48
+ function f(t) {
49
+ return t ? ["nightly", "alpha", "internal", "nightly-", "staging"].some((n) => t.includes(n)) : !1;
50
+ }
51
+ function c(t) {
52
+ return !!(t != null && t.startsWith("0.0.0-"));
53
+ }
54
+ function g(t) {
55
+ return l(t) || f(t);
56
+ }
57
+ function T(t, n) {
58
+ const e = t.extraPlugins || [];
59
+ return {
60
+ ...t,
61
+ extraPlugins: [
62
+ ...e,
63
+ ...n.filter((r) => !e.includes(r))
64
+ ]
65
+ };
66
+ }
67
+ function h(t) {
68
+ if (f(t))
69
+ return 3;
70
+ const { major: n } = u(t);
71
+ switch (!0) {
72
+ case n >= 44:
73
+ return 3;
74
+ case n >= 38:
75
+ return 2;
76
+ default:
77
+ return 1;
78
+ }
79
+ }
80
+ function d() {
81
+ const { CKEDITOR_VERSION: t, CKEDITOR: n } = window;
82
+ return g(t) ? {
83
+ source: n ? "cdn" : "npm",
84
+ version: t
85
+ } : null;
86
+ }
87
+ function C() {
88
+ const t = d();
89
+ return t ? h(t.version) : null;
90
+ }
91
+ function E(t, n) {
92
+ switch (n || (n = C() || void 0), n) {
93
+ case 1:
94
+ case 2:
95
+ return t === void 0;
96
+ case 3:
97
+ return t === "GPL";
98
+ default:
99
+ return !1;
100
+ }
101
+ }
102
+ function j(t, n) {
103
+ return function(r) {
104
+ E(r.config.get("licenseKey")) || r.on("collectUsageData", (i, { setUsageData: a }) => {
105
+ a(`integration.${t}`, n);
106
+ });
107
+ };
108
+ }
109
+ function I(t) {
110
+ var e;
111
+ const n = (e = d()) == null ? void 0 : e.version;
112
+ return n ? c(t) ? -1 : !l(n) || c(n) ? 1 : m(n, t) : null;
113
+ }
114
+ function p() {
115
+ const t = I("48.0.0"), n = t !== null && t >= 0;
116
+ return {
117
+ rootsConfigEntry: n,
118
+ elementConfigAttachment: n
119
+ };
120
+ }
121
+ function N(t, n, e) {
122
+ var i;
123
+ if (!t.editorName || t.editorName === "ClassicEditor")
124
+ return {
125
+ ...e,
126
+ attachTo: n
127
+ };
128
+ const r = {
129
+ ...e,
130
+ roots: {
131
+ ...e.roots,
132
+ main: {
133
+ ...e.root,
134
+ ...(i = e.roots) == null ? void 0 : i.main,
135
+ element: n
136
+ }
137
+ }
138
+ };
139
+ return delete r.root, r;
140
+ }
141
+ function D(t) {
142
+ var e, r, i;
143
+ return p().rootsConfigEntry && (((r = (e = t.roots) == null ? void 0 : e.main) == null ? void 0 : r.initialData) || ((i = t.root) == null ? void 0 : i.initialData)) || /* legacy */
144
+ t.initialData;
145
+ }
146
+ function P(t, n, e) {
147
+ var a;
148
+ const r = p(), i = e ? null : D(t);
149
+ if (r.rootsConfigEntry) {
150
+ const s = {
151
+ ...t,
152
+ roots: {
153
+ ...t.roots,
154
+ main: {
155
+ ...t.root,
156
+ ...(a = t.roots) == null ? void 0 : a.main,
157
+ initialData: i || n || ""
158
+ }
159
+ }
160
+ };
161
+ return n && i && console.warn(
162
+ "Editor data should be provided either via the config (`config.root.initialData`) or the component's `data` property, but not both. The configuration value takes precedence."
163
+ ), delete s.root, delete s.initialData, s;
164
+ }
165
+ return n && i && console.warn(
166
+ "Editor data should be provided either via the config (`config.initialData`) or the component's `data` property, but not both. The configuration value takes precedence."
167
+ ), {
168
+ ...t,
169
+ initialData: i || n || ""
170
+ };
171
+ }
172
+ export {
173
+ T as appendExtraPluginsToEditorConfig,
174
+ N as assignElementToEditorConfig,
175
+ P as assignInitialDataToEditorConfig,
176
+ I as compareInstalledCKBaseVersion,
177
+ m as compareSemanticVersions,
178
+ b as createDefer,
179
+ j as createIntegrationUsageDataPlugin,
180
+ u as destructureSemanticVersion,
181
+ d as getCKBaseBundleInstallationInfo,
182
+ D as getInitialDataFromEditorConfig,
183
+ p as getInstalledCKBaseFeatures,
184
+ E as isCKEditorFreeLicense,
185
+ f as isCKTestingVersion,
186
+ g as isCKVersion,
187
+ c as isCKZeroBaseVersion,
188
+ l as isSemanticVersion,
189
+ K as kebabToCamelCase,
190
+ y as mapObjectKeys,
191
+ V as once,
192
+ w as uid
193
+ };
194
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js"],"sourcesContent":["function createDefer() {\n const deferred = {\n resolve: null,\n promise: null\n };\n deferred.promise = new Promise((resolve) => {\n deferred.resolve = resolve;\n });\n return deferred;\n}\n\nfunction waitFor(callback, {\n timeOutAfter = 500,\n retryAfter = 100\n} = {}) {\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n let lastError = null;\n const timeoutTimerId = setTimeout(() => {\n reject(lastError ?? new Error(\"Timeout\"));\n }, timeOutAfter);\n const tick = async () => {\n try {\n const result = await callback();\n clearTimeout(timeoutTimerId);\n resolve(result);\n } catch (err) {\n lastError = err;\n if (Date.now() - startTime > timeOutAfter) {\n reject(err);\n } else {\n setTimeout(tick, retryAfter);\n }\n }\n };\n tick();\n });\n}\n\nconst INJECTED_SCRIPTS = /* @__PURE__ */ new Map();\nfunction injectScript(src, { attributes } = {}) {\n if (INJECTED_SCRIPTS.has(src)) {\n return INJECTED_SCRIPTS.get(src);\n }\n const maybePrevScript = document.querySelector(`script[src=\"${src}\"]`);\n if (maybePrevScript) {\n console.warn(`Script with \"${src}\" src is already present in DOM!`);\n maybePrevScript.remove();\n }\n const promise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.onerror = reject;\n script.onload = () => {\n resolve();\n };\n for (const [key, value] of Object.entries(attributes || {})) {\n script.setAttribute(key, value);\n }\n script.setAttribute(\"data-injected-by\", \"ckeditor-integration\");\n script.type = \"text/javascript\";\n script.async = true;\n script.src = src;\n document.head.appendChild(script);\n const observer = new MutationObserver((mutations) => {\n const removedNodes = mutations.flatMap((mutation) => Array.from(mutation.removedNodes));\n if (removedNodes.includes(script)) {\n INJECTED_SCRIPTS.delete(src);\n observer.disconnect();\n }\n });\n observer.observe(document.head, {\n childList: true,\n subtree: true\n });\n });\n INJECTED_SCRIPTS.set(src, promise);\n return promise;\n}\nasync function injectScriptsInParallel(sources, props) {\n await Promise.all(\n sources.map((src) => injectScript(src, props))\n );\n}\n\nconst INJECTED_STYLESHEETS = /* @__PURE__ */ new Map();\nfunction injectStylesheet({\n href,\n placementInHead = \"start\",\n attributes = {}\n}) {\n if (INJECTED_STYLESHEETS.has(href)) {\n return INJECTED_STYLESHEETS.get(href);\n }\n const maybePrevStylesheet = document.querySelector(`link[href=\"${href}\"][rel=\"stylesheet\"]`);\n if (maybePrevStylesheet) {\n console.warn(`Stylesheet with \"${href}\" href is already present in DOM!`);\n maybePrevStylesheet.remove();\n }\n const appendLinkTagToHead = (link) => {\n const previouslyInjectedLinks = Array.from(\n document.head.querySelectorAll('link[data-injected-by=\"ckeditor-integration\"]')\n );\n switch (placementInHead) {\n // It'll append styles *before* the stylesheets that are already present in the head\n // but after the ones that are injected by this function.\n case \"start\":\n if (previouslyInjectedLinks.length) {\n previouslyInjectedLinks.slice(-1)[0].after(link);\n } else {\n document.head.insertBefore(link, document.head.firstChild);\n }\n break;\n // It'll append styles *after* the stylesheets already in the head.\n case \"end\":\n document.head.appendChild(link);\n break;\n }\n };\n const promise = new Promise((resolve, reject) => {\n const link = document.createElement(\"link\");\n for (const [key, value] of Object.entries(attributes || {})) {\n link.setAttribute(key, value);\n }\n link.setAttribute(\"data-injected-by\", \"ckeditor-integration\");\n link.rel = \"stylesheet\";\n link.href = href;\n link.onerror = reject;\n link.onload = () => {\n resolve();\n };\n appendLinkTagToHead(link);\n const observer = new MutationObserver((mutations) => {\n const removedNodes = mutations.flatMap((mutation) => Array.from(mutation.removedNodes));\n if (removedNodes.includes(link)) {\n INJECTED_STYLESHEETS.delete(href);\n observer.disconnect();\n }\n });\n observer.observe(document.head, {\n childList: true,\n subtree: true\n });\n });\n INJECTED_STYLESHEETS.set(href, promise);\n return promise;\n}\n\nfunction isSSR() {\n return typeof window === \"undefined\";\n}\n\nfunction omit(keys, obj) {\n const clone = { ...obj };\n for (const key of keys) {\n if (Object.hasOwn(obj, key)) {\n delete clone[key];\n }\n }\n return clone;\n}\n\nfunction once(fn) {\n let lastResult = null;\n return (...args) => {\n if (!lastResult) {\n lastResult = {\n current: fn(...args)\n };\n }\n return lastResult.current;\n };\n}\n\nfunction overwriteArray(source, destination) {\n destination.length = 0;\n destination.push(...source);\n return destination;\n}\n\nfunction overwriteObject(source, destination) {\n for (const prop of Object.getOwnPropertyNames(destination)) {\n delete destination[prop];\n }\n for (const [key, value] of Object.entries(source)) {\n if (value !== destination && key !== \"prototype\" && key !== \"__proto__\") {\n destination[key] = value;\n }\n }\n return destination;\n}\n\nfunction preloadResource(url, { attributes } = {}) {\n if (document.head.querySelector(`link[href=\"${url}\"][rel=\"preload\"]`)) {\n return;\n }\n const link = document.createElement(\"link\");\n for (const [key, value] of Object.entries(attributes || {})) {\n link.setAttribute(key, value);\n }\n link.setAttribute(\"data-injected-by\", \"ckeditor-integration\");\n link.rel = \"preload\";\n link.as = detectTypeOfResource(url);\n link.href = url;\n document.head.insertBefore(link, document.head.firstChild);\n}\nfunction detectTypeOfResource(url) {\n switch (true) {\n case /\\.css$/.test(url):\n return \"style\";\n case /\\.js$/.test(url):\n return \"script\";\n default:\n return \"fetch\";\n }\n}\n\nfunction shallowCompareArrays(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\nconst HEX_NUMBERS = new Array(256).fill(\"\").map((_, index) => (\"0\" + index.toString(16)).slice(-2));\nfunction uid() {\n const [r1, r2, r3, r4] = crypto.getRandomValues(new Uint32Array(4));\n return \"e\" + HEX_NUMBERS[r1 >> 0 & 255] + HEX_NUMBERS[r1 >> 8 & 255] + HEX_NUMBERS[r1 >> 16 & 255] + HEX_NUMBERS[r1 >> 24 & 255] + HEX_NUMBERS[r2 >> 0 & 255] + HEX_NUMBERS[r2 >> 8 & 255] + HEX_NUMBERS[r2 >> 16 & 255] + HEX_NUMBERS[r2 >> 24 & 255] + HEX_NUMBERS[r3 >> 0 & 255] + HEX_NUMBERS[r3 >> 8 & 255] + HEX_NUMBERS[r3 >> 16 & 255] + HEX_NUMBERS[r3 >> 24 & 255] + HEX_NUMBERS[r4 >> 0 & 255] + HEX_NUMBERS[r4 >> 8 & 255] + HEX_NUMBERS[r4 >> 16 & 255] + HEX_NUMBERS[r4 >> 24 & 255];\n}\n\nfunction uniq(source) {\n return Array.from(new Set(source));\n}\n\nasync function waitForWindowEntry(entryNames, config) {\n const tryPickBundle = () => entryNames.map((name) => window[name]).filter(Boolean)[0];\n return waitFor(\n () => {\n const result = tryPickBundle();\n if (!result) {\n throw new Error(`Window entry \"${entryNames.join(\",\")}\" not found.`);\n }\n return result;\n },\n config\n );\n}\n\nfunction filterObjectValues(obj, filter) {\n const filteredEntries = Object.entries(obj).filter(([key, value]) => filter(value, key));\n return Object.fromEntries(filteredEntries);\n}\n\nfunction filterBlankObjectValues(obj) {\n return filterObjectValues(\n obj,\n (value) => value !== null && value !== void 0\n );\n}\n\nfunction mapObjectValues(obj, mapper) {\n const mappedEntries = Object.entries(obj).map(([key, value]) => [key, mapper(value, key)]);\n return Object.fromEntries(mappedEntries);\n}\n\nfunction without(itemsToRemove, items) {\n return items.filter((item) => !itemsToRemove.includes(item));\n}\n\nfunction mapObjectKeys(obj, fn) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => [fn(key), value])\n );\n}\n\nfunction kebabToCamelCase(str) {\n return str.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());\n}\n\nfunction isSemanticVersion(version) {\n return !!version && /^\\d+\\.\\d+\\.\\d+/.test(version);\n}\n\nfunction destructureSemanticVersion(version) {\n if (!isSemanticVersion(version)) {\n throw new Error(`Invalid semantic version: ${version || \"<blank>\"}.`);\n }\n const [major, minor, patch] = version.split(\".\");\n return {\n major: Number.parseInt(major, 10),\n minor: Number.parseInt(minor, 10),\n patch: Number.parseInt(patch, 10)\n };\n}\n\nfunction compareSemanticVersions(a, b) {\n const parsedA = destructureSemanticVersion(a);\n const parsedB = destructureSemanticVersion(b);\n return Math.sign(\n parsedA.major - parsedB.major || parsedA.minor - parsedB.minor || parsedA.patch - parsedB.patch\n );\n}\n\nfunction isCKTestingVersion(version) {\n if (!version) {\n return false;\n }\n return [\"nightly\", \"alpha\", \"internal\", \"nightly-\", \"staging\"].some((testVersion) => version.includes(testVersion));\n}\nfunction isCKZeroBaseVersion(version) {\n return !!version?.startsWith(\"0.0.0-\");\n}\nfunction isCKVersion(version) {\n return isSemanticVersion(version) || isCKTestingVersion(version);\n}\n\nfunction appendExtraPluginsToEditorConfig(config, plugins) {\n const extraPlugins = config.extraPlugins || [];\n return {\n ...config,\n extraPlugins: [\n ...extraPlugins,\n ...plugins.filter((item) => !extraPlugins.includes(item))\n ]\n };\n}\n\nfunction getLicenseVersionFromEditorVersion(version) {\n if (isCKTestingVersion(version)) {\n return 3;\n }\n const { major } = destructureSemanticVersion(version);\n switch (true) {\n case major >= 44:\n return 3;\n case major >= 38:\n return 2;\n default:\n return 1;\n }\n}\n\nfunction getCKBaseBundleInstallationInfo() {\n const { CKEDITOR_VERSION, CKEDITOR } = window;\n if (!isCKVersion(CKEDITOR_VERSION)) {\n return null;\n }\n return {\n source: CKEDITOR ? \"cdn\" : \"npm\",\n version: CKEDITOR_VERSION\n };\n}\n\nfunction getSupportedLicenseVersionInstallationInfo() {\n const installationInfo = getCKBaseBundleInstallationInfo();\n if (!installationInfo) {\n return null;\n }\n return getLicenseVersionFromEditorVersion(installationInfo.version);\n}\n\nfunction isCKEditorFreeLicense(licenseKey, licenseVersion) {\n licenseVersion ||= getSupportedLicenseVersionInstallationInfo() || void 0;\n switch (licenseVersion) {\n case 1:\n case 2:\n return licenseKey === void 0;\n case 3:\n return licenseKey === \"GPL\";\n default: {\n return false;\n }\n }\n}\n\nfunction createIntegrationUsageDataPlugin(integrationName, usageData) {\n return function IntegrationUsageDataPlugin(editor) {\n if (isCKEditorFreeLicense(editor.config.get(\"licenseKey\"))) {\n return;\n }\n editor.on(\"collectUsageData\", (source, { setUsageData }) => {\n setUsageData(`integration.${integrationName}`, usageData);\n });\n };\n}\n\nconst CK_CDN_URL = \"https://cdn.ckeditor.com\";\nfunction createCKCdnUrl(bundle, file, version) {\n return `${CK_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\nconst CKBOX_CDN_URL = \"https://cdn.ckbox.io\";\nfunction createCKBoxCdnUrl(bundle, file, version) {\n return `${CKBOX_CDN_URL}/${bundle}/${version}/${file}`;\n}\n\nconst CK_DOCS_URL = \"https://ckeditor.com/docs/ckeditor5\";\nfunction createCKDocsUrl(path, version = \"latest\") {\n return `${CK_DOCS_URL}/${version}/${path}`;\n}\n\nfunction createCKCdnBaseBundlePack({\n version,\n translations,\n createCustomCdnUrl = createCKCdnUrl\n}) {\n const urls = {\n scripts: [\n // Load the main script of the base features.\n createCustomCdnUrl(\"ckeditor5\", \"ckeditor5.umd.js\", version),\n // Load all JavaScript files from the base features.\n // EN bundle is prebuilt into the main script, so we don't need to load it separately.\n ...without([\"en\"], translations || []).map(\n (translation) => createCustomCdnUrl(\"ckeditor5\", `translations/${translation}.umd.js`, version)\n )\n ],\n stylesheets: [\n createCustomCdnUrl(\"ckeditor5\", \"ckeditor5.css\", version)\n ]\n };\n return {\n // Preload resources specified in the pack, before loading the main script.\n preload: [\n ...urls.stylesheets,\n ...urls.scripts\n ],\n scripts: [\n // It's safe to load translations and the main script in parallel.\n async (attributes) => injectScriptsInParallel(urls.scripts, attributes)\n ],\n // Load all stylesheets of the base features.\n stylesheets: urls.stylesheets,\n // Pick the exported global variables from the window object.\n checkPluginLoaded: async () => waitForWindowEntry([\"CKEDITOR\"]),\n // Check if the CKEditor base bundle is already loaded and throw an error if it is.\n beforeInject: () => {\n const installationInfo = getCKBaseBundleInstallationInfo();\n switch (installationInfo?.source) {\n case \"npm\":\n throw new Error(\n \"CKEditor 5 is already loaded from npm. Check the migration guide for more details: \" + createCKDocsUrl(\"updating/migrations/vanilla-js.html\")\n );\n case \"cdn\":\n if (installationInfo.version !== version) {\n throw new Error(\n `CKEditor 5 is already loaded from CDN in version ${installationInfo.version}. Remove the old <script> and <link> tags loading CKEditor 5 to allow loading the ${version} version.`\n );\n }\n break;\n }\n }\n };\n}\n\nfunction createCKCdnPremiumBundlePack({\n version,\n translations,\n createCustomCdnUrl = createCKCdnUrl\n}) {\n const urls = {\n scripts: [\n // Load the main script of the premium features.\n createCustomCdnUrl(\"ckeditor5-premium-features\", \"ckeditor5-premium-features.umd.js\", version),\n // Load all JavaScript files from the premium features.\n // EN bundle is prebuilt into the main script, so we don't need to load it separately.\n ...without([\"en\"], translations || []).map(\n (translation) => createCustomCdnUrl(\"ckeditor5-premium-features\", `translations/${translation}.umd.js`, version)\n )\n ],\n stylesheets: [\n createCustomCdnUrl(\"ckeditor5-premium-features\", \"ckeditor5-premium-features.css\", version)\n ]\n };\n return {\n // Preload resources specified in the pack, before loading the main script.\n preload: [\n ...urls.stylesheets,\n ...urls.scripts\n ],\n scripts: [\n // It's safe to load translations and the main script in parallel.\n async (attributes) => injectScriptsInParallel(urls.scripts, attributes)\n ],\n // Load all stylesheets of the premium features.\n stylesheets: urls.stylesheets,\n // Pick the exported global variables from the window object.\n checkPluginLoaded: async () => waitForWindowEntry([\"CKEDITOR_PREMIUM_FEATURES\"])\n };\n}\n\nasync function loadCKCdnResourcesPack(pack) {\n let {\n htmlAttributes = {},\n scripts = [],\n stylesheets = [],\n preload,\n beforeInject,\n checkPluginLoaded\n } = normalizeCKCdnResourcesPack(pack);\n beforeInject?.();\n if (!preload) {\n preload = uniq([\n ...stylesheets.filter((item) => typeof item === \"string\"),\n ...scripts.filter((item) => typeof item === \"string\")\n ]);\n }\n for (const url of preload) {\n preloadResource(url, {\n attributes: htmlAttributes\n });\n }\n await Promise.all(\n uniq(stylesheets).map((href) => injectStylesheet({\n href,\n attributes: htmlAttributes,\n placementInHead: \"start\"\n }))\n );\n for (const script of uniq(scripts)) {\n const injectorProps = {\n attributes: htmlAttributes\n };\n if (typeof script === \"string\") {\n await injectScript(script, injectorProps);\n } else {\n await script(injectorProps);\n }\n }\n return checkPluginLoaded?.();\n}\nfunction normalizeCKCdnResourcesPack(pack) {\n if (Array.isArray(pack)) {\n return {\n scripts: pack.filter(\n (item) => typeof item === \"function\" || item.endsWith(\".js\")\n ),\n stylesheets: pack.filter(\n (item) => item.endsWith(\".css\")\n )\n };\n }\n if (typeof pack === \"function\") {\n return {\n checkPluginLoaded: pack\n };\n }\n return pack;\n}\n\nfunction combineCKCdnBundlesPacks(packs) {\n const normalizedPacks = mapObjectValues(\n filterBlankObjectValues(packs),\n normalizeCKCdnResourcesPack\n );\n const mergedPacks = Object.values(normalizedPacks).reduce(\n (acc, pack) => {\n acc.scripts.push(...pack.scripts ?? []);\n acc.stylesheets.push(...pack.stylesheets ?? []);\n acc.preload.push(...pack.preload ?? []);\n return acc;\n },\n {\n preload: [],\n scripts: [],\n stylesheets: []\n }\n );\n const checkPluginLoaded = async () => {\n const exportedGlobalVariables = /* @__PURE__ */ Object.create(null);\n for (const [name, pack] of Object.entries(normalizedPacks)) {\n exportedGlobalVariables[name] = await pack?.checkPluginLoaded?.();\n }\n return exportedGlobalVariables;\n };\n const beforeInject = () => {\n for (const pack of Object.values(normalizedPacks)) {\n pack.beforeInject?.();\n }\n };\n return {\n ...mergedPacks,\n beforeInject,\n checkPluginLoaded\n };\n}\n\nfunction getCKBoxInstallationInfo() {\n const version = window.CKBox?.version;\n if (!isSemanticVersion(version)) {\n return null;\n }\n return {\n source: \"cdn\",\n version\n };\n}\n\nfunction createCKBoxBundlePack({\n version,\n theme = \"lark\",\n translations,\n createCustomCdnUrl = createCKBoxCdnUrl\n}) {\n return {\n // Load the main script of the base features.\n scripts: [\n createCustomCdnUrl(\"ckbox\", \"ckbox.js\", version),\n // EN bundle is prebuilt into the main script, so we don't need to load it separately.\n ...without([\"en\"], translations || []).map(\n (translation) => createCustomCdnUrl(\"ckbox\", `translations/${translation}.js`, version)\n )\n ],\n // Load optional theme, if provided. It's not required but recommended because it improves the look and feel.\n ...theme && {\n stylesheets: [\n createCustomCdnUrl(\"ckbox\", `styles/themes/${theme}.css`, version)\n ]\n },\n // Pick the exported global variables from the window object.\n checkPluginLoaded: async () => waitForWindowEntry([\"CKBox\"]),\n // Check if the CKBox bundle is already loaded and throw an error if it is.\n beforeInject: () => {\n const installationInfo = getCKBoxInstallationInfo();\n if (installationInfo && installationInfo.version !== version) {\n throw new Error(\n `CKBox is already loaded from CDN in version ${installationInfo.version}. Remove the old <script> and <link> tags loading CKBox to allow loading the ${version} version.`\n );\n }\n }\n };\n}\n\nfunction isCKCdnSupportedByEditorVersion(version) {\n if (isCKTestingVersion(version)) {\n return true;\n }\n const { major } = destructureSemanticVersion(version);\n const licenseVersion = getLicenseVersionFromEditorVersion(version);\n switch (licenseVersion) {\n // For newer license versions, we support all newer versions.\n case 3:\n return true;\n // For the license v1-v2, we support only the 43 version.\n default:\n return major === 43;\n }\n}\n\nfunction combineCdnPluginsPacks(pluginsPacks) {\n const normalizedPluginsPacks = mapObjectValues(pluginsPacks, (pluginPack, pluginName) => {\n if (!pluginPack) {\n return void 0;\n }\n const normalizedPluginPack = normalizeCKCdnResourcesPack(pluginPack);\n return {\n // Provide default window accessor object if the plugin pack does not define it.\n checkPluginLoaded: async () => waitForWindowEntry([pluginName]),\n // Transform the plugin pack to a normalized advanced pack.\n ...normalizedPluginPack\n };\n });\n return combineCKCdnBundlesPacks(\n normalizedPluginsPacks\n );\n}\n\nfunction loadCKEditorCloud(config) {\n const {\n version,\n translations,\n plugins,\n premium,\n ckbox,\n createCustomCdnUrl,\n injectedHtmlElementsAttributes = {\n crossorigin: \"anonymous\"\n }\n } = config;\n validateCKEditorVersion(version);\n const pack = combineCKCdnBundlesPacks({\n CKEditor: createCKCdnBaseBundlePack({\n version,\n translations,\n createCustomCdnUrl\n }),\n ...premium && {\n CKEditorPremiumFeatures: createCKCdnPremiumBundlePack({\n version,\n translations,\n createCustomCdnUrl\n })\n },\n ...ckbox && {\n CKBox: createCKBoxBundlePack(ckbox)\n },\n loadedPlugins: combineCdnPluginsPacks(plugins ?? {})\n });\n return loadCKCdnResourcesPack(\n {\n ...pack,\n htmlAttributes: injectedHtmlElementsAttributes\n }\n );\n}\nfunction validateCKEditorVersion(version) {\n if (isCKTestingVersion(version)) {\n console.warn(\n \"You are using a testing version of CKEditor 5. Please remember that it is not suitable for production environments.\"\n );\n }\n if (!isCKCdnSupportedByEditorVersion(version)) {\n throw new Error(\n `The CKEditor 5 CDN can't be used with the given editor version: ${version}. Please make sure you are using at least the CKEditor 5 version 44.`\n );\n }\n}\n\nfunction compareInstalledCKBaseVersion(version) {\n const installedVersion = getCKBaseBundleInstallationInfo()?.version;\n if (!installedVersion) {\n return null;\n }\n if (isCKZeroBaseVersion(version)) {\n return -1;\n }\n if (!isSemanticVersion(installedVersion) || isCKZeroBaseVersion(installedVersion)) {\n return 1;\n }\n return compareSemanticVersions(installedVersion, version);\n}\n\nfunction getInstalledCKBaseFeatures() {\n const installedVersion = compareInstalledCKBaseVersion(\"48.0.0\");\n const isV48OrNewer = installedVersion !== null && installedVersion >= 0;\n return {\n rootsConfigEntry: isV48OrNewer,\n elementConfigAttachment: isV48OrNewer\n };\n}\n\nfunction assignAttributesPropToMultiRootEditorConfig(attributes, config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n const knownRootsKeys = uniq([\n ...Object.keys(attributes || {}),\n ...Object.keys(config.roots || {}),\n ...Object.keys(config.rootsAttributes || {})\n ]);\n const roots = knownRootsKeys.reduce((acc, rootName) => {\n const legacyRootAttributes = config.rootsAttributes?.[rootName];\n const configRootValue = config.roots?.[rootName];\n acc[rootName] = {\n ...configRootValue,\n modelAttributes: attributes?.[rootName] ?? {\n ...legacyRootAttributes,\n ...configRootValue?.modelAttributes\n }\n };\n return acc;\n }, /* @__PURE__ */ Object.create(null));\n const mappedConfig = {\n ...config,\n roots\n };\n delete mappedConfig.rootsAttributes;\n return mappedConfig;\n }\n return {\n ...config,\n rootsAttributes: attributes\n };\n}\n\nfunction assignInitialDataToMultirootEditorConfig(data, config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n const knownRootsKeys = uniq([\n ...Object.keys(data || {}),\n ...Object.keys(config.roots || {}),\n ...typeof config.initialData === \"string\" ? [] : Object.keys(config.initialData || {})\n ]);\n const roots = knownRootsKeys.reduce((acc, rootName) => {\n const rootConfig = config.roots?.[rootName];\n const rootInitialData = rootConfig?.initialData;\n if (rootInitialData && data?.[rootName]) {\n console.warn(\n `Editor data should be provided either using \\`config.roots['${rootName}'].initialData\\` or the bound component property. The config value takes precedence over the bound component property and will be used when both are specified.`\n );\n }\n acc[rootName] = {\n ...rootConfig,\n initialData: rootInitialData || data?.[rootName] || config.initialData?.[rootName] || \"\"\n };\n return acc;\n }, /* @__PURE__ */ Object.create(null));\n const normalizedConfig = {\n ...config,\n roots\n };\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n if (data && config?.initialData) {\n console.warn(\n \"Editor data should be provided either using `config.initialData` or the bound component property. The config value takes precedence over the bound component property and will be used when both are specified.\"\n );\n }\n return {\n ...config,\n initialData: config?.initialData || data\n };\n}\n\nfunction assignElementToEditorConfig(Editor, element, config) {\n if (!Editor.editorName || Editor.editorName === \"ClassicEditor\") {\n return {\n ...config,\n attachTo: element\n };\n }\n const mappedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...config.roots?.main,\n element\n }\n }\n };\n delete mappedConfig.root;\n return mappedConfig;\n}\n\nfunction getInitialDataFromEditorConfig(config) {\n const supports = getInstalledCKBaseFeatures();\n if (supports.rootsConfigEntry) {\n return config.roots?.main?.initialData || config.root?.initialData || /* legacy */\n config.initialData;\n }\n return config.initialData;\n}\n\nfunction assignInitialDataToEditorConfig(config, data, ignoreConfigInitialData) {\n const supports = getInstalledCKBaseFeatures();\n const configInitialData = ignoreConfigInitialData ? null : getInitialDataFromEditorConfig(config);\n if (supports.rootsConfigEntry) {\n const normalizedConfig = {\n ...config,\n roots: {\n ...config.roots,\n main: {\n ...config.root,\n ...config.roots?.main,\n initialData: configInitialData || data || \"\"\n }\n }\n };\n if (data && configInitialData) {\n console.warn(\n \"Editor data should be provided either via the config (`config.root.initialData`) or the component's `data` property, but not both. The configuration value takes precedence.\"\n );\n }\n delete normalizedConfig.root;\n delete normalizedConfig.initialData;\n return normalizedConfig;\n }\n if (data && configInitialData) {\n console.warn(\n \"Editor data should be provided either via the config (`config.initialData`) or the component's `data` property, but not both. The configuration value takes precedence.\"\n );\n }\n return {\n ...config,\n initialData: configInitialData || data || \"\"\n };\n}\n\nexport { CKBOX_CDN_URL, CK_CDN_URL, INJECTED_SCRIPTS, INJECTED_STYLESHEETS, appendExtraPluginsToEditorConfig, assignAttributesPropToMultiRootEditorConfig, assignElementToEditorConfig, assignInitialDataToEditorConfig, assignInitialDataToMultirootEditorConfig, compareInstalledCKBaseVersion, compareSemanticVersions, createCKBoxCdnUrl, createCKCdnUrl, createDefer, createIntegrationUsageDataPlugin, destructureSemanticVersion, filterBlankObjectValues, filterObjectValues, getCKBaseBundleInstallationInfo, getCKBoxInstallationInfo, getInitialDataFromEditorConfig, getInstalledCKBaseFeatures, injectScript, injectScriptsInParallel, injectStylesheet, isCKEditorFreeLicense, isCKTestingVersion, isCKVersion, isCKZeroBaseVersion, isSSR, isSemanticVersion, kebabToCamelCase, loadCKEditorCloud, mapObjectKeys, mapObjectValues, omit, once, overwriteArray, overwriteObject, preloadResource, shallowCompareArrays, uid, uniq, waitFor, waitForWindowEntry, without };\n//# sourceMappingURL=index.js.map\n"],"names":["createDefer","deferred","resolve","once","fn","lastResult","args","HEX_NUMBERS","_","index","uid","r1","r2","r3","r4","mapObjectKeys","obj","key","value","kebabToCamelCase","str","match","letter","isSemanticVersion","version","destructureSemanticVersion","major","minor","patch","compareSemanticVersions","a","b","parsedA","parsedB","isCKTestingVersion","testVersion","isCKZeroBaseVersion","isCKVersion","appendExtraPluginsToEditorConfig","config","plugins","extraPlugins","item","getLicenseVersionFromEditorVersion","getCKBaseBundleInstallationInfo","CKEDITOR_VERSION","CKEDITOR","getSupportedLicenseVersionInstallationInfo","installationInfo","isCKEditorFreeLicense","licenseKey","licenseVersion","createIntegrationUsageDataPlugin","integrationName","usageData","editor","source","setUsageData","compareInstalledCKBaseVersion","_a","installedVersion","getInstalledCKBaseFeatures","isV48OrNewer","assignElementToEditorConfig","Editor","element","mappedConfig","getInitialDataFromEditorConfig","_b","_c","assignInitialDataToEditorConfig","data","ignoreConfigInitialData","supports","configInitialData","normalizedConfig"],"mappings":"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","x_google_ignoreList":[0]}