@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.
- package/dist/components/Audit/AuditLogList.d.ts +27 -0
- package/dist/components/Audit/AuditLogList.js +272 -0
- package/dist/components/Audit/AuditLogList.js.map +1 -0
- package/dist/components/Audit/formatAuditCurl.d.ts +27 -0
- package/dist/components/Audit/formatAuditCurl.js +115 -0
- package/dist/components/Audit/formatAuditCurl.js.map +1 -0
- package/dist/components/Audit/formatAuditJson.d.ts +15 -0
- package/dist/components/Audit/formatAuditJson.js +135 -0
- package/dist/components/Audit/formatAuditJson.js.map +1 -0
- package/dist/components/Audit/index.d.ts +3 -0
- package/dist/components/Audit/style.module.scss.js +30 -0
- package/dist/components/Audit/style.module.scss.js.map +1 -0
- package/dist/components/Audit/types.d.ts +39 -0
- package/dist/components/Editor/RichTextEditor/RichTextEditor.d.ts +24 -0
- package/dist/components/Editor/RichTextEditor/RichTextEditor.js +93 -0
- package/dist/components/Editor/RichTextEditor/RichTextEditor.js.map +1 -0
- package/dist/components/Editor/RichTextEditor/index.d.ts +2 -0
- package/dist/components/Editor/RichTextEditor/style.module.scss.js +11 -0
- package/dist/components/Editor/RichTextEditor/style.module.scss.js.map +1 -0
- package/dist/components/Editor/VariablePicker.d.ts +19 -0
- package/dist/components/Editor/VariablePicker.js +55 -0
- package/dist/components/Editor/VariablePicker.js.map +1 -0
- package/dist/components/Editor/index.d.ts +7 -0
- package/dist/components/Editor/index.js +21 -0
- package/dist/components/Editor/index.js.map +1 -0
- package/dist/components/Editor/msgVarTokenPlugin.d.ts +13 -0
- package/dist/components/Editor/msgVarTokenPlugin.js +94 -0
- package/dist/components/Editor/msgVarTokenPlugin.js.map +1 -0
- package/dist/components/Editor/variableMention.d.ts +37 -0
- package/dist/components/Editor/variableMention.js +64 -0
- package/dist/components/Editor/variableMention.js.map +1 -0
- package/dist/components/FormInfo/RichTextField/index.d.ts +21 -0
- package/dist/components/FormInfo/RichTextField/index.js +82 -0
- package/dist/components/FormInfo/RichTextField/index.js.map +1 -0
- package/dist/components/FormInfo/RichTextField/style.module.scss.js +9 -0
- package/dist/components/FormInfo/RichTextField/style.module.scss.js.map +1 -0
- package/dist/components/FormInfo/VariableMentionInput/index.d.ts +17 -0
- package/dist/components/FormInfo/VariableMentionInput/index.js +73 -0
- package/dist/components/FormInfo/VariableMentionInput/index.js.map +1 -0
- package/dist/components/FormInfo/VariableMentionInput/style.module.scss.js +11 -0
- package/dist/components/FormInfo/VariableMentionInput/style.module.scss.js.map +1 -0
- package/dist/components/FormInfo/fields.d.ts +5 -0
- package/dist/components/FormInfo/fields.js +32 -23
- package/dist/components/FormInfo/fields.js.map +1 -1
- package/dist/components/FormInfo/index.d.ts +4 -0
- package/dist/components/StateBar/StateBar.d.ts +19 -6
- package/dist/components/StateBar/StateBar.js +87 -50
- package/dist/components/StateBar/StateBar.js.map +1 -1
- package/dist/components/StateBar/style.module.scss.js +13 -10
- package/dist/components/StateBar/style.module.scss.js.map +1 -1
- package/dist/components/Tools/Inbox/InboxBell/InboxBell.d.ts +45 -0
- package/dist/components/Tools/Inbox/InboxBell/InboxBell.js +156 -0
- package/dist/components/Tools/Inbox/InboxBell/InboxBell.js.map +1 -0
- package/dist/components/Tools/Inbox/InboxBell/index.d.ts +2 -0
- package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js +30 -0
- package/dist/components/Tools/Inbox/InboxBell/style.module.scss.js.map +1 -0
- package/dist/components/Tools/Inbox/index.d.ts +2 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.d.ts +8 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js +56 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/List/columns.js.map +1 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.d.ts +8 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js +216 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/MessageTemplateAdmin.js.map +1 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.d.ts +26 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js +190 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/Modal/TemplateFormModal.js.map +1 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/index.d.ts +3 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js +12 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/style.module.scss.js.map +1 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.d.ts +76 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js +26 -0
- package/dist/components/Tools/MessageCenter/MessageTemplateAdmin/types.js.map +1 -0
- package/dist/components/Tools/MessageCenter/index.d.ts +3 -0
- package/dist/components/Tools/MessageCenter/utils/templateCode.d.ts +8 -0
- package/dist/components/Tools/MessageCenter/utils/templateCode.js +25 -0
- package/dist/components/Tools/MessageCenter/utils/templateCode.js.map +1 -0
- package/dist/components/Tools/index.d.ts +5 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/editor.d.ts +5 -0
- package/dist/editor.js +21 -0
- package/dist/editor.js.map +1 -0
- package/dist/form-info.js +33 -29
- package/dist/form-info.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +805 -773
- package/dist/index.js.map +1 -1
- package/dist/marsun-components-core.css +4 -1
- package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +301 -0
- package/dist/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +1256 -0
- package/dist/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js +2107 -0
- package/dist/node_modules/@ckeditor/ckeditor5-core/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +259 -0
- package/dist/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +23990 -0
- package/dist/node_modules/@ckeditor/ckeditor5-engine/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +249 -0
- package/dist/node_modules/@ckeditor/ckeditor5-enter/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +47 -0
- package/dist/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js +100 -0
- package/dist/node_modules/@ckeditor/ckeditor5-font/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +31 -0
- package/dist/node_modules/@ckeditor/ckeditor5-icons/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js +194 -0
- package/dist/node_modules/@ckeditor/ckeditor5-integrations-common/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js +2042 -0
- package/dist/node_modules/@ckeditor/ckeditor5-list/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +9 -0
- package/dist/node_modules/@ckeditor/ckeditor5-mention/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +167 -0
- package/dist/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js +471 -0
- package/dist/node_modules/@ckeditor/ckeditor5-react/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +139 -0
- package/dist/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +755 -0
- package/dist/node_modules/@ckeditor/ckeditor5-typing/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +7838 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js +422 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/conversions.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js +33 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js +47 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-convert/route.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js +156 -0
- package/dist/node_modules/@ckeditor/ckeditor5-ui/node_modules/color-name/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +313 -0
- package/dist/node_modules/@ckeditor/ckeditor5-undo/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +2942 -0
- package/dist/node_modules/@ckeditor/ckeditor5-utils/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +892 -0
- package/dist/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js.map +1 -0
- package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +1047 -0
- package/dist/node_modules/@ckeditor/ckeditor5-widget/dist/index.js.map +1 -0
- package/dist/node_modules/color-parse/node_modules/color-name/index.js +153 -0
- package/dist/node_modules/color-parse/node_modules/color-name/index.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js +7 -0
- package/dist/node_modules/es-toolkit/dist/_internal/globalThis.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js +7 -0
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js +7 -0
- package/dist/node_modules/es-toolkit/dist/_internal/isUnsafeToWriteProperty.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/assignValue.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getSymbols.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/getTag.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js +16 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js +15 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isIndex.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isKey.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js +30 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/tags.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/_internal/toKey.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js +17 -0
- package/dist/node_modules/es-toolkit/dist/compat/function/debounce.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js +13 -0
- package/dist/node_modules/es-toolkit/dist/compat/function/throttle.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js +17 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/assignIn.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/clone.js +102 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/clone.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeep.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +33 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/get.js +39 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/get.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/has.js +21 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/has.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js +33 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/keysIn.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js +10 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/mapValues.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/merge.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/merge.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js +53 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/mergeWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/property.js +10 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/property.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/set.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/set.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js +31 -0
- package/dist/node_modules/es-toolkit/dist/compat/object/updateWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArguments.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArray.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLike.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isArrayLikeObject.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isElement.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +15 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isFunction.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatch.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js +81 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObject.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isObjectLike.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +16 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isString.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isSymbol.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/isTypedArray.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matches.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +23 -0
- package/dist/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/eq.js +7 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/eq.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js +19 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/iteratee.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/times.js +11 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/times.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toFinite.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js +9 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toInteger.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js +8 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toNumber.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js +37 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toPath.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toString.js +15 -0
- package/dist/node_modules/es-toolkit/dist/compat/util/toString.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/function/after.js +11 -0
- package/dist/node_modules/es-toolkit/dist/function/after.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/function/debounce.js +30 -0
- package/dist/node_modules/es-toolkit/dist/function/debounce.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/function/identity.js +7 -0
- package/dist/node_modules/es-toolkit/dist/function/identity.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/function/noop.js +6 -0
- package/dist/node_modules/es-toolkit/dist/function/noop.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/object/clone.js +27 -0
- package/dist/node_modules/es-toolkit/dist/object/clone.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js +8 -0
- package/dist/node_modules/es-toolkit/dist/object/cloneDeep.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js +121 -0
- package/dist/node_modules/es-toolkit/dist/object/cloneDeepWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/object/mapValues.js +12 -0
- package/dist/node_modules/es-toolkit/dist/object/mapValues.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js +8 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isBuffer.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js +9 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isEqual.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js +110 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isEqualWith.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isLength.js +7 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isLength.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js +9 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isPlainObject.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js +7 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isPrimitive.js.map +1 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js +7 -0
- package/dist/node_modules/es-toolkit/dist/predicate/isTypedArray.js.map +1 -0
- package/dist/styles/global.css +4 -1
- package/dist/utils/copyText.d.ts +4 -0
- package/dist/utils/copyText.js +21 -0
- package/dist/utils/copyText.js.map +1 -0
- package/package.json +9 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../node_modules/@ckeditor/ckeditor5-clipboard/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 { Plugin } from \"@ckeditor/ckeditor5-core\";\nimport { DomEmitterMixin, EventInfo, Rect, ResizeObserver, createElement, delay, env, getRangeFromMouseEvent, global, toUnit, uid } from \"@ckeditor/ckeditor5-utils\";\nimport { DomEventObserver, ModelLiveRange, ModelRange, PointerObserver, ViewDataTransfer } from \"@ckeditor/ckeditor5-engine\";\nimport { mapValues, throttle } from \"es-toolkit/compat\";\nimport { Widget, isWidget } from \"@ckeditor/ckeditor5-widget\";\nimport { View } from \"@ckeditor/ckeditor5-ui\";\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 clipboard/utils/plaintexttohtml\n*/\n/**\n* Converts plain text to its HTML-ized version.\n*\n* @param text The plain text to convert.\n* @returns HTML generated from the plain text.\n*/\nfunction plainTextToHtml(text) {\n\ttext = text.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\\r?\\n\\r?\\n/g, \"</p><p>\").replace(/\\r?\\n/g, \"<br>\").replace(/\\t/g, \" \").replace(/^\\s/, \" \").replace(/\\s$/, \" \").replace(/\\s\\s/g, \" \");\n\tif (text.includes(\"</p><p>\") || text.includes(\"<br>\")) text = `<p>${text}</p>`;\n\treturn text;\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 clipboard/clipboardobserver\n*/\n/**\n* Clipboard events observer.\n*\n* Fires the following events:\n*\n* * {@link module:engine/view/document~ViewDocument#event:clipboardInput},\n* * {@link module:engine/view/document~ViewDocument#event:paste},\n* * {@link module:engine/view/document~ViewDocument#event:copy},\n* * {@link module:engine/view/document~ViewDocument#event:cut},\n* * {@link module:engine/view/document~ViewDocument#event:drop},\n* * {@link module:engine/view/document~ViewDocument#event:dragover},\n* * {@link module:engine/view/document~ViewDocument#event:dragging},\n* * {@link module:engine/view/document~ViewDocument#event:dragstart},\n* * {@link module:engine/view/document~ViewDocument#event:dragend},\n* * {@link module:engine/view/document~ViewDocument#event:dragenter},\n* * {@link module:engine/view/document~ViewDocument#event:dragleave}.\n*\n* **Note**: This observer is not available by default (ckeditor5-engine does not add it on its own).\n* To make it available, it needs to be added to {@link module:engine/view/document~ViewDocument} by using\n* the {@link module:engine/view/view~EditingView#addObserver `View#addObserver()`} method. Alternatively, you can load the\n* {@link module:clipboard/clipboard~Clipboard} plugin which adds this observer automatically (because it uses it).\n*/\nvar ClipboardObserver = class extends DomEventObserver {\n\tdomEventType = [\n\t\t\"paste\",\n\t\t\"copy\",\n\t\t\"cut\",\n\t\t\"drop\",\n\t\t\"dragover\",\n\t\t\"dragstart\",\n\t\t\"dragend\",\n\t\t\"dragenter\",\n\t\t\"dragleave\"\n\t];\n\tconstructor(view) {\n\t\tsuper(view);\n\t\tconst viewDocument = this.document;\n\t\tthis.listenTo(viewDocument, \"paste\", handleInput(\"clipboardInput\"), { priority: \"low\" });\n\t\tthis.listenTo(viewDocument, \"drop\", handleInput(\"clipboardInput\"), { priority: \"low\" });\n\t\tthis.listenTo(viewDocument, \"dragover\", handleInput(\"dragging\"), { priority: \"low\" });\n\t\tfunction handleInput(type) {\n\t\t\treturn (evt, data) => {\n\t\t\t\tdata.preventDefault();\n\t\t\t\tconst targetRanges = data.dropRange ? [data.dropRange] : null;\n\t\t\t\tconst dataTransfer = data.dataTransfer;\n\t\t\t\tconst eventInfo = new EventInfo(viewDocument, type);\n\t\t\t\tlet content = \"\";\n\t\t\t\tif (dataTransfer.getData(\"text/html\")) content = dataTransfer.getData(\"text/html\");\n\t\t\t\telse if (dataTransfer.getData(\"text/plain\")) content = plainTextToHtml(dataTransfer.getData(\"text/plain\"));\n\t\t\t\tviewDocument.fire(eventInfo, {\n\t\t\t\t\tdataTransfer,\n\t\t\t\t\tcontent,\n\t\t\t\t\tmethod: evt.name,\n\t\t\t\t\ttargetRanges,\n\t\t\t\t\ttarget: data.target,\n\t\t\t\t\tdomEvent: data.domEvent\n\t\t\t\t});\n\t\t\t\tif (eventInfo.stop.called) data.stopPropagation();\n\t\t\t};\n\t\t}\n\t}\n\tonDomEvent(domEvent) {\n\t\tconst nativeDataTransfer = \"clipboardData\" in domEvent ? domEvent.clipboardData : domEvent.dataTransfer;\n\t\tconst cacheFiles = domEvent.type == \"drop\" || domEvent.type == \"paste\";\n\t\tconst evtData = { dataTransfer: new ViewDataTransfer(nativeDataTransfer, { cacheFiles }) };\n\t\tif (domEvent.type == \"drop\" || domEvent.type == \"dragover\") {\n\t\t\tconst domRange = getRangeFromMouseEvent(domEvent);\n\t\t\tevtData.dropRange = domRange && this.view.domConverter.domRangeToView(domRange);\n\t\t}\n\t\tthis.fire(domEvent.type, domEvent, evtData);\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 clipboard/utils/normalizeclipboarddata\n*/\n/**\n* Removes some popular browser quirks out of the clipboard data (HTML).\n* Removes all HTML comments. These are considered an internal thing and it makes little sense if they leak into the editor data.\n*\n* @param data The HTML data to normalize.\n* @returns Normalized HTML.\n* @internal\n*/\nfunction normalizeClipboardData(data) {\n\treturn data.replace(/<span(?: class=\"Apple-converted-space\"|)>(\\s+)<\\/span>/g, (fullMatch, spaces) => {\n\t\tif (spaces.length == 1) return \" \";\n\t\treturn spaces;\n\t}).replace(/<!--[\\s\\S]*?-->/g, \"\");\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*/\nconst smallPaddingElements = [\"figcaption\", \"li\"];\nconst listElements = [\"ol\", \"ul\"];\n/**\n* Converts {@link module:engine/view/item~ViewItem view item} and all of its children to plain text.\n*\n* @param converter The converter instance.\n* @param viewItem View item to convert.\n* @returns Plain text representation of `viewItem`.\n*/\nfunction viewToPlainText(converter, viewItem) {\n\tif (viewItem.is(\"$text\") || viewItem.is(\"$textProxy\")) return viewItem.data;\n\tif (viewItem.is(\"element\", \"img\") && viewItem.hasAttribute(\"alt\")) return viewItem.getAttribute(\"alt\");\n\tif (viewItem.is(\"element\", \"br\")) return \"\\n\";\n\t/**\n\t* Item is a document fragment, attribute element or container element. It doesn't\n\t* have it's own text value, so we need to convert its children elements.\n\t*/\n\tlet text = \"\";\n\tlet prev = null;\n\tfor (const child of viewItem.getChildren()) {\n\t\ttext += newLinePadding(child, prev) + viewToPlainText(converter, child);\n\t\tprev = child;\n\t}\n\tif (viewItem.is(\"rawElement\")) {\n\t\tconst tempElement = document.implementation.createHTMLDocument(\"\").createElement(\"div\");\n\t\tviewItem.render(tempElement, converter);\n\t\ttext += domElementToPlainText(tempElement);\n\t}\n\treturn text;\n}\n/**\n* Recursively converts DOM element and all of its children to plain text.\n*/\nfunction domElementToPlainText(element) {\n\tlet text = \"\";\n\tif (element.nodeType === Node.TEXT_NODE) return element.textContent;\n\telse if (element.tagName === \"BR\") return \"\\n\";\n\tfor (const child of element.childNodes) text += domElementToPlainText(child);\n\treturn text;\n}\n/**\n* Returns new line padding to prefix the given elements with.\n*/\nfunction newLinePadding(element, previous) {\n\tif (!previous) return \"\";\n\tif (element.is(\"element\", \"li\") && !element.isEmpty && element.getChild(0).is(\"containerElement\")) return \"\\n\\n\";\n\tif (listElements.includes(element.name) && listElements.includes(previous.name))\n /**\n\t* Because `<ul>` and `<ol>` are ViewAttributeElements, two consecutive lists will not have any padding between\n\t* them (see the `if` statement below). To fix this, we need to make an exception for this case.\n\t*/\n\treturn \"\\n\\n\";\n\tif (!element.is(\"containerElement\") && !previous.is(\"containerElement\")) return \"\";\n\tif (smallPaddingElements.includes(element.name) || smallPaddingElements.includes(previous.name)) return \"\\n\";\n\tif (element.is(\"element\") && element.getCustomProperty(\"dataPipeline:transparentRendering\") || previous.is(\"element\") && previous.getCustomProperty(\"dataPipeline:transparentRendering\")) return \"\";\n\treturn \"\\n\\n\";\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 clipboard/clipboardmarkersutils\n*/\n/**\n* Part of the clipboard logic. Responsible for collecting markers from selected fragments\n* and restoring them with proper positions in pasted elements.\n*\n* @internal\n*/\nvar ClipboardMarkersUtils = class extends Plugin {\n\t/**\n\t* Map of marker names that can be copied.\n\t*\n\t* @internal\n\t*/\n\t_markersToCopy = /* @__PURE__ */ new Map();\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ClipboardMarkersUtils\";\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get isOfficialPlugin() {\n\t\treturn true;\n\t}\n\t/**\n\t* Registers marker name as copyable in clipboard pipeline.\n\t*\n\t* @param markerName Name of marker that can be copied.\n\t* @param config Configuration that describes what can be performed on specified marker.\n\t* @internal\n\t*/\n\t_registerMarkerToCopy(markerName, config) {\n\t\tthis._markersToCopy.set(markerName, config);\n\t}\n\t/**\n\t* Performs copy markers on provided selection and paste it to fragment returned from `getCopiedFragment`.\n\t*\n\t* \t1. Picks all markers in provided selection.\n\t* \t2. Inserts fake markers to document.\n\t* \t3. Gets copied selection fragment from document.\n\t* \t4. Removes fake elements from fragment and document.\n\t* \t5. Inserts markers in the place of removed fake markers.\n\t*\n\t* Due to selection modification, when inserting items, `getCopiedFragment` must *always* operate on `writer.model.document.selection'.\n\t* Do not use any other custom selection object within callback, as this will lead to out-of-bounds exceptions in rare scenarios.\n\t*\n\t* @param action Type of clipboard action.\n\t* @param selection Selection to be checked.\n\t* @param getCopiedFragment\tCallback that performs copy of selection and returns it as fragment.\n\t* @internal\n\t*/\n\t_copySelectedFragmentWithMarkers(action, selection, getCopiedFragment = (writer) => writer.model.getSelectedContent(writer.model.document.selection)) {\n\t\treturn this.editor.model.change((writer) => {\n\t\t\tconst oldSelection = writer.model.document.selection;\n\t\t\twriter.setSelection(selection);\n\t\t\tconst sourceSelectionInsertedMarkers = this._insertFakeMarkersIntoSelection(writer, writer.model.document.selection, action);\n\t\t\tconst fragment = getCopiedFragment(writer);\n\t\t\tconst fakeMarkersRangesInsideRange = this._removeFakeMarkersInsideElement(writer, fragment);\n\t\t\tfor (const [markerName, elements] of Object.entries(sourceSelectionInsertedMarkers)) {\n\t\t\t\tfakeMarkersRangesInsideRange[markerName] ||= writer.createRangeIn(fragment);\n\t\t\t\tfor (const element of elements) writer.remove(element);\n\t\t\t}\n\t\t\tfragment.markers.clear();\n\t\t\tfor (const [markerName, range] of Object.entries(fakeMarkersRangesInsideRange)) fragment.markers.set(markerName, range);\n\t\t\twriter.setSelection(oldSelection);\n\t\t\treturn fragment;\n\t\t});\n\t}\n\t/**\n\t* Performs paste of markers on already pasted element.\n\t*\n\t* \t1. Inserts fake markers that are present in fragment element (such fragment will be processed in `getPastedDocumentElement`).\n\t* \t2. Calls `getPastedDocumentElement` and gets element that is inserted into root model.\n\t* \t3. Removes all fake markers present in transformed element.\n\t* \t4. Inserts new markers with removed fake markers ranges into pasted fragment.\n\t*\n\t* There are multiple edge cases that have to be considered before calling this function:\n\t*\n\t* \t* `markers` are inserted into the same element that must be later transformed inside `getPastedDocumentElement`.\n\t* \t* Fake marker elements inside `getPastedDocumentElement` can be cloned, but their ranges cannot overlap.\n\t* \t* If `duplicateOnPaste` is `true` in marker config then associated marker ID is regenerated before pasting.\n\t*\n\t* @param markers Object that maps marker name to corresponding range.\n\t* @param getPastedDocumentElement Getter used to get target markers element.\n\t* @internal\n\t*/\n\t_pasteMarkersIntoTransformedElement(markers, getPastedDocumentElement) {\n\t\tconst pasteMarkers = this._getPasteMarkersFromRangeMap(markers);\n\t\treturn this.editor.model.change((writer) => {\n\t\t\tconst sourceFragmentFakeMarkers = this._insertFakeMarkersElements(writer, pasteMarkers);\n\t\t\tconst transformedElement = getPastedDocumentElement(writer);\n\t\t\tconst removedFakeMarkers = this._removeFakeMarkersInsideElement(writer, transformedElement);\n\t\t\tfor (const element of Object.values(sourceFragmentFakeMarkers).flat()) writer.remove(element);\n\t\t\tfor (const [markerName, range] of Object.entries(removedFakeMarkers)) if (!writer.model.markers.has(markerName)) writer.addMarker(markerName, {\n\t\t\t\tusingOperation: true,\n\t\t\t\taffectsData: true,\n\t\t\t\trange\n\t\t\t});\n\t\t\treturn transformedElement;\n\t\t});\n\t}\n\t/**\n\t* Pastes document fragment with markers to document.\n\t* If `duplicateOnPaste` is `true` in marker config then associated markers IDs\n\t* are regenerated before pasting to avoid markers duplications in content.\n\t*\n\t* @param fragment Document fragment that should contain already processed by pipeline markers.\n\t* @internal\n\t*/\n\t_pasteFragmentWithMarkers(fragment) {\n\t\tconst pasteMarkers = this._getPasteMarkersFromRangeMap(fragment.markers);\n\t\tfragment.markers.clear();\n\t\tfor (const copyableMarker of pasteMarkers) fragment.markers.set(copyableMarker.name, copyableMarker.range);\n\t\treturn this.editor.model.insertContent(fragment);\n\t}\n\t/**\n\t* In some situations we have to perform copy on selected fragment with certain markers. This function allows to temporarily bypass\n\t* restrictions on markers that we want to copy.\n\t*\n\t* This function executes `executor()` callback. For the duration of the callback, if the clipboard pipeline is used to copy\n\t* content, markers with the specified name will be copied to the clipboard as well.\n\t*\n\t* @param markerName Which markers should be copied.\n\t* @param executor Callback executed.\n\t* @param config Optional configuration flags used to copy (such like partial copy flag).\n\t* @internal\n\t*/\n\t_forceMarkersCopy(markerName, executor, config = {\n\t\tallowedActions: \"all\",\n\t\tcopyPartiallySelected: true,\n\t\tduplicateOnPaste: true\n\t}) {\n\t\tconst before = this._markersToCopy.get(markerName);\n\t\tthis._markersToCopy.set(markerName, config);\n\t\texecutor();\n\t\tif (before) this._markersToCopy.set(markerName, before);\n\t\telse this._markersToCopy.delete(markerName);\n\t}\n\t/**\n\t* Checks if marker can be copied.\n\t*\n\t* @param markerName Name of checked marker.\n\t* @param action Type of clipboard action. If null then checks only if marker is registered as copyable.\n\t* @internal\n\t*/\n\t_isMarkerCopyable(markerName, action) {\n\t\tconst config = this._getMarkerClipboardConfig(markerName);\n\t\tif (!config) return false;\n\t\tif (!action) return true;\n\t\tconst { allowedActions } = config;\n\t\treturn allowedActions === \"all\" || allowedActions.includes(action);\n\t}\n\t/**\n\t* Checks if marker has any clipboard copy behavior configuration.\n\t*\n\t* @param markerName Name of checked marker.\n\t*/\n\t_hasMarkerConfiguration(markerName) {\n\t\treturn !!this._getMarkerClipboardConfig(markerName);\n\t}\n\t/**\n\t* Returns marker's configuration flags passed during registration.\n\t*\n\t* @param markerName Name of marker that should be returned.\n\t* @internal\n\t*/\n\t_getMarkerClipboardConfig(markerName) {\n\t\tconst [markerNamePrefix] = markerName.split(\":\");\n\t\treturn this._markersToCopy.get(markerNamePrefix) || null;\n\t}\n\t/**\n\t* First step of copying markers. It looks for markers intersecting with given selection and inserts `$marker` elements\n\t* at positions where document markers start or end. This way `$marker` elements can be easily copied together with\n\t* the rest of the content of the selection.\n\t*\n\t* @param writer An instance of the model writer.\n\t* @param selection Selection to be checked.\n\t* @param action Type of clipboard action.\n\t*/\n\t_insertFakeMarkersIntoSelection(writer, selection, action) {\n\t\tconst copyableMarkers = this._getCopyableMarkersFromSelection(writer, selection, action);\n\t\treturn this._insertFakeMarkersElements(writer, copyableMarkers);\n\t}\n\t/**\n\t* Returns array of markers that can be copied in specified selection.\n\t*\n\t* If marker cannot be copied partially (according to `copyPartiallySelected` configuration flag) and\n\t* is not present entirely in any selection range then it will be skipped.\n\t*\n\t* @param writer An instance of the model writer.\n\t* @param selection Selection which will be checked.\n\t* @param action Type of clipboard action. If null then checks only if marker is registered as copyable.\n\t*/\n\t_getCopyableMarkersFromSelection(writer, selection, action) {\n\t\tconst selectionRanges = Array.from(selection.getRanges());\n\t\tconst markersInRanges = new Set(selectionRanges.flatMap((selectionRange) => Array.from(writer.model.markers.getMarkersIntersectingRange(selectionRange))));\n\t\tconst isSelectionMarkerCopyable = (marker) => {\n\t\t\tif (!this._isMarkerCopyable(marker.name, action)) return false;\n\t\t\tconst { copyPartiallySelected } = this._getMarkerClipboardConfig(marker.name);\n\t\t\tif (!copyPartiallySelected) {\n\t\t\t\tconst markerRange = marker.getRange();\n\t\t\t\treturn selectionRanges.some((selectionRange) => selectionRange.containsRange(markerRange, true));\n\t\t\t}\n\t\t\treturn true;\n\t\t};\n\t\treturn Array.from(markersInRanges).filter(isSelectionMarkerCopyable).map((copyableMarker) => {\n\t\t\treturn {\n\t\t\t\tname: action === \"dragstart\" ? this._getUniqueMarkerName(copyableMarker.name) : copyableMarker.name,\n\t\t\t\trange: copyableMarker.getRange()\n\t\t\t};\n\t\t});\n\t}\n\t/**\n\t* Picks all markers from markers map that can be pasted.\n\t* If `duplicateOnPaste` is `true`, it regenerates their IDs to ensure uniqueness.\n\t* If marker is not registered, it will be kept in the array anyway.\n\t*\n\t* @param markers Object that maps marker name to corresponding range.\n\t* @param action Type of clipboard action. If null then checks only if marker is registered as copyable.\n\t*/\n\t_getPasteMarkersFromRangeMap(markers, action = null) {\n\t\tconst { model } = this.editor;\n\t\treturn (markers instanceof Map ? Array.from(markers.entries()) : Object.entries(markers)).flatMap(([markerName, range]) => {\n\t\t\tif (!this._hasMarkerConfiguration(markerName)) return [{\n\t\t\t\tname: markerName,\n\t\t\t\trange\n\t\t\t}];\n\t\t\tif (this._isMarkerCopyable(markerName, action)) {\n\t\t\t\tconst copyMarkerConfig = this._getMarkerClipboardConfig(markerName);\n\t\t\t\tconst isInGraveyard = model.markers.has(markerName) && model.markers.get(markerName).getRange().root.rootName === \"$graveyard\";\n\t\t\t\tif (copyMarkerConfig.duplicateOnPaste || isInGraveyard) markerName = this._getUniqueMarkerName(markerName);\n\t\t\t\treturn [{\n\t\t\t\t\tname: markerName,\n\t\t\t\t\trange\n\t\t\t\t}];\n\t\t\t}\n\t\t\treturn [];\n\t\t});\n\t}\n\t/**\n\t* Inserts specified array of fake markers elements to document and assigns them `type` and `name` attributes.\n\t* Fake markers elements are used to calculate position of markers on pasted fragment that were transformed during\n\t* steps between copy and paste.\n\t*\n\t* @param writer An instance of the model writer.\n\t* @param markers Array of markers that will be inserted.\n\t*/\n\t_insertFakeMarkersElements(writer, markers) {\n\t\tconst mappedMarkers = {};\n\t\tconst sortedMarkers = markers.flatMap((marker) => {\n\t\t\tconst { start, end } = marker.range;\n\t\t\treturn [{\n\t\t\t\tposition: start,\n\t\t\t\tmarker,\n\t\t\t\ttype: \"start\"\n\t\t\t}, {\n\t\t\t\tposition: end,\n\t\t\t\tmarker,\n\t\t\t\ttype: \"end\"\n\t\t\t}];\n\t\t}).sort(({ position: posA }, { position: posB }) => posA.isBefore(posB) ? 1 : -1);\n\t\tfor (const { position, marker, type } of sortedMarkers) {\n\t\t\tconst fakeMarker = writer.createElement(\"$marker\", {\n\t\t\t\t\"data-name\": marker.name,\n\t\t\t\t\"data-type\": type\n\t\t\t});\n\t\t\tif (!mappedMarkers[marker.name]) mappedMarkers[marker.name] = [];\n\t\t\tmappedMarkers[marker.name].push(fakeMarker);\n\t\t\twriter.insert(fakeMarker, position);\n\t\t}\n\t\treturn mappedMarkers;\n\t}\n\t/**\n\t* Removes all `$marker` elements from the given document fragment.\n\t*\n\t* Returns an object where keys are marker names, and values are ranges corresponding to positions\n\t* where `$marker` elements were inserted.\n\t*\n\t* If the document fragment had only one `$marker` element for given marker (start or end) the other boundary is set automatically\n\t* (to the end or start of the document fragment, respectively).\n\t*\n\t* @param writer An instance of the model writer.\n\t* @param rootElement The element to be checked.\n\t*/\n\t_removeFakeMarkersInsideElement(writer, rootElement) {\n\t\tconst fakeMarkersRanges = this._getAllFakeMarkersFromElement(writer, rootElement).reduce((acc, fakeMarker) => {\n\t\t\tconst position = fakeMarker.markerElement && writer.createPositionBefore(fakeMarker.markerElement);\n\t\t\tlet prevFakeMarker = acc[fakeMarker.name];\n\t\t\tlet skipAssign = false;\n\t\t\tif (prevFakeMarker?.start && prevFakeMarker?.end) {\n\t\t\t\tif (this._getMarkerClipboardConfig(fakeMarker.name).duplicateOnPaste) acc[this._getUniqueMarkerName(fakeMarker.name)] = acc[fakeMarker.name];\n\t\t\t\telse skipAssign = true;\n\t\t\t\tprevFakeMarker = null;\n\t\t\t}\n\t\t\tif (!skipAssign) acc[fakeMarker.name] = {\n\t\t\t\t...prevFakeMarker,\n\t\t\t\t[fakeMarker.type]: position\n\t\t\t};\n\t\t\tif (fakeMarker.markerElement) writer.remove(fakeMarker.markerElement);\n\t\t\treturn acc;\n\t\t}, {});\n\t\treturn mapValues(fakeMarkersRanges, (range) => new ModelRange(range.start || writer.createPositionFromPath(rootElement, [0]), range.end || writer.createPositionAt(rootElement, \"end\")));\n\t}\n\t/**\n\t* Returns array that contains list of fake markers with corresponding `$marker` elements.\n\t*\n\t* For each marker, there can be two `$marker` elements or only one (if the document fragment contained\n\t* only the beginning or only the end of a marker).\n\t*\n\t* @param writer An instance of the model writer.\n\t* @param rootElement The element to be checked.\n\t*/\n\t_getAllFakeMarkersFromElement(writer, rootElement) {\n\t\tconst foundFakeMarkers = Array.from(writer.createRangeIn(rootElement)).flatMap(({ item }) => {\n\t\t\tif (!item.is(\"element\", \"$marker\")) return [];\n\t\t\treturn [{\n\t\t\t\tmarkerElement: item,\n\t\t\t\tname: item.getAttribute(\"data-name\"),\n\t\t\t\ttype: item.getAttribute(\"data-type\")\n\t\t\t}];\n\t\t});\n\t\tconst prependFakeMarkers = [];\n\t\tconst appendFakeMarkers = [];\n\t\tfor (const fakeMarker of foundFakeMarkers) {\n\t\t\tif (fakeMarker.type === \"end\") {\n\t\t\t\tif (!foundFakeMarkers.some((otherFakeMarker) => otherFakeMarker.name === fakeMarker.name && otherFakeMarker.type === \"start\")) prependFakeMarkers.push({\n\t\t\t\t\tmarkerElement: null,\n\t\t\t\t\tname: fakeMarker.name,\n\t\t\t\t\ttype: \"start\"\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (fakeMarker.type === \"start\") {\n\t\t\t\tif (!foundFakeMarkers.some((otherFakeMarker) => otherFakeMarker.name === fakeMarker.name && otherFakeMarker.type === \"end\")) appendFakeMarkers.unshift({\n\t\t\t\t\tmarkerElement: null,\n\t\t\t\t\tname: fakeMarker.name,\n\t\t\t\t\ttype: \"end\"\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn [\n\t\t\t...prependFakeMarkers,\n\t\t\t...foundFakeMarkers,\n\t\t\t...appendFakeMarkers\n\t\t];\n\t}\n\t/**\n\t* When copy of markers occurs we have to make sure that pasted markers have different names\n\t* than source markers. This functions helps with assigning unique part to marker name to\n\t* prevent duplicated markers error.\n\t*\n\t* @param name Name of marker\n\t*/\n\t_getUniqueMarkerName(name) {\n\t\tconst parts = name.split(\":\");\n\t\tconst newId = uid().substring(1, 6);\n\t\tif (parts.length === 3) return `${parts.slice(0, 2).join(\":\")}:${newId}`;\n\t\treturn `${parts.join(\":\")}:${newId}`;\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 clipboard/clipboardpipeline\n*/\n/**\n* The clipboard pipeline feature. It is responsible for intercepting the `paste` and `drop` events and\n* passing the pasted content through a series of events in order to insert it into the editor's content.\n* It also handles the `cut` and `copy` events to fill the native clipboard with the serialized editor's data.\n*\n* # Input pipeline\n*\n* The behavior of the default handlers (all at a `low` priority):\n*\n* ## Event: `paste` or `drop`\n*\n* 1. Translates the event data.\n* 2. Fires the {@link module:engine/view/document~ViewDocument#event:clipboardInput `view.Document#clipboardInput`} event.\n*\n* ## Event: `view.Document#clipboardInput`\n*\n* 1. If the `data.content` event field is already set (by some listener on a higher priority), it takes this content and fires the event\n* from the last point.\n* 2. Otherwise, it retrieves `text/html` or `text/plain` from `data.dataTransfer`.\n* 3. Normalizes the raw data by applying simple filters on string data.\n* 4. Processes the raw data to {@link module:engine/view/documentfragment~ViewDocumentFragment `view.DocumentFragment`} with the\n* {@link module:engine/controller/datacontroller~DataController#htmlProcessor `DataController#htmlProcessor`}.\n* 5. Fires the {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:inputTransformation\n* `ClipboardPipeline#inputTransformation`} event with the view document fragment in the `data.content` event field.\n*\n* ## Event: `ClipboardPipeline#inputTransformation`\n*\n* 1. Converts {@link module:engine/view/documentfragment~ViewDocumentFragment `view.DocumentFragment`} from the `data.content` field to\n* {@link module:engine/model/documentfragment~ModelDocumentFragment `model.DocumentFragment`}.\n* 2. Fires the {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:contentInsertion `ClipboardPipeline#contentInsertion`}\n* event with the model document fragment in the `data.content` event field.\n* **Note**: The `ClipboardPipeline#contentInsertion` event is fired within a model change block to allow other handlers\n* to run in the same block without post-fixers called in between (i.e., the selection post-fixer).\n*\n* ## Event: `ClipboardPipeline#contentInsertion`\n*\n* 1. Calls {@link module:engine/model/model~Model#insertContent `model.insertContent()`} to insert `data.content`\n* at the current selection position.\n*\n* # Output pipeline\n*\n* The behavior of the default handlers (all at a `low` priority):\n*\n* ## Event: `copy`, `cut` or `dragstart`\n*\n* 1. Retrieves the selected {@link module:engine/model/documentfragment~ModelDocumentFragment `model.DocumentFragment`} by calling\n* {@link module:engine/model/model~Model#getSelectedContent `model#getSelectedContent()`}.\n* 2. Converts the model document fragment to {@link module:engine/view/documentfragment~ViewDocumentFragment `view.DocumentFragment`}.\n* 3. Fires the {@link module:engine/view/document~ViewDocument#event:clipboardOutput `view.Document#clipboardOutput`} event\n* with the view document fragment in the `data.content` event field.\n*\n* ## Event: `view.Document#clipboardOutput`\n*\n* 1. Processes `data.content` to HTML and plain text with the\n* {@link module:engine/controller/datacontroller~DataController#htmlProcessor `DataController#htmlProcessor`}.\n* 2. Updates the `data.dataTransfer` data for `text/html` and `text/plain` with the processed data.\n* 3. For the `cut` method, calls {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`}\n* on the current selection.\n*\n* Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n*/\nvar ClipboardPipeline = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"ClipboardPipeline\";\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\tstatic get requires() {\n\t\treturn [ClipboardMarkersUtils];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tthis.editor.editing.view.addObserver(ClipboardObserver);\n\t\tthis._setupPasteDrop();\n\t\tthis._setupCopyCut();\n\t}\n\t/**\n\t* Fires Clipboard `'outputTransformation'` event for given parameters.\n\t*\n\t* @internal\n\t*/\n\t_fireOutputTransformationEvent(dataTransfer, selection, method) {\n\t\tconst clipboardMarkersUtils = this.editor.plugins.get(\"ClipboardMarkersUtils\");\n\t\tthis.editor.model.enqueueChange({ isUndoable: method === \"cut\" }, () => {\n\t\t\tconst documentFragment = clipboardMarkersUtils._copySelectedFragmentWithMarkers(method, selection);\n\t\t\tthis.fire(\"outputTransformation\", {\n\t\t\t\tdataTransfer,\n\t\t\t\tcontent: documentFragment,\n\t\t\t\tmethod\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* The clipboard paste pipeline.\n\t*/\n\t_setupPasteDrop() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst clipboardMarkersUtils = this.editor.plugins.get(\"ClipboardMarkersUtils\");\n\t\tthis.listenTo(viewDocument, \"clipboardInput\", (evt, data) => {\n\t\t\tif (data.method == \"paste\" && !editor.model.canEditAt(editor.model.document.selection)) evt.stop();\n\t\t}, { priority: \"highest\" });\n\t\tthis.listenTo(viewDocument, \"clipboardInput\", (evt, data) => {\n\t\t\tconst dataTransfer = data.dataTransfer;\n\t\t\tconst eventInfo = new EventInfo(this, \"inputTransformation\");\n\t\t\tconst sourceEditorId = dataTransfer.getData(\"application/ckeditor5-editor-id\") || null;\n\t\t\tconst content = typeof data.content == \"string\" ? this.editor.data.htmlProcessor.toView(normalizeClipboardData(data.content)) : data.content;\n\t\t\tthis.fire(eventInfo, {\n\t\t\t\tcontent,\n\t\t\t\tdataTransfer,\n\t\t\t\tsourceEditorId,\n\t\t\t\textraContent: data.extraContent,\n\t\t\t\ttargetRanges: data.targetRanges,\n\t\t\t\tmethod: data.method\n\t\t\t});\n\t\t\tif (eventInfo.stop.called) evt.stop();\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: \"low\" });\n\t\tthis.listenTo(this, \"inputTransformation\", (evt, data) => {\n\t\t\tif (data.content.isEmpty) return;\n\t\t\tconst modelFragment = this.editor.data.toModel(data.content, \"$clipboardHolder\");\n\t\t\tif (modelFragment.childCount == 0) return;\n\t\t\tevt.stop();\n\t\t\tmodel.change(() => {\n\t\t\t\tthis.fire(\"contentInsertion\", {\n\t\t\t\t\tcontent: modelFragment,\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tsourceEditorId: data.sourceEditorId,\n\t\t\t\t\tdataTransfer: data.dataTransfer,\n\t\t\t\t\ttargetRanges: data.targetRanges\n\t\t\t\t});\n\t\t\t});\n\t\t}, { priority: \"low\" });\n\t\tthis.listenTo(this, \"contentInsertion\", (evt, data) => {\n\t\t\tdata.resultRange = clipboardMarkersUtils._pasteFragmentWithMarkers(data.content);\n\t\t}, { priority: \"low\" });\n\t}\n\t/**\n\t* The clipboard copy/cut pipeline.\n\t*/\n\t_setupCopyCut() {\n\t\tconst editor = this.editor;\n\t\tconst modelDocument = editor.model.document;\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst onCopyCut = (evt, data) => {\n\t\t\tconst dataTransfer = data.dataTransfer;\n\t\t\tdata.preventDefault();\n\t\t\tthis._fireOutputTransformationEvent(dataTransfer, modelDocument.selection, evt.name);\n\t\t};\n\t\tthis.listenTo(viewDocument, \"copy\", onCopyCut, { priority: \"low\" });\n\t\tthis.listenTo(viewDocument, \"cut\", (evt, data) => {\n\t\t\tif (!editor.model.canEditAt(editor.model.document.selection)) data.preventDefault();\n\t\t\telse onCopyCut(evt, data);\n\t\t}, { priority: \"low\" });\n\t\tthis.listenTo(this, \"outputTransformation\", (evt, data) => {\n\t\t\tconst content = editor.data.toView(data.content, { isClipboardPipeline: true });\n\t\t\tviewDocument.fire(\"clipboardOutput\", {\n\t\t\t\tdataTransfer: data.dataTransfer,\n\t\t\t\tcontent,\n\t\t\t\tmethod: data.method\n\t\t\t});\n\t\t}, { priority: \"low\" });\n\t\tthis.listenTo(viewDocument, \"clipboardOutput\", (evt, data) => {\n\t\t\tif (!data.content.isEmpty) {\n\t\t\t\tdata.dataTransfer.setData(\"text/html\", this.editor.data.htmlProcessor.toData(data.content));\n\t\t\t\tdata.dataTransfer.setData(\"text/plain\", viewToPlainText(editor.data.htmlProcessor.domConverter, data.content));\n\t\t\t\tdata.dataTransfer.setData(\"application/ckeditor5-editor-id\", this.editor.id);\n\t\t\t}\n\t\t\tif (data.method == \"cut\") editor.model.deleteContent(modelDocument.selection);\n\t\t}, { priority: \"low\" });\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 clipboard/lineview\n*/\n/* istanbul ignore file -- @preserve */\nconst toPx = /* #__PURE__ */ toUnit(\"px\");\n/**\n* The horizontal drop target line view.\n*\n* @internal\n*/\nvar LineView = class extends View {\n\t/**\n\t* @inheritDoc\n\t*/\n\tconstructor() {\n\t\tsuper();\n\t\tconst bind = this.bindTemplate;\n\t\tthis.set({\n\t\t\tisVisible: false,\n\t\t\tleft: null,\n\t\t\ttop: null,\n\t\t\twidth: null\n\t\t});\n\t\tthis.setTemplate({\n\t\t\ttag: \"div\",\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t\"ck\",\n\t\t\t\t\t\"ck-clipboard-drop-target-line\",\n\t\t\t\t\tbind.if(\"isVisible\", \"ck-hidden\", (value) => !value)\n\t\t\t\t],\n\t\t\t\tstyle: {\n\t\t\t\t\tleft: bind.to(\"left\", (left) => toPx(left)),\n\t\t\t\t\ttop: bind.to(\"top\", (top) => toPx(top)),\n\t\t\t\t\twidth: bind.to(\"width\", (width) => toPx(width))\n\t\t\t\t}\n\t\t\t}\n\t\t});\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 clipboard/dragdroptarget\n*/\n/**\n* Part of the Drag and Drop handling. Responsible for finding and displaying the drop target.\n*\n* @internal\n*/\nvar DragDropTarget = class extends Plugin {\n\t/**\n\t* A delayed callback removing the drop marker.\n\t*\n\t* @internal\n\t*/\n\tremoveDropMarkerDelayed = delay(() => this.removeDropMarker(), 40);\n\t/**\n\t* A throttled callback updating the drop marker.\n\t*/\n\t_updateDropMarkerThrottled = throttle((targetRange) => this._updateDropMarker(targetRange), 40);\n\t/**\n\t* A throttled callback reconverting the drop parker.\n\t*/\n\t_reconvertMarkerThrottled = throttle(() => {\n\t\tif (this.editor.model.markers.has(\"drop-target\")) this.editor.editing.reconvertMarker(\"drop-target\");\n\t}, 0);\n\t/**\n\t* The horizontal drop target line view.\n\t*/\n\t_dropTargetLineView = new LineView();\n\t/**\n\t* DOM Emitter.\n\t*/\n\t_domEmitter = new (DomEmitterMixin())();\n\t/**\n\t* Map of document scrollable elements.\n\t*/\n\t_scrollables = /* @__PURE__ */ new Map();\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"DragDropTarget\";\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\tinit() {\n\t\tthis._setupDropMarker();\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tthis._domEmitter.stopListening();\n\t\tfor (const { resizeObserver } of this._scrollables.values()) resizeObserver.destroy();\n\t\tthis._updateDropMarkerThrottled.cancel();\n\t\tthis.removeDropMarkerDelayed.cancel();\n\t\tthis._reconvertMarkerThrottled.cancel();\n\t\treturn super.destroy();\n\t}\n\t/**\n\t* Finds the drop target range and updates the drop marker.\n\t*\n\t* @return The updated drop target range or null if no valid range was found.\n\t* @internal\n\t*/\n\tupdateDropMarker(targetViewElement, targetViewRanges, clientX, clientY, blockMode, draggedRange) {\n\t\tthis.removeDropMarkerDelayed.cancel();\n\t\tconst targetRange = findDropTargetRange(this.editor, targetViewElement, targetViewRanges, clientX, clientY, blockMode, draggedRange);\n\t\t/* istanbul ignore next -- @preserve */\n\t\tif (!targetRange) return null;\n\t\tif (draggedRange && draggedRange.containsRange(targetRange)) {\n\t\t\tthis.removeDropMarker();\n\t\t\treturn null;\n\t\t}\n\t\tif (targetRange && !this.editor.model.canEditAt(targetRange)) {\n\t\t\tthis.removeDropMarker();\n\t\t\treturn null;\n\t\t}\n\t\tthis._updateDropMarkerThrottled(targetRange);\n\t\treturn targetRange;\n\t}\n\t/**\n\t* Finds the final drop target range.\n\t*\n\t* @internal\n\t*/\n\tgetFinalDropRange(targetViewElement, targetViewRanges, clientX, clientY, blockMode, draggedRange) {\n\t\tconst targetRange = findDropTargetRange(this.editor, targetViewElement, targetViewRanges, clientX, clientY, blockMode, draggedRange);\n\t\tthis.removeDropMarker();\n\t\treturn targetRange;\n\t}\n\t/**\n\t* Removes the drop target marker.\n\t*\n\t* @internal\n\t*/\n\tremoveDropMarker() {\n\t\tconst model = this.editor.model;\n\t\tthis.removeDropMarkerDelayed.cancel();\n\t\tthis._updateDropMarkerThrottled.cancel();\n\t\tthis._dropTargetLineView.isVisible = false;\n\t\tif (model.markers.has(\"drop-target\")) model.change((writer) => {\n\t\t\twriter.removeMarker(\"drop-target\");\n\t\t});\n\t}\n\t/**\n\t* Creates downcast conversion for the drop target marker.\n\t*/\n\t_setupDropMarker() {\n\t\tconst editor = this.editor;\n\t\teditor.ui.view.body.add(this._dropTargetLineView);\n\t\teditor.conversion.for(\"editingDowncast\").markerToHighlight({\n\t\t\tmodel: \"drop-target\",\n\t\t\tview: { classes: [\"ck-clipboard-drop-target-range\"] }\n\t\t});\n\t\teditor.conversion.for(\"editingDowncast\").markerToElement({\n\t\t\tmodel: \"drop-target\",\n\t\t\tview: (data, { writer }) => {\n\t\t\t\tif (editor.model.schema.checkChild(data.markerRange.start, \"$text\")) {\n\t\t\t\t\tthis._dropTargetLineView.isVisible = false;\n\t\t\t\t\treturn this._createDropTargetPosition(writer);\n\t\t\t\t} else if (data.markerRange.isCollapsed) this._updateDropTargetLine(data.markerRange);\n\t\t\t\telse this._dropTargetLineView.isVisible = false;\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Updates the drop target marker to the provided range.\n\t*\n\t* @param targetRange The range to set the marker to.\n\t*/\n\t_updateDropMarker(targetRange) {\n\t\tconst editor = this.editor;\n\t\tconst markers = editor.model.markers;\n\t\teditor.model.change((writer) => {\n\t\t\tif (markers.has(\"drop-target\")) {\n\t\t\t\tif (!markers.get(\"drop-target\").getRange().isEqual(targetRange)) writer.updateMarker(\"drop-target\", { range: targetRange });\n\t\t\t} else writer.addMarker(\"drop-target\", {\n\t\t\t\trange: targetRange,\n\t\t\t\tusingOperation: false,\n\t\t\t\taffectsData: false\n\t\t\t});\n\t\t});\n\t}\n\t/**\n\t* Creates the UI element for vertical (in-line) drop target.\n\t*/\n\t_createDropTargetPosition(writer) {\n\t\treturn writer.createUIElement(\"span\", { class: \"ck ck-clipboard-drop-target-position\" }, function(domDocument) {\n\t\t\tconst domElement = this.toDomElement(domDocument);\n\t\t\tdomElement.append(\"\", domDocument.createElement(\"span\"), \"\");\n\t\t\treturn domElement;\n\t\t});\n\t}\n\t/**\n\t* Updates the horizontal drop target line.\n\t*/\n\t_updateDropTargetLine(range) {\n\t\tconst editing = this.editor.editing;\n\t\tconst nodeBefore = range.start.nodeBefore;\n\t\tconst nodeAfter = range.start.nodeAfter;\n\t\tconst nodeParent = range.start.parent;\n\t\tconst viewElementBefore = nodeBefore ? editing.mapper.toViewElement(nodeBefore) : null;\n\t\tconst domElementBefore = viewElementBefore ? editing.view.domConverter.mapViewToDom(viewElementBefore) : null;\n\t\tconst viewElementAfter = nodeAfter ? editing.mapper.toViewElement(nodeAfter) : null;\n\t\tconst domElementAfter = viewElementAfter ? editing.view.domConverter.mapViewToDom(viewElementAfter) : null;\n\t\tconst viewElementParent = editing.mapper.toViewElement(nodeParent);\n\t\tif (!viewElementParent) return;\n\t\tconst domElementParent = editing.view.domConverter.mapViewToDom(viewElementParent);\n\t\tconst domScrollableRect = this._getScrollableRect(viewElementParent);\n\t\tconst { scrollX, scrollY } = global.window;\n\t\tconst rectBefore = domElementBefore ? new Rect(domElementBefore) : null;\n\t\tconst rectAfter = domElementAfter ? new Rect(domElementAfter) : null;\n\t\tconst rectParent = new Rect(domElementParent).excludeScrollbarsAndBorders();\n\t\tconst above = rectBefore ? rectBefore.bottom : rectParent.top;\n\t\tconst below = rectAfter ? rectAfter.top : rectParent.bottom;\n\t\tconst parentStyle = global.window.getComputedStyle(domElementParent);\n\t\tconst top = above <= below ? (above + below) / 2 : below;\n\t\tif (domScrollableRect.top < top && top < domScrollableRect.bottom) {\n\t\t\tconst left = rectParent.left + parseFloat(parentStyle.paddingLeft);\n\t\t\tconst right = rectParent.right - parseFloat(parentStyle.paddingRight);\n\t\t\tconst leftClamped = Math.max(left + scrollX, domScrollableRect.left);\n\t\t\tconst rightClamped = Math.min(right + scrollX, domScrollableRect.right);\n\t\t\tthis._dropTargetLineView.set({\n\t\t\t\tisVisible: true,\n\t\t\t\tleft: leftClamped,\n\t\t\t\ttop: top + scrollY,\n\t\t\t\twidth: rightClamped - leftClamped\n\t\t\t});\n\t\t} else this._dropTargetLineView.isVisible = false;\n\t}\n\t/**\n\t* Finds the closest scrollable element rect for the given view element.\n\t*/\n\t_getScrollableRect(viewElement) {\n\t\tconst rootName = viewElement.root.rootName;\n\t\tlet domScrollable;\n\t\tif (this._scrollables.has(rootName)) domScrollable = this._scrollables.get(rootName).domElement;\n\t\telse {\n\t\t\tdomScrollable = findScrollableElement(this.editor.editing.view.domConverter.mapViewToDom(viewElement));\n\t\t\tthis._domEmitter.listenTo(domScrollable, \"scroll\", this._reconvertMarkerThrottled, { usePassive: true });\n\t\t\tconst resizeObserver = new ResizeObserver(domScrollable, this._reconvertMarkerThrottled);\n\t\t\tthis._scrollables.set(rootName, {\n\t\t\t\tdomElement: domScrollable,\n\t\t\t\tresizeObserver\n\t\t\t});\n\t\t}\n\t\treturn new Rect(domScrollable).excludeScrollbarsAndBorders();\n\t}\n};\n/**\n* Returns fixed selection range for given position and target element.\n*/\nfunction findDropTargetRange(editor, targetViewElement, targetViewRanges, clientX, clientY, blockMode, draggedRange) {\n\tconst model = editor.model;\n\tconst mapper = editor.editing.mapper;\n\tlet modelElement = getClosestMappedModelElement(editor, targetViewElement);\n\twhile (modelElement) {\n\t\tif (!blockMode) {\n\t\t\tif (model.schema.checkChild(modelElement, \"$text\")) {\n\t\t\t\tif (targetViewRanges) {\n\t\t\t\t\tconst targetViewPosition = targetViewRanges[0].start;\n\t\t\t\t\tconst targetModelPosition = mapper.toModelPosition(targetViewPosition);\n\t\t\t\t\tif (!draggedRange || Array.from(draggedRange.getItems({ shallow: true })).some((item) => model.schema.checkChild(targetModelPosition, item))) {\n\t\t\t\t\t\tif (model.schema.checkChild(targetModelPosition, \"$text\")) return model.createRange(targetModelPosition);\n\t\t\t\t\t\telse if (targetViewPosition) return findDropTargetRangeForElement(editor, getClosestMappedModelElement(editor, targetViewPosition.parent), clientX, clientY);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (model.schema.isInline(modelElement)) return findDropTargetRangeForElement(editor, modelElement, clientX, clientY);\n\t\t}\n\t\tif (model.schema.isBlock(modelElement)) return findDropTargetRangeForElement(editor, modelElement, clientX, clientY);\n\t\telse if (model.schema.checkChild(modelElement, \"$block\")) {\n\t\t\tconst childNodes = Array.from(modelElement.getChildren()).filter((node) => node.is(\"element\") && !shouldIgnoreElement(editor, node));\n\t\t\tlet startIndex = 0;\n\t\t\tlet endIndex = childNodes.length;\n\t\t\tif (endIndex == 0) return model.createRange(model.createPositionAt(modelElement, \"end\"));\n\t\t\twhile (startIndex < endIndex - 1) {\n\t\t\t\tconst middleIndex = Math.floor((startIndex + endIndex) / 2);\n\t\t\t\tif (findElementSide(editor, childNodes[middleIndex], clientX, clientY) == \"before\") endIndex = middleIndex;\n\t\t\t\telse startIndex = middleIndex;\n\t\t\t}\n\t\t\treturn findDropTargetRangeForElement(editor, childNodes[startIndex], clientX, clientY);\n\t\t}\n\t\tmodelElement = modelElement.parent;\n\t}\n\treturn null;\n}\n/**\n* Returns true for elements which should be ignored.\n*/\nfunction shouldIgnoreElement(editor, modelElement) {\n\tconst mapper = editor.editing.mapper;\n\tconst domConverter = editor.editing.view.domConverter;\n\tconst viewElement = mapper.toViewElement(modelElement);\n\tif (!viewElement) return true;\n\tconst domElement = domConverter.mapViewToDom(viewElement);\n\treturn global.window.getComputedStyle(domElement).float != \"none\";\n}\n/**\n* Returns target range relative to the given element.\n*/\nfunction findDropTargetRangeForElement(editor, modelElement, clientX, clientY) {\n\tconst model = editor.model;\n\treturn model.createRange(model.createPositionAt(modelElement, findElementSide(editor, modelElement, clientX, clientY)));\n}\n/**\n* Resolves whether drop marker should be before or after the given element.\n*/\nfunction findElementSide(editor, modelElement, clientX, clientY) {\n\tconst mapper = editor.editing.mapper;\n\tconst domConverter = editor.editing.view.domConverter;\n\tconst viewElement = mapper.toViewElement(modelElement);\n\tconst domElement = domConverter.mapViewToDom(viewElement);\n\tconst rect = new Rect(domElement);\n\tif (editor.model.schema.isInline(modelElement)) return clientX < (rect.left + rect.right) / 2 ? \"before\" : \"after\";\n\telse return clientY < (rect.top + rect.bottom) / 2 ? \"before\" : \"after\";\n}\n/**\n* Returns the closest model element for the specified view element.\n*/\nfunction getClosestMappedModelElement(editor, element) {\n\tconst mapper = editor.editing.mapper;\n\tconst view = editor.editing.view;\n\tconst targetModelElement = mapper.toModelElement(element);\n\tif (targetModelElement) return targetModelElement;\n\tconst viewPosition = view.createPositionBefore(element);\n\tconst viewElement = mapper.findMappedViewAncestor(viewPosition);\n\treturn mapper.toModelElement(viewElement);\n}\n/**\n* Returns the closest scrollable ancestor DOM element.\n*\n* It is assumed that `domNode` is attached to the document.\n*/\nfunction findScrollableElement(domNode) {\n\tlet domElement = domNode;\n\tdo {\n\t\tdomElement = domElement.parentElement;\n\t\tconst overflow = global.window.getComputedStyle(domElement).overflowY;\n\t\tif (overflow == \"auto\" || overflow == \"scroll\") break;\n\t} while (domElement.tagName != \"BODY\");\n\treturn domElement;\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 clipboard/dragdropblocktoolbar\n*/\n/**\n* Integration of a block Drag and Drop support with the block toolbar.\n*\n* @internal\n*/\nvar DragDropBlockToolbar = class extends Plugin {\n\t/**\n\t* Whether current dragging is started by block toolbar button dragging.\n\t*/\n\t_isBlockDragging = false;\n\t/**\n\t* DOM Emitter.\n\t*/\n\t_domEmitter = new (DomEmitterMixin())();\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"DragDropBlockToolbar\";\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\tinit() {\n\t\tconst editor = this.editor;\n\t\tthis.listenTo(editor, \"change:isReadOnly\", (evt, name, isReadOnly) => {\n\t\t\tif (isReadOnly) {\n\t\t\t\tthis.forceDisabled(\"readOnlyMode\");\n\t\t\t\tthis._isBlockDragging = false;\n\t\t\t} else this.clearForceDisabled(\"readOnlyMode\");\n\t\t});\n\t\tif (env.isAndroid) this.forceDisabled(\"noAndroidSupport\");\n\t\tif (editor.plugins.has(\"BlockToolbar\")) {\n\t\t\tconst element = editor.plugins.get(\"BlockToolbar\").buttonView.element;\n\t\t\tthis._domEmitter.listenTo(element, \"dragstart\", (evt, data) => this._handleBlockDragStart(data));\n\t\t\tthis._domEmitter.listenTo(global.document, \"dragover\", (evt, data) => this._handleBlockDragging(data));\n\t\t\tthis._domEmitter.listenTo(global.document, \"drop\", (evt, data) => this._handleBlockDragging(data));\n\t\t\tthis._domEmitter.listenTo(global.document, \"dragend\", () => this._handleBlockDragEnd(), { useCapture: true });\n\t\t\tif (this.isEnabled) element.setAttribute(\"draggable\", \"true\");\n\t\t\tthis.on(\"change:isEnabled\", (evt, name, isEnabled) => {\n\t\t\t\telement.setAttribute(\"draggable\", isEnabled ? \"true\" : \"false\");\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tthis._domEmitter.stopListening();\n\t\treturn super.destroy();\n\t}\n\t/**\n\t* The `dragstart` event handler.\n\t*/\n\t_handleBlockDragStart(domEvent) {\n\t\tif (!this.isEnabled) return;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst view = this.editor.editing.view;\n\t\tconst blocks = Array.from(selection.getSelectedBlocks());\n\t\tconst draggedRange = model.createRange(model.createPositionBefore(blocks[0]), model.createPositionAfter(blocks[blocks.length - 1]));\n\t\tmodel.change((writer) => writer.setSelection(draggedRange));\n\t\tthis._isBlockDragging = true;\n\t\tview.focus();\n\t\tview.getObserver(ClipboardObserver).onDomEvent(domEvent);\n\t}\n\t/**\n\t* The `dragover` and `drop` event handler.\n\t*/\n\t_handleBlockDragging(domEvent) {\n\t\tif (!this.isEnabled || !this._isBlockDragging) return;\n\t\tconst clientX = domEvent.clientX + (this.editor.locale.contentLanguageDirection == \"ltr\" ? 100 : -100);\n\t\tconst clientY = domEvent.clientY;\n\t\tconst target = document.elementFromPoint(clientX, clientY);\n\t\tconst view = this.editor.editing.view;\n\t\tif (!target || !target.closest(\".ck-editor__editable\")) return;\n\t\tview.getObserver(ClipboardObserver).onDomEvent({\n\t\t\t...domEvent,\n\t\t\ttype: domEvent.type,\n\t\t\tdataTransfer: domEvent.dataTransfer,\n\t\t\ttarget,\n\t\t\tclientX,\n\t\t\tclientY,\n\t\t\tpreventDefault: () => domEvent.preventDefault(),\n\t\t\tstopPropagation: () => domEvent.stopPropagation()\n\t\t});\n\t}\n\t/**\n\t* The `dragend` event handler.\n\t*/\n\t_handleBlockDragEnd() {\n\t\tthis._isBlockDragging = false;\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 clipboard/dragdrop\n*/\n/**\n* The drag and drop feature. It works on top of the {@link module:clipboard/clipboardpipeline~ClipboardPipeline}.\n*\n* Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n*\n* @internal\n*/\nvar DragDrop = class extends Plugin {\n\t/**\n\t* The live range over the original content that is being dragged.\n\t*/\n\t_draggedRange;\n\t/**\n\t* The UID of current dragging that is used to verify if the drop started in the same editor as the drag start.\n\t*\n\t* **Note**: This is a workaround for broken 'dragend' events (they are not fired if the source text node got removed).\n\t*/\n\t_draggingUid;\n\t/**\n\t* The reference to the model element that currently has a `draggable` attribute set (it is set while dragging).\n\t*/\n\t_draggableElement;\n\t/**\n\t* A delayed callback removing draggable attributes.\n\t*/\n\t_clearDraggableAttributesDelayed = delay(() => this._clearDraggableAttributes(), 40);\n\t/**\n\t* Whether the dragged content can be dropped only in block context.\n\t*/\n\t_blockMode = false;\n\t/**\n\t* DOM Emitter.\n\t*/\n\t_domEmitter = new (DomEmitterMixin())();\n\t/**\n\t* The DOM element used to generate dragged preview image.\n\t*/\n\t_previewContainer;\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"DragDrop\";\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\tstatic get requires() {\n\t\treturn [\n\t\t\tClipboardPipeline,\n\t\t\tWidget,\n\t\t\tDragDropTarget,\n\t\t\tDragDropBlockToolbar\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tthis._draggedRange = null;\n\t\tthis._draggingUid = \"\";\n\t\tthis._draggableElement = null;\n\t\tview.addObserver(ClipboardObserver);\n\t\tview.addObserver(PointerObserver);\n\t\tthis._setupDragging();\n\t\tthis._setupContentInsertionIntegration();\n\t\tthis._setupClipboardInputIntegration();\n\t\tthis._setupDraggableAttributeHandling();\n\t\tthis.listenTo(editor, \"change:isReadOnly\", (evt, name, isReadOnly) => {\n\t\t\tif (isReadOnly) this.forceDisabled(\"readOnlyMode\");\n\t\t\telse this.clearForceDisabled(\"readOnlyMode\");\n\t\t});\n\t\tthis.on(\"change:isEnabled\", (evt, name, isEnabled) => {\n\t\t\tif (!isEnabled) this._finalizeDragging(false);\n\t\t});\n\t\tif (env.isAndroid) this.forceDisabled(\"noAndroidSupport\");\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tdestroy() {\n\t\tif (this._draggedRange) {\n\t\t\tthis._draggedRange.detach();\n\t\t\tthis._draggedRange = null;\n\t\t}\n\t\tif (this._previewContainer) this._previewContainer.remove();\n\t\tthis._domEmitter.stopListening();\n\t\tthis._clearDraggableAttributesDelayed.cancel();\n\t\treturn super.destroy();\n\t}\n\t/**\n\t* Drag and drop events handling.\n\t*/\n\t_setupDragging() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst dragDropTarget = editor.plugins.get(DragDropTarget);\n\t\tthis.listenTo(viewDocument, \"dragstart\", (evt, data) => {\n\t\t\tif (data.target?.is(\"editableElement\")) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._prepareDraggedRange(data.target);\n\t\t\tif (!this._draggedRange) {\n\t\t\t\tdata.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._draggingUid = uid();\n\t\t\tconst canEditAtDraggedRange = this.isEnabled && editor.model.canEditAt(this._draggedRange);\n\t\t\tdata.dataTransfer.effectAllowed = canEditAtDraggedRange ? \"copyMove\" : \"copy\";\n\t\t\tdata.dataTransfer.setData(\"application/ckeditor5-dragging-uid\", this._draggingUid);\n\t\t\tconst draggedSelection = model.createSelection(this._draggedRange.toRange());\n\t\t\tthis.editor.plugins.get(\"ClipboardPipeline\")._fireOutputTransformationEvent(data.dataTransfer, draggedSelection, \"dragstart\");\n\t\t\tconst { dataTransfer, domTarget, domEvent } = data;\n\t\t\tconst { clientX } = domEvent;\n\t\t\tthis._updatePreview({\n\t\t\t\tdataTransfer,\n\t\t\t\tdomTarget,\n\t\t\t\tclientX\n\t\t\t});\n\t\t\tdata.stopPropagation();\n\t\t\tif (!canEditAtDraggedRange) {\n\t\t\t\tthis._draggedRange.detach();\n\t\t\t\tthis._draggedRange = null;\n\t\t\t\tthis._draggingUid = \"\";\n\t\t\t}\n\t\t}, { priority: \"low\" });\n\t\tthis.listenTo(viewDocument, \"dragend\", (evt, data) => {\n\t\t\tthis._finalizeDragging(!data.dataTransfer.isCanceled && data.dataTransfer.dropEffect == \"move\");\n\t\t}, { priority: \"low\" });\n\t\tthis._domEmitter.listenTo(global.document, \"dragend\", () => {\n\t\t\tthis._blockMode = false;\n\t\t}, { useCapture: true });\n\t\tthis.listenTo(viewDocument, \"dragenter\", () => {\n\t\t\tif (!this.isEnabled) return;\n\t\t\tview.focus();\n\t\t});\n\t\tthis.listenTo(viewDocument, \"dragleave\", () => {\n\t\t\tdragDropTarget.removeDropMarkerDelayed();\n\t\t});\n\t\tthis.listenTo(viewDocument, \"dragging\", (evt, data) => {\n\t\t\tif (!this.isEnabled) {\n\t\t\t\tdata.dataTransfer.dropEffect = \"none\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { clientX, clientY } = data.domEvent;\n\t\t\tif (!dragDropTarget.updateDropMarker(data.target, data.targetRanges, clientX, clientY, this._blockMode, this._draggedRange)) {\n\t\t\t\tdata.dataTransfer.dropEffect = \"none\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!this._draggedRange) data.dataTransfer.dropEffect = \"copy\";\n\t\t\tif (!env.isGecko) {\n\t\t\t\tif (data.dataTransfer.effectAllowed == \"copy\") data.dataTransfer.dropEffect = \"copy\";\n\t\t\t\telse if ([\"all\", \"copyMove\"].includes(data.dataTransfer.effectAllowed)) data.dataTransfer.dropEffect = \"move\";\n\t\t\t}\n\t\t\tevt.stop();\n\t\t}, { priority: \"low\" });\n\t}\n\t/**\n\t* Integration with the `clipboardInput` event.\n\t*/\n\t_setupClipboardInputIntegration() {\n\t\tconst editor = this.editor;\n\t\tconst viewDocument = editor.editing.view.document;\n\t\tconst dragDropTarget = editor.plugins.get(DragDropTarget);\n\t\tthis.listenTo(viewDocument, \"clipboardInput\", (evt, data) => {\n\t\t\tif (data.method != \"drop\") return;\n\t\t\tconst { clientX, clientY } = data.domEvent;\n\t\t\tconst targetRange = dragDropTarget.getFinalDropRange(data.target, data.targetRanges, clientX, clientY, this._blockMode, this._draggedRange);\n\t\t\tif (!targetRange) {\n\t\t\t\tthis._finalizeDragging(false);\n\t\t\t\tevt.stop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this._draggedRange && this._draggingUid != data.dataTransfer.getData(\"application/ckeditor5-dragging-uid\")) {\n\t\t\t\tthis._draggedRange.detach();\n\t\t\t\tthis._draggedRange = null;\n\t\t\t\tthis._draggingUid = \"\";\n\t\t\t}\n\t\t\tif (getFinalDropEffect(data.dataTransfer) == \"move\" && this._draggedRange && this._draggedRange.containsRange(targetRange, true)) {\n\t\t\t\tthis._finalizeDragging(false);\n\t\t\t\tevt.stop();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdata.targetRanges = [editor.editing.mapper.toViewRange(targetRange)];\n\t\t}, { priority: \"high\" });\n\t}\n\t/**\n\t* Integration with the `contentInsertion` event of the clipboard pipeline.\n\t*/\n\t_setupContentInsertionIntegration() {\n\t\tconst clipboardPipeline = this.editor.plugins.get(ClipboardPipeline);\n\t\tclipboardPipeline.on(\"contentInsertion\", (evt, data) => {\n\t\t\tif (!this.isEnabled || data.method !== \"drop\") return;\n\t\t\tconst ranges = data.targetRanges.map((viewRange) => this.editor.editing.mapper.toModelRange(viewRange));\n\t\t\tthis.editor.model.change((writer) => writer.setSelection(ranges));\n\t\t}, { priority: \"high\" });\n\t\tclipboardPipeline.on(\"contentInsertion\", (evt, data) => {\n\t\t\tif (!this.isEnabled || data.method !== \"drop\") return;\n\t\t\tconst isMove = getFinalDropEffect(data.dataTransfer) == \"move\";\n\t\t\tconst isSuccess = !data.resultRange || !data.resultRange.isCollapsed;\n\t\t\tthis._finalizeDragging(isSuccess && isMove);\n\t\t}, { priority: \"lowest\" });\n\t}\n\t/**\n\t* Adds listeners that add the `draggable` attribute to the elements while the mouse button is down so the dragging could start.\n\t*/\n\t_setupDraggableAttributeHandling() {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tthis.listenTo(viewDocument, \"pointerdown\", (evt, data) => {\n\t\t\tif (env.isAndroid || !data) return;\n\t\t\tthis._clearDraggableAttributesDelayed.cancel();\n\t\t\tlet draggableElement = findDraggableWidget(data.target);\n\t\t\tif (env.isBlink && !editor.isReadOnly && !draggableElement && !viewDocument.selection.isCollapsed) {\n\t\t\t\tconst selectedElement = viewDocument.selection.getSelectedElement();\n\t\t\t\tif (!selectedElement || !isWidget(selectedElement)) draggableElement = viewDocument.selection.editableElement;\n\t\t\t}\n\t\t\tif (draggableElement) {\n\t\t\t\tview.change((writer) => {\n\t\t\t\t\twriter.setAttribute(\"draggable\", \"true\", draggableElement);\n\t\t\t\t});\n\t\t\t\tthis._draggableElement = editor.editing.mapper.toModelElement(draggableElement);\n\t\t\t}\n\t\t});\n\t\tthis.listenTo(viewDocument, \"pointerup\", () => {\n\t\t\tif (!env.isAndroid) this._clearDraggableAttributesDelayed();\n\t\t});\n\t}\n\t/**\n\t* Removes the `draggable` attribute from the element that was used for dragging.\n\t*/\n\t_clearDraggableAttributes() {\n\t\tconst editing = this.editor.editing;\n\t\tediting.view.change((writer) => {\n\t\t\tif (this._draggableElement && this._draggableElement.root.rootName != \"$graveyard\") writer.removeAttribute(\"draggable\", editing.mapper.toViewElement(this._draggableElement));\n\t\t\tthis._draggableElement = null;\n\t\t});\n\t}\n\t/**\n\t* Deletes the dragged content from its original range and clears the dragging state.\n\t*\n\t* @param moved Whether the move succeeded.\n\t*/\n\t_finalizeDragging(moved) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\teditor.plugins.get(DragDropTarget).removeDropMarker();\n\t\tthis._clearDraggableAttributes();\n\t\tif (editor.plugins.has(\"WidgetToolbarRepository\")) editor.plugins.get(\"WidgetToolbarRepository\").clearForceDisabled(\"dragDrop\");\n\t\tthis._draggingUid = \"\";\n\t\tif (this._previewContainer) {\n\t\t\tthis._previewContainer.remove();\n\t\t\tthis._previewContainer = void 0;\n\t\t}\n\t\tif (!this._draggedRange) return;\n\t\tif (moved && this.isEnabled) model.change((writer) => {\n\t\t\tconst selection = model.createSelection(this._draggedRange);\n\t\t\tmodel.deleteContent(selection, { doNotAutoparagraph: true });\n\t\t\tconst selectionParent = selection.getFirstPosition().parent;\n\t\t\tif (selectionParent.isEmpty && !model.schema.checkChild(selectionParent, \"$text\") && model.schema.checkChild(selectionParent, \"paragraph\")) writer.insertElement(\"paragraph\", selectionParent, 0);\n\t\t});\n\t\tthis._draggedRange.detach();\n\t\tthis._draggedRange = null;\n\t}\n\t/**\n\t* Sets the dragged source range based on event target and document selection.\n\t*/\n\t_prepareDraggedRange(target) {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst draggableWidget = target ? findDraggableWidget(target) : null;\n\t\tif (draggableWidget) {\n\t\t\tconst modelElement = editor.editing.mapper.toModelElement(draggableWidget);\n\t\t\tthis._draggedRange = ModelLiveRange.fromRange(model.createRangeOn(modelElement));\n\t\t\tthis._blockMode = model.schema.isBlock(modelElement);\n\t\t\tif (editor.plugins.has(\"WidgetToolbarRepository\")) editor.plugins.get(\"WidgetToolbarRepository\").forceDisabled(\"dragDrop\");\n\t\t\treturn;\n\t\t}\n\t\tif (selection.isCollapsed && !selection.getFirstPosition().parent.isEmpty) return;\n\t\tconst blocks = Array.from(selection.getSelectedBlocks());\n\t\tconst draggedRange = selection.getFirstRange();\n\t\tif (blocks.length == 0) {\n\t\t\tthis._draggedRange = ModelLiveRange.fromRange(draggedRange);\n\t\t\treturn;\n\t\t}\n\t\tconst blockRange = getRangeIncludingFullySelectedParents(model, blocks);\n\t\tif (blocks.length > 1) {\n\t\t\tthis._draggedRange = ModelLiveRange.fromRange(blockRange);\n\t\t\tthis._blockMode = true;\n\t\t} else if (blocks.length == 1) {\n\t\t\tconst touchesBlockEdges = draggedRange.start.isTouching(blockRange.start) && draggedRange.end.isTouching(blockRange.end);\n\t\t\tthis._draggedRange = ModelLiveRange.fromRange(touchesBlockEdges ? blockRange : draggedRange);\n\t\t\tthis._blockMode = touchesBlockEdges;\n\t\t}\n\t\tmodel.change((writer) => writer.setSelection(this._draggedRange.toRange()));\n\t}\n\t/**\n\t* Updates the dragged preview image.\n\t*/\n\t_updatePreview({ dataTransfer, domTarget, clientX }) {\n\t\tconst view = this.editor.editing.view;\n\t\tconst editable = view.document.selection.editableElement;\n\t\tconst domEditable = view.domConverter.mapViewToDom(editable);\n\t\tconst computedStyle = global.window.getComputedStyle(domEditable);\n\t\tif (!this._previewContainer) {\n\t\t\tthis._previewContainer = createElement(global.document, \"div\", { style: \"position: fixed; left: -999999px;\" });\n\t\t\tglobal.document.body.appendChild(this._previewContainer);\n\t\t} else if (this._previewContainer.firstElementChild) this._previewContainer.removeChild(this._previewContainer.firstElementChild);\n\t\tconst preview = createElement(global.document, \"div\");\n\t\tpreview.className = \"ck ck-content ck-clipboard-preview\";\n\t\tconst domRect = new Rect(domEditable);\n\t\tconst domEditablePaddingLeft = parseFloat(computedStyle.paddingLeft);\n\t\tconst domEditablePaddingRight = parseFloat(computedStyle.paddingRight);\n\t\tconst editableWidth = parseFloat(computedStyle.width) - domEditablePaddingLeft - domEditablePaddingRight;\n\t\tif (!domEditable.contains(domTarget)) if (!env.isiOS) {\n\t\t\tconst offsetLeft = domRect.left - clientX + domEditablePaddingLeft;\n\t\t\tpreview.style.width = `${editableWidth + offsetLeft}px`;\n\t\t\tpreview.style.paddingLeft = `${offsetLeft}px`;\n\t\t} else {\n\t\t\tpreview.style.width = `${editableWidth}px`;\n\t\t\tpreview.style.backgroundColor = \"var(--ck-color-base-background)\";\n\t\t}\n\t\telse if (env.isiOS) {\n\t\t\tpreview.style.maxWidth = `${editableWidth}px`;\n\t\t\tpreview.style.padding = \"10px\";\n\t\t\tpreview.style.minWidth = \"200px\";\n\t\t\tpreview.style.minHeight = \"20px\";\n\t\t\tpreview.style.boxSizing = \"border-box\";\n\t\t\tpreview.style.backgroundColor = \"var(--ck-color-base-background)\";\n\t\t} else return;\n\t\tview.domConverter.setContentOf(preview, dataTransfer.getData(\"text/html\"));\n\t\tdataTransfer.setDragImage(preview, 0, 0);\n\t\tthis._previewContainer.appendChild(preview);\n\t}\n};\n/**\n* Returns the drop effect that should be a result of dragging the content.\n* This function is handling a quirk when checking the effect in the 'drop' DOM event.\n*/\nfunction getFinalDropEffect(dataTransfer) {\n\tif (env.isGecko) return dataTransfer.dropEffect;\n\treturn [\"all\", \"copyMove\"].includes(dataTransfer.effectAllowed) ? \"move\" : \"copy\";\n}\n/**\n* Returns a widget element that should be dragged.\n*/\nfunction findDraggableWidget(target) {\n\tif (target.is(\"editableElement\")) return null;\n\tif (target.hasClass(\"ck-widget__selection-handle\")) return target.findAncestor(isWidget);\n\tif (isWidget(target)) return target;\n\tconst ancestor = target.findAncestor((node) => isWidget(node) || node.is(\"editableElement\"));\n\tif (isWidget(ancestor)) return ancestor;\n\treturn null;\n}\n/**\n* Recursively checks if common parent of provided elements doesn't have any other children. If that's the case,\n* it returns range including this parent. Otherwise, it returns only the range from first to last element.\n*\n* Example:\n*\n* <blockQuote>\n* <paragraph>[Test 1</paragraph>\n* <paragraph>Test 2</paragraph>\n* <paragraph>Test 3]</paragraph>\n* <blockQuote>\n*\n* Because all elements inside the `blockQuote` are selected, the range is extended to include the `blockQuote` too.\n* If only first and second paragraphs would be selected, the range would not include it.\n*/\nfunction getRangeIncludingFullySelectedParents(model, elements) {\n\tconst firstElement = elements[0];\n\tconst lastElement = elements[elements.length - 1];\n\tconst parent = firstElement.getCommonAncestor(lastElement);\n\tconst startPosition = model.createPositionBefore(firstElement);\n\tconst endPosition = model.createPositionAfter(lastElement);\n\tif (parent && parent.is(\"element\") && !model.schema.isLimit(parent)) {\n\t\tconst parentRange = model.createRangeOn(parent);\n\t\tconst touchesStart = startPosition.isTouching(parentRange.start);\n\t\tconst touchesEnd = endPosition.isTouching(parentRange.end);\n\t\tif (touchesStart && touchesEnd) return getRangeIncludingFullySelectedParents(model, [parent]);\n\t}\n\treturn model.createRange(startPosition, endPosition);\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 clipboard/pasteplaintext\n*/\n/**\n* The plugin detects the user's intention to paste plain text.\n*\n* For example, it detects the <kbd>Ctrl/Cmd</kbd> + <kbd>Shift</kbd> + <kbd>V</kbd> keystroke.\n*/\nvar PastePlainText = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"PastePlainText\";\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\tstatic get requires() {\n\t\treturn [ClipboardPipeline];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst selection = model.document.selection;\n\t\tview.addObserver(ClipboardObserver);\n\t\teditor.plugins.get(ClipboardPipeline).on(\"contentInsertion\", (evt, data) => {\n\t\t\tif (!isUnformattedInlineContent(data.content, model)) return;\n\t\t\tmodel.change((writer) => {\n\t\t\t\tconst textAttributes = Array.from(selection.getAttributes()).filter(([key]) => model.schema.getAttributeProperties(key).isFormatting);\n\t\t\t\tif (!selection.isCollapsed) model.deleteContent(selection, { doNotAutoparagraph: true });\n\t\t\t\ttextAttributes.push(...selection.getAttributes());\n\t\t\t\tconst range = writer.createRangeIn(data.content);\n\t\t\t\tfor (const item of range.getItems()) for (const attribute of textAttributes) if (model.schema.checkAttribute(item, attribute[0])) writer.setAttribute(attribute[0], attribute[1], item);\n\t\t\t});\n\t\t});\n\t}\n};\n/**\n* Returns true if specified `documentFragment` represents the unformatted inline content.\n*/\nfunction isUnformattedInlineContent(documentFragment, model) {\n\tlet range = model.createRangeIn(documentFragment);\n\tif (documentFragment.childCount == 1) {\n\t\tconst child = documentFragment.getChild(0);\n\t\tif (child.is(\"element\") && model.schema.isBlock(child) && !model.schema.isObject(child) && !model.schema.isLimit(child)) range = model.createRangeIn(child);\n\t}\n\tfor (const child of range.getItems()) {\n\t\tif (!model.schema.isInline(child)) return false;\n\t\tif (Array.from(child.getAttributeKeys()).find((key) => model.schema.getAttributeProperties(key).isFormatting)) return false;\n\t}\n\treturn true;\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 clipboard/clipboard\n*/\n/**\n* The clipboard feature.\n*\n* Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide.\n*\n* This is a \"glue\" plugin which loads the following plugins:\n* * {@link module:clipboard/clipboardpipeline~ClipboardPipeline}\n* * {@link module:clipboard/dragdrop~DragDrop}\n* * {@link module:clipboard/pasteplaintext~PastePlainText}\n*/\nvar Clipboard = class extends Plugin {\n\t/**\n\t* @inheritDoc\n\t*/\n\tstatic get pluginName() {\n\t\treturn \"Clipboard\";\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\tstatic get requires() {\n\t\treturn [\n\t\t\tClipboardMarkersUtils,\n\t\t\tClipboardPipeline,\n\t\t\tDragDrop,\n\t\t\tPastePlainText\n\t\t];\n\t}\n\t/**\n\t* @inheritDoc\n\t*/\n\tinit() {\n\t\tconst editor = this.editor;\n\t\tconst t = this.editor.t;\n\t\teditor.accessibility.addKeystrokeInfos({ keystrokes: [\n\t\t\t{\n\t\t\t\tlabel: t(\"Copy selected content\"),\n\t\t\t\tkeystroke: \"CTRL+C\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t(\"Paste content\"),\n\t\t\t\tkeystroke: \"CTRL+V\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: t(\"Paste content as plain text\"),\n\t\t\t\tkeystroke: \"CTRL+SHIFT+V\"\n\t\t\t}\n\t\t] });\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\nexport { Clipboard, ClipboardMarkersUtils, ClipboardObserver, ClipboardPipeline, DragDrop, DragDrop as _DragDrop, DragDropBlockToolbar, DragDropBlockToolbar as _DragDropBlockToolbar, DragDropTarget, DragDropTarget as _DragDropTarget, PastePlainText, LineView as _ClipboardLineView, normalizeClipboardData as _normalizeClipboardData, plainTextToHtml, viewToPlainText };\n//# sourceMappingURL=index.js.map"],"names":["plainTextToHtml","text","ClipboardObserver","DomEventObserver","view","__publicField","viewDocument","handleInput","type","evt","data","targetRanges","dataTransfer","eventInfo","EventInfo","content","domEvent","nativeDataTransfer","cacheFiles","evtData","ViewDataTransfer","domRange","getRangeFromMouseEvent","normalizeClipboardData","fullMatch","spaces","smallPaddingElements","listElements","viewToPlainText","converter","viewItem","prev","child","newLinePadding","tempElement","domElementToPlainText","element","previous","ClipboardMarkersUtils","Plugin","markerName","config","action","selection","getCopiedFragment","writer","oldSelection","sourceSelectionInsertedMarkers","fragment","fakeMarkersRangesInsideRange","elements","range","markers","getPastedDocumentElement","pasteMarkers","sourceFragmentFakeMarkers","transformedElement","removedFakeMarkers","copyableMarker","executor","before","allowedActions","markerNamePrefix","copyableMarkers","selectionRanges","markersInRanges","selectionRange","isSelectionMarkerCopyable","marker","copyPartiallySelected","markerRange","model","copyMarkerConfig","isInGraveyard","mappedMarkers","sortedMarkers","start","end","posA","posB","position","fakeMarker","rootElement","fakeMarkersRanges","acc","prevFakeMarker","skipAssign","mapValues","ModelRange","foundFakeMarkers","item","prependFakeMarkers","appendFakeMarkers","otherFakeMarker","name","parts","newId","uid","ClipboardPipeline","method","clipboardMarkersUtils","documentFragment","editor","sourceEditorId","modelFragment","modelDocument","onCopyCut","toPx","toUnit","LineView","View","bind","value","left","top","width","DragDropTarget","delay","throttle","targetRange","DomEmitterMixin","resizeObserver","targetViewElement","targetViewRanges","clientX","clientY","blockMode","draggedRange","findDropTargetRange","domDocument","domElement","editing","nodeBefore","nodeAfter","nodeParent","viewElementBefore","domElementBefore","viewElementAfter","domElementAfter","viewElementParent","domElementParent","domScrollableRect","scrollX","scrollY","global","rectBefore","Rect","rectAfter","rectParent","above","below","parentStyle","right","leftClamped","rightClamped","viewElement","rootName","domScrollable","findScrollableElement","ResizeObserver","mapper","modelElement","getClosestMappedModelElement","targetViewPosition","targetModelPosition","findDropTargetRangeForElement","childNodes","node","shouldIgnoreElement","startIndex","endIndex","middleIndex","findElementSide","domConverter","rect","targetModelElement","viewPosition","domNode","overflow","DragDropBlockToolbar","isReadOnly","env","isEnabled","blocks","target","DragDrop","Widget","PointerObserver","dragDropTarget","_a","canEditAtDraggedRange","draggedSelection","domTarget","getFinalDropEffect","clipboardPipeline","ranges","viewRange","isMove","isSuccess","draggableElement","findDraggableWidget","selectedElement","isWidget","moved","selectionParent","draggableWidget","ModelLiveRange","blockRange","getRangeIncludingFullySelectedParents","touchesBlockEdges","editable","domEditable","computedStyle","createElement","preview","domRect","domEditablePaddingLeft","domEditablePaddingRight","editableWidth","offsetLeft","ancestor","firstElement","lastElement","parent","startPosition","endPosition","parentRange","touchesStart","touchesEnd","PastePlainText","isUnformattedInlineContent","textAttributes","key","attribute","Clipboard","t"],"mappings":"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","x_google_ignoreList":[0]}
|