@ckeditor/ckeditor5-html-embed 41.4.2 → 42.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,12 @@ Check out the demo in the [HTML embed feature guide](https://ckeditor.com/docs/c
15
15
 
16
16
  See the [`@ckeditor/ckeditor5-html-embed` package](https://ckeditor.com/docs/ckeditor5/latest/api/html-embed.html) page as well as the [HTML embed feature](https://ckeditor.com/docs/ckeditor5/latest/features/html/html-embed.html) guide in [CKEditor 5 documentation](https://ckeditor.com/docs/ckeditor5/latest/).
17
17
 
18
+ ## Installation
19
+
20
+ ```bash
21
+ npm install ckeditor5
22
+ ```
23
+
18
24
  ## License
19
25
 
20
26
  Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html). For full details about the license, please check the `LICENSE.md` file or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license).
package/dist/index.js CHANGED
@@ -5,12 +5,34 @@
5
5
  import { Command, Plugin, icons } from '@ckeditor/ckeditor5-core/dist/index.js';
6
6
  import { findOptimalInsertionRange, toWidget, Widget } from '@ckeditor/ckeditor5-widget/dist/index.js';
7
7
  import { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';
8
- import { createElement, logWarning } from '@ckeditor/ckeditor5-utils/dist/index.js';
8
+ import { logWarning, createElement } from '@ckeditor/ckeditor5-utils/dist/index.js';
9
9
 
10
- class HtmlEmbedCommand extends Command {
10
+ /**
11
+ * The insert HTML embed element command.
12
+ *
13
+ * The command is registered by {@link module:html-embed/htmlembedediting~HtmlEmbedEditing} as `'htmlEmbed'`.
14
+ *
15
+ * To insert an empty HTML embed element at the current selection, execute the command:
16
+ *
17
+ * ```ts
18
+ * editor.execute( 'htmlEmbed' );
19
+ * ```
20
+ *
21
+ * You can specify the initial content of a new HTML embed in the argument:
22
+ *
23
+ * ```ts
24
+ * editor.execute( 'htmlEmbed', '<b>Initial content.</b>' );
25
+ * ```
26
+ *
27
+ * To update the content of the HTML embed, select it in the model and pass the content in the argument:
28
+ *
29
+ * ```ts
30
+ * editor.execute( 'htmlEmbed', '<b>New content of an existing embed.</b>' );
31
+ * ```
32
+ */ class HtmlEmbedCommand extends Command {
11
33
  /**
12
- * @inheritDoc
13
- */ refresh() {
34
+ * @inheritDoc
35
+ */ refresh() {
14
36
  const model = this.editor.model;
15
37
  const schema = model.schema;
16
38
  const selection = model.document.selection;
@@ -19,14 +41,14 @@ class HtmlEmbedCommand extends Command {
19
41
  this.value = selectedRawHtmlElement ? selectedRawHtmlElement.getAttribute('value') || '' : null;
20
42
  }
21
43
  /**
22
- * Executes the command, which either:
23
- *
24
- * * creates and inserts a new HTML embed element if none was selected,
25
- * * updates the content of the HTML embed if one was selected.
26
- *
27
- * @fires execute
28
- * @param value When passed, the value (content) will be set on a new embed or a selected one.
29
- */ execute(value) {
44
+ * Executes the command, which either:
45
+ *
46
+ * * creates and inserts a new HTML embed element if none was selected,
47
+ * * updates the content of the HTML embed if one was selected.
48
+ *
49
+ * @fires execute
50
+ * @param value When passed, the value (content) will be set on a new embed or a selected one.
51
+ */ execute(value) {
30
52
  const model = this.editor.model;
31
53
  const selection = model.document.selection;
32
54
  model.change((writer)=>{
@@ -70,15 +92,43 @@ class HtmlEmbedCommand extends Command {
70
92
  return null;
71
93
  }
72
94
 
73
- class HtmlEmbedEditing extends Plugin {
95
+ /**
96
+ * The HTML embed editing feature.
97
+ */ class HtmlEmbedEditing extends Plugin {
74
98
  /**
75
- * @inheritDoc
76
- */ static get pluginName() {
99
+ * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for
100
+ * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.
101
+ */ _widgetButtonViewReferences = new Set();
102
+ /**
103
+ * @inheritDoc
104
+ */ static get pluginName() {
77
105
  return 'HtmlEmbedEditing';
78
106
  }
79
107
  /**
80
- * @inheritDoc
81
- */ init() {
108
+ * @inheritDoc
109
+ */ constructor(editor){
110
+ super(editor);
111
+ editor.config.define('htmlEmbed', {
112
+ showPreviews: false,
113
+ sanitizeHtml: (rawHtml)=>{
114
+ /**
115
+ * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to
116
+ * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.
117
+ *
118
+ * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.
119
+ *
120
+ * @error html-embed-provide-sanitize-function
121
+ */ logWarning('html-embed-provide-sanitize-function');
122
+ return {
123
+ html: rawHtml,
124
+ hasChanged: false
125
+ };
126
+ }
127
+ });
128
+ }
129
+ /**
130
+ * @inheritDoc
131
+ */ init() {
82
132
  const editor = this.editor;
83
133
  const schema = editor.model.schema;
84
134
  schema.register('rawHtml', {
@@ -91,8 +141,8 @@ class HtmlEmbedEditing extends Plugin {
91
141
  this._setupConversion();
92
142
  }
93
143
  /**
94
- * Prepares converters for the feature.
95
- */ _setupConversion() {
144
+ * Prepares converters for the feature.
145
+ */ _setupConversion() {
96
146
  const editor = this.editor;
97
147
  const t = editor.t;
98
148
  const view = editor.editing.view;
@@ -350,32 +400,6 @@ class HtmlEmbedEditing extends Plugin {
350
400
  return domPreviewContainer;
351
401
  }
352
402
  }
353
- /**
354
- * @inheritDoc
355
- */ constructor(editor){
356
- super(editor);
357
- /**
358
- * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for
359
- * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.
360
- */ this._widgetButtonViewReferences = new Set();
361
- editor.config.define('htmlEmbed', {
362
- showPreviews: false,
363
- sanitizeHtml: (rawHtml)=>{
364
- /**
365
- * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to
366
- * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.
367
- *
368
- * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.
369
- *
370
- * @error html-embed-provide-sanitize-function
371
- */ logWarning('html-embed-provide-sanitize-function');
372
- return {
373
- html: rawHtml,
374
- hasChanged: false
375
- };
376
- }
377
- });
378
- }
379
403
  }
380
404
  /**
381
405
  * Returns a UI button view that can be used in conversion.
@@ -412,15 +436,17 @@ class HtmlEmbedEditing extends Plugin {
412
436
  return buttonView;
413
437
  }
414
438
 
415
- class HtmlEmbedUI extends Plugin {
439
+ /**
440
+ * The HTML embed UI plugin.
441
+ */ class HtmlEmbedUI extends Plugin {
416
442
  /**
417
- * @inheritDoc
418
- */ static get pluginName() {
443
+ * @inheritDoc
444
+ */ static get pluginName() {
419
445
  return 'HtmlEmbedUI';
420
446
  }
421
447
  /**
422
- * @inheritDoc
423
- */ init() {
448
+ * @inheritDoc
449
+ */ init() {
424
450
  const editor = this.editor;
425
451
  const locale = editor.locale;
426
452
  const t = locale.t;
@@ -442,8 +468,8 @@ class HtmlEmbedUI extends Plugin {
442
468
  });
443
469
  }
444
470
  /**
445
- * Creates a button for html embed command to use either in toolbar or in menu bar.
446
- */ _createButton(ButtonClass) {
471
+ * Creates a button for html embed command to use either in toolbar or in menu bar.
472
+ */ _createButton(ButtonClass) {
447
473
  const editor = this.editor;
448
474
  const command = editor.commands.get('htmlEmbed');
449
475
  const view = new ButtonClass(editor.locale);
@@ -462,10 +488,16 @@ class HtmlEmbedUI extends Plugin {
462
488
  }
463
489
  }
464
490
 
465
- class HtmlEmbed extends Plugin {
491
+ /**
492
+ * The HTML embed feature.
493
+ *
494
+ * It allows inserting HTML snippets directly into the editor.
495
+ *
496
+ * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.
497
+ */ class HtmlEmbed extends Plugin {
466
498
  /**
467
- * @inheritDoc
468
- */ static get requires() {
499
+ * @inheritDoc
500
+ */ static get requires() {
469
501
  return [
470
502
  HtmlEmbedEditing,
471
503
  HtmlEmbedUI,
@@ -473,8 +505,8 @@ class HtmlEmbed extends Plugin {
473
505
  ];
474
506
  }
475
507
  /**
476
- * @inheritDoc
477
- */ static get pluginName() {
508
+ * @inheritDoc
509
+ */ static get pluginName() {
478
510
  return 'HtmlEmbed';
479
511
  }
480
512
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/htmlembedcommand.ts","../src/htmlembedediting.ts","../src/htmlembedui.ts","../src/htmlembed.ts"],"names":["HtmlEmbedCommand","Command","refresh","model","editor","schema","selection","document","selectedRawHtmlElement","getSelectedRawHtmlModelWidget","isEnabled","isHtmlEmbedAllowedInParent","value","getAttribute","execute","change","writer","htmlEmbedElement","createElement","insertObject","setSelection","setAttribute","parent","getInsertHtmlEmbedParent","checkChild","insertionRange","findOptimalInsertionRange","start","isEmpty","is","selectedElement","getSelectedElement","HtmlEmbedEditing","Plugin","pluginName","init","register","inheritAllFrom","allowAttributes","commands","add","_setupConversion","t","view","editing","widgetButtonViewReferences","_widgetButtonViewReferences","htmlEmbedConfig","config","get","on","buttonView","element","isConnected","destroy","delete","priority","data","registerRawContentMatcher","name","classes","conversion","for","elementToElement","viewElement","getCustomProperty","modelElement","createRawElement","class","domElement","innerHTML","elementToStructure","attributes","domContentWrapper","state","props","viewContentWrapper","renderContent","addEventListener","isEditable","rawHtmlApi","makeEditable","Object","assign","querySelector","focus","save","newValue","getRawHtmlValue","cancel","removeAttribute","showPreviews","sanitizeHtml","textareaPlaceholder","onEditClick","onSaveClick","onCancelClick","viewContainer","createContainerElement","dir","locale","uiLanguageDirection","setCustomProperty","toWidget","label","hasSelectionHandle","textContent","domDocument","ownerDocument","domTextarea","textareaProps","isDisabled","placeholder","createDomTextarea","append","previewContainerProps","createPreviewContainer","buttonsWrapperProps","prepend","createDomButtonsWrapper","domButtonsWrapper","saveButtonView","createUIButton","cancelButtonView","editButtonView","disabled","sanitizedOutput","placeholderText","length","domPreviewPlaceholder","domPreviewContent","contentLanguageDirection","domRange","createRange","domDocumentFragment","createContextualFragment","html","appendChild","domPreviewContainer","constructor","Set","define","rawHtml","logWarning","hasChanged","type","onClick","ButtonView","command","set","icon","icons","pencil","tooltip","tooltipPosition","render","bind","to","check","HtmlEmbedUI","ui","componentFactory","_createButton","MenuBarMenuListItemButtonView","ButtonClass","listenTo","HtmlEmbed","requires","Widget"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin, icons } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { findOptimalInsertionRange, toWidget, Widget } from '@ckeditor/ckeditor5-widget/dist/index.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { createElement, logWarning } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\nclass HtmlEmbedCommand extends Command {\n /**\n * @inheritDoc\n */ refresh() {\n const model = this.editor.model;\n const schema = model.schema;\n const selection = model.document.selection;\n const selectedRawHtmlElement = getSelectedRawHtmlModelWidget(selection);\n this.isEnabled = isHtmlEmbedAllowedInParent(selection, schema, model);\n this.value = selectedRawHtmlElement ? selectedRawHtmlElement.getAttribute('value') || '' : null;\n }\n /**\n * Executes the command, which either:\n *\n * * creates and inserts a new HTML embed element if none was selected,\n * * updates the content of the HTML embed if one was selected.\n *\n * @fires execute\n * @param value When passed, the value (content) will be set on a new embed or a selected one.\n */ execute(value) {\n const model = this.editor.model;\n const selection = model.document.selection;\n model.change((writer)=>{\n let htmlEmbedElement;\n // If the command has a non-null value, there must be some HTML embed selected in the model.\n if (this.value !== null) {\n htmlEmbedElement = getSelectedRawHtmlModelWidget(selection);\n } else {\n htmlEmbedElement = writer.createElement('rawHtml');\n model.insertObject(htmlEmbedElement, null, null, {\n setSelection: 'on'\n });\n }\n writer.setAttribute('value', value, htmlEmbedElement);\n });\n }\n}\n/**\n * Checks if an HTML embed is allowed by the schema in the optimal insertion parent.\n */ function isHtmlEmbedAllowedInParent(selection, schema, model) {\n const parent = getInsertHtmlEmbedParent(selection, model);\n return schema.checkChild(parent, 'rawHtml');\n}\n/**\n * Returns a node that will be used to insert a html embed with `model.insertContent` to check if a html embed element can be placed there.\n */ function getInsertHtmlEmbedParent(selection, model) {\n const insertionRange = findOptimalInsertionRange(selection, model);\n const parent = insertionRange.start.parent;\n if (parent.isEmpty && !parent.is('rootElement')) {\n return parent.parent;\n }\n return parent;\n}\n/**\n * Returns the selected HTML embed element in the model, if any.\n */ function getSelectedRawHtmlModelWidget(selection) {\n const selectedElement = selection.getSelectedElement();\n if (selectedElement && selectedElement.is('element', 'rawHtml')) {\n return selectedElement;\n }\n return null;\n}\n\nclass HtmlEmbedEditing extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'HtmlEmbedEditing';\n }\n /**\n * @inheritDoc\n */ init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n schema.register('rawHtml', {\n inheritAllFrom: '$blockObject',\n allowAttributes: [\n 'value'\n ]\n });\n editor.commands.add('htmlEmbed', new HtmlEmbedCommand(editor));\n this._setupConversion();\n }\n /**\n * Prepares converters for the feature.\n */ _setupConversion() {\n const editor = this.editor;\n const t = editor.t;\n const view = editor.editing.view;\n const widgetButtonViewReferences = this._widgetButtonViewReferences;\n const htmlEmbedConfig = editor.config.get('htmlEmbed');\n // Destroy UI buttons created for widgets that have been removed from the view document (e.g. in the previous conversion).\n // This prevents unexpected memory leaks from UI views.\n this.editor.editing.view.on('render', ()=>{\n for (const buttonView of widgetButtonViewReferences){\n if (buttonView.element && buttonView.element.isConnected) {\n return;\n }\n buttonView.destroy();\n widgetButtonViewReferences.delete(buttonView);\n }\n }, {\n priority: 'lowest'\n });\n // Register div.raw-html-embed as a raw content element so all of it's content will be provided\n // as a view element's custom property while data upcasting.\n editor.data.registerRawContentMatcher({\n name: 'div',\n classes: 'raw-html-embed'\n });\n editor.conversion.for('upcast').elementToElement({\n view: {\n name: 'div',\n classes: 'raw-html-embed'\n },\n model: (viewElement, { writer })=>{\n // The div.raw-html-embed is registered as a raw content element,\n // so all it's content is available in a custom property.\n return writer.createElement('rawHtml', {\n value: viewElement.getCustomProperty('$rawContent')\n });\n }\n });\n editor.conversion.for('dataDowncast').elementToElement({\n model: 'rawHtml',\n view: (modelElement, { writer })=>{\n return writer.createRawElement('div', {\n class: 'raw-html-embed'\n }, function(domElement) {\n domElement.innerHTML = modelElement.getAttribute('value') || '';\n });\n }\n });\n editor.conversion.for('editingDowncast').elementToStructure({\n model: {\n name: 'rawHtml',\n attributes: [\n 'value'\n ]\n },\n view: (modelElement, { writer })=>{\n let domContentWrapper;\n let state;\n let props;\n const viewContentWrapper = writer.createRawElement('div', {\n class: 'raw-html-embed__content-wrapper'\n }, function(domElement) {\n domContentWrapper = domElement;\n renderContent({\n editor,\n domElement,\n state,\n props\n });\n // Since there is a `data-cke-ignore-events` attribute set on the wrapper element in the editable mode,\n // the explicit `mousedown` handler on the `capture` phase is needed to move the selection onto the whole\n // HTML embed widget.\n domContentWrapper.addEventListener('mousedown', ()=>{\n if (state.isEditable) {\n const model = editor.model;\n const selectedElement = model.document.selection.getSelectedElement();\n // Move the selection onto the whole HTML embed widget if it's currently not selected.\n if (selectedElement !== modelElement) {\n model.change((writer)=>writer.setSelection(modelElement, 'on'));\n }\n }\n }, true);\n });\n // API exposed on each raw HTML embed widget so other features can control a particular widget.\n const rawHtmlApi = {\n makeEditable () {\n state = Object.assign({}, state, {\n isEditable: true\n });\n renderContent({\n domElement: domContentWrapper,\n editor,\n state,\n props\n });\n view.change((writer)=>{\n writer.setAttribute('data-cke-ignore-events', 'true', viewContentWrapper);\n });\n // This could be potentially pulled to a separate method called focusTextarea().\n domContentWrapper.querySelector('textarea').focus();\n },\n save (newValue) {\n // If the value didn't change, we just cancel. If it changed,\n // it's enough to update the model – the entire widget will be reconverted.\n if (newValue !== state.getRawHtmlValue()) {\n editor.execute('htmlEmbed', newValue);\n editor.editing.view.focus();\n } else {\n this.cancel();\n }\n },\n cancel () {\n state = Object.assign({}, state, {\n isEditable: false\n });\n renderContent({\n domElement: domContentWrapper,\n editor,\n state,\n props\n });\n editor.editing.view.focus();\n view.change((writer)=>{\n writer.removeAttribute('data-cke-ignore-events', viewContentWrapper);\n });\n }\n };\n state = {\n showPreviews: htmlEmbedConfig.showPreviews,\n isEditable: false,\n getRawHtmlValue: ()=>modelElement.getAttribute('value') || ''\n };\n props = {\n sanitizeHtml: htmlEmbedConfig.sanitizeHtml,\n textareaPlaceholder: t('Paste raw HTML here...'),\n onEditClick () {\n rawHtmlApi.makeEditable();\n },\n onSaveClick (newValue) {\n rawHtmlApi.save(newValue);\n },\n onCancelClick () {\n rawHtmlApi.cancel();\n }\n };\n const viewContainer = writer.createContainerElement('div', {\n class: 'raw-html-embed',\n 'data-html-embed-label': t('HTML snippet'),\n dir: editor.locale.uiLanguageDirection\n }, viewContentWrapper);\n writer.setCustomProperty('rawHtmlApi', rawHtmlApi, viewContainer);\n writer.setCustomProperty('rawHtml', true, viewContainer);\n return toWidget(viewContainer, writer, {\n label: t('HTML snippet'),\n hasSelectionHandle: true\n });\n }\n });\n function renderContent({ editor, domElement, state, props }) {\n // Remove all children;\n domElement.textContent = '';\n const domDocument = domElement.ownerDocument;\n let domTextarea;\n if (state.isEditable) {\n const textareaProps = {\n isDisabled: false,\n placeholder: props.textareaPlaceholder\n };\n domTextarea = createDomTextarea({\n domDocument,\n state,\n props: textareaProps\n });\n domElement.append(domTextarea);\n } else if (state.showPreviews) {\n const previewContainerProps = {\n sanitizeHtml: props.sanitizeHtml\n };\n domElement.append(createPreviewContainer({\n domDocument,\n state,\n props: previewContainerProps,\n editor\n }));\n } else {\n const textareaProps = {\n isDisabled: true,\n placeholder: props.textareaPlaceholder\n };\n domElement.append(createDomTextarea({\n domDocument,\n state,\n props: textareaProps\n }));\n }\n const buttonsWrapperProps = {\n onEditClick: props.onEditClick,\n onSaveClick: ()=>{\n props.onSaveClick(domTextarea.value);\n },\n onCancelClick: props.onCancelClick\n };\n domElement.prepend(createDomButtonsWrapper({\n editor,\n domDocument,\n state,\n props: buttonsWrapperProps\n }));\n }\n function createDomButtonsWrapper({ editor, domDocument, state, props }) {\n const domButtonsWrapper = createElement(domDocument, 'div', {\n class: 'raw-html-embed__buttons-wrapper'\n });\n if (state.isEditable) {\n const saveButtonView = createUIButton(editor, 'save', props.onSaveClick);\n const cancelButtonView = createUIButton(editor, 'cancel', props.onCancelClick);\n domButtonsWrapper.append(saveButtonView.element, cancelButtonView.element);\n widgetButtonViewReferences.add(saveButtonView).add(cancelButtonView);\n } else {\n const editButtonView = createUIButton(editor, 'edit', props.onEditClick);\n domButtonsWrapper.append(editButtonView.element);\n widgetButtonViewReferences.add(editButtonView);\n }\n return domButtonsWrapper;\n }\n function createDomTextarea({ domDocument, state, props }) {\n const domTextarea = createElement(domDocument, 'textarea', {\n placeholder: props.placeholder,\n class: 'ck ck-reset ck-input ck-input-text raw-html-embed__source'\n });\n domTextarea.disabled = props.isDisabled;\n domTextarea.value = state.getRawHtmlValue();\n return domTextarea;\n }\n function createPreviewContainer({ editor, domDocument, state, props }) {\n const sanitizedOutput = props.sanitizeHtml(state.getRawHtmlValue());\n const placeholderText = state.getRawHtmlValue().length > 0 ? t('No preview available') : t('Empty snippet content');\n const domPreviewPlaceholder = createElement(domDocument, 'div', {\n class: 'ck ck-reset_all raw-html-embed__preview-placeholder'\n }, placeholderText);\n const domPreviewContent = createElement(domDocument, 'div', {\n class: 'raw-html-embed__preview-content',\n dir: editor.locale.contentLanguageDirection\n });\n // Creating a contextual document fragment allows executing scripts when inserting into the preview element.\n // See: #8326.\n const domRange = domDocument.createRange();\n const domDocumentFragment = domRange.createContextualFragment(sanitizedOutput.html);\n domPreviewContent.appendChild(domDocumentFragment);\n const domPreviewContainer = createElement(domDocument, 'div', {\n class: 'raw-html-embed__preview'\n }, [\n domPreviewPlaceholder,\n domPreviewContent\n ]);\n return domPreviewContainer;\n }\n }\n /**\n * @inheritDoc\n */ constructor(editor){\n super(editor);\n /**\n * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for\n * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.\n */ this._widgetButtonViewReferences = new Set();\n editor.config.define('htmlEmbed', {\n showPreviews: false,\n sanitizeHtml: (rawHtml)=>{\n /**\n * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to\n * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.\n *\n * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n *\n * @error html-embed-provide-sanitize-function\n */ logWarning('html-embed-provide-sanitize-function');\n return {\n html: rawHtml,\n hasChanged: false\n };\n }\n });\n }\n}\n/**\n * Returns a UI button view that can be used in conversion.\n */ function createUIButton(editor, type, onClick) {\n const { t } = editor.locale;\n const buttonView = new ButtonView(editor.locale);\n const command = editor.commands.get('htmlEmbed');\n buttonView.set({\n class: `raw-html-embed__${type}-button`,\n icon: icons.pencil,\n tooltip: true,\n tooltipPosition: editor.locale.uiLanguageDirection === 'rtl' ? 'e' : 'w'\n });\n buttonView.render();\n if (type === 'edit') {\n buttonView.set({\n icon: icons.pencil,\n label: t('Edit source')\n });\n buttonView.bind('isEnabled').to(command);\n } else if (type === 'save') {\n buttonView.set({\n icon: icons.check,\n label: t('Save changes')\n });\n buttonView.bind('isEnabled').to(command);\n } else {\n buttonView.set({\n icon: icons.cancel,\n label: t('Cancel')\n });\n }\n buttonView.on('execute', onClick);\n return buttonView;\n}\n\nclass HtmlEmbedUI extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'HtmlEmbedUI';\n }\n /**\n * @inheritDoc\n */ init() {\n const editor = this.editor;\n const locale = editor.locale;\n const t = locale.t;\n // Add the `htmlEmbed` button to feature components.\n editor.ui.componentFactory.add('htmlEmbed', ()=>{\n const buttonView = this._createButton(ButtonView);\n buttonView.set({\n tooltip: true,\n label: t('Insert HTML')\n });\n return buttonView;\n });\n editor.ui.componentFactory.add('menuBar:htmlEmbed', ()=>{\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n buttonView.set({\n label: t('HTML snippet')\n });\n return buttonView;\n });\n }\n /**\n * Creates a button for html embed command to use either in toolbar or in menu bar.\n */ _createButton(ButtonClass) {\n const editor = this.editor;\n const command = editor.commands.get('htmlEmbed');\n const view = new ButtonClass(editor.locale);\n view.set({\n icon: icons.html\n });\n view.bind('isEnabled').to(command, 'isEnabled');\n // Execute the command.\n this.listenTo(view, 'execute', ()=>{\n editor.execute('htmlEmbed');\n editor.editing.view.focus();\n const rawHtmlApi = editor.editing.view.document.selection.getSelectedElement().getCustomProperty('rawHtmlApi');\n rawHtmlApi.makeEditable();\n });\n return view;\n }\n}\n\nclass HtmlEmbed extends Plugin {\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n HtmlEmbedEditing,\n HtmlEmbedUI,\n Widget\n ];\n }\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'HtmlEmbed';\n }\n}\n\nexport { HtmlEmbed, HtmlEmbedEditing, HtmlEmbedUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedcommand\n */\n\nimport type { DocumentSelection, Element, Model, Schema, Selection } from 'ckeditor5/src/engine.js';\nimport { Command } from 'ckeditor5/src/core.js';\nimport { findOptimalInsertionRange } from 'ckeditor5/src/widget.js';\n\n/**\n * The insert HTML embed element command.\n *\n * The command is registered by {@link module:html-embed/htmlembedediting~HtmlEmbedEditing} as `'htmlEmbed'`.\n *\n * To insert an empty HTML embed element at the current selection, execute the command:\n *\n * ```ts\n * editor.execute( 'htmlEmbed' );\n * ```\n *\n * You can specify the initial content of a new HTML embed in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>Initial content.</b>' );\n * ```\n *\n * To update the content of the HTML embed, select it in the model and pass the content in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>New content of an existing embed.</b>' );\n * ```\n */\nexport default class HtmlEmbedCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedRawHtmlElement = getSelectedRawHtmlModelWidget( selection );\n\n\t\tthis.isEnabled = isHtmlEmbedAllowedInParent( selection, schema, model );\n\t\tthis.value = selectedRawHtmlElement ? selectedRawHtmlElement.getAttribute( 'value' ) || '' : null;\n\t}\n\n\t/**\n\t * Executes the command, which either:\n\t *\n\t * * creates and inserts a new HTML embed element if none was selected,\n\t * * updates the content of the HTML embed if one was selected.\n\t *\n\t * @fires execute\n\t * @param value When passed, the value (content) will be set on a new embed or a selected one.\n\t */\n\tpublic override execute( value?: string ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tmodel.change( writer => {\n\t\t\tlet htmlEmbedElement;\n\n\t\t\t// If the command has a non-null value, there must be some HTML embed selected in the model.\n\t\t\tif ( this.value !== null ) {\n\t\t\t\thtmlEmbedElement = getSelectedRawHtmlModelWidget( selection );\n\t\t\t} else {\n\t\t\t\thtmlEmbedElement = writer.createElement( 'rawHtml' );\n\n\t\t\t\tmodel.insertObject( htmlEmbedElement, null, null, { setSelection: 'on' } );\n\t\t\t}\n\n\t\t\twriter.setAttribute( 'value', value, htmlEmbedElement! );\n\t\t} );\n\t}\n}\n\n/**\n * Checks if an HTML embed is allowed by the schema in the optimal insertion parent.\n */\nfunction isHtmlEmbedAllowedInParent( selection: DocumentSelection, schema: Schema, model: Model ): boolean {\n\tconst parent = getInsertHtmlEmbedParent( selection, model );\n\n\treturn schema.checkChild( parent, 'rawHtml' );\n}\n\n/**\n * Returns a node that will be used to insert a html embed with `model.insertContent` to check if a html embed element can be placed there.\n */\nfunction getInsertHtmlEmbedParent( selection: Selection | DocumentSelection, model: Model ): Element {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent as Element;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent as Element;\n\t}\n\n\treturn parent;\n}\n\n/**\n * Returns the selected HTML embed element in the model, if any.\n */\nfunction getSelectedRawHtmlModelWidget( selection: DocumentSelection ): Element | null {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement && selectedElement.is( 'element', 'rawHtml' ) ) {\n\t\treturn selectedElement;\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedediting\n */\n\nimport { Plugin, icons, type Editor } from 'ckeditor5/src/core.js';\nimport { ButtonView } from 'ckeditor5/src/ui.js';\nimport { toWidget } from 'ckeditor5/src/widget.js';\nimport { logWarning, createElement } from 'ckeditor5/src/utils.js';\n\nimport type { HtmlEmbedConfig } from './htmlembedconfig.js';\nimport HtmlEmbedCommand from './htmlembedcommand.js';\n\nimport '../theme/htmlembed.css';\n\n/**\n * The HTML embed editing feature.\n */\nexport default class HtmlEmbedEditing extends Plugin {\n\t/**\n\t * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for\n\t * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.\n\t */\n\tprivate _widgetButtonViewReferences: Set<ButtonView> = new Set();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbedEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'htmlEmbed', {\n\t\t\tshowPreviews: false,\n\t\t\tsanitizeHtml: rawHtml => {\n\t\t\t\t/**\n\t\t\t\t * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to\n\t\t\t\t * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.\n\t\t\t\t *\n\t\t\t\t * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n\t\t\t\t *\n\t\t\t\t * @error html-embed-provide-sanitize-function\n\t\t\t\t */\n\t\t\t\tlogWarning( 'html-embed-provide-sanitize-function' );\n\n\t\t\t\treturn {\n\t\t\t\t\thtml: rawHtml,\n\t\t\t\t\thasChanged: false\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tschema.register( 'rawHtml', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'value' ]\n\t\t} );\n\n\t\teditor.commands.add( 'htmlEmbed', new HtmlEmbedCommand( editor ) );\n\n\t\tthis._setupConversion();\n\t}\n\n\t/**\n\t * Prepares converters for the feature.\n\t */\n\tprivate _setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst view = editor.editing.view;\n\t\tconst widgetButtonViewReferences = this._widgetButtonViewReferences;\n\t\tconst htmlEmbedConfig: HtmlEmbedConfig = editor.config.get( 'htmlEmbed' )!;\n\n\t\t// Destroy UI buttons created for widgets that have been removed from the view document (e.g. in the previous conversion).\n\t\t// This prevents unexpected memory leaks from UI views.\n\t\tthis.editor.editing.view.on( 'render', () => {\n\t\t\tfor ( const buttonView of widgetButtonViewReferences ) {\n\t\t\t\tif ( buttonView.element && buttonView.element.isConnected ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tbuttonView.destroy();\n\t\t\t\twidgetButtonViewReferences.delete( buttonView );\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Register div.raw-html-embed as a raw content element so all of it's content will be provided\n\t\t// as a view element's custom property while data upcasting.\n\t\teditor.data.registerRawContentMatcher( {\n\t\t\tname: 'div',\n\t\t\tclasses: 'raw-html-embed'\n\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: {\n\t\t\t\tname: 'div',\n\t\t\t\tclasses: 'raw-html-embed'\n\t\t\t},\n\t\t\tmodel: ( viewElement, { writer } ) => {\n\t\t\t\t// The div.raw-html-embed is registered as a raw content element,\n\t\t\t\t// so all it's content is available in a custom property.\n\t\t\t\treturn writer.createElement( 'rawHtml', {\n\t\t\t\t\tvalue: viewElement.getCustomProperty( '$rawContent' )\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'rawHtml',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\treturn writer.createRawElement( 'div', { class: 'raw-html-embed' }, function( domElement ) {\n\t\t\t\t\tdomElement.innerHTML = modelElement.getAttribute( 'value' ) as string || '';\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: { name: 'rawHtml', attributes: [ 'value' ] },\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tlet domContentWrapper: HTMLElement;\n\t\t\t\tlet state: State;\n\t\t\t\tlet props: Props;\n\n\t\t\t\tconst viewContentWrapper = writer.createRawElement( 'div', {\n\t\t\t\t\tclass: 'raw-html-embed__content-wrapper'\n\t\t\t\t}, function( domElement ) {\n\t\t\t\t\tdomContentWrapper = domElement;\n\n\t\t\t\t\trenderContent( { editor, domElement, state, props } );\n\n\t\t\t\t\t// Since there is a `data-cke-ignore-events` attribute set on the wrapper element in the editable mode,\n\t\t\t\t\t// the explicit `mousedown` handler on the `capture` phase is needed to move the selection onto the whole\n\t\t\t\t\t// HTML embed widget.\n\t\t\t\t\tdomContentWrapper.addEventListener( 'mousedown', () => {\n\t\t\t\t\t\tif ( state.isEditable ) {\n\t\t\t\t\t\t\tconst model = editor.model;\n\t\t\t\t\t\t\tconst selectedElement = model.document.selection.getSelectedElement();\n\n\t\t\t\t\t\t\t// Move the selection onto the whole HTML embed widget if it's currently not selected.\n\t\t\t\t\t\t\tif ( selectedElement !== modelElement ) {\n\t\t\t\t\t\t\t\tmodel.change( writer => writer.setSelection( modelElement, 'on' ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, true );\n\t\t\t\t} );\n\n\t\t\t\t// API exposed on each raw HTML embed widget so other features can control a particular widget.\n\t\t\t\tconst rawHtmlApi: RawHtmlApi = {\n\t\t\t\t\tmakeEditable() {\n\t\t\t\t\t\tstate = Object.assign( {}, state, {\n\t\t\t\t\t\t\tisEditable: true\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\trenderContent( { domElement: domContentWrapper, editor, state, props } );\n\n\t\t\t\t\t\tview.change( writer => {\n\t\t\t\t\t\t\twriter.setAttribute( 'data-cke-ignore-events', 'true', viewContentWrapper );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t// This could be potentially pulled to a separate method called focusTextarea().\n\t\t\t\t\t\tdomContentWrapper.querySelector( 'textarea' )!.focus();\n\t\t\t\t\t},\n\t\t\t\t\tsave( newValue: string ) {\n\t\t\t\t\t\t// If the value didn't change, we just cancel. If it changed,\n\t\t\t\t\t\t// it's enough to update the model – the entire widget will be reconverted.\n\t\t\t\t\t\tif ( newValue !== state.getRawHtmlValue() ) {\n\t\t\t\t\t\t\teditor.execute( 'htmlEmbed', newValue );\n\t\t\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.cancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcancel() {\n\t\t\t\t\t\tstate = Object.assign( {}, state, {\n\t\t\t\t\t\t\tisEditable: false\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\trenderContent( { domElement: domContentWrapper, editor, state, props } );\n\t\t\t\t\t\teditor.editing.view.focus();\n\n\t\t\t\t\t\tview.change( writer => {\n\t\t\t\t\t\t\twriter.removeAttribute( 'data-cke-ignore-events', viewContentWrapper );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tstate = {\n\t\t\t\t\tshowPreviews: htmlEmbedConfig.showPreviews,\n\t\t\t\t\tisEditable: false,\n\t\t\t\t\tgetRawHtmlValue: () => modelElement.getAttribute( 'value' ) as string || ''\n\t\t\t\t};\n\n\t\t\t\tprops = {\n\t\t\t\t\tsanitizeHtml: htmlEmbedConfig.sanitizeHtml,\n\t\t\t\t\ttextareaPlaceholder: t( 'Paste raw HTML here...' ),\n\n\t\t\t\t\tonEditClick() {\n\t\t\t\t\t\trawHtmlApi.makeEditable();\n\t\t\t\t\t},\n\t\t\t\t\tonSaveClick( newValue ) {\n\t\t\t\t\t\trawHtmlApi.save( newValue );\n\t\t\t\t\t},\n\t\t\t\t\tonCancelClick() {\n\t\t\t\t\t\trawHtmlApi.cancel();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst viewContainer = writer.createContainerElement( 'div', {\n\t\t\t\t\tclass: 'raw-html-embed',\n\t\t\t\t\t'data-html-embed-label': t( 'HTML snippet' ),\n\t\t\t\t\tdir: editor.locale.uiLanguageDirection\n\t\t\t\t}, viewContentWrapper );\n\n\t\t\t\twriter.setCustomProperty( 'rawHtmlApi', rawHtmlApi, viewContainer );\n\t\t\t\twriter.setCustomProperty( 'rawHtml', true, viewContainer );\n\n\t\t\t\treturn toWidget( viewContainer, writer, {\n\t\t\t\t\tlabel: t( 'HTML snippet' ),\n\t\t\t\t\thasSelectionHandle: true\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction renderContent( {\n\t\t\teditor,\n\t\t\tdomElement,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomElement: HTMLElement;\n\t\t\tstate: State;\n\t\t\tprops: Props;\n\t\t} ) {\n\t\t\t// Remove all children;\n\t\t\tdomElement.textContent = '';\n\n\t\t\tconst domDocument = domElement.ownerDocument;\n\t\t\tlet domTextarea: HTMLTextAreaElement;\n\n\t\t\tif ( state.isEditable ) {\n\t\t\t\tconst textareaProps = {\n\t\t\t\t\tisDisabled: false,\n\t\t\t\t\tplaceholder: props.textareaPlaceholder\n\t\t\t\t};\n\n\t\t\t\tdomTextarea = createDomTextarea( { domDocument, state, props: textareaProps } );\n\n\t\t\t\tdomElement.append( domTextarea );\n\t\t\t} else if ( state.showPreviews ) {\n\t\t\t\tconst previewContainerProps = {\n\t\t\t\t\tsanitizeHtml: props.sanitizeHtml\n\t\t\t\t};\n\n\t\t\t\tdomElement.append( createPreviewContainer( { domDocument, state, props: previewContainerProps, editor } ) );\n\t\t\t} else {\n\t\t\t\tconst textareaProps = {\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t\tplaceholder: props.textareaPlaceholder\n\t\t\t\t};\n\n\t\t\t\tdomElement.append( createDomTextarea( { domDocument, state, props: textareaProps } ) );\n\t\t\t}\n\n\t\t\tconst buttonsWrapperProps = {\n\t\t\t\tonEditClick: props.onEditClick,\n\t\t\t\tonSaveClick: () => {\n\t\t\t\t\tprops.onSaveClick( domTextarea.value );\n\t\t\t\t},\n\t\t\t\tonCancelClick: props.onCancelClick\n\t\t\t};\n\n\t\t\tdomElement.prepend( createDomButtonsWrapper( { editor, domDocument, state, props: buttonsWrapperProps } ) );\n\t\t}\n\n\t\tfunction createDomButtonsWrapper( {\n\t\t\teditor,\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomDocument: Document;\n\t\t\tstate: State;\n\t\t\tprops: Pick<Props, 'onEditClick' | 'onCancelClick'> & {\n\t\t\t\tonSaveClick(): void;\n\t\t\t};\n\t\t} ): HTMLDivElement {\n\t\t\tconst domButtonsWrapper = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__buttons-wrapper'\n\t\t\t} );\n\n\t\t\tif ( state.isEditable ) {\n\t\t\t\tconst saveButtonView = createUIButton( editor, 'save', props.onSaveClick );\n\t\t\t\tconst cancelButtonView = createUIButton( editor, 'cancel', props.onCancelClick );\n\n\t\t\t\tdomButtonsWrapper.append( saveButtonView.element!, cancelButtonView.element! );\n\t\t\t\twidgetButtonViewReferences.add( saveButtonView ).add( cancelButtonView );\n\t\t\t} else {\n\t\t\t\tconst editButtonView = createUIButton( editor, 'edit', props.onEditClick );\n\n\t\t\t\tdomButtonsWrapper.append( editButtonView.element! );\n\t\t\t\twidgetButtonViewReferences.add( editButtonView );\n\t\t\t}\n\n\t\t\treturn domButtonsWrapper;\n\t\t}\n\n\t\tfunction createDomTextarea( {\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\t\tdomDocument: Document;\n\t\t\t\tstate: State;\n\t\t\t\tprops: {\n\t\t\t\t\tisDisabled: boolean;\n\t\t\t\t\tplaceholder: string;\n\t\t\t\t};\n\t\t\t} ): HTMLTextAreaElement {\n\t\t\tconst domTextarea = createElement( domDocument, 'textarea', {\n\t\t\t\tplaceholder: props.placeholder,\n\t\t\t\tclass: 'ck ck-reset ck-input ck-input-text raw-html-embed__source'\n\t\t\t} );\n\n\t\t\tdomTextarea.disabled = props.isDisabled;\n\t\t\tdomTextarea.value = state.getRawHtmlValue();\n\n\t\t\treturn domTextarea;\n\t\t}\n\n\t\tfunction createPreviewContainer( {\n\t\t\teditor,\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomDocument: Document;\n\t\t\tstate: State;\n\t\t\tprops: {\n\t\t\t\tsanitizeHtml: HtmlEmbedConfig['sanitizeHtml'];\n\t\t\t};\n\t\t} ): HTMLDivElement {\n\t\t\tconst sanitizedOutput = props.sanitizeHtml!( state.getRawHtmlValue() );\n\t\t\tconst placeholderText = state.getRawHtmlValue().length > 0 ?\n\t\t\t\tt( 'No preview available' ) :\n\t\t\t\tt( 'Empty snippet content' );\n\n\t\t\tconst domPreviewPlaceholder = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'ck ck-reset_all raw-html-embed__preview-placeholder'\n\t\t\t}, placeholderText );\n\n\t\t\tconst domPreviewContent = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__preview-content',\n\t\t\t\tdir: editor.locale.contentLanguageDirection\n\t\t\t} );\n\n\t\t\t// Creating a contextual document fragment allows executing scripts when inserting into the preview element.\n\t\t\t// See: #8326.\n\t\t\tconst domRange = domDocument.createRange();\n\t\t\tconst domDocumentFragment = domRange.createContextualFragment( sanitizedOutput.html );\n\n\t\t\tdomPreviewContent.appendChild( domDocumentFragment );\n\n\t\t\tconst domPreviewContainer = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__preview'\n\t\t\t}, [\n\t\t\t\tdomPreviewPlaceholder, domPreviewContent\n\t\t\t] );\n\n\t\t\treturn domPreviewContainer;\n\t\t}\n\t}\n}\n\n/**\n * Returns a UI button view that can be used in conversion.\n */\nfunction createUIButton( editor: Editor, type: 'edit' | 'save' | 'cancel', onClick: () => void ): ButtonView {\n\tconst { t } = editor.locale;\n\tconst buttonView = new ButtonView( editor.locale );\n\tconst command: HtmlEmbedCommand = editor.commands.get( 'htmlEmbed' )!;\n\n\tbuttonView.set( {\n\t\tclass: `raw-html-embed__${ type }-button`,\n\t\ticon: icons.pencil,\n\t\ttooltip: true,\n\t\ttooltipPosition: editor.locale.uiLanguageDirection === 'rtl' ? 'e' : 'w'\n\t} );\n\n\tbuttonView.render();\n\n\tif ( type === 'edit' ) {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.pencil,\n\t\t\tlabel: t( 'Edit source' )\n\t\t} );\n\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t} else if ( type === 'save' ) {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.check,\n\t\t\tlabel: t( 'Save changes' )\n\t\t} );\n\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t} else {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.cancel,\n\t\t\tlabel: t( 'Cancel' )\n\t\t} );\n\t}\n\n\tbuttonView.on( 'execute', onClick );\n\n\treturn buttonView;\n}\n\ninterface State {\n\tshowPreviews: HtmlEmbedConfig['showPreviews'];\n\tisEditable: boolean;\n\tgetRawHtmlValue(): string;\n}\n\ninterface Props {\n\tsanitizeHtml: HtmlEmbedConfig['sanitizeHtml'];\n\ttextareaPlaceholder: string;\n\tonEditClick(): void;\n\tonSaveClick( newValue: string ): void;\n\tonCancelClick(): void;\n}\n\nexport interface RawHtmlApi {\n\tmakeEditable(): void;\n\tsave( newValue: string ): void;\n\tcancel(): void;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedui\n */\n\nimport { icons, Plugin } from 'ckeditor5/src/core.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from 'ckeditor5/src/ui.js';\nimport type { RawHtmlApi } from './htmlembedediting.js';\nimport type HtmlEmbedCommand from './htmlembedcommand.js';\n\n/**\n * The HTML embed UI plugin.\n */\nexport default class HtmlEmbedUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbedUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = locale.t;\n\n\t\t// Add the `htmlEmbed` button to feature components.\n\t\teditor.ui.componentFactory.add( 'htmlEmbed', () => {\n\t\t\tconst buttonView = this._createButton( ButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\ttooltip: true,\n\t\t\t\tlabel: t( 'Insert HTML' )\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:htmlEmbed', () => {\n\t\t\tconst buttonView = this._createButton( MenuBarMenuListItemButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: t( 'HTML snippet' )\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a button for html embed command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst command: HtmlEmbedCommand = editor.commands.get( 'htmlEmbed' )!;\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\n\t\tview.set( {\n\t\t\ticon: icons.html\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t// Execute the command.\n\t\tthis.listenTo( view, 'execute', () => {\n\t\t\teditor.execute( 'htmlEmbed' );\n\t\t\teditor.editing.view.focus();\n\n\t\t\tconst rawHtmlApi = editor.editing.view.document.selection\n\t\t\t\t.getSelectedElement()!\n\t\t\t\t.getCustomProperty( 'rawHtmlApi' ) as RawHtmlApi;\n\n\t\t\trawHtmlApi.makeEditable();\n\t\t} );\n\n\t\treturn view;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembed\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Widget } from 'ckeditor5/src/widget.js';\n\nimport HtmlEmbedEditing from './htmlembedediting.js';\nimport HtmlEmbedUI from './htmlembedui.js';\n\n/**\n * The HTML embed feature.\n *\n * It allows inserting HTML snippets directly into the editor.\n *\n * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n */\nexport default class HtmlEmbed extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ HtmlEmbedEditing, HtmlEmbedUI, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbed' as const;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/htmlembedcommand.ts","../src/htmlembedediting.ts","../src/htmlembedui.ts","../src/htmlembed.ts"],"names":["HtmlEmbedCommand","Command","model","editor","schema","selection","document","selectedRawHtmlElement","getSelectedRawHtmlModelWidget","isEnabled","isHtmlEmbedAllowedInParent","value","getAttribute","execute","change","writer","htmlEmbedElement","createElement","insertObject","setSelection","setAttribute","parent","getInsertHtmlEmbedParent","checkChild","insertionRange","findOptimalInsertionRange","start","isEmpty","is","selectedElement","getSelectedElement","HtmlEmbedEditing","Plugin","_widgetButtonViewReferences","Set","pluginName","constructor","config","define","showPreviews","sanitizeHtml","rawHtml","logWarning","html","hasChanged","register","inheritAllFrom","allowAttributes","commands","add","_setupConversion","t","view","editing","widgetButtonViewReferences","htmlEmbedConfig","get","on","buttonView","element","isConnected","destroy","delete","priority","data","registerRawContentMatcher","name","classes","conversion","for","elementToElement","viewElement","getCustomProperty","modelElement","createRawElement","class","domElement","innerHTML","elementToStructure","attributes","domContentWrapper","state","props","viewContentWrapper","renderContent","addEventListener","isEditable","rawHtmlApi","makeEditable","Object","assign","querySelector","focus","save","newValue","getRawHtmlValue","cancel","removeAttribute","textareaPlaceholder","onEditClick","onSaveClick","onCancelClick","viewContainer","createContainerElement","dir","locale","uiLanguageDirection","setCustomProperty","toWidget","label","hasSelectionHandle","textContent","domDocument","ownerDocument","domTextarea","textareaProps","isDisabled","placeholder","createDomTextarea","append","previewContainerProps","createPreviewContainer","buttonsWrapperProps","prepend","createDomButtonsWrapper","domButtonsWrapper","saveButtonView","createUIButton","cancelButtonView","editButtonView","disabled","sanitizedOutput","placeholderText","length","domPreviewPlaceholder","domPreviewContent","contentLanguageDirection","domRange","createRange","domDocumentFragment","createContextualFragment","appendChild","domPreviewContainer","type","onClick","ButtonView","command","set","icon","icons","pencil","tooltip","tooltipPosition","render","bind","to","check","HtmlEmbedUI","ui","componentFactory","_createButton","MenuBarMenuListItemButtonView","ButtonClass","listenTo","HtmlEmbed","requires","Widget"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin, icons } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { findOptimalInsertionRange, toWidget, Widget } from '@ckeditor/ckeditor5-widget/dist/index.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { logWarning, createElement } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\n/**\n * The insert HTML embed element command.\n *\n * The command is registered by {@link module:html-embed/htmlembedediting~HtmlEmbedEditing} as `'htmlEmbed'`.\n *\n * To insert an empty HTML embed element at the current selection, execute the command:\n *\n * ```ts\n * editor.execute( 'htmlEmbed' );\n * ```\n *\n * You can specify the initial content of a new HTML embed in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>Initial content.</b>' );\n * ```\n *\n * To update the content of the HTML embed, select it in the model and pass the content in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>New content of an existing embed.</b>' );\n * ```\n */ class HtmlEmbedCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n const schema = model.schema;\n const selection = model.document.selection;\n const selectedRawHtmlElement = getSelectedRawHtmlModelWidget(selection);\n this.isEnabled = isHtmlEmbedAllowedInParent(selection, schema, model);\n this.value = selectedRawHtmlElement ? selectedRawHtmlElement.getAttribute('value') || '' : null;\n }\n /**\n\t * Executes the command, which either:\n\t *\n\t * * creates and inserts a new HTML embed element if none was selected,\n\t * * updates the content of the HTML embed if one was selected.\n\t *\n\t * @fires execute\n\t * @param value When passed, the value (content) will be set on a new embed or a selected one.\n\t */ execute(value) {\n const model = this.editor.model;\n const selection = model.document.selection;\n model.change((writer)=>{\n let htmlEmbedElement;\n // If the command has a non-null value, there must be some HTML embed selected in the model.\n if (this.value !== null) {\n htmlEmbedElement = getSelectedRawHtmlModelWidget(selection);\n } else {\n htmlEmbedElement = writer.createElement('rawHtml');\n model.insertObject(htmlEmbedElement, null, null, {\n setSelection: 'on'\n });\n }\n writer.setAttribute('value', value, htmlEmbedElement);\n });\n }\n}\n/**\n * Checks if an HTML embed is allowed by the schema in the optimal insertion parent.\n */ function isHtmlEmbedAllowedInParent(selection, schema, model) {\n const parent = getInsertHtmlEmbedParent(selection, model);\n return schema.checkChild(parent, 'rawHtml');\n}\n/**\n * Returns a node that will be used to insert a html embed with `model.insertContent` to check if a html embed element can be placed there.\n */ function getInsertHtmlEmbedParent(selection, model) {\n const insertionRange = findOptimalInsertionRange(selection, model);\n const parent = insertionRange.start.parent;\n if (parent.isEmpty && !parent.is('rootElement')) {\n return parent.parent;\n }\n return parent;\n}\n/**\n * Returns the selected HTML embed element in the model, if any.\n */ function getSelectedRawHtmlModelWidget(selection) {\n const selectedElement = selection.getSelectedElement();\n if (selectedElement && selectedElement.is('element', 'rawHtml')) {\n return selectedElement;\n }\n return null;\n}\n\n/**\n * The HTML embed editing feature.\n */ class HtmlEmbedEditing extends Plugin {\n /**\n\t * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for\n\t * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.\n\t */ _widgetButtonViewReferences = new Set();\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'HtmlEmbedEditing';\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('htmlEmbed', {\n showPreviews: false,\n sanitizeHtml: (rawHtml)=>{\n /**\n\t\t\t\t * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to\n\t\t\t\t * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.\n\t\t\t\t *\n\t\t\t\t * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n\t\t\t\t *\n\t\t\t\t * @error html-embed-provide-sanitize-function\n\t\t\t\t */ logWarning('html-embed-provide-sanitize-function');\n return {\n html: rawHtml,\n hasChanged: false\n };\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n schema.register('rawHtml', {\n inheritAllFrom: '$blockObject',\n allowAttributes: [\n 'value'\n ]\n });\n editor.commands.add('htmlEmbed', new HtmlEmbedCommand(editor));\n this._setupConversion();\n }\n /**\n\t * Prepares converters for the feature.\n\t */ _setupConversion() {\n const editor = this.editor;\n const t = editor.t;\n const view = editor.editing.view;\n const widgetButtonViewReferences = this._widgetButtonViewReferences;\n const htmlEmbedConfig = editor.config.get('htmlEmbed');\n // Destroy UI buttons created for widgets that have been removed from the view document (e.g. in the previous conversion).\n // This prevents unexpected memory leaks from UI views.\n this.editor.editing.view.on('render', ()=>{\n for (const buttonView of widgetButtonViewReferences){\n if (buttonView.element && buttonView.element.isConnected) {\n return;\n }\n buttonView.destroy();\n widgetButtonViewReferences.delete(buttonView);\n }\n }, {\n priority: 'lowest'\n });\n // Register div.raw-html-embed as a raw content element so all of it's content will be provided\n // as a view element's custom property while data upcasting.\n editor.data.registerRawContentMatcher({\n name: 'div',\n classes: 'raw-html-embed'\n });\n editor.conversion.for('upcast').elementToElement({\n view: {\n name: 'div',\n classes: 'raw-html-embed'\n },\n model: (viewElement, { writer })=>{\n // The div.raw-html-embed is registered as a raw content element,\n // so all it's content is available in a custom property.\n return writer.createElement('rawHtml', {\n value: viewElement.getCustomProperty('$rawContent')\n });\n }\n });\n editor.conversion.for('dataDowncast').elementToElement({\n model: 'rawHtml',\n view: (modelElement, { writer })=>{\n return writer.createRawElement('div', {\n class: 'raw-html-embed'\n }, function(domElement) {\n domElement.innerHTML = modelElement.getAttribute('value') || '';\n });\n }\n });\n editor.conversion.for('editingDowncast').elementToStructure({\n model: {\n name: 'rawHtml',\n attributes: [\n 'value'\n ]\n },\n view: (modelElement, { writer })=>{\n let domContentWrapper;\n let state;\n let props;\n const viewContentWrapper = writer.createRawElement('div', {\n class: 'raw-html-embed__content-wrapper'\n }, function(domElement) {\n domContentWrapper = domElement;\n renderContent({\n editor,\n domElement,\n state,\n props\n });\n // Since there is a `data-cke-ignore-events` attribute set on the wrapper element in the editable mode,\n // the explicit `mousedown` handler on the `capture` phase is needed to move the selection onto the whole\n // HTML embed widget.\n domContentWrapper.addEventListener('mousedown', ()=>{\n if (state.isEditable) {\n const model = editor.model;\n const selectedElement = model.document.selection.getSelectedElement();\n // Move the selection onto the whole HTML embed widget if it's currently not selected.\n if (selectedElement !== modelElement) {\n model.change((writer)=>writer.setSelection(modelElement, 'on'));\n }\n }\n }, true);\n });\n // API exposed on each raw HTML embed widget so other features can control a particular widget.\n const rawHtmlApi = {\n makeEditable () {\n state = Object.assign({}, state, {\n isEditable: true\n });\n renderContent({\n domElement: domContentWrapper,\n editor,\n state,\n props\n });\n view.change((writer)=>{\n writer.setAttribute('data-cke-ignore-events', 'true', viewContentWrapper);\n });\n // This could be potentially pulled to a separate method called focusTextarea().\n domContentWrapper.querySelector('textarea').focus();\n },\n save (newValue) {\n // If the value didn't change, we just cancel. If it changed,\n // it's enough to update the model – the entire widget will be reconverted.\n if (newValue !== state.getRawHtmlValue()) {\n editor.execute('htmlEmbed', newValue);\n editor.editing.view.focus();\n } else {\n this.cancel();\n }\n },\n cancel () {\n state = Object.assign({}, state, {\n isEditable: false\n });\n renderContent({\n domElement: domContentWrapper,\n editor,\n state,\n props\n });\n editor.editing.view.focus();\n view.change((writer)=>{\n writer.removeAttribute('data-cke-ignore-events', viewContentWrapper);\n });\n }\n };\n state = {\n showPreviews: htmlEmbedConfig.showPreviews,\n isEditable: false,\n getRawHtmlValue: ()=>modelElement.getAttribute('value') || ''\n };\n props = {\n sanitizeHtml: htmlEmbedConfig.sanitizeHtml,\n textareaPlaceholder: t('Paste raw HTML here...'),\n onEditClick () {\n rawHtmlApi.makeEditable();\n },\n onSaveClick (newValue) {\n rawHtmlApi.save(newValue);\n },\n onCancelClick () {\n rawHtmlApi.cancel();\n }\n };\n const viewContainer = writer.createContainerElement('div', {\n class: 'raw-html-embed',\n 'data-html-embed-label': t('HTML snippet'),\n dir: editor.locale.uiLanguageDirection\n }, viewContentWrapper);\n writer.setCustomProperty('rawHtmlApi', rawHtmlApi, viewContainer);\n writer.setCustomProperty('rawHtml', true, viewContainer);\n return toWidget(viewContainer, writer, {\n label: t('HTML snippet'),\n hasSelectionHandle: true\n });\n }\n });\n function renderContent({ editor, domElement, state, props }) {\n // Remove all children;\n domElement.textContent = '';\n const domDocument = domElement.ownerDocument;\n let domTextarea;\n if (state.isEditable) {\n const textareaProps = {\n isDisabled: false,\n placeholder: props.textareaPlaceholder\n };\n domTextarea = createDomTextarea({\n domDocument,\n state,\n props: textareaProps\n });\n domElement.append(domTextarea);\n } else if (state.showPreviews) {\n const previewContainerProps = {\n sanitizeHtml: props.sanitizeHtml\n };\n domElement.append(createPreviewContainer({\n domDocument,\n state,\n props: previewContainerProps,\n editor\n }));\n } else {\n const textareaProps = {\n isDisabled: true,\n placeholder: props.textareaPlaceholder\n };\n domElement.append(createDomTextarea({\n domDocument,\n state,\n props: textareaProps\n }));\n }\n const buttonsWrapperProps = {\n onEditClick: props.onEditClick,\n onSaveClick: ()=>{\n props.onSaveClick(domTextarea.value);\n },\n onCancelClick: props.onCancelClick\n };\n domElement.prepend(createDomButtonsWrapper({\n editor,\n domDocument,\n state,\n props: buttonsWrapperProps\n }));\n }\n function createDomButtonsWrapper({ editor, domDocument, state, props }) {\n const domButtonsWrapper = createElement(domDocument, 'div', {\n class: 'raw-html-embed__buttons-wrapper'\n });\n if (state.isEditable) {\n const saveButtonView = createUIButton(editor, 'save', props.onSaveClick);\n const cancelButtonView = createUIButton(editor, 'cancel', props.onCancelClick);\n domButtonsWrapper.append(saveButtonView.element, cancelButtonView.element);\n widgetButtonViewReferences.add(saveButtonView).add(cancelButtonView);\n } else {\n const editButtonView = createUIButton(editor, 'edit', props.onEditClick);\n domButtonsWrapper.append(editButtonView.element);\n widgetButtonViewReferences.add(editButtonView);\n }\n return domButtonsWrapper;\n }\n function createDomTextarea({ domDocument, state, props }) {\n const domTextarea = createElement(domDocument, 'textarea', {\n placeholder: props.placeholder,\n class: 'ck ck-reset ck-input ck-input-text raw-html-embed__source'\n });\n domTextarea.disabled = props.isDisabled;\n domTextarea.value = state.getRawHtmlValue();\n return domTextarea;\n }\n function createPreviewContainer({ editor, domDocument, state, props }) {\n const sanitizedOutput = props.sanitizeHtml(state.getRawHtmlValue());\n const placeholderText = state.getRawHtmlValue().length > 0 ? t('No preview available') : t('Empty snippet content');\n const domPreviewPlaceholder = createElement(domDocument, 'div', {\n class: 'ck ck-reset_all raw-html-embed__preview-placeholder'\n }, placeholderText);\n const domPreviewContent = createElement(domDocument, 'div', {\n class: 'raw-html-embed__preview-content',\n dir: editor.locale.contentLanguageDirection\n });\n // Creating a contextual document fragment allows executing scripts when inserting into the preview element.\n // See: #8326.\n const domRange = domDocument.createRange();\n const domDocumentFragment = domRange.createContextualFragment(sanitizedOutput.html);\n domPreviewContent.appendChild(domDocumentFragment);\n const domPreviewContainer = createElement(domDocument, 'div', {\n class: 'raw-html-embed__preview'\n }, [\n domPreviewPlaceholder,\n domPreviewContent\n ]);\n return domPreviewContainer;\n }\n }\n}\n/**\n * Returns a UI button view that can be used in conversion.\n */ function createUIButton(editor, type, onClick) {\n const { t } = editor.locale;\n const buttonView = new ButtonView(editor.locale);\n const command = editor.commands.get('htmlEmbed');\n buttonView.set({\n class: `raw-html-embed__${type}-button`,\n icon: icons.pencil,\n tooltip: true,\n tooltipPosition: editor.locale.uiLanguageDirection === 'rtl' ? 'e' : 'w'\n });\n buttonView.render();\n if (type === 'edit') {\n buttonView.set({\n icon: icons.pencil,\n label: t('Edit source')\n });\n buttonView.bind('isEnabled').to(command);\n } else if (type === 'save') {\n buttonView.set({\n icon: icons.check,\n label: t('Save changes')\n });\n buttonView.bind('isEnabled').to(command);\n } else {\n buttonView.set({\n icon: icons.cancel,\n label: t('Cancel')\n });\n }\n buttonView.on('execute', onClick);\n return buttonView;\n}\n\n/**\n * The HTML embed UI plugin.\n */ class HtmlEmbedUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'HtmlEmbedUI';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const locale = editor.locale;\n const t = locale.t;\n // Add the `htmlEmbed` button to feature components.\n editor.ui.componentFactory.add('htmlEmbed', ()=>{\n const buttonView = this._createButton(ButtonView);\n buttonView.set({\n tooltip: true,\n label: t('Insert HTML')\n });\n return buttonView;\n });\n editor.ui.componentFactory.add('menuBar:htmlEmbed', ()=>{\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n buttonView.set({\n label: t('HTML snippet')\n });\n return buttonView;\n });\n }\n /**\n\t * Creates a button for html embed command to use either in toolbar or in menu bar.\n\t */ _createButton(ButtonClass) {\n const editor = this.editor;\n const command = editor.commands.get('htmlEmbed');\n const view = new ButtonClass(editor.locale);\n view.set({\n icon: icons.html\n });\n view.bind('isEnabled').to(command, 'isEnabled');\n // Execute the command.\n this.listenTo(view, 'execute', ()=>{\n editor.execute('htmlEmbed');\n editor.editing.view.focus();\n const rawHtmlApi = editor.editing.view.document.selection.getSelectedElement().getCustomProperty('rawHtmlApi');\n rawHtmlApi.makeEditable();\n });\n return view;\n }\n}\n\n/**\n * The HTML embed feature.\n *\n * It allows inserting HTML snippets directly into the editor.\n *\n * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n */ class HtmlEmbed extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n HtmlEmbedEditing,\n HtmlEmbedUI,\n Widget\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'HtmlEmbed';\n }\n}\n\nexport { HtmlEmbed, HtmlEmbedEditing, HtmlEmbedUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedcommand\n */\n\nimport type { DocumentSelection, Element, Model, Schema, Selection } from 'ckeditor5/src/engine.js';\nimport { Command } from 'ckeditor5/src/core.js';\nimport { findOptimalInsertionRange } from 'ckeditor5/src/widget.js';\n\n/**\n * The insert HTML embed element command.\n *\n * The command is registered by {@link module:html-embed/htmlembedediting~HtmlEmbedEditing} as `'htmlEmbed'`.\n *\n * To insert an empty HTML embed element at the current selection, execute the command:\n *\n * ```ts\n * editor.execute( 'htmlEmbed' );\n * ```\n *\n * You can specify the initial content of a new HTML embed in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>Initial content.</b>' );\n * ```\n *\n * To update the content of the HTML embed, select it in the model and pass the content in the argument:\n *\n * ```ts\n * editor.execute( 'htmlEmbed', '<b>New content of an existing embed.</b>' );\n * ```\n */\nexport default class HtmlEmbedCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\t\tconst selectedRawHtmlElement = getSelectedRawHtmlModelWidget( selection );\n\n\t\tthis.isEnabled = isHtmlEmbedAllowedInParent( selection, schema, model );\n\t\tthis.value = selectedRawHtmlElement ? selectedRawHtmlElement.getAttribute( 'value' ) || '' : null;\n\t}\n\n\t/**\n\t * Executes the command, which either:\n\t *\n\t * * creates and inserts a new HTML embed element if none was selected,\n\t * * updates the content of the HTML embed if one was selected.\n\t *\n\t * @fires execute\n\t * @param value When passed, the value (content) will be set on a new embed or a selected one.\n\t */\n\tpublic override execute( value?: string ): void {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\n\t\tmodel.change( writer => {\n\t\t\tlet htmlEmbedElement;\n\n\t\t\t// If the command has a non-null value, there must be some HTML embed selected in the model.\n\t\t\tif ( this.value !== null ) {\n\t\t\t\thtmlEmbedElement = getSelectedRawHtmlModelWidget( selection );\n\t\t\t} else {\n\t\t\t\thtmlEmbedElement = writer.createElement( 'rawHtml' );\n\n\t\t\t\tmodel.insertObject( htmlEmbedElement, null, null, { setSelection: 'on' } );\n\t\t\t}\n\n\t\t\twriter.setAttribute( 'value', value, htmlEmbedElement! );\n\t\t} );\n\t}\n}\n\n/**\n * Checks if an HTML embed is allowed by the schema in the optimal insertion parent.\n */\nfunction isHtmlEmbedAllowedInParent( selection: DocumentSelection, schema: Schema, model: Model ): boolean {\n\tconst parent = getInsertHtmlEmbedParent( selection, model );\n\n\treturn schema.checkChild( parent, 'rawHtml' );\n}\n\n/**\n * Returns a node that will be used to insert a html embed with `model.insertContent` to check if a html embed element can be placed there.\n */\nfunction getInsertHtmlEmbedParent( selection: Selection | DocumentSelection, model: Model ): Element {\n\tconst insertionRange = findOptimalInsertionRange( selection, model );\n\tconst parent = insertionRange.start.parent as Element;\n\n\tif ( parent.isEmpty && !parent.is( 'rootElement' ) ) {\n\t\treturn parent.parent as Element;\n\t}\n\n\treturn parent;\n}\n\n/**\n * Returns the selected HTML embed element in the model, if any.\n */\nfunction getSelectedRawHtmlModelWidget( selection: DocumentSelection ): Element | null {\n\tconst selectedElement = selection.getSelectedElement();\n\n\tif ( selectedElement && selectedElement.is( 'element', 'rawHtml' ) ) {\n\t\treturn selectedElement;\n\t}\n\n\treturn null;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedediting\n */\n\nimport { Plugin, icons, type Editor } from 'ckeditor5/src/core.js';\nimport { ButtonView } from 'ckeditor5/src/ui.js';\nimport { toWidget } from 'ckeditor5/src/widget.js';\nimport { logWarning, createElement } from 'ckeditor5/src/utils.js';\n\nimport type { HtmlEmbedConfig } from './htmlembedconfig.js';\nimport HtmlEmbedCommand from './htmlembedcommand.js';\n\nimport '../theme/htmlembed.css';\n\n/**\n * The HTML embed editing feature.\n */\nexport default class HtmlEmbedEditing extends Plugin {\n\t/**\n\t * Keeps references to {@link module:ui/button/buttonview~ButtonView edit, save, and cancel} button instances created for\n\t * each widget so they can be destroyed if they are no longer in DOM after the editing view was re-rendered.\n\t */\n\tprivate _widgetButtonViewReferences: Set<ButtonView> = new Set();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbedEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'htmlEmbed', {\n\t\t\tshowPreviews: false,\n\t\t\tsanitizeHtml: rawHtml => {\n\t\t\t\t/**\n\t\t\t\t * When using the HTML embed feature with the `htmlEmbed.showPreviews=true` option, it is strongly recommended to\n\t\t\t\t * define a sanitize function that will clean up the input HTML in order to avoid XSS vulnerability.\n\t\t\t\t *\n\t\t\t\t * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n\t\t\t\t *\n\t\t\t\t * @error html-embed-provide-sanitize-function\n\t\t\t\t */\n\t\t\t\tlogWarning( 'html-embed-provide-sanitize-function' );\n\n\t\t\t\treturn {\n\t\t\t\t\thtml: rawHtml,\n\t\t\t\t\thasChanged: false\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\n\t\tschema.register( 'rawHtml', {\n\t\t\tinheritAllFrom: '$blockObject',\n\t\t\tallowAttributes: [ 'value' ]\n\t\t} );\n\n\t\teditor.commands.add( 'htmlEmbed', new HtmlEmbedCommand( editor ) );\n\n\t\tthis._setupConversion();\n\t}\n\n\t/**\n\t * Prepares converters for the feature.\n\t */\n\tprivate _setupConversion() {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst view = editor.editing.view;\n\t\tconst widgetButtonViewReferences = this._widgetButtonViewReferences;\n\t\tconst htmlEmbedConfig: HtmlEmbedConfig = editor.config.get( 'htmlEmbed' )!;\n\n\t\t// Destroy UI buttons created for widgets that have been removed from the view document (e.g. in the previous conversion).\n\t\t// This prevents unexpected memory leaks from UI views.\n\t\tthis.editor.editing.view.on( 'render', () => {\n\t\t\tfor ( const buttonView of widgetButtonViewReferences ) {\n\t\t\t\tif ( buttonView.element && buttonView.element.isConnected ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tbuttonView.destroy();\n\t\t\t\twidgetButtonViewReferences.delete( buttonView );\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\n\t\t// Register div.raw-html-embed as a raw content element so all of it's content will be provided\n\t\t// as a view element's custom property while data upcasting.\n\t\teditor.data.registerRawContentMatcher( {\n\t\t\tname: 'div',\n\t\t\tclasses: 'raw-html-embed'\n\t\t} );\n\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\n\t\t\tview: {\n\t\t\t\tname: 'div',\n\t\t\t\tclasses: 'raw-html-embed'\n\t\t\t},\n\t\t\tmodel: ( viewElement, { writer } ) => {\n\t\t\t\t// The div.raw-html-embed is registered as a raw content element,\n\t\t\t\t// so all it's content is available in a custom property.\n\t\t\t\treturn writer.createElement( 'rawHtml', {\n\t\t\t\t\tvalue: viewElement.getCustomProperty( '$rawContent' )\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'dataDowncast' ).elementToElement( {\n\t\t\tmodel: 'rawHtml',\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\treturn writer.createRawElement( 'div', { class: 'raw-html-embed' }, function( domElement ) {\n\t\t\t\t\tdomElement.innerHTML = modelElement.getAttribute( 'value' ) as string || '';\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).elementToStructure( {\n\t\t\tmodel: { name: 'rawHtml', attributes: [ 'value' ] },\n\t\t\tview: ( modelElement, { writer } ) => {\n\t\t\t\tlet domContentWrapper: HTMLElement;\n\t\t\t\tlet state: State;\n\t\t\t\tlet props: Props;\n\n\t\t\t\tconst viewContentWrapper = writer.createRawElement( 'div', {\n\t\t\t\t\tclass: 'raw-html-embed__content-wrapper'\n\t\t\t\t}, function( domElement ) {\n\t\t\t\t\tdomContentWrapper = domElement;\n\n\t\t\t\t\trenderContent( { editor, domElement, state, props } );\n\n\t\t\t\t\t// Since there is a `data-cke-ignore-events` attribute set on the wrapper element in the editable mode,\n\t\t\t\t\t// the explicit `mousedown` handler on the `capture` phase is needed to move the selection onto the whole\n\t\t\t\t\t// HTML embed widget.\n\t\t\t\t\tdomContentWrapper.addEventListener( 'mousedown', () => {\n\t\t\t\t\t\tif ( state.isEditable ) {\n\t\t\t\t\t\t\tconst model = editor.model;\n\t\t\t\t\t\t\tconst selectedElement = model.document.selection.getSelectedElement();\n\n\t\t\t\t\t\t\t// Move the selection onto the whole HTML embed widget if it's currently not selected.\n\t\t\t\t\t\t\tif ( selectedElement !== modelElement ) {\n\t\t\t\t\t\t\t\tmodel.change( writer => writer.setSelection( modelElement, 'on' ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, true );\n\t\t\t\t} );\n\n\t\t\t\t// API exposed on each raw HTML embed widget so other features can control a particular widget.\n\t\t\t\tconst rawHtmlApi: RawHtmlApi = {\n\t\t\t\t\tmakeEditable() {\n\t\t\t\t\t\tstate = Object.assign( {}, state, {\n\t\t\t\t\t\t\tisEditable: true\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\trenderContent( { domElement: domContentWrapper, editor, state, props } );\n\n\t\t\t\t\t\tview.change( writer => {\n\t\t\t\t\t\t\twriter.setAttribute( 'data-cke-ignore-events', 'true', viewContentWrapper );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t// This could be potentially pulled to a separate method called focusTextarea().\n\t\t\t\t\t\tdomContentWrapper.querySelector( 'textarea' )!.focus();\n\t\t\t\t\t},\n\t\t\t\t\tsave( newValue: string ) {\n\t\t\t\t\t\t// If the value didn't change, we just cancel. If it changed,\n\t\t\t\t\t\t// it's enough to update the model – the entire widget will be reconverted.\n\t\t\t\t\t\tif ( newValue !== state.getRawHtmlValue() ) {\n\t\t\t\t\t\t\teditor.execute( 'htmlEmbed', newValue );\n\t\t\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.cancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tcancel() {\n\t\t\t\t\t\tstate = Object.assign( {}, state, {\n\t\t\t\t\t\t\tisEditable: false\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\trenderContent( { domElement: domContentWrapper, editor, state, props } );\n\t\t\t\t\t\teditor.editing.view.focus();\n\n\t\t\t\t\t\tview.change( writer => {\n\t\t\t\t\t\t\twriter.removeAttribute( 'data-cke-ignore-events', viewContentWrapper );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tstate = {\n\t\t\t\t\tshowPreviews: htmlEmbedConfig.showPreviews,\n\t\t\t\t\tisEditable: false,\n\t\t\t\t\tgetRawHtmlValue: () => modelElement.getAttribute( 'value' ) as string || ''\n\t\t\t\t};\n\n\t\t\t\tprops = {\n\t\t\t\t\tsanitizeHtml: htmlEmbedConfig.sanitizeHtml,\n\t\t\t\t\ttextareaPlaceholder: t( 'Paste raw HTML here...' ),\n\n\t\t\t\t\tonEditClick() {\n\t\t\t\t\t\trawHtmlApi.makeEditable();\n\t\t\t\t\t},\n\t\t\t\t\tonSaveClick( newValue ) {\n\t\t\t\t\t\trawHtmlApi.save( newValue );\n\t\t\t\t\t},\n\t\t\t\t\tonCancelClick() {\n\t\t\t\t\t\trawHtmlApi.cancel();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst viewContainer = writer.createContainerElement( 'div', {\n\t\t\t\t\tclass: 'raw-html-embed',\n\t\t\t\t\t'data-html-embed-label': t( 'HTML snippet' ),\n\t\t\t\t\tdir: editor.locale.uiLanguageDirection\n\t\t\t\t}, viewContentWrapper );\n\n\t\t\t\twriter.setCustomProperty( 'rawHtmlApi', rawHtmlApi, viewContainer );\n\t\t\t\twriter.setCustomProperty( 'rawHtml', true, viewContainer );\n\n\t\t\t\treturn toWidget( viewContainer, writer, {\n\t\t\t\t\tlabel: t( 'HTML snippet' ),\n\t\t\t\t\thasSelectionHandle: true\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tfunction renderContent( {\n\t\t\teditor,\n\t\t\tdomElement,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomElement: HTMLElement;\n\t\t\tstate: State;\n\t\t\tprops: Props;\n\t\t} ) {\n\t\t\t// Remove all children;\n\t\t\tdomElement.textContent = '';\n\n\t\t\tconst domDocument = domElement.ownerDocument;\n\t\t\tlet domTextarea: HTMLTextAreaElement;\n\n\t\t\tif ( state.isEditable ) {\n\t\t\t\tconst textareaProps = {\n\t\t\t\t\tisDisabled: false,\n\t\t\t\t\tplaceholder: props.textareaPlaceholder\n\t\t\t\t};\n\n\t\t\t\tdomTextarea = createDomTextarea( { domDocument, state, props: textareaProps } );\n\n\t\t\t\tdomElement.append( domTextarea );\n\t\t\t} else if ( state.showPreviews ) {\n\t\t\t\tconst previewContainerProps = {\n\t\t\t\t\tsanitizeHtml: props.sanitizeHtml\n\t\t\t\t};\n\n\t\t\t\tdomElement.append( createPreviewContainer( { domDocument, state, props: previewContainerProps, editor } ) );\n\t\t\t} else {\n\t\t\t\tconst textareaProps = {\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t\tplaceholder: props.textareaPlaceholder\n\t\t\t\t};\n\n\t\t\t\tdomElement.append( createDomTextarea( { domDocument, state, props: textareaProps } ) );\n\t\t\t}\n\n\t\t\tconst buttonsWrapperProps = {\n\t\t\t\tonEditClick: props.onEditClick,\n\t\t\t\tonSaveClick: () => {\n\t\t\t\t\tprops.onSaveClick( domTextarea.value );\n\t\t\t\t},\n\t\t\t\tonCancelClick: props.onCancelClick\n\t\t\t};\n\n\t\t\tdomElement.prepend( createDomButtonsWrapper( { editor, domDocument, state, props: buttonsWrapperProps } ) );\n\t\t}\n\n\t\tfunction createDomButtonsWrapper( {\n\t\t\teditor,\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomDocument: Document;\n\t\t\tstate: State;\n\t\t\tprops: Pick<Props, 'onEditClick' | 'onCancelClick'> & {\n\t\t\t\tonSaveClick(): void;\n\t\t\t};\n\t\t} ): HTMLDivElement {\n\t\t\tconst domButtonsWrapper = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__buttons-wrapper'\n\t\t\t} );\n\n\t\t\tif ( state.isEditable ) {\n\t\t\t\tconst saveButtonView = createUIButton( editor, 'save', props.onSaveClick );\n\t\t\t\tconst cancelButtonView = createUIButton( editor, 'cancel', props.onCancelClick );\n\n\t\t\t\tdomButtonsWrapper.append( saveButtonView.element!, cancelButtonView.element! );\n\t\t\t\twidgetButtonViewReferences.add( saveButtonView ).add( cancelButtonView );\n\t\t\t} else {\n\t\t\t\tconst editButtonView = createUIButton( editor, 'edit', props.onEditClick );\n\n\t\t\t\tdomButtonsWrapper.append( editButtonView.element! );\n\t\t\t\twidgetButtonViewReferences.add( editButtonView );\n\t\t\t}\n\n\t\t\treturn domButtonsWrapper;\n\t\t}\n\n\t\tfunction createDomTextarea( {\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\t\tdomDocument: Document;\n\t\t\t\tstate: State;\n\t\t\t\tprops: {\n\t\t\t\t\tisDisabled: boolean;\n\t\t\t\t\tplaceholder: string;\n\t\t\t\t};\n\t\t\t} ): HTMLTextAreaElement {\n\t\t\tconst domTextarea = createElement( domDocument, 'textarea', {\n\t\t\t\tplaceholder: props.placeholder,\n\t\t\t\tclass: 'ck ck-reset ck-input ck-input-text raw-html-embed__source'\n\t\t\t} );\n\n\t\t\tdomTextarea.disabled = props.isDisabled;\n\t\t\tdomTextarea.value = state.getRawHtmlValue();\n\n\t\t\treturn domTextarea;\n\t\t}\n\n\t\tfunction createPreviewContainer( {\n\t\t\teditor,\n\t\t\tdomDocument,\n\t\t\tstate,\n\t\t\tprops\n\t\t}: {\n\t\t\teditor: Editor;\n\t\t\tdomDocument: Document;\n\t\t\tstate: State;\n\t\t\tprops: {\n\t\t\t\tsanitizeHtml: HtmlEmbedConfig['sanitizeHtml'];\n\t\t\t};\n\t\t} ): HTMLDivElement {\n\t\t\tconst sanitizedOutput = props.sanitizeHtml!( state.getRawHtmlValue() );\n\t\t\tconst placeholderText = state.getRawHtmlValue().length > 0 ?\n\t\t\t\tt( 'No preview available' ) :\n\t\t\t\tt( 'Empty snippet content' );\n\n\t\t\tconst domPreviewPlaceholder = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'ck ck-reset_all raw-html-embed__preview-placeholder'\n\t\t\t}, placeholderText );\n\n\t\t\tconst domPreviewContent = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__preview-content',\n\t\t\t\tdir: editor.locale.contentLanguageDirection\n\t\t\t} );\n\n\t\t\t// Creating a contextual document fragment allows executing scripts when inserting into the preview element.\n\t\t\t// See: #8326.\n\t\t\tconst domRange = domDocument.createRange();\n\t\t\tconst domDocumentFragment = domRange.createContextualFragment( sanitizedOutput.html );\n\n\t\t\tdomPreviewContent.appendChild( domDocumentFragment );\n\n\t\t\tconst domPreviewContainer = createElement( domDocument, 'div', {\n\t\t\t\tclass: 'raw-html-embed__preview'\n\t\t\t}, [\n\t\t\t\tdomPreviewPlaceholder, domPreviewContent\n\t\t\t] );\n\n\t\t\treturn domPreviewContainer;\n\t\t}\n\t}\n}\n\n/**\n * Returns a UI button view that can be used in conversion.\n */\nfunction createUIButton( editor: Editor, type: 'edit' | 'save' | 'cancel', onClick: () => void ): ButtonView {\n\tconst { t } = editor.locale;\n\tconst buttonView = new ButtonView( editor.locale );\n\tconst command: HtmlEmbedCommand = editor.commands.get( 'htmlEmbed' )!;\n\n\tbuttonView.set( {\n\t\tclass: `raw-html-embed__${ type }-button`,\n\t\ticon: icons.pencil,\n\t\ttooltip: true,\n\t\ttooltipPosition: editor.locale.uiLanguageDirection === 'rtl' ? 'e' : 'w'\n\t} );\n\n\tbuttonView.render();\n\n\tif ( type === 'edit' ) {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.pencil,\n\t\t\tlabel: t( 'Edit source' )\n\t\t} );\n\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t} else if ( type === 'save' ) {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.check,\n\t\t\tlabel: t( 'Save changes' )\n\t\t} );\n\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t} else {\n\t\tbuttonView.set( {\n\t\t\ticon: icons.cancel,\n\t\t\tlabel: t( 'Cancel' )\n\t\t} );\n\t}\n\n\tbuttonView.on( 'execute', onClick );\n\n\treturn buttonView;\n}\n\ninterface State {\n\tshowPreviews: HtmlEmbedConfig['showPreviews'];\n\tisEditable: boolean;\n\tgetRawHtmlValue(): string;\n}\n\ninterface Props {\n\tsanitizeHtml: HtmlEmbedConfig['sanitizeHtml'];\n\ttextareaPlaceholder: string;\n\tonEditClick(): void;\n\tonSaveClick( newValue: string ): void;\n\tonCancelClick(): void;\n}\n\nexport interface RawHtmlApi {\n\tmakeEditable(): void;\n\tsave( newValue: string ): void;\n\tcancel(): void;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembedui\n */\n\nimport { icons, Plugin } from 'ckeditor5/src/core.js';\nimport { ButtonView, MenuBarMenuListItemButtonView } from 'ckeditor5/src/ui.js';\nimport type { RawHtmlApi } from './htmlembedediting.js';\nimport type HtmlEmbedCommand from './htmlembedcommand.js';\n\n/**\n * The HTML embed UI plugin.\n */\nexport default class HtmlEmbedUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbedUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst t = locale.t;\n\n\t\t// Add the `htmlEmbed` button to feature components.\n\t\teditor.ui.componentFactory.add( 'htmlEmbed', () => {\n\t\t\tconst buttonView = this._createButton( ButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\ttooltip: true,\n\t\t\t\tlabel: t( 'Insert HTML' )\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\n\t\teditor.ui.componentFactory.add( 'menuBar:htmlEmbed', () => {\n\t\t\tconst buttonView = this._createButton( MenuBarMenuListItemButtonView );\n\n\t\t\tbuttonView.set( {\n\t\t\t\tlabel: t( 'HTML snippet' )\n\t\t\t} );\n\n\t\t\treturn buttonView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a button for html embed command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst command: HtmlEmbedCommand = editor.commands.get( 'htmlEmbed' )!;\n\t\tconst view = new ButtonClass( editor.locale ) as InstanceType<T>;\n\n\t\tview.set( {\n\t\t\ticon: icons.html\n\t\t} );\n\n\t\tview.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t// Execute the command.\n\t\tthis.listenTo( view, 'execute', () => {\n\t\t\teditor.execute( 'htmlEmbed' );\n\t\t\teditor.editing.view.focus();\n\n\t\t\tconst rawHtmlApi = editor.editing.view.document.selection\n\t\t\t\t.getSelectedElement()!\n\t\t\t\t.getCustomProperty( 'rawHtmlApi' ) as RawHtmlApi;\n\n\t\t\trawHtmlApi.makeEditable();\n\t\t} );\n\n\t\treturn view;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module html-embed/htmlembed\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Widget } from 'ckeditor5/src/widget.js';\n\nimport HtmlEmbedEditing from './htmlembedediting.js';\nimport HtmlEmbedUI from './htmlembedui.js';\n\n/**\n * The HTML embed feature.\n *\n * It allows inserting HTML snippets directly into the editor.\n *\n * For a detailed overview, check the {@glink features/html/html-embed HTML embed feature} documentation.\n */\nexport default class HtmlEmbed extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ HtmlEmbedEditing, HtmlEmbedUI, Widget ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'HtmlEmbed' as const;\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-html-embed",
3
- "version": "41.4.2",
3
+ "version": "42.0.0-alpha.1",
4
4
  "description": "HTML embed feature for CKEditor 5.",
5
5
  "keywords": [
6
6
  "ckeditor",
@@ -13,7 +13,7 @@
13
13
  "type": "module",
14
14
  "main": "src/index.js",
15
15
  "dependencies": {
16
- "ckeditor5": "41.4.2"
16
+ "ckeditor5": "42.0.0-alpha.1"
17
17
  },
18
18
  "author": "CKSource (http://cksource.com/)",
19
19
  "license": "GPL-2.0-or-later",