@ckeditor/ckeditor5-alignment 41.4.2 → 42.0.0-alpha.0

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 text alignment feature guide](https://ckeditor.com/do
15
15
 
16
16
  See the [`@ckeditor/ckeditor5-alignment` package](https://ckeditor.com/docs/ckeditor5/latest/api/alignment.html) page 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).
@@ -2,4 +2,4 @@
2
2
  /*!
3
3
  * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
4
4
  * For licensing, see LICENSE.md.
5
- */(()=>{var e={782:(e,t,n)=>{e.exports=n(237)("./src/core.js")},311:(e,t,n)=>{e.exports=n(237)("./src/ui.js")},584:(e,t,n)=>{e.exports=n(237)("./src/utils.js")},237:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var a=t[i]={exports:{}};return e[i](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{Alignment:()=>f,AlignmentEditing:()=>u,AlignmentUI:()=>m});var e=n(782),t=n(584);const o=["left","right","center","justify"];function a(e){return o.includes(e)}function r(e,t){return"rtl"==t.contentLanguageDirection?"right"===e:"left"===e}function s(e){const n=e.map((e=>{let t;return t="string"==typeof e?{name:e}:e,t})).filter((e=>{const n=o.includes(e.name);return n||(0,t.logWarning)("alignment-config-name-not-recognized",{option:e}),n})),i=n.filter((e=>Boolean(e.className))).length;if(i&&i<n.length)throw new t.CKEditorError("alignment-config-classnames-are-missing",{configuredOptions:e});return n.forEach(((n,i,o)=>{const a=o.slice(i+1);if(a.some((e=>e.name==n.name)))throw new t.CKEditorError("alignment-config-name-already-defined",{option:n,configuredOptions:e});if(n.className){if(a.some((e=>e.className==n.className)))throw new t.CKEditorError("alignment-config-classname-already-defined",{option:n,configuredOptions:e})}})),n}const l="alignment";class c extends e.Command{refresh(){const e=this.editor.locale,n=(0,t.first)(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=Boolean(n)&&this._canBeAligned(n),this.isEnabled&&n.hasAttribute("alignment")?this.value=n.getAttribute("alignment"):this.value="rtl"===e.contentLanguageDirection?"right":"left"}execute(e={}){const t=this.editor,n=t.locale,i=t.model,o=i.document,a=e.value;i.change((e=>{const t=Array.from(o.selection.getSelectedBlocks()).filter((e=>this._canBeAligned(e))),i=t[0].getAttribute("alignment");r(a,n)||i===a||!a?function(e,t){for(const n of e)t.removeAttribute(l,n)}(t,e):function(e,t,n){for(const i of e)t.setAttribute(l,n,i)}(t,e,a)}))}_canBeAligned(e){return this.editor.model.schema.checkAttribute(e,l)}}class u extends e.Plugin{static get pluginName(){return"AlignmentEditing"}constructor(e){super(e),e.config.define("alignment",{options:o.map((e=>({name:e})))})}init(){const e=this.editor,t=e.locale,n=e.model.schema,i=s(e.config.get("alignment.options")).filter((e=>a(e.name)&&!r(e.name,t))),o=i.some((e=>!!e.className));n.extend("$block",{allowAttributes:"alignment"}),e.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),o?e.conversion.attributeToAttribute(function(e){const t={};for(const n of e)t[n.name]={key:"class",value:n.className};const n={model:{key:"alignment",values:e.map((e=>e.name))},view:t};return n}(i)):e.conversion.for("downcast").attributeToAttribute(function(e){const t={};for(const{name:n}of e)t[n]={key:"style",value:{"text-align":n}};const n={model:{key:"alignment",values:e.map((e=>e.name))},view:t};return n}(i));const l=function(e){const t=[];for(const{name:n}of e)t.push({view:{key:"style",value:{"text-align":n}},model:{key:"alignment",value:n}});return t}(i);for(const t of l)e.conversion.for("upcast").attributeToAttribute(t);const u=function(e){const t=[];for(const{name:n}of e)t.push({view:{key:"align",value:n},model:{key:"alignment",value:n}});return t}(i);for(const t of u)e.conversion.for("upcast").attributeToAttribute(t);e.commands.add("alignment",new c(e))}}var d=n(311);const g=new Map([["left",e.icons.alignLeft],["right",e.icons.alignRight],["center",e.icons.alignCenter],["justify",e.icons.alignJustify]]);class m extends e.Plugin{get localizedOptionTitles(){const e=this.editor.t;return{left:e("Align left"),right:e("Align right"),center:e("Align center"),justify:e("Justify")}}static get pluginName(){return"AlignmentUI"}init(){const e=s(this.editor.config.get("alignment.options"));e.map((e=>e.name)).filter(a).forEach((e=>this._addButton(e))),this._addToolbarDropdown(e),this._addMenuBarMenu(e)}_addButton(e){this.editor.ui.componentFactory.add(`alignment:${e}`,(t=>this._createButton(t,e)))}_createButton(e,t,n={}){const i=this.editor,o=i.commands.get("alignment"),a=new d.ButtonView(e);return a.set({label:this.localizedOptionTitles[t],icon:g.get(t),tooltip:!0,isToggleable:!0,...n}),a.bind("isEnabled").to(o),a.bind("isOn").to(o,"value",(e=>e===t)),this.listenTo(a,"execute",(()=>{i.execute("alignment",{value:t}),i.editing.view.focus()})),a}_addToolbarDropdown(e){const t=this.editor;t.ui.componentFactory.add("alignment",(n=>{const i=(0,d.createDropdown)(n),o="rtl"===n.uiLanguageDirection?"w":"e",a=n.t;(0,d.addToolbarToDropdown)(i,(()=>e.map((e=>this._createButton(n,e.name,{tooltipPosition:o})))),{enableActiveItemFocusOnDropdownOpen:!0,isVertical:!0,ariaLabel:a("Text alignment toolbar")}),i.buttonView.set({label:a("Text alignment"),tooltip:!0}),i.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const r="rtl"===n.contentLanguageDirection?g.get("right"):g.get("left"),s=t.commands.get("alignment");return i.buttonView.bind("icon").to(s,"value",(e=>g.get(e)||r)),i.bind("isEnabled").to(s,"isEnabled"),this.listenTo(i,"execute",(()=>{t.editing.view.focus()})),i}))}_addMenuBarMenu(e){const t=this.editor;t.ui.componentFactory.add("menuBar:alignment",(n=>{const i=t.commands.get("alignment"),o=n.t,a=new d.MenuBarMenuView(n),r=new d.MenuBarMenuListView(n);a.bind("isEnabled").to(i),r.set({ariaLabel:o("Text alignment"),role:"menu"}),a.buttonView.set({label:o("Text alignment")});for(const o of e){const e=new d.MenuBarMenuListItemView(n,a),s=new d.MenuBarMenuListItemButtonView(n);s.extendTemplate({attributes:{"aria-checked":s.bindTemplate.to("isOn")}}),s.delegate("execute").to(a),s.set({label:this.localizedOptionTitles[o.name],icon:g.get(o.name)}),s.on("execute",(()=>{t.execute("alignment",{value:o.name}),t.editing.view.focus()})),s.bind("isOn").to(i,"value",(e=>e===o.name)),s.bind("isEnabled").to(i,"isEnabled"),e.children.add(s),r.items.add(e)}return a.panelView.children.add(r),a}))}}class f extends e.Plugin{static get requires(){return[u,m]}static get pluginName(){return"Alignment"}}})(),(window.CKEditor5=window.CKEditor5||{}).alignment=i})();
5
+ */(()=>{var e={782:(e,t,n)=>{e.exports=n(237)("./src/core.js")},311:(e,t,n)=>{e.exports=n(237)("./src/ui.js")},584:(e,t,n)=>{e.exports=n(237)("./src/utils.js")},237:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var a=t[i]={exports:{}};return e[i](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{"use strict";n.r(i),n.d(i,{Alignment:()=>f,AlignmentEditing:()=>u,AlignmentUI:()=>m});var e=n(782),t=n(584);const o=["left","right","center","justify"];function a(e){return o.includes(e)}function r(e,t){return"rtl"==t.contentLanguageDirection?"right"===e:"left"===e}function s(e){const n=e.map((e=>{let t;return t="string"==typeof e?{name:e}:e,t})).filter((e=>{const n=o.includes(e.name);return n||(0,t.logWarning)("alignment-config-name-not-recognized",{option:e}),n})),i=n.filter((e=>Boolean(e.className))).length;if(i&&i<n.length)throw new t.CKEditorError("alignment-config-classnames-are-missing",{configuredOptions:e});return n.forEach(((n,i,o)=>{const a=o.slice(i+1);if(a.some((e=>e.name==n.name)))throw new t.CKEditorError("alignment-config-name-already-defined",{option:n,configuredOptions:e});if(n.className){if(a.some((e=>e.className==n.className)))throw new t.CKEditorError("alignment-config-classname-already-defined",{option:n,configuredOptions:e})}})),n}const l="alignment";class c extends e.Command{refresh(){const e=this.editor.locale,n=(0,t.first)(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=Boolean(n)&&this._canBeAligned(n),this.isEnabled&&n.hasAttribute("alignment")?this.value=n.getAttribute("alignment"):this.value="rtl"===e.contentLanguageDirection?"right":"left"}execute(e={}){const t=this.editor,n=t.locale,i=t.model,o=i.document,a=e.value;i.change((e=>{const t=Array.from(o.selection.getSelectedBlocks()).filter((e=>this._canBeAligned(e))),i=t[0].getAttribute("alignment");r(a,n)||i===a||!a?function(e,t){for(const n of e)t.removeAttribute(l,n)}(t,e):function(e,t,n){for(const i of e)t.setAttribute(l,n,i)}(t,e,a)}))}_canBeAligned(e){return this.editor.model.schema.checkAttribute(e,l)}}class u extends e.Plugin{static get pluginName(){return"AlignmentEditing"}constructor(e){super(e),e.config.define("alignment",{options:o.map((e=>({name:e})))})}init(){const e=this.editor,t=e.locale,n=e.model.schema,i=s(e.config.get("alignment.options")).filter((e=>a(e.name)&&!r(e.name,t))),o=i.some((e=>!!e.className));n.extend("$block",{allowAttributes:"alignment"}),e.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),o?e.conversion.attributeToAttribute(function(e){const t={};for(const n of e)t[n.name]={key:"class",value:n.className};const n={model:{key:"alignment",values:e.map((e=>e.name))},view:t};return n}(i)):e.conversion.for("downcast").attributeToAttribute(function(e){const t={};for(const{name:n}of e)t[n]={key:"style",value:{"text-align":n}};const n={model:{key:"alignment",values:e.map((e=>e.name))},view:t};return n}(i));const l=function(e){const t=[];for(const{name:n}of e)t.push({view:{key:"style",value:{"text-align":n}},model:{key:"alignment",value:n}});return t}(i);for(const t of l)e.conversion.for("upcast").attributeToAttribute(t);const u=function(e){const t=[];for(const{name:n}of e)t.push({view:{key:"align",value:n},model:{key:"alignment",value:n}});return t}(i);for(const t of u)e.conversion.for("upcast").attributeToAttribute(t);e.commands.add("alignment",new c(e))}}var d=n(311);const g=(()=>new Map([["left",e.icons.alignLeft],["right",e.icons.alignRight],["center",e.icons.alignCenter],["justify",e.icons.alignJustify]]))();class m extends e.Plugin{get localizedOptionTitles(){const e=this.editor.t;return{left:e("Align left"),right:e("Align right"),center:e("Align center"),justify:e("Justify")}}static get pluginName(){return"AlignmentUI"}init(){const e=s(this.editor.config.get("alignment.options"));e.map((e=>e.name)).filter(a).forEach((e=>this._addButton(e))),this._addToolbarDropdown(e),this._addMenuBarMenu(e)}_addButton(e){this.editor.ui.componentFactory.add(`alignment:${e}`,(t=>this._createButton(t,e)))}_createButton(e,t,n={}){const i=this.editor,o=i.commands.get("alignment"),a=new d.ButtonView(e);return a.set({label:this.localizedOptionTitles[t],icon:g.get(t),tooltip:!0,isToggleable:!0,...n}),a.bind("isEnabled").to(o),a.bind("isOn").to(o,"value",(e=>e===t)),this.listenTo(a,"execute",(()=>{i.execute("alignment",{value:t}),i.editing.view.focus()})),a}_addToolbarDropdown(e){const t=this.editor;t.ui.componentFactory.add("alignment",(n=>{const i=(0,d.createDropdown)(n),o="rtl"===n.uiLanguageDirection?"w":"e",a=n.t;(0,d.addToolbarToDropdown)(i,(()=>e.map((e=>this._createButton(n,e.name,{tooltipPosition:o})))),{enableActiveItemFocusOnDropdownOpen:!0,isVertical:!0,ariaLabel:a("Text alignment toolbar")}),i.buttonView.set({label:a("Text alignment"),tooltip:!0}),i.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const r="rtl"===n.contentLanguageDirection?g.get("right"):g.get("left"),s=t.commands.get("alignment");return i.buttonView.bind("icon").to(s,"value",(e=>g.get(e)||r)),i.bind("isEnabled").to(s,"isEnabled"),this.listenTo(i,"execute",(()=>{t.editing.view.focus()})),i}))}_addMenuBarMenu(e){const t=this.editor;t.ui.componentFactory.add("menuBar:alignment",(n=>{const i=t.commands.get("alignment"),o=n.t,a=new d.MenuBarMenuView(n),r=new d.MenuBarMenuListView(n);a.bind("isEnabled").to(i),r.set({ariaLabel:o("Text alignment"),role:"menu"}),a.buttonView.set({label:o("Text alignment")});for(const o of e){const e=new d.MenuBarMenuListItemView(n,a),s=new d.MenuBarMenuListItemButtonView(n);s.extendTemplate({attributes:{"aria-checked":s.bindTemplate.to("isOn")}}),s.delegate("execute").to(a),s.set({label:this.localizedOptionTitles[o.name],icon:g.get(o.name)}),s.on("execute",(()=>{t.execute("alignment",{value:o.name}),t.editing.view.focus()})),s.bind("isOn").to(i,"value",(e=>e===o.name)),s.bind("isEnabled").to(i,"isEnabled"),e.children.add(s),r.items.add(e)}return a.panelView.children.add(r),a}))}}class f extends e.Plugin{static get requires(){return[u,m]}static get pluginName(){return"Alignment"}}})(),(window.CKEditor5=window.CKEditor5||{}).alignment=i})();
package/dist/index.js CHANGED
@@ -63,12 +63,12 @@ import { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, Menu
63
63
  const isNameValid = supportedOptions.includes(option.name);
64
64
  if (!isNameValid) {
65
65
  /**
66
- * The `name` in one of the `alignment.options` is not recognized.
67
- * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.
68
- *
69
- * @error alignment-config-name-not-recognized
70
- * @param option Options with unknown value of the `name` property.
71
- */ logWarning('alignment-config-name-not-recognized', {
66
+ * The `name` in one of the `alignment.options` is not recognized.
67
+ * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.
68
+ *
69
+ * @error alignment-config-name-not-recognized
70
+ * @param option Options with unknown value of the `name` property.
71
+ */ logWarning('alignment-config-name-not-recognized', {
72
72
  option
73
73
  });
74
74
  }
@@ -78,11 +78,11 @@ import { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, Menu
78
78
  // We either use classes for all styling options or for none.
79
79
  if (classNameCount && classNameCount < normalizedOptions.length) {
80
80
  /**
81
- * The `className` property has to be defined for all options once at least one option declares `className`.
82
- *
83
- * @error alignment-config-classnames-are-missing
84
- * @param configuredOptions Contents of `alignment.options`.
85
- */ throw new CKEditorError('alignment-config-classnames-are-missing', {
81
+ * The `className` property has to be defined for all options once at least one option declares `className`.
82
+ *
83
+ * @error alignment-config-classnames-are-missing
84
+ * @param configuredOptions Contents of `alignment.options`.
85
+ */ throw new CKEditorError('alignment-config-classnames-are-missing', {
86
86
  configuredOptions
87
87
  });
88
88
  }
@@ -92,13 +92,13 @@ import { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, Menu
92
92
  const nameAlreadyExists = succeedingOptions.some((item)=>item.name == option.name);
93
93
  if (nameAlreadyExists) {
94
94
  /**
95
- * The same `name` in one of the `alignment.options` was already declared.
96
- * Each `name` representing one alignment option can be set exactly once.
97
- *
98
- * @error alignment-config-name-already-defined
99
- * @param option First option that declares given `name`.
100
- * @param configuredOptions Contents of `alignment.options`.
101
- */ throw new CKEditorError('alignment-config-name-already-defined', {
95
+ * The same `name` in one of the `alignment.options` was already declared.
96
+ * Each `name` representing one alignment option can be set exactly once.
97
+ *
98
+ * @error alignment-config-name-already-defined
99
+ * @param option First option that declares given `name`.
100
+ * @param configuredOptions Contents of `alignment.options`.
101
+ */ throw new CKEditorError('alignment-config-name-already-defined', {
102
102
  option,
103
103
  configuredOptions
104
104
  });
@@ -108,13 +108,13 @@ import { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, Menu
108
108
  const classNameAlreadyExists = succeedingOptions.some((item)=>item.className == option.className);
109
109
  if (classNameAlreadyExists) {
110
110
  /**
111
- * The same `className` in one of the `alignment.options` was already declared.
112
- *
113
- * @error alignment-config-classname-already-defined
114
- * @param option First option that declares given `className`.
115
- * @param configuredOptions
116
- * Contents of `alignment.options`.
117
- */ throw new CKEditorError('alignment-config-classname-already-defined', {
111
+ * The same `className` in one of the `alignment.options` was already declared.
112
+ *
113
+ * @error alignment-config-classname-already-defined
114
+ * @param option First option that declares given `className`.
115
+ * @param configuredOptions
116
+ * Contents of `alignment.options`.
117
+ */ throw new CKEditorError('alignment-config-classname-already-defined', {
118
118
  option,
119
119
  configuredOptions
120
120
  });
@@ -125,10 +125,12 @@ import { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, Menu
125
125
  }
126
126
 
127
127
  const ALIGNMENT = 'alignment';
128
- class AlignmentCommand extends Command {
128
+ /**
129
+ * The alignment command plugin.
130
+ */ class AlignmentCommand extends Command {
129
131
  /**
130
- * @inheritDoc
131
- */ refresh() {
132
+ * @inheritDoc
133
+ */ refresh() {
132
134
  const editor = this.editor;
133
135
  const locale = editor.locale;
134
136
  const firstBlock = first(this.editor.model.document.selection.getSelectedBlocks());
@@ -141,14 +143,14 @@ class AlignmentCommand extends Command {
141
143
  }
142
144
  }
143
145
  /**
144
- * Executes the command. Applies the alignment `value` to the selected blocks.
145
- * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,
146
- * the command will remove the attribute from the selected blocks.
147
- *
148
- * @param options Options for the executed command.
149
- * @param options.value The value to apply.
150
- * @fires execute
151
- */ execute(options = {}) {
146
+ * Executes the command. Applies the alignment `value` to the selected blocks.
147
+ * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,
148
+ * the command will remove the attribute from the selected blocks.
149
+ *
150
+ * @param options Options for the executed command.
151
+ * @param options.value The value to apply.
152
+ * @fires execute
153
+ */ execute(options = {}) {
152
154
  const editor = this.editor;
153
155
  const locale = editor.locale;
154
156
  const model = editor.model;
@@ -171,10 +173,10 @@ class AlignmentCommand extends Command {
171
173
  });
172
174
  }
173
175
  /**
174
- * Checks whether a block can have alignment set.
175
- *
176
- * @param block The block to be checked.
177
- */ _canBeAligned(block) {
176
+ * Checks whether a block can have alignment set.
177
+ *
178
+ * @param block The block to be checked.
179
+ */ _canBeAligned(block) {
178
180
  return this.editor.model.schema.checkAttribute(block, ALIGNMENT);
179
181
  }
180
182
  }
@@ -193,15 +195,28 @@ class AlignmentCommand extends Command {
193
195
  }
194
196
  }
195
197
 
196
- class AlignmentEditing extends Plugin {
198
+ /**
199
+ * The alignment editing feature. It introduces the {@link module:alignment/alignmentcommand~AlignmentCommand command} and adds
200
+ * the `alignment` attribute for block elements in the {@link module:engine/model/model~Model model}.
201
+ */ class AlignmentEditing extends Plugin {
197
202
  /**
198
- * @inheritDoc
199
- */ static get pluginName() {
203
+ * @inheritDoc
204
+ */ static get pluginName() {
200
205
  return 'AlignmentEditing';
201
206
  }
202
207
  /**
203
- * @inheritDoc
204
- */ init() {
208
+ * @inheritDoc
209
+ */ constructor(editor){
210
+ super(editor);
211
+ editor.config.define('alignment', {
212
+ options: supportedOptions.map((option)=>({
213
+ name: option
214
+ }))
215
+ });
216
+ }
217
+ /**
218
+ * @inheritDoc
219
+ */ init() {
205
220
  const editor = this.editor;
206
221
  const locale = editor.locale;
207
222
  const schema = editor.model.schema;
@@ -235,16 +250,6 @@ class AlignmentEditing extends Plugin {
235
250
  }
236
251
  editor.commands.add('alignment', new AlignmentCommand(editor));
237
252
  }
238
- /**
239
- * @inheritDoc
240
- */ constructor(editor){
241
- super(editor);
242
- editor.config.define('alignment', {
243
- options: supportedOptions.map((option)=>({
244
- name: option
245
- }))
246
- });
247
- }
248
253
  }
249
254
  /**
250
255
  * Prepare downcast conversion definition for inline alignment styling.
@@ -325,38 +330,43 @@ class AlignmentEditing extends Plugin {
325
330
  return definition;
326
331
  }
327
332
 
328
- const iconsMap = new Map([
329
- [
330
- 'left',
331
- icons.alignLeft
332
- ],
333
- [
334
- 'right',
335
- icons.alignRight
336
- ],
337
- [
338
- 'center',
339
- icons.alignCenter
340
- ],
341
- [
342
- 'justify',
343
- icons.alignJustify
344
- ]
345
- ]);
346
- class AlignmentUI extends Plugin {
333
+ const iconsMap = /* #__PURE__ */ (()=>new Map([
334
+ [
335
+ 'left',
336
+ icons.alignLeft
337
+ ],
338
+ [
339
+ 'right',
340
+ icons.alignRight
341
+ ],
342
+ [
343
+ 'center',
344
+ icons.alignCenter
345
+ ],
346
+ [
347
+ 'justify',
348
+ icons.alignJustify
349
+ ]
350
+ ]))();
351
+ /**
352
+ * The default alignment UI plugin.
353
+ *
354
+ * It introduces the `'alignment:left'`, `'alignment:right'`, `'alignment:center'` and `'alignment:justify'` buttons
355
+ * and the `'alignment'` dropdown.
356
+ */ class AlignmentUI extends Plugin {
347
357
  /**
348
- * Returns the localized option titles provided by the plugin.
349
- *
350
- * The following localized titles corresponding with
351
- * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:
352
- *
353
- * * `'left'`,
354
- * * `'right'`,
355
- * * `'center'`,
356
- * * `'justify'`.
357
- *
358
- * @readonly
359
- */ get localizedOptionTitles() {
358
+ * Returns the localized option titles provided by the plugin.
359
+ *
360
+ * The following localized titles corresponding with
361
+ * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:
362
+ *
363
+ * * `'left'`,
364
+ * * `'right'`,
365
+ * * `'center'`,
366
+ * * `'justify'`.
367
+ *
368
+ * @readonly
369
+ */ get localizedOptionTitles() {
360
370
  const t = this.editor.t;
361
371
  return {
362
372
  'left': t('Align left'),
@@ -366,13 +376,13 @@ class AlignmentUI extends Plugin {
366
376
  };
367
377
  }
368
378
  /**
369
- * @inheritDoc
370
- */ static get pluginName() {
379
+ * @inheritDoc
380
+ */ static get pluginName() {
371
381
  return 'AlignmentUI';
372
382
  }
373
383
  /**
374
- * @inheritDoc
375
- */ init() {
384
+ * @inheritDoc
385
+ */ init() {
376
386
  const editor = this.editor;
377
387
  const options = normalizeAlignmentOptions(editor.config.get('alignment.options'));
378
388
  options.map((option)=>option.name).filter(isSupported).forEach((option)=>this._addButton(option));
@@ -380,20 +390,20 @@ class AlignmentUI extends Plugin {
380
390
  this._addMenuBarMenu(options);
381
391
  }
382
392
  /**
383
- * Helper method for initializing the button and linking it with an appropriate command.
384
- *
385
- * @param option The name of the alignment option for which the button is added.
386
- */ _addButton(option) {
393
+ * Helper method for initializing the button and linking it with an appropriate command.
394
+ *
395
+ * @param option The name of the alignment option for which the button is added.
396
+ */ _addButton(option) {
387
397
  const editor = this.editor;
388
398
  editor.ui.componentFactory.add(`alignment:${option}`, (locale)=>this._createButton(locale, option));
389
399
  }
390
400
  /**
391
- * Helper method for creating the button view element.
392
- *
393
- * @param locale Editor locale.
394
- * @param option The name of the alignment option for which the button is added.
395
- * @param buttonAttrs Optional parameters passed to button view instance.
396
- */ _createButton(locale, option, buttonAttrs = {}) {
401
+ * Helper method for creating the button view element.
402
+ *
403
+ * @param locale Editor locale.
404
+ * @param option The name of the alignment option for which the button is added.
405
+ * @param buttonAttrs Optional parameters passed to button view instance.
406
+ */ _createButton(locale, option, buttonAttrs = {}) {
397
407
  const editor = this.editor;
398
408
  const command = editor.commands.get('alignment');
399
409
  const buttonView = new ButtonView(locale);
@@ -417,10 +427,10 @@ class AlignmentUI extends Plugin {
417
427
  return buttonView;
418
428
  }
419
429
  /**
420
- * Helper method for initializing the toolnar dropdown and linking it with an appropriate command.
421
- *
422
- * @param option The name of the alignment option for which the button is added.
423
- */ _addToolbarDropdown(options) {
430
+ * Helper method for initializing the toolnar dropdown and linking it with an appropriate command.
431
+ *
432
+ * @param option The name of the alignment option for which the button is added.
433
+ */ _addToolbarDropdown(options) {
424
434
  const editor = this.editor;
425
435
  const factory = editor.ui.componentFactory;
426
436
  factory.add('alignment', (locale)=>{
@@ -461,10 +471,10 @@ class AlignmentUI extends Plugin {
461
471
  });
462
472
  }
463
473
  /**
464
- * Creates a menu for all alignment options to use either in menu bar.
465
- *
466
- * @param options Normalized alignment options from config.
467
- */ _addMenuBarMenu(options) {
474
+ * Creates a menu for all alignment options to use either in menu bar.
475
+ *
476
+ * @param options Normalized alignment options from config.
477
+ */ _addMenuBarMenu(options) {
468
478
  const editor = this.editor;
469
479
  editor.ui.componentFactory.add('menuBar:alignment', (locale)=>{
470
480
  const command = editor.commands.get('alignment');
@@ -509,18 +519,26 @@ class AlignmentUI extends Plugin {
509
519
  }
510
520
  }
511
521
 
512
- class Alignment extends Plugin {
522
+ /**
523
+ * The text alignment plugin.
524
+ *
525
+ * For a detailed overview, check the {@glink features/text-alignment Text alignment} feature guide
526
+ * and the {@glink api/alignment package page}.
527
+ *
528
+ * This is a "glue" plugin which loads the {@link module:alignment/alignmentediting~AlignmentEditing} and
529
+ * {@link module:alignment/alignmentui~AlignmentUI} plugins.
530
+ */ class Alignment extends Plugin {
513
531
  /**
514
- * @inheritDoc
515
- */ static get requires() {
532
+ * @inheritDoc
533
+ */ static get requires() {
516
534
  return [
517
535
  AlignmentEditing,
518
536
  AlignmentUI
519
537
  ];
520
538
  }
521
539
  /**
522
- * @inheritDoc
523
- */ static get pluginName() {
540
+ * @inheritDoc
541
+ */ static get pluginName() {
524
542
  return 'Alignment';
525
543
  }
526
544
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/utils.ts","../src/alignmentcommand.ts","../src/alignmentediting.ts","../src/alignmentui.ts","../src/alignment.ts"],"names":["supportedOptions","isSupported","option","includes","isDefault","alignment","locale","contentLanguageDirection","normalizeAlignmentOptions","configuredOptions","normalizedOptions","map","result","name","filter","isNameValid","logWarning","classNameCount","Boolean","className","length","CKEditorError","forEach","index","allOptions","succeedingOptions","slice","nameAlreadyExists","some","item","classNameAlreadyExists","ALIGNMENT","AlignmentCommand","Command","refresh","editor","firstBlock","first","model","document","selection","getSelectedBlocks","isEnabled","_canBeAligned","hasAttribute","value","getAttribute","execute","options","doc","change","writer","blocks","Array","from","block","currentAlignment","removeAlignment","removeAlignmentFromSelection","setAlignmentOnSelection","schema","checkAttribute","removeAttribute","setAttribute","AlignmentEditing","Plugin","pluginName","init","config","get","optionsToConvert","shouldUseClasses","extend","allowAttributes","setAttributeProperties","isFormatting","conversion","attributeToAttribute","buildClassDefinition","for","buildDowncastInlineDefinition","upcastInlineDefinitions","buildUpcastInlineDefinitions","definition","upcastCompatibilityDefinitions","buildUpcastCompatibilityDefinitions","commands","add","constructor","define","view","key","values","definitions","push","iconsMap","Map","icons","alignLeft","alignRight","alignCenter","alignJustify","AlignmentUI","localizedOptionTitles","t","_addButton","_addToolbarDropdown","_addMenuBarMenu","ui","componentFactory","_createButton","buttonAttrs","command","buttonView","ButtonView","set","label","icon","tooltip","isToggleable","bind","to","listenTo","editing","focus","factory","dropdownView","createDropdown","tooltipPosition","uiLanguageDirection","addToolbarToDropdown","enableActiveItemFocusOnDropdownOpen","isVertical","ariaLabel","extendTemplate","attributes","class","defaultIcon","menuView","MenuBarMenuView","listView","MenuBarMenuListView","role","listItemView","MenuBarMenuListItemView","MenuBarMenuListItemButtonView","bindTemplate","delegate","on","children","items","panelView","Alignment","requires"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin, icons } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { logWarning, CKEditorError, first } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, MenuBarMenuListView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\n\n/**\n * @module alignment/utils\n */ /**\n * The list of supported alignment options:\n *\n * * `'left'`,\n * * `'right'`,\n * * `'center'`,\n * * `'justify'`\n */ const supportedOptions = [\n 'left',\n 'right',\n 'center',\n 'justify'\n];\n/**\n * Checks whether the passed option is supported by {@link module:alignment/alignmentediting~AlignmentEditing}.\n *\n * @param option The option value to check.\n */ function isSupported(option) {\n return supportedOptions.includes(option);\n}\n/**\n * Checks whether alignment is the default one considering the direction\n * of the editor content.\n *\n * @param alignment The name of the alignment to check.\n * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n */ function isDefault(alignment, locale) {\n // Right now only LTR is supported so the 'left' value is always the default one.\n if (locale.contentLanguageDirection == 'rtl') {\n return alignment === 'right';\n } else {\n return alignment === 'left';\n }\n}\n/**\n * Brings the configuration to the common form, an array of objects.\n *\n * @param configuredOptions Alignment plugin configuration.\n * @returns Normalized object holding the configuration.\n */ function normalizeAlignmentOptions(configuredOptions) {\n const normalizedOptions = configuredOptions.map((option)=>{\n let result;\n if (typeof option == 'string') {\n result = {\n name: option\n };\n } else {\n result = option;\n }\n return result;\n })// Remove all unknown options.\n .filter((option)=>{\n const isNameValid = supportedOptions.includes(option.name);\n if (!isNameValid) {\n /**\n * The `name` in one of the `alignment.options` is not recognized.\n * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.\n *\n * @error alignment-config-name-not-recognized\n * @param option Options with unknown value of the `name` property.\n */ logWarning('alignment-config-name-not-recognized', {\n option\n });\n }\n return isNameValid;\n });\n const classNameCount = normalizedOptions.filter((option)=>Boolean(option.className)).length;\n // We either use classes for all styling options or for none.\n if (classNameCount && classNameCount < normalizedOptions.length) {\n /**\n * The `className` property has to be defined for all options once at least one option declares `className`.\n *\n * @error alignment-config-classnames-are-missing\n * @param configuredOptions Contents of `alignment.options`.\n */ throw new CKEditorError('alignment-config-classnames-are-missing', {\n configuredOptions\n });\n }\n // Validate resulting config.\n normalizedOptions.forEach((option, index, allOptions)=>{\n const succeedingOptions = allOptions.slice(index + 1);\n const nameAlreadyExists = succeedingOptions.some((item)=>item.name == option.name);\n if (nameAlreadyExists) {\n /**\n * The same `name` in one of the `alignment.options` was already declared.\n * Each `name` representing one alignment option can be set exactly once.\n *\n * @error alignment-config-name-already-defined\n * @param option First option that declares given `name`.\n * @param configuredOptions Contents of `alignment.options`.\n */ throw new CKEditorError('alignment-config-name-already-defined', {\n option,\n configuredOptions\n });\n }\n // The `className` property is present. Check for duplicates then.\n if (option.className) {\n const classNameAlreadyExists = succeedingOptions.some((item)=>item.className == option.className);\n if (classNameAlreadyExists) {\n /**\n * The same `className` in one of the `alignment.options` was already declared.\n *\n * @error alignment-config-classname-already-defined\n * @param option First option that declares given `className`.\n * @param configuredOptions\n * Contents of `alignment.options`.\n */ throw new CKEditorError('alignment-config-classname-already-defined', {\n option,\n configuredOptions\n });\n }\n }\n });\n return normalizedOptions;\n}\n\nconst ALIGNMENT = 'alignment';\nclass AlignmentCommand extends Command {\n /**\n * @inheritDoc\n */ refresh() {\n const editor = this.editor;\n const locale = editor.locale;\n const firstBlock = first(this.editor.model.document.selection.getSelectedBlocks());\n // As first check whether to enable or disable the command as the value will always be false if the command cannot be enabled.\n this.isEnabled = Boolean(firstBlock) && this._canBeAligned(firstBlock);\n if (this.isEnabled && firstBlock.hasAttribute('alignment')) {\n this.value = firstBlock.getAttribute('alignment');\n } else {\n this.value = locale.contentLanguageDirection === 'rtl' ? 'right' : 'left';\n }\n }\n /**\n * Executes the command. Applies the alignment `value` to the selected blocks.\n * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,\n * the command will remove the attribute from the selected blocks.\n *\n * @param options Options for the executed command.\n * @param options.value The value to apply.\n * @fires execute\n */ execute(options = {}) {\n const editor = this.editor;\n const locale = editor.locale;\n const model = editor.model;\n const doc = model.document;\n const value = options.value;\n model.change((writer)=>{\n // Get only those blocks from selected that can have alignment set\n const blocks = Array.from(doc.selection.getSelectedBlocks()).filter((block)=>this._canBeAligned(block));\n const currentAlignment = blocks[0].getAttribute('alignment');\n // Remove alignment attribute if current alignment is:\n // - default (should not be stored in model as it will bloat model data)\n // - equal to currently set\n // - or no value is passed - denotes default alignment.\n const removeAlignment = isDefault(value, locale) || currentAlignment === value || !value;\n if (removeAlignment) {\n removeAlignmentFromSelection(blocks, writer);\n } else {\n setAlignmentOnSelection(blocks, writer, value);\n }\n });\n }\n /**\n * Checks whether a block can have alignment set.\n *\n * @param block The block to be checked.\n */ _canBeAligned(block) {\n return this.editor.model.schema.checkAttribute(block, ALIGNMENT);\n }\n}\n/**\n * Removes the alignment attribute from blocks.\n */ function removeAlignmentFromSelection(blocks, writer) {\n for (const block of blocks){\n writer.removeAttribute(ALIGNMENT, block);\n }\n}\n/**\n * Sets the alignment attribute on blocks.\n */ function setAlignmentOnSelection(blocks, writer, alignment) {\n for (const block of blocks){\n writer.setAttribute(ALIGNMENT, alignment, block);\n }\n}\n\nclass AlignmentEditing extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'AlignmentEditing';\n }\n /**\n * @inheritDoc\n */ init() {\n const editor = this.editor;\n const locale = editor.locale;\n const schema = editor.model.schema;\n const options = normalizeAlignmentOptions(editor.config.get('alignment.options'));\n // Filter out unsupported options and those that are redundant, e.g. `left` in LTR / `right` in RTL mode.\n const optionsToConvert = options.filter((option)=>isSupported(option.name) && !isDefault(option.name, locale));\n // Once there is at least one `className` defined, we switch to alignment with classes.\n const shouldUseClasses = optionsToConvert.some((option)=>!!option.className);\n // Allow alignment attribute on all blocks.\n schema.extend('$block', {\n allowAttributes: 'alignment'\n });\n editor.model.schema.setAttributeProperties('alignment', {\n isFormatting: true\n });\n if (shouldUseClasses) {\n editor.conversion.attributeToAttribute(buildClassDefinition(optionsToConvert));\n } else {\n // Downcast inline styles.\n editor.conversion.for('downcast').attributeToAttribute(buildDowncastInlineDefinition(optionsToConvert));\n }\n const upcastInlineDefinitions = buildUpcastInlineDefinitions(optionsToConvert);\n // Always upcast from inline styles.\n for (const definition of upcastInlineDefinitions){\n editor.conversion.for('upcast').attributeToAttribute(definition);\n }\n const upcastCompatibilityDefinitions = buildUpcastCompatibilityDefinitions(optionsToConvert);\n // Always upcast from deprecated `align` attribute.\n for (const definition of upcastCompatibilityDefinitions){\n editor.conversion.for('upcast').attributeToAttribute(definition);\n }\n editor.commands.add('alignment', new AlignmentCommand(editor));\n }\n /**\n * @inheritDoc\n */ constructor(editor){\n super(editor);\n editor.config.define('alignment', {\n options: supportedOptions.map((option)=>({\n name: option\n }))\n });\n }\n}\n/**\n * Prepare downcast conversion definition for inline alignment styling.\n */ function buildDowncastInlineDefinition(options) {\n const view = {};\n for (const { name } of options){\n view[name] = {\n key: 'style',\n value: {\n 'text-align': name\n }\n };\n }\n const definition = {\n model: {\n key: 'alignment',\n values: options.map((option)=>option.name)\n },\n view\n };\n return definition;\n}\n/**\n * Prepare upcast definitions for inline alignment styles.\n */ function buildUpcastInlineDefinitions(options) {\n const definitions = [];\n for (const { name } of options){\n definitions.push({\n view: {\n key: 'style',\n value: {\n 'text-align': name\n }\n },\n model: {\n key: 'alignment',\n value: name\n }\n });\n }\n return definitions;\n}\n/**\n * Prepare upcast definitions for deprecated `align` attribute.\n */ function buildUpcastCompatibilityDefinitions(options) {\n const definitions = [];\n for (const { name } of options){\n definitions.push({\n view: {\n key: 'align',\n value: name\n },\n model: {\n key: 'alignment',\n value: name\n }\n });\n }\n return definitions;\n}\n/**\n * Prepare conversion definitions for upcast and downcast alignment with classes.\n */ function buildClassDefinition(options) {\n const view = {};\n for (const option of options){\n view[option.name] = {\n key: 'class',\n value: option.className\n };\n }\n const definition = {\n model: {\n key: 'alignment',\n values: options.map((option)=>option.name)\n },\n view\n };\n return definition;\n}\n\nconst iconsMap = new Map([\n [\n 'left',\n icons.alignLeft\n ],\n [\n 'right',\n icons.alignRight\n ],\n [\n 'center',\n icons.alignCenter\n ],\n [\n 'justify',\n icons.alignJustify\n ]\n]);\nclass AlignmentUI extends Plugin {\n /**\n * Returns the localized option titles provided by the plugin.\n *\n * The following localized titles corresponding with\n * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:\n *\n * * `'left'`,\n * * `'right'`,\n * * `'center'`,\n * * `'justify'`.\n *\n * @readonly\n */ get localizedOptionTitles() {\n const t = this.editor.t;\n return {\n 'left': t('Align left'),\n 'right': t('Align right'),\n 'center': t('Align center'),\n 'justify': t('Justify')\n };\n }\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'AlignmentUI';\n }\n /**\n * @inheritDoc\n */ init() {\n const editor = this.editor;\n const options = normalizeAlignmentOptions(editor.config.get('alignment.options'));\n options.map((option)=>option.name).filter(isSupported).forEach((option)=>this._addButton(option));\n this._addToolbarDropdown(options);\n this._addMenuBarMenu(options);\n }\n /**\n * Helper method for initializing the button and linking it with an appropriate command.\n *\n * @param option The name of the alignment option for which the button is added.\n */ _addButton(option) {\n const editor = this.editor;\n editor.ui.componentFactory.add(`alignment:${option}`, (locale)=>this._createButton(locale, option));\n }\n /**\n * Helper method for creating the button view element.\n *\n * @param locale Editor locale.\n * @param option The name of the alignment option for which the button is added.\n * @param buttonAttrs Optional parameters passed to button view instance.\n */ _createButton(locale, option, buttonAttrs = {}) {\n const editor = this.editor;\n const command = editor.commands.get('alignment');\n const buttonView = new ButtonView(locale);\n buttonView.set({\n label: this.localizedOptionTitles[option],\n icon: iconsMap.get(option),\n tooltip: true,\n isToggleable: true,\n ...buttonAttrs\n });\n // Bind button model to command.\n buttonView.bind('isEnabled').to(command);\n buttonView.bind('isOn').to(command, 'value', (value)=>value === option);\n // Execute command.\n this.listenTo(buttonView, 'execute', ()=>{\n editor.execute('alignment', {\n value: option\n });\n editor.editing.view.focus();\n });\n return buttonView;\n }\n /**\n * Helper method for initializing the toolnar dropdown and linking it with an appropriate command.\n *\n * @param option The name of the alignment option for which the button is added.\n */ _addToolbarDropdown(options) {\n const editor = this.editor;\n const factory = editor.ui.componentFactory;\n factory.add('alignment', (locale)=>{\n const dropdownView = createDropdown(locale);\n const tooltipPosition = locale.uiLanguageDirection === 'rtl' ? 'w' : 'e';\n const t = locale.t;\n // Add existing alignment buttons to dropdown's toolbar.\n addToolbarToDropdown(dropdownView, ()=>options.map((option)=>this._createButton(locale, option.name, {\n tooltipPosition\n })), {\n enableActiveItemFocusOnDropdownOpen: true,\n isVertical: true,\n ariaLabel: t('Text alignment toolbar')\n });\n // Configure dropdown properties an behavior.\n dropdownView.buttonView.set({\n label: t('Text alignment'),\n tooltip: true\n });\n dropdownView.extendTemplate({\n attributes: {\n class: 'ck-alignment-dropdown'\n }\n });\n // The default icon depends on the direction of the content.\n const defaultIcon = locale.contentLanguageDirection === 'rtl' ? iconsMap.get('right') : iconsMap.get('left');\n const command = editor.commands.get('alignment');\n // Change icon to reflect current selection's alignment.\n dropdownView.buttonView.bind('icon').to(command, 'value', (value)=>iconsMap.get(value) || defaultIcon);\n // Enable button if any of the buttons is enabled.\n dropdownView.bind('isEnabled').to(command, 'isEnabled');\n // Focus the editable after executing the command.\n // Overrides a default behaviour where the focus is moved to the dropdown button (#12125).\n this.listenTo(dropdownView, 'execute', ()=>{\n editor.editing.view.focus();\n });\n return dropdownView;\n });\n }\n /**\n * Creates a menu for all alignment options to use either in menu bar.\n *\n * @param options Normalized alignment options from config.\n */ _addMenuBarMenu(options) {\n const editor = this.editor;\n editor.ui.componentFactory.add('menuBar:alignment', (locale)=>{\n const command = editor.commands.get('alignment');\n const t = locale.t;\n const menuView = new MenuBarMenuView(locale);\n const listView = new MenuBarMenuListView(locale);\n menuView.bind('isEnabled').to(command);\n listView.set({\n ariaLabel: t('Text alignment'),\n role: 'menu'\n });\n menuView.buttonView.set({\n label: t('Text alignment')\n });\n for (const option of options){\n const listItemView = new MenuBarMenuListItemView(locale, menuView);\n const buttonView = new MenuBarMenuListItemButtonView(locale);\n buttonView.extendTemplate({\n attributes: {\n 'aria-checked': buttonView.bindTemplate.to('isOn')\n }\n });\n buttonView.delegate('execute').to(menuView);\n buttonView.set({\n label: this.localizedOptionTitles[option.name],\n icon: iconsMap.get(option.name)\n });\n buttonView.on('execute', ()=>{\n editor.execute('alignment', {\n value: option.name\n });\n editor.editing.view.focus();\n });\n buttonView.bind('isOn').to(command, 'value', (value)=>value === option.name);\n buttonView.bind('isEnabled').to(command, 'isEnabled');\n listItemView.children.add(buttonView);\n listView.items.add(listItemView);\n }\n menuView.panelView.children.add(listView);\n return menuView;\n });\n }\n}\n\nclass Alignment extends Plugin {\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n AlignmentEditing,\n AlignmentUI\n ];\n }\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'Alignment';\n }\n}\n\nexport { Alignment, AlignmentEditing, AlignmentUI };\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\nimport { CKEditorError, logWarning, type Locale } from 'ckeditor5/src/utils.js';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig.js';\n\n/**\n * @module alignment/utils\n */\n\n/**\n * The list of supported alignment options:\n *\n * * `'left'`,\n * * `'right'`,\n * * `'center'`,\n * * `'justify'`\n */\nexport const supportedOptions: ReadonlyArray<SupportedOption> = [ 'left', 'right', 'center', 'justify' ];\n\n/**\n * Checks whether the passed option is supported by {@link module:alignment/alignmentediting~AlignmentEditing}.\n *\n * @param option The option value to check.\n */\nexport function isSupported( option: string ): boolean {\n\treturn ( supportedOptions as Array<string> ).includes( option );\n}\n\n/**\n * Checks whether alignment is the default one considering the direction\n * of the editor content.\n *\n * @param alignment The name of the alignment to check.\n * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n */\nexport function isDefault( alignment: string, locale: Locale ): boolean {\n\t// Right now only LTR is supported so the 'left' value is always the default one.\n\n\tif ( locale.contentLanguageDirection == 'rtl' ) {\n\t\treturn alignment === 'right';\n\t} else {\n\t\treturn alignment === 'left';\n\t}\n}\n\n/**\n * Brings the configuration to the common form, an array of objects.\n *\n * @param configuredOptions Alignment plugin configuration.\n * @returns Normalized object holding the configuration.\n */\nexport function normalizeAlignmentOptions( configuredOptions: Array<string | AlignmentFormat> ): Array<AlignmentFormat> {\n\tconst normalizedOptions = configuredOptions\n\t\t.map( option => {\n\t\t\tlet result;\n\n\t\t\tif ( typeof option == 'string' ) {\n\t\t\t\tresult = { name: option };\n\t\t\t} else {\n\t\t\t\tresult = option;\n\t\t\t}\n\n\t\t\treturn result as AlignmentFormat;\n\t\t} )\n\t\t// Remove all unknown options.\n\t\t.filter( option => {\n\t\t\tconst isNameValid = supportedOptions.includes( option.name );\n\n\t\t\tif ( !isNameValid ) {\n\t\t\t\t/**\n\t\t\t\t * The `name` in one of the `alignment.options` is not recognized.\n\t\t\t\t * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-name-not-recognized\n\t\t\t\t * @param option Options with unknown value of the `name` property.\n\t\t\t\t */\n\t\t\t\tlogWarning( 'alignment-config-name-not-recognized', { option } );\n\t\t\t}\n\n\t\t\treturn isNameValid;\n\t\t} );\n\n\tconst classNameCount = normalizedOptions.filter( option => Boolean( option.className ) ).length;\n\n\t// We either use classes for all styling options or for none.\n\tif ( classNameCount && classNameCount < normalizedOptions.length ) {\n\t\t/**\n\t\t * The `className` property has to be defined for all options once at least one option declares `className`.\n\t\t *\n\t\t * @error alignment-config-classnames-are-missing\n\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t */\n\t\tthrow new CKEditorError( 'alignment-config-classnames-are-missing', { configuredOptions } );\n\t}\n\n\t// Validate resulting config.\n\tnormalizedOptions.forEach( ( option, index, allOptions ) => {\n\t\tconst succeedingOptions = allOptions.slice( index + 1 );\n\t\tconst nameAlreadyExists = succeedingOptions.some( item => item.name == option.name );\n\n\t\tif ( nameAlreadyExists ) {\n\t\t\t/**\n\t\t\t * The same `name` in one of the `alignment.options` was already declared.\n\t\t\t * Each `name` representing one alignment option can be set exactly once.\n\t\t\t *\n\t\t\t * @error alignment-config-name-already-defined\n\t\t\t * @param option First option that declares given `name`.\n\t\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'alignment-config-name-already-defined', { option, configuredOptions } );\n\t\t}\n\n\t\t// The `className` property is present. Check for duplicates then.\n\t\tif ( option.className ) {\n\t\t\tconst classNameAlreadyExists = succeedingOptions.some( item => item.className == option.className );\n\n\t\t\tif ( classNameAlreadyExists ) {\n\t\t\t\t/**\n\t\t\t\t * The same `className` in one of the `alignment.options` was already declared.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-classname-already-defined\n\t\t\t\t * @param option First option that declares given `className`.\n\t\t\t\t * @param configuredOptions\n\t\t\t\t * Contents of `alignment.options`.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'alignment-config-classname-already-defined', { option, configuredOptions } );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn normalizedOptions;\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 alignment/alignmentcommand\n */\n\nimport { Command } from 'ckeditor5/src/core.js';\nimport { first } from 'ckeditor5/src/utils.js';\nimport type { Element, Writer } from 'ckeditor5/src/engine.js';\n\nimport { isDefault } from './utils.js';\nimport type { SupportedOption } from './alignmentconfig.js';\n\nconst ALIGNMENT = 'alignment';\n\n/**\n * The alignment command plugin.\n */\nexport default class AlignmentCommand extends Command {\n\t/**\n\t * A value of the current block's alignment.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: SupportedOption;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst firstBlock = first( this.editor.model.document.selection.getSelectedBlocks() )!;\n\n\t\t// As first check whether to enable or disable the command as the value will always be false if the command cannot be enabled.\n\t\tthis.isEnabled = Boolean( firstBlock ) && this._canBeAligned( firstBlock );\n\n\t\tif ( this.isEnabled && firstBlock.hasAttribute( 'alignment' ) ) {\n\t\t\tthis.value = firstBlock.getAttribute( 'alignment' ) as SupportedOption;\n\t\t} else {\n\t\t\tthis.value = locale.contentLanguageDirection === 'rtl' ? 'right' : 'left';\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command. Applies the alignment `value` to the selected blocks.\n\t * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,\n\t * the command will remove the attribute from the selected blocks.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.value The value to apply.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: SupportedOption } = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst model = editor.model;\n\t\tconst doc = model.document;\n\n\t\tconst value = options.value!;\n\n\t\tmodel.change( writer => {\n\t\t\t// Get only those blocks from selected that can have alignment set\n\t\t\tconst blocks = Array.from( doc.selection.getSelectedBlocks() ).filter( block => this._canBeAligned( block ) );\n\t\t\tconst currentAlignment = blocks[ 0 ].getAttribute( 'alignment' );\n\n\t\t\t// Remove alignment attribute if current alignment is:\n\t\t\t// - default (should not be stored in model as it will bloat model data)\n\t\t\t// - equal to currently set\n\t\t\t// - or no value is passed - denotes default alignment.\n\t\t\tconst removeAlignment = isDefault( value, locale ) || currentAlignment === value || !value;\n\n\t\t\tif ( removeAlignment ) {\n\t\t\t\tremoveAlignmentFromSelection( blocks, writer );\n\t\t\t} else {\n\t\t\t\tsetAlignmentOnSelection( blocks, writer, value );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether a block can have alignment set.\n\t *\n\t * @param block The block to be checked.\n\t */\n\tprivate _canBeAligned( block: Element ) {\n\t\treturn this.editor.model.schema.checkAttribute( block, ALIGNMENT );\n\t}\n}\n\n/**\n * Removes the alignment attribute from blocks.\n */\nfunction removeAlignmentFromSelection( blocks: Array<Element>, writer: Writer ) {\n\tfor ( const block of blocks ) {\n\t\twriter.removeAttribute( ALIGNMENT, block );\n\t}\n}\n\n/**\n * Sets the alignment attribute on blocks.\n */\nfunction setAlignmentOnSelection( blocks: Array<Element>, writer: Writer, alignment: string ) {\n\tfor ( const block of blocks ) {\n\t\twriter.setAttribute( ALIGNMENT, alignment, block );\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 alignment/alignmentediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport type { AttributeDescriptor } from 'ckeditor5/src/engine.js';\n\nimport AlignmentCommand from './alignmentcommand.js';\nimport { isDefault, isSupported, normalizeAlignmentOptions, supportedOptions } from './utils.js';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig.js';\n\n/**\n * The alignment editing feature. It introduces the {@link module:alignment/alignmentcommand~AlignmentCommand command} and adds\n * the `alignment` attribute for block elements in the {@link module:engine/model/model~Model model}.\n */\nexport default class AlignmentEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AlignmentEditing' 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( 'alignment', {\n\t\t\toptions: supportedOptions.map( option => ( { name: option } ) )\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 locale = editor.locale;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst options: Array<AlignmentFormat> = normalizeAlignmentOptions( editor.config.get( 'alignment.options' )! );\n\n\t\t// Filter out unsupported options and those that are redundant, e.g. `left` in LTR / `right` in RTL mode.\n\t\tconst optionsToConvert = options.filter(\n\t\t\toption => isSupported( option.name ) && !isDefault( option.name, locale )\n\t\t);\n\n\t\t// Once there is at least one `className` defined, we switch to alignment with classes.\n\t\tconst shouldUseClasses = optionsToConvert.some( option => !!option.className );\n\n\t\t// Allow alignment attribute on all blocks.\n\t\tschema.extend( '$block', { allowAttributes: 'alignment' } );\n\t\teditor.model.schema.setAttributeProperties( 'alignment', { isFormatting: true } );\n\n\t\tif ( shouldUseClasses ) {\n\t\t\teditor.conversion.attributeToAttribute( buildClassDefinition( optionsToConvert ) );\n\t\t} else {\n\t\t\t// Downcast inline styles.\n\t\t\teditor.conversion.for( 'downcast' ).attributeToAttribute( buildDowncastInlineDefinition( optionsToConvert ) );\n\t\t}\n\n\t\tconst upcastInlineDefinitions = buildUpcastInlineDefinitions( optionsToConvert );\n\n\t\t// Always upcast from inline styles.\n\t\tfor ( const definition of upcastInlineDefinitions ) {\n\t\t\teditor.conversion.for( 'upcast' ).attributeToAttribute( definition );\n\t\t}\n\n\t\tconst upcastCompatibilityDefinitions = buildUpcastCompatibilityDefinitions( optionsToConvert );\n\n\t\t// Always upcast from deprecated `align` attribute.\n\t\tfor ( const definition of upcastCompatibilityDefinitions ) {\n\t\t\teditor.conversion.for( 'upcast' ).attributeToAttribute( definition );\n\t\t}\n\n\t\teditor.commands.add( 'alignment', new AlignmentCommand( editor ) );\n\t}\n}\n\n/**\n * Prepare downcast conversion definition for inline alignment styling.\n */\nfunction buildDowncastInlineDefinition( options: Array<AlignmentFormat> ) {\n\tconst view: Record<string, { key: 'style'; value: { 'text-align': SupportedOption } }> = {};\n\n\tfor ( const { name } of options ) {\n\t\tview[ name ] = {\n\t\t\tkey: 'style',\n\t\t\tvalue: {\n\t\t\t\t'text-align': name\n\t\t\t}\n\t\t};\n\t}\n\n\tconst definition = {\n\t\tmodel: {\n\t\t\tkey: 'alignment',\n\t\t\tvalues: options.map( option => option.name )\n\t\t},\n\t\tview\n\t};\n\n\treturn definition;\n}\n\n/**\n * Prepare upcast definitions for inline alignment styles.\n */\nfunction buildUpcastInlineDefinitions( options: Array<AlignmentFormat> ) {\n\tconst definitions = [];\n\n\tfor ( const { name } of options ) {\n\t\tdefinitions.push( {\n\t\t\tview: {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'text-align': name\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'alignment',\n\t\t\t\tvalue: name\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn definitions;\n}\n\n/**\n * Prepare upcast definitions for deprecated `align` attribute.\n */\nfunction buildUpcastCompatibilityDefinitions( options: Array<AlignmentFormat> ) {\n\tconst definitions = [];\n\n\tfor ( const { name } of options ) {\n\t\tdefinitions.push( {\n\t\t\tview: {\n\t\t\t\tkey: 'align',\n\t\t\t\tvalue: name\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'alignment',\n\t\t\t\tvalue: name\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn definitions;\n}\n\n/**\n * Prepare conversion definitions for upcast and downcast alignment with classes.\n */\nfunction buildClassDefinition( options: Array<AlignmentFormat> ) {\n\tconst view: Record<string, AttributeDescriptor> = {};\n\n\tfor ( const option of options ) {\n\t\tview[ option.name ] = {\n\t\t\tkey: 'class',\n\t\t\tvalue: option.className!\n\t\t};\n\t}\n\n\tconst definition = {\n\t\tmodel: {\n\t\t\tkey: 'alignment',\n\t\t\tvalues: options.map( option => option.name )\n\t\t},\n\t\tview\n\t};\n\n\treturn definition;\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 alignment/alignmentui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core.js';\nimport {\n\ttype Button,\n\tButtonView,\n\tcreateDropdown,\n\taddToolbarToDropdown,\n\tMenuBarMenuListItemView,\n\tMenuBarMenuListItemButtonView,\n\tMenuBarMenuView,\n\tMenuBarMenuListView\n} from 'ckeditor5/src/ui.js';\nimport type { Locale } from 'ckeditor5/src/utils.js';\n\nimport { isSupported, normalizeAlignmentOptions } from './utils.js';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig.js';\nimport type AlignmentCommand from './alignmentcommand.js';\n\nconst iconsMap = new Map( [\n\t[ 'left', icons.alignLeft ],\n\t[ 'right', icons.alignRight ],\n\t[ 'center', icons.alignCenter ],\n\t[ 'justify', icons.alignJustify ]\n] );\n\n/**\n * The default alignment UI plugin.\n *\n * It introduces the `'alignment:left'`, `'alignment:right'`, `'alignment:center'` and `'alignment:justify'` buttons\n * and the `'alignment'` dropdown.\n */\nexport default class AlignmentUI extends Plugin {\n\t/**\n\t * Returns the localized option titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:\n\t *\n\t * * `'left'`,\n\t * * `'right'`,\n\t * * `'center'`,\n\t * * `'justify'`.\n\t *\n\t * @readonly\n\t */\n\tpublic get localizedOptionTitles(): Record<SupportedOption, string> {\n\t\tconst t = this.editor.t;\n\n\t\treturn {\n\t\t\t'left': t( 'Align left' ),\n\t\t\t'right': t( 'Align right' ),\n\t\t\t'center': t( 'Align center' ),\n\t\t\t'justify': t( 'Justify' )\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AlignmentUI' 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 options = normalizeAlignmentOptions( editor.config.get( 'alignment.options' )! );\n\n\t\toptions\n\t\t\t.map( option => option.name )\n\t\t\t.filter( isSupported )\n\t\t\t.forEach( option => this._addButton( option ) );\n\n\t\tthis._addToolbarDropdown( options );\n\t\tthis._addMenuBarMenu( options );\n\t}\n\n\t/**\n\t * Helper method for initializing the button and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */\n\tprivate _addButton( option: SupportedOption ): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( `alignment:${ option }`, locale => this._createButton( locale, option ) );\n\t}\n\n\t/**\n\t * Helper method for creating the button view element.\n\t *\n\t * @param locale Editor locale.\n\t * @param option The name of the alignment option for which the button is added.\n\t * @param buttonAttrs Optional parameters passed to button view instance.\n\t */\n\tprivate _createButton(\n\t\tlocale: Locale,\n\t\toption: SupportedOption,\n\t\tbuttonAttrs: Partial<Button> = {}\n\t): ButtonView {\n\t\tconst editor = this.editor;\n\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\t\tconst buttonView = new ButtonView( locale );\n\n\t\tbuttonView.set( {\n\t\t\tlabel: this.localizedOptionTitles[ option ],\n\t\t\ticon: iconsMap.get( option ),\n\t\t\ttooltip: true,\n\t\t\tisToggleable: true,\n\t\t\t...buttonAttrs\n\t\t} );\n\n\t\t// Bind button model to command.\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t\tbuttonView.bind( 'isOn' ).to( command, 'value', value => value === option );\n\n\t\t// Execute command.\n\t\tthis.listenTo( buttonView, 'execute', () => {\n\t\t\teditor.execute( 'alignment', { value: option } );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Helper method for initializing the toolnar dropdown and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */\n\tprivate _addToolbarDropdown( options: Array<AlignmentFormat> ): void {\n\t\tconst editor = this.editor;\n\t\tconst factory = editor.ui.componentFactory;\n\n\t\tfactory.add( 'alignment', locale => {\n\t\t\tconst dropdownView = createDropdown( locale );\n\t\t\tconst tooltipPosition = locale.uiLanguageDirection === 'rtl' ? 'w' : 'e';\n\t\t\tconst t = locale.t;\n\n\t\t\t// Add existing alignment buttons to dropdown's toolbar.\n\t\t\taddToolbarToDropdown(\n\t\t\t\tdropdownView,\n\t\t\t\t() => options.map( option => this._createButton( locale, option.name, { tooltipPosition } ) ) as Array<ButtonView>,\n\t\t\t\t{\n\t\t\t\t\tenableActiveItemFocusOnDropdownOpen: true,\n\t\t\t\t\tisVertical: true,\n\t\t\t\t\tariaLabel: t( 'Text alignment toolbar' )\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Configure dropdown properties an behavior.\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tlabel: t( 'Text alignment' ),\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: 'ck-alignment-dropdown'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// The default icon depends on the direction of the content.\n\t\t\tconst defaultIcon = locale.contentLanguageDirection === 'rtl' ? iconsMap.get( 'right' ) : iconsMap.get( 'left' );\n\t\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\n\t\t\t// Change icon to reflect current selection's alignment.\n\t\t\tdropdownView.buttonView.bind( 'icon' ).to( command, 'value', value => iconsMap.get( value ) || defaultIcon );\n\n\t\t\t// Enable button if any of the buttons is enabled.\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Focus the editable after executing the command.\n\t\t\t// Overrides a default behaviour where the focus is moved to the dropdown button (#12125).\n\t\t\tthis.listenTo( dropdownView, 'execute', () => {\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a menu for all alignment options to use either in menu bar.\n\t *\n\t * @param options Normalized alignment options from config.\n\t */\n\tprivate _addMenuBarMenu( options: Array<AlignmentFormat> ): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( 'menuBar:alignment', locale => {\n\t\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\t\t\tconst t = locale.t;\n\t\t\tconst menuView = new MenuBarMenuView( locale );\n\t\t\tconst listView = new MenuBarMenuListView( locale );\n\n\t\t\tmenuView.bind( 'isEnabled' ).to( command );\n\n\t\t\tlistView.set( {\n\t\t\t\tariaLabel: t( 'Text alignment' ),\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tmenuView.buttonView.set( {\n\t\t\t\tlabel: t( 'Text alignment' )\n\t\t\t} );\n\n\t\t\tfor ( const option of options ) {\n\t\t\t\tconst listItemView = new MenuBarMenuListItemView( locale, menuView );\n\t\t\t\tconst buttonView = new MenuBarMenuListItemButtonView( locale );\n\n\t\t\t\tbuttonView.extendTemplate( {\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t'aria-checked': buttonView.bindTemplate.to( 'isOn' )\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.delegate( 'execute' ).to( menuView );\n\t\t\t\tbuttonView.set( {\n\t\t\t\t\tlabel: this.localizedOptionTitles[ option.name ],\n\t\t\t\t\ticon: iconsMap.get( option.name )\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.on( 'execute', () => {\n\t\t\t\t\teditor.execute( 'alignment', { value: option.name } );\n\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.bind( 'isOn' ).to( command, 'value', value => value === option.name );\n\t\t\t\tbuttonView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t\tlistItemView.children.add( buttonView );\n\t\t\t\tlistView.items.add( listItemView );\n\t\t\t}\n\n\t\t\tmenuView.panelView.children.add( listView );\n\n\t\t\treturn menuView;\n\t\t} );\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 alignment/alignment\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport AlignmentEditing from './alignmentediting.js';\nimport AlignmentUI from './alignmentui.js';\n\n/**\n * The text alignment plugin.\n *\n * For a detailed overview, check the {@glink features/text-alignment Text alignment} feature guide\n * and the {@glink api/alignment package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:alignment/alignmentediting~AlignmentEditing} and\n * {@link module:alignment/alignmentui~AlignmentUI} plugins.\n */\nexport default class Alignment extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ AlignmentEditing, AlignmentUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Alignment' as const;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/utils.ts","../src/alignmentcommand.ts","../src/alignmentediting.ts","../src/alignmentui.ts","../src/alignment.ts"],"names":["supportedOptions","isSupported","option","includes","isDefault","alignment","locale","contentLanguageDirection","normalizeAlignmentOptions","configuredOptions","normalizedOptions","map","result","name","filter","isNameValid","logWarning","classNameCount","Boolean","className","length","CKEditorError","forEach","index","allOptions","succeedingOptions","slice","nameAlreadyExists","some","item","classNameAlreadyExists","ALIGNMENT","AlignmentCommand","Command","editor","firstBlock","first","model","document","selection","getSelectedBlocks","isEnabled","_canBeAligned","hasAttribute","value","getAttribute","execute","options","doc","change","writer","blocks","Array","from","block","currentAlignment","removeAlignment","removeAlignmentFromSelection","setAlignmentOnSelection","schema","checkAttribute","removeAttribute","setAttribute","AlignmentEditing","Plugin","pluginName","constructor","config","define","get","optionsToConvert","shouldUseClasses","extend","allowAttributes","setAttributeProperties","isFormatting","conversion","attributeToAttribute","buildClassDefinition","for","buildDowncastInlineDefinition","upcastInlineDefinitions","buildUpcastInlineDefinitions","definition","upcastCompatibilityDefinitions","buildUpcastCompatibilityDefinitions","commands","add","view","key","values","definitions","push","iconsMap","Map","icons","alignLeft","alignRight","alignCenter","alignJustify","AlignmentUI","localizedOptionTitles","t","_addButton","_addToolbarDropdown","_addMenuBarMenu","ui","componentFactory","_createButton","buttonAttrs","command","buttonView","ButtonView","set","label","icon","tooltip","isToggleable","bind","to","listenTo","editing","focus","factory","dropdownView","createDropdown","tooltipPosition","uiLanguageDirection","addToolbarToDropdown","enableActiveItemFocusOnDropdownOpen","isVertical","ariaLabel","extendTemplate","attributes","class","defaultIcon","menuView","MenuBarMenuView","listView","MenuBarMenuListView","role","listItemView","MenuBarMenuListItemView","MenuBarMenuListItemButtonView","bindTemplate","delegate","on","children","items","panelView","Alignment","requires"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin, icons } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { logWarning, CKEditorError, first } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuView, MenuBarMenuListView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView } from '@ckeditor/ckeditor5-ui/dist/index.js';\n\n/**\n * @module alignment/utils\n */ /**\n * The list of supported alignment options:\n *\n * * `'left'`,\n * * `'right'`,\n * * `'center'`,\n * * `'justify'`\n */ const supportedOptions = [\n 'left',\n 'right',\n 'center',\n 'justify'\n];\n/**\n * Checks whether the passed option is supported by {@link module:alignment/alignmentediting~AlignmentEditing}.\n *\n * @param option The option value to check.\n */ function isSupported(option) {\n return supportedOptions.includes(option);\n}\n/**\n * Checks whether alignment is the default one considering the direction\n * of the editor content.\n *\n * @param alignment The name of the alignment to check.\n * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n */ function isDefault(alignment, locale) {\n // Right now only LTR is supported so the 'left' value is always the default one.\n if (locale.contentLanguageDirection == 'rtl') {\n return alignment === 'right';\n } else {\n return alignment === 'left';\n }\n}\n/**\n * Brings the configuration to the common form, an array of objects.\n *\n * @param configuredOptions Alignment plugin configuration.\n * @returns Normalized object holding the configuration.\n */ function normalizeAlignmentOptions(configuredOptions) {\n const normalizedOptions = configuredOptions.map((option)=>{\n let result;\n if (typeof option == 'string') {\n result = {\n name: option\n };\n } else {\n result = option;\n }\n return result;\n })// Remove all unknown options.\n .filter((option)=>{\n const isNameValid = supportedOptions.includes(option.name);\n if (!isNameValid) {\n /**\n\t\t\t\t * The `name` in one of the `alignment.options` is not recognized.\n\t\t\t\t * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-name-not-recognized\n\t\t\t\t * @param option Options with unknown value of the `name` property.\n\t\t\t\t */ logWarning('alignment-config-name-not-recognized', {\n option\n });\n }\n return isNameValid;\n });\n const classNameCount = normalizedOptions.filter((option)=>Boolean(option.className)).length;\n // We either use classes for all styling options or for none.\n if (classNameCount && classNameCount < normalizedOptions.length) {\n /**\n\t\t * The `className` property has to be defined for all options once at least one option declares `className`.\n\t\t *\n\t\t * @error alignment-config-classnames-are-missing\n\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t */ throw new CKEditorError('alignment-config-classnames-are-missing', {\n configuredOptions\n });\n }\n // Validate resulting config.\n normalizedOptions.forEach((option, index, allOptions)=>{\n const succeedingOptions = allOptions.slice(index + 1);\n const nameAlreadyExists = succeedingOptions.some((item)=>item.name == option.name);\n if (nameAlreadyExists) {\n /**\n\t\t\t * The same `name` in one of the `alignment.options` was already declared.\n\t\t\t * Each `name` representing one alignment option can be set exactly once.\n\t\t\t *\n\t\t\t * @error alignment-config-name-already-defined\n\t\t\t * @param option First option that declares given `name`.\n\t\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t\t */ throw new CKEditorError('alignment-config-name-already-defined', {\n option,\n configuredOptions\n });\n }\n // The `className` property is present. Check for duplicates then.\n if (option.className) {\n const classNameAlreadyExists = succeedingOptions.some((item)=>item.className == option.className);\n if (classNameAlreadyExists) {\n /**\n\t\t\t\t * The same `className` in one of the `alignment.options` was already declared.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-classname-already-defined\n\t\t\t\t * @param option First option that declares given `className`.\n\t\t\t\t * @param configuredOptions\n\t\t\t\t * Contents of `alignment.options`.\n\t\t\t\t */ throw new CKEditorError('alignment-config-classname-already-defined', {\n option,\n configuredOptions\n });\n }\n }\n });\n return normalizedOptions;\n}\n\nconst ALIGNMENT = 'alignment';\n/**\n * The alignment command plugin.\n */ class AlignmentCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const editor = this.editor;\n const locale = editor.locale;\n const firstBlock = first(this.editor.model.document.selection.getSelectedBlocks());\n // As first check whether to enable or disable the command as the value will always be false if the command cannot be enabled.\n this.isEnabled = Boolean(firstBlock) && this._canBeAligned(firstBlock);\n if (this.isEnabled && firstBlock.hasAttribute('alignment')) {\n this.value = firstBlock.getAttribute('alignment');\n } else {\n this.value = locale.contentLanguageDirection === 'rtl' ? 'right' : 'left';\n }\n }\n /**\n\t * Executes the command. Applies the alignment `value` to the selected blocks.\n\t * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,\n\t * the command will remove the attribute from the selected blocks.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.value The value to apply.\n\t * @fires execute\n\t */ execute(options = {}) {\n const editor = this.editor;\n const locale = editor.locale;\n const model = editor.model;\n const doc = model.document;\n const value = options.value;\n model.change((writer)=>{\n // Get only those blocks from selected that can have alignment set\n const blocks = Array.from(doc.selection.getSelectedBlocks()).filter((block)=>this._canBeAligned(block));\n const currentAlignment = blocks[0].getAttribute('alignment');\n // Remove alignment attribute if current alignment is:\n // - default (should not be stored in model as it will bloat model data)\n // - equal to currently set\n // - or no value is passed - denotes default alignment.\n const removeAlignment = isDefault(value, locale) || currentAlignment === value || !value;\n if (removeAlignment) {\n removeAlignmentFromSelection(blocks, writer);\n } else {\n setAlignmentOnSelection(blocks, writer, value);\n }\n });\n }\n /**\n\t * Checks whether a block can have alignment set.\n\t *\n\t * @param block The block to be checked.\n\t */ _canBeAligned(block) {\n return this.editor.model.schema.checkAttribute(block, ALIGNMENT);\n }\n}\n/**\n * Removes the alignment attribute from blocks.\n */ function removeAlignmentFromSelection(blocks, writer) {\n for (const block of blocks){\n writer.removeAttribute(ALIGNMENT, block);\n }\n}\n/**\n * Sets the alignment attribute on blocks.\n */ function setAlignmentOnSelection(blocks, writer, alignment) {\n for (const block of blocks){\n writer.setAttribute(ALIGNMENT, alignment, block);\n }\n}\n\n/**\n * The alignment editing feature. It introduces the {@link module:alignment/alignmentcommand~AlignmentCommand command} and adds\n * the `alignment` attribute for block elements in the {@link module:engine/model/model~Model model}.\n */ class AlignmentEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'AlignmentEditing';\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('alignment', {\n options: supportedOptions.map((option)=>({\n name: option\n }))\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const locale = editor.locale;\n const schema = editor.model.schema;\n const options = normalizeAlignmentOptions(editor.config.get('alignment.options'));\n // Filter out unsupported options and those that are redundant, e.g. `left` in LTR / `right` in RTL mode.\n const optionsToConvert = options.filter((option)=>isSupported(option.name) && !isDefault(option.name, locale));\n // Once there is at least one `className` defined, we switch to alignment with classes.\n const shouldUseClasses = optionsToConvert.some((option)=>!!option.className);\n // Allow alignment attribute on all blocks.\n schema.extend('$block', {\n allowAttributes: 'alignment'\n });\n editor.model.schema.setAttributeProperties('alignment', {\n isFormatting: true\n });\n if (shouldUseClasses) {\n editor.conversion.attributeToAttribute(buildClassDefinition(optionsToConvert));\n } else {\n // Downcast inline styles.\n editor.conversion.for('downcast').attributeToAttribute(buildDowncastInlineDefinition(optionsToConvert));\n }\n const upcastInlineDefinitions = buildUpcastInlineDefinitions(optionsToConvert);\n // Always upcast from inline styles.\n for (const definition of upcastInlineDefinitions){\n editor.conversion.for('upcast').attributeToAttribute(definition);\n }\n const upcastCompatibilityDefinitions = buildUpcastCompatibilityDefinitions(optionsToConvert);\n // Always upcast from deprecated `align` attribute.\n for (const definition of upcastCompatibilityDefinitions){\n editor.conversion.for('upcast').attributeToAttribute(definition);\n }\n editor.commands.add('alignment', new AlignmentCommand(editor));\n }\n}\n/**\n * Prepare downcast conversion definition for inline alignment styling.\n */ function buildDowncastInlineDefinition(options) {\n const view = {};\n for (const { name } of options){\n view[name] = {\n key: 'style',\n value: {\n 'text-align': name\n }\n };\n }\n const definition = {\n model: {\n key: 'alignment',\n values: options.map((option)=>option.name)\n },\n view\n };\n return definition;\n}\n/**\n * Prepare upcast definitions for inline alignment styles.\n */ function buildUpcastInlineDefinitions(options) {\n const definitions = [];\n for (const { name } of options){\n definitions.push({\n view: {\n key: 'style',\n value: {\n 'text-align': name\n }\n },\n model: {\n key: 'alignment',\n value: name\n }\n });\n }\n return definitions;\n}\n/**\n * Prepare upcast definitions for deprecated `align` attribute.\n */ function buildUpcastCompatibilityDefinitions(options) {\n const definitions = [];\n for (const { name } of options){\n definitions.push({\n view: {\n key: 'align',\n value: name\n },\n model: {\n key: 'alignment',\n value: name\n }\n });\n }\n return definitions;\n}\n/**\n * Prepare conversion definitions for upcast and downcast alignment with classes.\n */ function buildClassDefinition(options) {\n const view = {};\n for (const option of options){\n view[option.name] = {\n key: 'class',\n value: option.className\n };\n }\n const definition = {\n model: {\n key: 'alignment',\n values: options.map((option)=>option.name)\n },\n view\n };\n return definition;\n}\n\nconst iconsMap = /* #__PURE__ */ (()=>new Map([\n [\n 'left',\n icons.alignLeft\n ],\n [\n 'right',\n icons.alignRight\n ],\n [\n 'center',\n icons.alignCenter\n ],\n [\n 'justify',\n icons.alignJustify\n ]\n ]))();\n/**\n * The default alignment UI plugin.\n *\n * It introduces the `'alignment:left'`, `'alignment:right'`, `'alignment:center'` and `'alignment:justify'` buttons\n * and the `'alignment'` dropdown.\n */ class AlignmentUI extends Plugin {\n /**\n\t * Returns the localized option titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:\n\t *\n\t * * `'left'`,\n\t * * `'right'`,\n\t * * `'center'`,\n\t * * `'justify'`.\n\t *\n\t * @readonly\n\t */ get localizedOptionTitles() {\n const t = this.editor.t;\n return {\n 'left': t('Align left'),\n 'right': t('Align right'),\n 'center': t('Align center'),\n 'justify': t('Justify')\n };\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'AlignmentUI';\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const options = normalizeAlignmentOptions(editor.config.get('alignment.options'));\n options.map((option)=>option.name).filter(isSupported).forEach((option)=>this._addButton(option));\n this._addToolbarDropdown(options);\n this._addMenuBarMenu(options);\n }\n /**\n\t * Helper method for initializing the button and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */ _addButton(option) {\n const editor = this.editor;\n editor.ui.componentFactory.add(`alignment:${option}`, (locale)=>this._createButton(locale, option));\n }\n /**\n\t * Helper method for creating the button view element.\n\t *\n\t * @param locale Editor locale.\n\t * @param option The name of the alignment option for which the button is added.\n\t * @param buttonAttrs Optional parameters passed to button view instance.\n\t */ _createButton(locale, option, buttonAttrs = {}) {\n const editor = this.editor;\n const command = editor.commands.get('alignment');\n const buttonView = new ButtonView(locale);\n buttonView.set({\n label: this.localizedOptionTitles[option],\n icon: iconsMap.get(option),\n tooltip: true,\n isToggleable: true,\n ...buttonAttrs\n });\n // Bind button model to command.\n buttonView.bind('isEnabled').to(command);\n buttonView.bind('isOn').to(command, 'value', (value)=>value === option);\n // Execute command.\n this.listenTo(buttonView, 'execute', ()=>{\n editor.execute('alignment', {\n value: option\n });\n editor.editing.view.focus();\n });\n return buttonView;\n }\n /**\n\t * Helper method for initializing the toolnar dropdown and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */ _addToolbarDropdown(options) {\n const editor = this.editor;\n const factory = editor.ui.componentFactory;\n factory.add('alignment', (locale)=>{\n const dropdownView = createDropdown(locale);\n const tooltipPosition = locale.uiLanguageDirection === 'rtl' ? 'w' : 'e';\n const t = locale.t;\n // Add existing alignment buttons to dropdown's toolbar.\n addToolbarToDropdown(dropdownView, ()=>options.map((option)=>this._createButton(locale, option.name, {\n tooltipPosition\n })), {\n enableActiveItemFocusOnDropdownOpen: true,\n isVertical: true,\n ariaLabel: t('Text alignment toolbar')\n });\n // Configure dropdown properties an behavior.\n dropdownView.buttonView.set({\n label: t('Text alignment'),\n tooltip: true\n });\n dropdownView.extendTemplate({\n attributes: {\n class: 'ck-alignment-dropdown'\n }\n });\n // The default icon depends on the direction of the content.\n const defaultIcon = locale.contentLanguageDirection === 'rtl' ? iconsMap.get('right') : iconsMap.get('left');\n const command = editor.commands.get('alignment');\n // Change icon to reflect current selection's alignment.\n dropdownView.buttonView.bind('icon').to(command, 'value', (value)=>iconsMap.get(value) || defaultIcon);\n // Enable button if any of the buttons is enabled.\n dropdownView.bind('isEnabled').to(command, 'isEnabled');\n // Focus the editable after executing the command.\n // Overrides a default behaviour where the focus is moved to the dropdown button (#12125).\n this.listenTo(dropdownView, 'execute', ()=>{\n editor.editing.view.focus();\n });\n return dropdownView;\n });\n }\n /**\n\t * Creates a menu for all alignment options to use either in menu bar.\n\t *\n\t * @param options Normalized alignment options from config.\n\t */ _addMenuBarMenu(options) {\n const editor = this.editor;\n editor.ui.componentFactory.add('menuBar:alignment', (locale)=>{\n const command = editor.commands.get('alignment');\n const t = locale.t;\n const menuView = new MenuBarMenuView(locale);\n const listView = new MenuBarMenuListView(locale);\n menuView.bind('isEnabled').to(command);\n listView.set({\n ariaLabel: t('Text alignment'),\n role: 'menu'\n });\n menuView.buttonView.set({\n label: t('Text alignment')\n });\n for (const option of options){\n const listItemView = new MenuBarMenuListItemView(locale, menuView);\n const buttonView = new MenuBarMenuListItemButtonView(locale);\n buttonView.extendTemplate({\n attributes: {\n 'aria-checked': buttonView.bindTemplate.to('isOn')\n }\n });\n buttonView.delegate('execute').to(menuView);\n buttonView.set({\n label: this.localizedOptionTitles[option.name],\n icon: iconsMap.get(option.name)\n });\n buttonView.on('execute', ()=>{\n editor.execute('alignment', {\n value: option.name\n });\n editor.editing.view.focus();\n });\n buttonView.bind('isOn').to(command, 'value', (value)=>value === option.name);\n buttonView.bind('isEnabled').to(command, 'isEnabled');\n listItemView.children.add(buttonView);\n listView.items.add(listItemView);\n }\n menuView.panelView.children.add(listView);\n return menuView;\n });\n }\n}\n\n/**\n * The text alignment plugin.\n *\n * For a detailed overview, check the {@glink features/text-alignment Text alignment} feature guide\n * and the {@glink api/alignment package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:alignment/alignmentediting~AlignmentEditing} and\n * {@link module:alignment/alignmentui~AlignmentUI} plugins.\n */ class Alignment extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n AlignmentEditing,\n AlignmentUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Alignment';\n }\n}\n\nexport { Alignment, AlignmentEditing, AlignmentUI };\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\nimport { CKEditorError, logWarning, type Locale } from 'ckeditor5/src/utils.js';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig.js';\n\n/**\n * @module alignment/utils\n */\n\n/**\n * The list of supported alignment options:\n *\n * * `'left'`,\n * * `'right'`,\n * * `'center'`,\n * * `'justify'`\n */\nexport const supportedOptions: ReadonlyArray<SupportedOption> = [ 'left', 'right', 'center', 'justify' ];\n\n/**\n * Checks whether the passed option is supported by {@link module:alignment/alignmentediting~AlignmentEditing}.\n *\n * @param option The option value to check.\n */\nexport function isSupported( option: string ): boolean {\n\treturn ( supportedOptions as Array<string> ).includes( option );\n}\n\n/**\n * Checks whether alignment is the default one considering the direction\n * of the editor content.\n *\n * @param alignment The name of the alignment to check.\n * @param locale The {@link module:core/editor/editor~Editor#locale} instance.\n */\nexport function isDefault( alignment: string, locale: Locale ): boolean {\n\t// Right now only LTR is supported so the 'left' value is always the default one.\n\n\tif ( locale.contentLanguageDirection == 'rtl' ) {\n\t\treturn alignment === 'right';\n\t} else {\n\t\treturn alignment === 'left';\n\t}\n}\n\n/**\n * Brings the configuration to the common form, an array of objects.\n *\n * @param configuredOptions Alignment plugin configuration.\n * @returns Normalized object holding the configuration.\n */\nexport function normalizeAlignmentOptions( configuredOptions: Array<string | AlignmentFormat> ): Array<AlignmentFormat> {\n\tconst normalizedOptions = configuredOptions\n\t\t.map( option => {\n\t\t\tlet result;\n\n\t\t\tif ( typeof option == 'string' ) {\n\t\t\t\tresult = { name: option };\n\t\t\t} else {\n\t\t\t\tresult = option;\n\t\t\t}\n\n\t\t\treturn result as AlignmentFormat;\n\t\t} )\n\t\t// Remove all unknown options.\n\t\t.filter( option => {\n\t\t\tconst isNameValid = supportedOptions.includes( option.name );\n\n\t\t\tif ( !isNameValid ) {\n\t\t\t\t/**\n\t\t\t\t * The `name` in one of the `alignment.options` is not recognized.\n\t\t\t\t * The available options are: `'left'`, `'right'`, `'center'` and `'justify'`.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-name-not-recognized\n\t\t\t\t * @param option Options with unknown value of the `name` property.\n\t\t\t\t */\n\t\t\t\tlogWarning( 'alignment-config-name-not-recognized', { option } );\n\t\t\t}\n\n\t\t\treturn isNameValid;\n\t\t} );\n\n\tconst classNameCount = normalizedOptions.filter( option => Boolean( option.className ) ).length;\n\n\t// We either use classes for all styling options or for none.\n\tif ( classNameCount && classNameCount < normalizedOptions.length ) {\n\t\t/**\n\t\t * The `className` property has to be defined for all options once at least one option declares `className`.\n\t\t *\n\t\t * @error alignment-config-classnames-are-missing\n\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t */\n\t\tthrow new CKEditorError( 'alignment-config-classnames-are-missing', { configuredOptions } );\n\t}\n\n\t// Validate resulting config.\n\tnormalizedOptions.forEach( ( option, index, allOptions ) => {\n\t\tconst succeedingOptions = allOptions.slice( index + 1 );\n\t\tconst nameAlreadyExists = succeedingOptions.some( item => item.name == option.name );\n\n\t\tif ( nameAlreadyExists ) {\n\t\t\t/**\n\t\t\t * The same `name` in one of the `alignment.options` was already declared.\n\t\t\t * Each `name` representing one alignment option can be set exactly once.\n\t\t\t *\n\t\t\t * @error alignment-config-name-already-defined\n\t\t\t * @param option First option that declares given `name`.\n\t\t\t * @param configuredOptions Contents of `alignment.options`.\n\t\t\t */\n\t\t\tthrow new CKEditorError( 'alignment-config-name-already-defined', { option, configuredOptions } );\n\t\t}\n\n\t\t// The `className` property is present. Check for duplicates then.\n\t\tif ( option.className ) {\n\t\t\tconst classNameAlreadyExists = succeedingOptions.some( item => item.className == option.className );\n\n\t\t\tif ( classNameAlreadyExists ) {\n\t\t\t\t/**\n\t\t\t\t * The same `className` in one of the `alignment.options` was already declared.\n\t\t\t\t *\n\t\t\t\t * @error alignment-config-classname-already-defined\n\t\t\t\t * @param option First option that declares given `className`.\n\t\t\t\t * @param configuredOptions\n\t\t\t\t * Contents of `alignment.options`.\n\t\t\t\t */\n\t\t\t\tthrow new CKEditorError( 'alignment-config-classname-already-defined', { option, configuredOptions } );\n\t\t\t}\n\t\t}\n\t} );\n\n\treturn normalizedOptions;\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 alignment/alignmentcommand\n */\n\nimport { Command } from 'ckeditor5/src/core.js';\nimport { first } from 'ckeditor5/src/utils.js';\nimport type { Element, Writer } from 'ckeditor5/src/engine.js';\n\nimport { isDefault } from './utils.js';\nimport type { SupportedOption } from './alignmentconfig.js';\n\nconst ALIGNMENT = 'alignment';\n\n/**\n * The alignment command plugin.\n */\nexport default class AlignmentCommand extends Command {\n\t/**\n\t * A value of the current block's alignment.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: SupportedOption;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst firstBlock = first( this.editor.model.document.selection.getSelectedBlocks() )!;\n\n\t\t// As first check whether to enable or disable the command as the value will always be false if the command cannot be enabled.\n\t\tthis.isEnabled = Boolean( firstBlock ) && this._canBeAligned( firstBlock );\n\n\t\tif ( this.isEnabled && firstBlock.hasAttribute( 'alignment' ) ) {\n\t\t\tthis.value = firstBlock.getAttribute( 'alignment' ) as SupportedOption;\n\t\t} else {\n\t\t\tthis.value = locale.contentLanguageDirection === 'rtl' ? 'right' : 'left';\n\t\t}\n\t}\n\n\t/**\n\t * Executes the command. Applies the alignment `value` to the selected blocks.\n\t * If no `value` is passed, the `value` is the default one or it is equal to the currently selected block's alignment attribute,\n\t * the command will remove the attribute from the selected blocks.\n\t *\n\t * @param options Options for the executed command.\n\t * @param options.value The value to apply.\n\t * @fires execute\n\t */\n\tpublic override execute( options: { value?: SupportedOption } = {} ): void {\n\t\tconst editor = this.editor;\n\t\tconst locale = editor.locale;\n\t\tconst model = editor.model;\n\t\tconst doc = model.document;\n\n\t\tconst value = options.value!;\n\n\t\tmodel.change( writer => {\n\t\t\t// Get only those blocks from selected that can have alignment set\n\t\t\tconst blocks = Array.from( doc.selection.getSelectedBlocks() ).filter( block => this._canBeAligned( block ) );\n\t\t\tconst currentAlignment = blocks[ 0 ].getAttribute( 'alignment' );\n\n\t\t\t// Remove alignment attribute if current alignment is:\n\t\t\t// - default (should not be stored in model as it will bloat model data)\n\t\t\t// - equal to currently set\n\t\t\t// - or no value is passed - denotes default alignment.\n\t\t\tconst removeAlignment = isDefault( value, locale ) || currentAlignment === value || !value;\n\n\t\t\tif ( removeAlignment ) {\n\t\t\t\tremoveAlignmentFromSelection( blocks, writer );\n\t\t\t} else {\n\t\t\t\tsetAlignmentOnSelection( blocks, writer, value );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Checks whether a block can have alignment set.\n\t *\n\t * @param block The block to be checked.\n\t */\n\tprivate _canBeAligned( block: Element ) {\n\t\treturn this.editor.model.schema.checkAttribute( block, ALIGNMENT );\n\t}\n}\n\n/**\n * Removes the alignment attribute from blocks.\n */\nfunction removeAlignmentFromSelection( blocks: Array<Element>, writer: Writer ) {\n\tfor ( const block of blocks ) {\n\t\twriter.removeAttribute( ALIGNMENT, block );\n\t}\n}\n\n/**\n * Sets the alignment attribute on blocks.\n */\nfunction setAlignmentOnSelection( blocks: Array<Element>, writer: Writer, alignment: string ) {\n\tfor ( const block of blocks ) {\n\t\twriter.setAttribute( ALIGNMENT, alignment, block );\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 alignment/alignmentediting\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport type { AttributeDescriptor } from 'ckeditor5/src/engine.js';\n\nimport AlignmentCommand from './alignmentcommand.js';\nimport { isDefault, isSupported, normalizeAlignmentOptions, supportedOptions } from './utils.js';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig.js';\n\n/**\n * The alignment editing feature. It introduces the {@link module:alignment/alignmentcommand~AlignmentCommand command} and adds\n * the `alignment` attribute for block elements in the {@link module:engine/model/model~Model model}.\n */\nexport default class AlignmentEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AlignmentEditing' 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( 'alignment', {\n\t\t\toptions: supportedOptions.map( option => ( { name: option } ) )\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 locale = editor.locale;\n\t\tconst schema = editor.model.schema;\n\n\t\tconst options: Array<AlignmentFormat> = normalizeAlignmentOptions( editor.config.get( 'alignment.options' )! );\n\n\t\t// Filter out unsupported options and those that are redundant, e.g. `left` in LTR / `right` in RTL mode.\n\t\tconst optionsToConvert = options.filter(\n\t\t\toption => isSupported( option.name ) && !isDefault( option.name, locale )\n\t\t);\n\n\t\t// Once there is at least one `className` defined, we switch to alignment with classes.\n\t\tconst shouldUseClasses = optionsToConvert.some( option => !!option.className );\n\n\t\t// Allow alignment attribute on all blocks.\n\t\tschema.extend( '$block', { allowAttributes: 'alignment' } );\n\t\teditor.model.schema.setAttributeProperties( 'alignment', { isFormatting: true } );\n\n\t\tif ( shouldUseClasses ) {\n\t\t\teditor.conversion.attributeToAttribute( buildClassDefinition( optionsToConvert ) );\n\t\t} else {\n\t\t\t// Downcast inline styles.\n\t\t\teditor.conversion.for( 'downcast' ).attributeToAttribute( buildDowncastInlineDefinition( optionsToConvert ) );\n\t\t}\n\n\t\tconst upcastInlineDefinitions = buildUpcastInlineDefinitions( optionsToConvert );\n\n\t\t// Always upcast from inline styles.\n\t\tfor ( const definition of upcastInlineDefinitions ) {\n\t\t\teditor.conversion.for( 'upcast' ).attributeToAttribute( definition );\n\t\t}\n\n\t\tconst upcastCompatibilityDefinitions = buildUpcastCompatibilityDefinitions( optionsToConvert );\n\n\t\t// Always upcast from deprecated `align` attribute.\n\t\tfor ( const definition of upcastCompatibilityDefinitions ) {\n\t\t\teditor.conversion.for( 'upcast' ).attributeToAttribute( definition );\n\t\t}\n\n\t\teditor.commands.add( 'alignment', new AlignmentCommand( editor ) );\n\t}\n}\n\n/**\n * Prepare downcast conversion definition for inline alignment styling.\n */\nfunction buildDowncastInlineDefinition( options: Array<AlignmentFormat> ) {\n\tconst view: Record<string, { key: 'style'; value: { 'text-align': SupportedOption } }> = {};\n\n\tfor ( const { name } of options ) {\n\t\tview[ name ] = {\n\t\t\tkey: 'style',\n\t\t\tvalue: {\n\t\t\t\t'text-align': name\n\t\t\t}\n\t\t};\n\t}\n\n\tconst definition = {\n\t\tmodel: {\n\t\t\tkey: 'alignment',\n\t\t\tvalues: options.map( option => option.name )\n\t\t},\n\t\tview\n\t};\n\n\treturn definition;\n}\n\n/**\n * Prepare upcast definitions for inline alignment styles.\n */\nfunction buildUpcastInlineDefinitions( options: Array<AlignmentFormat> ) {\n\tconst definitions = [];\n\n\tfor ( const { name } of options ) {\n\t\tdefinitions.push( {\n\t\t\tview: {\n\t\t\t\tkey: 'style',\n\t\t\t\tvalue: {\n\t\t\t\t\t'text-align': name\n\t\t\t\t}\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'alignment',\n\t\t\t\tvalue: name\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn definitions;\n}\n\n/**\n * Prepare upcast definitions for deprecated `align` attribute.\n */\nfunction buildUpcastCompatibilityDefinitions( options: Array<AlignmentFormat> ) {\n\tconst definitions = [];\n\n\tfor ( const { name } of options ) {\n\t\tdefinitions.push( {\n\t\t\tview: {\n\t\t\t\tkey: 'align',\n\t\t\t\tvalue: name\n\t\t\t},\n\t\t\tmodel: {\n\t\t\t\tkey: 'alignment',\n\t\t\t\tvalue: name\n\t\t\t}\n\t\t} );\n\t}\n\n\treturn definitions;\n}\n\n/**\n * Prepare conversion definitions for upcast and downcast alignment with classes.\n */\nfunction buildClassDefinition( options: Array<AlignmentFormat> ) {\n\tconst view: Record<string, AttributeDescriptor> = {};\n\n\tfor ( const option of options ) {\n\t\tview[ option.name ] = {\n\t\t\tkey: 'class',\n\t\t\tvalue: option.className!\n\t\t};\n\t}\n\n\tconst definition = {\n\t\tmodel: {\n\t\t\tkey: 'alignment',\n\t\t\tvalues: options.map( option => option.name )\n\t\t},\n\t\tview\n\t};\n\n\treturn definition;\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 alignment/alignmentui\n */\n\nimport { Plugin, icons } from 'ckeditor5/src/core.js';\nimport {\n\ttype Button,\n\tButtonView,\n\tcreateDropdown,\n\taddToolbarToDropdown,\n\tMenuBarMenuListItemView,\n\tMenuBarMenuListItemButtonView,\n\tMenuBarMenuView,\n\tMenuBarMenuListView\n} from 'ckeditor5/src/ui.js';\nimport type { Locale } from 'ckeditor5/src/utils.js';\n\nimport { isSupported, normalizeAlignmentOptions } from './utils.js';\nimport type { AlignmentFormat, SupportedOption } from './alignmentconfig.js';\nimport type AlignmentCommand from './alignmentcommand.js';\n\nconst iconsMap = /* #__PURE__ */ ( () => new Map( [\n\t[ 'left', icons.alignLeft ],\n\t[ 'right', icons.alignRight ],\n\t[ 'center', icons.alignCenter ],\n\t[ 'justify', icons.alignJustify ]\n] ) )();\n\n/**\n * The default alignment UI plugin.\n *\n * It introduces the `'alignment:left'`, `'alignment:right'`, `'alignment:center'` and `'alignment:justify'` buttons\n * and the `'alignment'` dropdown.\n */\nexport default class AlignmentUI extends Plugin {\n\t/**\n\t * Returns the localized option titles provided by the plugin.\n\t *\n\t * The following localized titles corresponding with\n\t * {@link module:alignment/alignmentconfig~AlignmentConfig#options} are available:\n\t *\n\t * * `'left'`,\n\t * * `'right'`,\n\t * * `'center'`,\n\t * * `'justify'`.\n\t *\n\t * @readonly\n\t */\n\tpublic get localizedOptionTitles(): Record<SupportedOption, string> {\n\t\tconst t = this.editor.t;\n\n\t\treturn {\n\t\t\t'left': t( 'Align left' ),\n\t\t\t'right': t( 'Align right' ),\n\t\t\t'center': t( 'Align center' ),\n\t\t\t'justify': t( 'Justify' )\n\t\t};\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'AlignmentUI' 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 options = normalizeAlignmentOptions( editor.config.get( 'alignment.options' )! );\n\n\t\toptions\n\t\t\t.map( option => option.name )\n\t\t\t.filter( isSupported )\n\t\t\t.forEach( option => this._addButton( option ) );\n\n\t\tthis._addToolbarDropdown( options );\n\t\tthis._addMenuBarMenu( options );\n\t}\n\n\t/**\n\t * Helper method for initializing the button and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */\n\tprivate _addButton( option: SupportedOption ): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( `alignment:${ option }`, locale => this._createButton( locale, option ) );\n\t}\n\n\t/**\n\t * Helper method for creating the button view element.\n\t *\n\t * @param locale Editor locale.\n\t * @param option The name of the alignment option for which the button is added.\n\t * @param buttonAttrs Optional parameters passed to button view instance.\n\t */\n\tprivate _createButton(\n\t\tlocale: Locale,\n\t\toption: SupportedOption,\n\t\tbuttonAttrs: Partial<Button> = {}\n\t): ButtonView {\n\t\tconst editor = this.editor;\n\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\t\tconst buttonView = new ButtonView( locale );\n\n\t\tbuttonView.set( {\n\t\t\tlabel: this.localizedOptionTitles[ option ],\n\t\t\ticon: iconsMap.get( option ),\n\t\t\ttooltip: true,\n\t\t\tisToggleable: true,\n\t\t\t...buttonAttrs\n\t\t} );\n\n\t\t// Bind button model to command.\n\t\tbuttonView.bind( 'isEnabled' ).to( command );\n\t\tbuttonView.bind( 'isOn' ).to( command, 'value', value => value === option );\n\n\t\t// Execute command.\n\t\tthis.listenTo( buttonView, 'execute', () => {\n\t\t\teditor.execute( 'alignment', { value: option } );\n\t\t\teditor.editing.view.focus();\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Helper method for initializing the toolnar dropdown and linking it with an appropriate command.\n\t *\n\t * @param option The name of the alignment option for which the button is added.\n\t */\n\tprivate _addToolbarDropdown( options: Array<AlignmentFormat> ): void {\n\t\tconst editor = this.editor;\n\t\tconst factory = editor.ui.componentFactory;\n\n\t\tfactory.add( 'alignment', locale => {\n\t\t\tconst dropdownView = createDropdown( locale );\n\t\t\tconst tooltipPosition = locale.uiLanguageDirection === 'rtl' ? 'w' : 'e';\n\t\t\tconst t = locale.t;\n\n\t\t\t// Add existing alignment buttons to dropdown's toolbar.\n\t\t\taddToolbarToDropdown(\n\t\t\t\tdropdownView,\n\t\t\t\t() => options.map( option => this._createButton( locale, option.name, { tooltipPosition } ) ) as Array<ButtonView>,\n\t\t\t\t{\n\t\t\t\t\tenableActiveItemFocusOnDropdownOpen: true,\n\t\t\t\t\tisVertical: true,\n\t\t\t\t\tariaLabel: t( 'Text alignment toolbar' )\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Configure dropdown properties an behavior.\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tlabel: t( 'Text alignment' ),\n\t\t\t\ttooltip: true\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: 'ck-alignment-dropdown'\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// The default icon depends on the direction of the content.\n\t\t\tconst defaultIcon = locale.contentLanguageDirection === 'rtl' ? iconsMap.get( 'right' ) : iconsMap.get( 'left' );\n\t\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\n\t\t\t// Change icon to reflect current selection's alignment.\n\t\t\tdropdownView.buttonView.bind( 'icon' ).to( command, 'value', value => iconsMap.get( value ) || defaultIcon );\n\n\t\t\t// Enable button if any of the buttons is enabled.\n\t\t\tdropdownView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t// Focus the editable after executing the command.\n\t\t\t// Overrides a default behaviour where the focus is moved to the dropdown button (#12125).\n\t\t\tthis.listenTo( dropdownView, 'execute', () => {\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a menu for all alignment options to use either in menu bar.\n\t *\n\t * @param options Normalized alignment options from config.\n\t */\n\tprivate _addMenuBarMenu( options: Array<AlignmentFormat> ): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.ui.componentFactory.add( 'menuBar:alignment', locale => {\n\t\t\tconst command: AlignmentCommand = editor.commands.get( 'alignment' )!;\n\t\t\tconst t = locale.t;\n\t\t\tconst menuView = new MenuBarMenuView( locale );\n\t\t\tconst listView = new MenuBarMenuListView( locale );\n\n\t\t\tmenuView.bind( 'isEnabled' ).to( command );\n\n\t\t\tlistView.set( {\n\t\t\t\tariaLabel: t( 'Text alignment' ),\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tmenuView.buttonView.set( {\n\t\t\t\tlabel: t( 'Text alignment' )\n\t\t\t} );\n\n\t\t\tfor ( const option of options ) {\n\t\t\t\tconst listItemView = new MenuBarMenuListItemView( locale, menuView );\n\t\t\t\tconst buttonView = new MenuBarMenuListItemButtonView( locale );\n\n\t\t\t\tbuttonView.extendTemplate( {\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t'aria-checked': buttonView.bindTemplate.to( 'isOn' )\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.delegate( 'execute' ).to( menuView );\n\t\t\t\tbuttonView.set( {\n\t\t\t\t\tlabel: this.localizedOptionTitles[ option.name ],\n\t\t\t\t\ticon: iconsMap.get( option.name )\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.on( 'execute', () => {\n\t\t\t\t\teditor.execute( 'alignment', { value: option.name } );\n\n\t\t\t\t\teditor.editing.view.focus();\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.bind( 'isOn' ).to( command, 'value', value => value === option.name );\n\t\t\t\tbuttonView.bind( 'isEnabled' ).to( command, 'isEnabled' );\n\n\t\t\t\tlistItemView.children.add( buttonView );\n\t\t\t\tlistView.items.add( listItemView );\n\t\t\t}\n\n\t\t\tmenuView.panelView.children.add( listView );\n\n\t\t\treturn menuView;\n\t\t} );\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 alignment/alignment\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport AlignmentEditing from './alignmentediting.js';\nimport AlignmentUI from './alignmentui.js';\n\n/**\n * The text alignment plugin.\n *\n * For a detailed overview, check the {@glink features/text-alignment Text alignment} feature guide\n * and the {@glink api/alignment package page}.\n *\n * This is a \"glue\" plugin which loads the {@link module:alignment/alignmentediting~AlignmentEditing} and\n * {@link module:alignment/alignmentui~AlignmentUI} plugins.\n */\nexport default class Alignment extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ AlignmentEditing, AlignmentUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Alignment' as const;\n\t}\n}\n"]}
@@ -35,7 +35,7 @@ export interface AlignmentConfig {
35
35
  *
36
36
  * **Note:** It is recommended to always use `'left'` or `'right'` as these are default values which the user should
37
37
  * normally be able to choose depending on the
38
- * {@glink features/ui-language#setting-the-language-of-the-content language of the editor content}.
38
+ * {@glink getting-started/setup/ui-language#setting-the-language-of-the-content language of the editor content}.
39
39
  *
40
40
  * ```ts
41
41
  * ClassicEditor
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-alignment",
3
- "version": "41.4.2",
3
+ "version": "42.0.0-alpha.0",
4
4
  "description": "Text alignment 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.0"
17
17
  },
18
18
  "author": "CKSource (http://cksource.com/)",
19
19
  "license": "GPL-2.0-or-later",
@@ -31,7 +31,7 @@ export interface AlignmentConfig {
31
31
  *
32
32
  * **Note:** It is recommended to always use `'left'` or `'right'` as these are default values which the user should
33
33
  * normally be able to choose depending on the
34
- * {@glink features/ui-language#setting-the-language-of-the-content language of the editor content}.
34
+ * {@glink getting-started/setup/ui-language#setting-the-language-of-the-content language of the editor content}.
35
35
  *
36
36
  * ```ts
37
37
  * ClassicEditor
@@ -8,12 +8,12 @@
8
8
  import { Plugin, icons } from 'ckeditor5/src/core.js';
9
9
  import { ButtonView, createDropdown, addToolbarToDropdown, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, MenuBarMenuView, MenuBarMenuListView } from 'ckeditor5/src/ui.js';
10
10
  import { isSupported, normalizeAlignmentOptions } from './utils.js';
11
- const iconsMap = new Map([
11
+ const iconsMap = /* #__PURE__ */ (() => new Map([
12
12
  ['left', icons.alignLeft],
13
13
  ['right', icons.alignRight],
14
14
  ['center', icons.alignCenter],
15
15
  ['justify', icons.alignJustify]
16
- ]);
16
+ ]))();
17
17
  /**
18
18
  * The default alignment UI plugin.
19
19
  *