@ckeditor/ckeditor5-language 45.2.1-alpha.9 → 46.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/build/language.js CHANGED
@@ -2,4 +2,4 @@
2
2
  /*!
3
3
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
4
4
  * For licensing, see LICENSE.md.
5
- */(()=>{var e={237:e=>{"use strict";e.exports=CKEditor5.dll},311:(e,t,n)=>{e.exports=n(237)("./src/ui.js")},584:(e,t,n)=>{e.exports=n(237)("./src/utils.js")},782:(e,t,n)=>{e.exports=n(237)("./src/core.js")}},t={};function n(a){var i=t[a];if(void 0!==i)return i.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},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 a={};(()=>{"use strict";n.r(a),n.d(a,{TextPartLanguage:()=>s,TextPartLanguageEditing:()=>r,TextPartLanguageUI:()=>u});var e=n(782),t=n(584);function i(e,n){return`${e}:${n=n||(0,t.getLanguageDirection)(e)}`}class o extends e.Command{refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"language")}execute({languageCode:e,textDirection:t}={}){const n=this.editor.model,a=n.document.selection,o=!!e&&i(e,t);n.change(e=>{if(a.isCollapsed)o?e.setSelectionAttribute("language",o):e.removeSelectionAttribute("language");else{const t=n.schema.getValidRanges(a.getRanges(),"language");for(const n of t)o?e.setAttribute("language",o,n):e.removeAttribute("language",n)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,n=e.document.selection;if(n.isCollapsed)return n.getAttribute("language")||!1;for(const e of n.getRanges())for(const n of e.getItems())if(t.checkAttribute(n,"language"))return n.getAttribute("language")||!1;return!1}}class r extends e.Plugin{static get pluginName(){return"TextPartLanguageEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("language",{textPartLanguage:[{title:"Arabic",languageCode:"ar"},{title:"French",languageCode:"fr"},{title:"Spanish",languageCode:"es"}]})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"language"}),e.model.schema.setAttributeProperties("language",{copyOnEnter:!0}),this._defineConverters(),e.commands.add("textPartLanguage",new o(e))}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToAttribute({model:{key:"language",value:e=>i(e.getAttribute("lang"),e.getAttribute("dir"))},view:{name:"span",attributes:{lang:/[\s\S]+/}}}),e.for("downcast").attributeToElement({model:"language",view:(e,{writer:t},n)=>{if(!e)return;if(!n.item.is("$textProxy")&&!n.item.is("documentSelection"))return;const{languageCode:a,textDirection:i}=function(e){const[t,n]=e.split(":");return{languageCode:t,textDirection:n}}(e);return t.createAttributeElement("span",{lang:a,dir:i})}})}}var g=n(311);class u extends e.Plugin{static get pluginName(){return"TextPartLanguageUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,n=t("Choose language"),a=t("Language");e.ui.componentFactory.add("textPartLanguage",t=>{const{definitions:i,titles:o}=this._getItemMetadata(),r=e.commands.get("textPartLanguage"),u=(0,g.createDropdown)(t);return(0,g.addListToDropdown)(u,i,{ariaLabel:a,role:"menu"}),u.buttonView.set({ariaLabel:a,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:a}),u.extendTemplate({attributes:{class:["ck-text-fragment-language-dropdown"]}}),u.bind("isEnabled").to(r,"isEnabled"),u.buttonView.bind("label").to(r,"value",e=>e&&o[e]||n),u.buttonView.bind("ariaLabel").to(r,"value",e=>{const t=e&&o[e];return t?`${t}, ${a}`:a}),this.listenTo(u,"execute",t=>{r.execute({languageCode:t.source.languageCode,textDirection:t.source.textDirection}),e.editing.view.focus()}),u}),e.ui.componentFactory.add("menuBar:textPartLanguage",n=>{const{definitions:i}=this._getItemMetadata(),o=e.commands.get("textPartLanguage"),r=new g.MenuBarMenuView(n);r.buttonView.set({label:a});const u=new g.MenuBarMenuListView(n);u.set({ariaLabel:t("Language"),role:"menu"});for(const e of i){if("button"!=e.type){u.items.add(new g.ListSeparatorView(n));continue}const t=new g.MenuBarMenuListItemView(n,r),a=new g.MenuBarMenuListItemButtonView(n);a.set({role:"menuitemradio",isToggleable:!0}),a.bind(...Object.keys(e.model)).to(e.model),a.delegate("execute").to(r),t.children.add(a),u.items.add(t)}return r.bind("isEnabled").to(o,"isEnabled"),r.panelView.children.add(u),r.on("execute",t=>{o.execute({languageCode:t.source.languageCode,textDirection:t.source.textDirection}),e.editing.view.focus()}),r})}_getItemMetadata(){const e=this.editor,n=new t.Collection,a={},o=e.commands.get("textPartLanguage"),r=e.config.get("language.textPartLanguage"),u=(0,e.locale.t)("Remove language");n.add({type:"button",model:new g.ViewModel({label:u,languageCode:!1,withText:!0})}),n.add({type:"separator"});for(const e of r){const t={type:"button",model:new g.ViewModel({label:e.title,languageCode:e.languageCode,role:"menuitemradio",textDirection:e.textDirection,withText:!0})},r=i(e.languageCode,e.textDirection);t.model.bind("isOn").to(o,"value",e=>e===r),n.add(t),a[r]=e.title}return{definitions:n,titles:a}}}class s extends e.Plugin{static get requires(){return[r,u]}static get pluginName(){return"TextPartLanguage"}static get isOfficialPlugin(){return!0}}})(),(window.CKEditor5=window.CKEditor5||{}).language=a})();
5
+ */(()=>{var e={237:e=>{"use strict";e.exports=CKEditor5.dll},311:(e,t,a)=>{e.exports=a(237)("./src/ui.js")},584:(e,t,a)=>{e.exports=a(237)("./src/utils.js")},782:(e,t,a)=>{e.exports=a(237)("./src/core.js")}},t={};function a(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,a),o.exports}a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};(()=>{"use strict";a.r(n),a.d(n,{TextPartLanguage:()=>l,TextPartLanguageCommand:()=>r,TextPartLanguageEditing:()=>g,TextPartLanguageUI:()=>s,_parseLanguageAttribute:()=>o,_stringifyLanguageAttribute:()=>i});var e=a(782),t=a(584);function i(e,a){return`${e}:${a=a||(0,t.getLanguageDirection)(e)}`}function o(e){const[t,a]=e.split(":");return{languageCode:t,textDirection:a}}class r extends e.Command{refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"language")}execute({languageCode:e,textDirection:t}={}){const a=this.editor.model,n=a.document.selection,o=!!e&&i(e,t);a.change(e=>{if(n.isCollapsed)o?e.setSelectionAttribute("language",o):e.removeSelectionAttribute("language");else{const t=a.schema.getValidRanges(n.getRanges(),"language");for(const a of t)o?e.setAttribute("language",o,a):e.removeAttribute("language",a)}})}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,a=e.document.selection;if(a.isCollapsed)return a.getAttribute("language")||!1;for(const e of a.getRanges())for(const a of e.getItems())if(t.checkAttribute(a,"language"))return a.getAttribute("language")||!1;return!1}}class g extends e.Plugin{static get pluginName(){return"TextPartLanguageEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("language",{textPartLanguage:[{title:"Arabic",languageCode:"ar"},{title:"French",languageCode:"fr"},{title:"Spanish",languageCode:"es"}]})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"language"}),e.model.schema.setAttributeProperties("language",{copyOnEnter:!0}),this._defineConverters(),e.commands.add("textPartLanguage",new r(e))}_defineConverters(){const e=this.editor.conversion;e.for("upcast").elementToAttribute({model:{key:"language",value:e=>i(e.getAttribute("lang"),e.getAttribute("dir"))},view:{name:"span",attributes:{lang:/[\s\S]+/}}}),e.for("downcast").attributeToElement({model:"language",view:(e,{writer:t},a)=>{if(!e)return;if(!a.item.is("$textProxy")&&!a.item.is("documentSelection"))return;const{languageCode:n,textDirection:i}=o(e);return t.createAttributeElement("span",{lang:n,dir:i})}})}}var u=a(311);class s extends e.Plugin{static get pluginName(){return"TextPartLanguageUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,a=t("Choose language"),n=t("Language");e.ui.componentFactory.add("textPartLanguage",t=>{const{definitions:i,titles:o}=this._getItemMetadata(),r=e.commands.get("textPartLanguage"),g=(0,u.createDropdown)(t);return(0,u.addListToDropdown)(g,i,{ariaLabel:n,role:"menu"}),g.buttonView.set({ariaLabel:n,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:n}),g.extendTemplate({attributes:{class:["ck-text-fragment-language-dropdown"]}}),g.bind("isEnabled").to(r,"isEnabled"),g.buttonView.bind("label").to(r,"value",e=>e&&o[e]||a),g.buttonView.bind("ariaLabel").to(r,"value",e=>{const t=e&&o[e];return t?`${t}, ${n}`:n}),this.listenTo(g,"execute",t=>{r.execute({languageCode:t.source.languageCode,textDirection:t.source.textDirection}),e.editing.view.focus()}),g}),e.ui.componentFactory.add("menuBar:textPartLanguage",a=>{const{definitions:i}=this._getItemMetadata(),o=e.commands.get("textPartLanguage"),r=new u.MenuBarMenuView(a);r.buttonView.set({label:n});const g=new u.MenuBarMenuListView(a);g.set({ariaLabel:t("Language"),role:"menu"});for(const e of i){if("button"!=e.type){g.items.add(new u.ListSeparatorView(a));continue}const t=new u.MenuBarMenuListItemView(a,r),n=new u.MenuBarMenuListItemButtonView(a);n.set({role:"menuitemradio",isToggleable:!0}),n.bind(...Object.keys(e.model)).to(e.model),n.delegate("execute").to(r),t.children.add(n),g.items.add(t)}return r.bind("isEnabled").to(o,"isEnabled"),r.panelView.children.add(g),r.on("execute",t=>{o.execute({languageCode:t.source.languageCode,textDirection:t.source.textDirection}),e.editing.view.focus()}),r})}_getItemMetadata(){const e=this.editor,a=new t.Collection,n={},o=e.commands.get("textPartLanguage"),r=e.config.get("language.textPartLanguage"),g=(0,e.locale.t)("Remove language");a.add({type:"button",model:new u.UIModel({label:g,languageCode:!1,withText:!0})}),a.add({type:"separator"});for(const e of r){const t={type:"button",model:new u.UIModel({label:e.title,languageCode:e.languageCode,role:"menuitemradio",textDirection:e.textDirection,withText:!0})},r=i(e.languageCode,e.textDirection);t.model.bind("isOn").to(o,"value",e=>e===r),a.add(t),n[r]=e.title}return{definitions:a,titles:n}}}class l extends e.Plugin{static get requires(){return[g,s]}static get pluginName(){return"TextPartLanguage"}static get isOfficialPlugin(){return!0}}})(),(window.CKEditor5=window.CKEditor5||{}).language=n})();
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';
6
6
  import { getLanguageDirection, Collection } from '@ckeditor/ckeditor5-utils/dist/index.js';
7
- import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView, ListSeparatorView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, ViewModel } from '@ckeditor/ckeditor5-ui/dist/index.js';
7
+ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView, ListSeparatorView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, UIModel } from '@ckeditor/ckeditor5-ui/dist/index.js';
8
8
 
9
9
  /**
10
10
  * Returns the language attribute value in a human-readable text format:
@@ -23,6 +23,7 @@ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView
23
23
  *
24
24
  * @param languageCode The language code in the ISO 639-1 format.
25
25
  * @param textDirection The language text direction. Automatically detected if omitted.
26
+ * @internal
26
27
  */ function stringifyLanguageAttribute(languageCode, textDirection) {
27
28
  textDirection = textDirection || getLanguageDirection(languageCode);
28
29
  return `${languageCode}:${textDirection}`;
@@ -31,6 +32,7 @@ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView
31
32
  * Retrieves language properties converted to attribute value by the
32
33
  * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.
33
34
  *
35
+ * @internal
34
36
  * @param str The attribute value.
35
37
  * @returns The object with properties:
36
38
  * * languageCode - The language code in the ISO 639 format.
@@ -60,12 +62,12 @@ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView
60
62
  * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set
61
63
  * the attribute in the `{@link #value value}` format.
62
64
  *
63
- * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}:
65
+ * The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:
64
66
  *
65
67
  * * If the selection is on a range, the command applies the attribute to all nodes in that range
66
- * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}).
68
+ * (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).
67
69
  * * If the selection is collapsed in a non-empty node, the command applies the attribute to the
68
- * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection).
70
+ * {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).
69
71
  * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note
70
72
  * that the selection inherits all attributes from a node if it is in an empty node).
71
73
  *
@@ -331,7 +333,7 @@ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView
331
333
  // Item definition with false `languageCode` will behave as remove lang button.
332
334
  itemDefinitions.add({
333
335
  type: 'button',
334
- model: new ViewModel({
336
+ model: new UIModel({
335
337
  label: removeTitle,
336
338
  languageCode: false,
337
339
  withText: true
@@ -343,7 +345,7 @@ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView
343
345
  for (const option of options){
344
346
  const def = {
345
347
  type: 'button',
346
- model: new ViewModel({
348
+ model: new UIModel({
347
349
  label: option.title,
348
350
  languageCode: option.languageCode,
349
351
  role: 'menuitemradio',
@@ -398,5 +400,5 @@ import { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView
398
400
  }
399
401
  }
400
402
 
401
- export { TextPartLanguage, TextPartLanguageEditing, TextPartLanguageUI };
403
+ export { TextPartLanguage, TextPartLanguageCommand, TextPartLanguageEditing, TextPartLanguageUI, parseLanguageAttribute as _parseLanguageAttribute, stringifyLanguageAttribute as _stringifyLanguageAttribute };
402
404
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/utils.ts","../src/textpartlanguagecommand.ts","../src/textpartlanguageediting.ts","../src/textpartlanguageui.ts","../src/textpartlanguage.ts"],"names":["stringifyLanguageAttribute","languageCode","textDirection","getLanguageDirection","parseLanguageAttribute","str","split","TextPartLanguageCommand","Command","refresh","model","editor","doc","document","value","_getValueFromFirstAllowedNode","isEnabled","schema","checkAttributeInSelection","selection","execute","change","writer","isCollapsed","setSelectionAttribute","removeSelectionAttribute","ranges","getValidRanges","getRanges","range","setAttribute","removeAttribute","getAttribute","item","getItems","checkAttribute","TextPartLanguageEditing","Plugin","pluginName","isOfficialPlugin","config","define","textPartLanguage","title","init","extend","allowAttributes","setAttributeProperties","copyOnEnter","_defineConverters","commands","add","conversion","for","elementToAttribute","key","viewElement","view","name","attributes","lang","attributeToElement","attributeValue","data","is","createAttributeElement","dir","TextPartLanguageUI","t","defaultTitle","accessibleLabel","ui","componentFactory","locale","definitions","titles","_getItemMetadata","languageCommand","get","dropdownView","createDropdown","addListToDropdown","ariaLabel","role","buttonView","set","ariaLabelledBy","undefined","isOn","withText","tooltip","extendTemplate","class","bind","to","selectedLanguageTitle","listenTo","evt","source","editing","focus","menuView","MenuBarMenuView","label","listView","MenuBarMenuListView","definition","type","items","ListSeparatorView","listItemView","MenuBarMenuListItemView","MenuBarMenuListItemButtonView","isToggleable","Object","keys","delegate","children","panelView","on","itemDefinitions","Collection","options","removeTitle","ViewModel","option","def","language","TextPartLanguage","requires"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { getLanguageDirection, Collection } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView, ListSeparatorView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, ViewModel } from '@ckeditor/ckeditor5-ui/dist/index.js';\n\n/**\n * Returns the language attribute value in a human-readable text format:\n *\n * ```\n * <languageCode>:<textDirection>\n * ```\n *\n * * `languageCode` - The language code used for the `lang` attribute in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n * * `textDirection` - One of the following values: `rtl` or `ltr`, indicating the reading direction of the language.\n *\n * See the {@link module:core/editor/editorconfig~LanguageConfig#textPartLanguage text part language configuration}\n * for more information about language properties.\n *\n * If the `textDirection` argument is omitted, it will be automatically detected based on `languageCode`.\n *\n * @param languageCode The language code in the ISO 639-1 format.\n * @param textDirection The language text direction. Automatically detected if omitted.\n */ function stringifyLanguageAttribute(languageCode, textDirection) {\n textDirection = textDirection || getLanguageDirection(languageCode);\n return `${languageCode}:${textDirection}`;\n}\n/**\n * Retrieves language properties converted to attribute value by the\n * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.\n *\n * @param str The attribute value.\n * @returns The object with properties:\n * * languageCode - The language code in the ISO 639 format.\n * * textDirection - The language text direction.\n */ function parseLanguageAttribute(str) {\n const [languageCode, textDirection] = str.split(':');\n return {\n languageCode,\n textDirection\n };\n}\n\n/**\n * The text part language command plugin.\n */ class TextPartLanguageCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n const doc = model.document;\n this.value = this._getValueFromFirstAllowedNode();\n this.isEnabled = model.schema.checkAttributeInSelection(doc.selection, 'language');\n }\n /**\n\t * Executes the command. Applies the attribute to the selection or removes it from the selection.\n\t *\n\t * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set\n\t * the attribute in the `{@link #value value}` format.\n\t *\n\t * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}:\n\t *\n\t * * If the selection is on a range, the command applies the attribute to all nodes in that range\n\t * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}).\n\t * * If the selection is collapsed in a non-empty node, the command applies the attribute to the\n\t * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection).\n\t * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note\n\t * that the selection inherits all attributes from a node if it is in an empty node).\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.languageCode The language code to be applied to the model.\n\t * @param options.textDirection The language text direction.\n\t */ execute({ languageCode, textDirection } = {}) {\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const value = languageCode ? stringifyLanguageAttribute(languageCode, textDirection) : false;\n model.change((writer)=>{\n if (selection.isCollapsed) {\n if (value) {\n writer.setSelectionAttribute('language', value);\n } else {\n writer.removeSelectionAttribute('language');\n }\n } else {\n const ranges = model.schema.getValidRanges(selection.getRanges(), 'language');\n for (const range of ranges){\n if (value) {\n writer.setAttribute('language', value, range);\n } else {\n writer.removeAttribute('language', range);\n }\n }\n }\n });\n }\n /**\n\t * Returns the attribute value of the first node in the selection that allows the attribute.\n\t * For a collapsed selection it returns the selection attribute.\n\t *\n\t * @returns The attribute value.\n\t */ _getValueFromFirstAllowedNode() {\n const model = this.editor.model;\n const schema = model.schema;\n const selection = model.document.selection;\n if (selection.isCollapsed) {\n return selection.getAttribute('language') || false;\n }\n for (const range of selection.getRanges()){\n for (const item of range.getItems()){\n if (schema.checkAttribute(item, 'language')) {\n return item.getAttribute('language') || false;\n }\n }\n }\n return false;\n }\n}\n\n/**\n * The text part language editing.\n *\n * Introduces the `'textPartLanguage'` command and the `'language'` model element attribute.\n */ class TextPartLanguageEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextPartLanguageEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n // Text part language options are only used to ensure that the feature works by default.\n // In the real usage it should be reconfigured by a developer. We are not providing\n // translations for `title` properties on purpose, as it's only an example configuration.\n editor.config.define('language', {\n textPartLanguage: [\n {\n title: 'Arabic',\n languageCode: 'ar'\n },\n {\n title: 'French',\n languageCode: 'fr'\n },\n {\n title: 'Spanish',\n languageCode: 'es'\n }\n ]\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n editor.model.schema.extend('$text', {\n allowAttributes: 'language'\n });\n editor.model.schema.setAttributeProperties('language', {\n copyOnEnter: true\n });\n this._defineConverters();\n editor.commands.add('textPartLanguage', new TextPartLanguageCommand(editor));\n }\n /**\n\t * @private\n\t */ _defineConverters() {\n const conversion = this.editor.conversion;\n conversion.for('upcast').elementToAttribute({\n model: {\n key: 'language',\n value: (viewElement)=>{\n const languageCode = viewElement.getAttribute('lang');\n const textDirection = viewElement.getAttribute('dir');\n return stringifyLanguageAttribute(languageCode, textDirection);\n }\n },\n view: {\n name: 'span',\n attributes: {\n lang: /[\\s\\S]+/\n }\n }\n });\n conversion.for('downcast').attributeToElement({\n model: 'language',\n view: (attributeValue, { writer }, data)=>{\n if (!attributeValue) {\n return;\n }\n if (!data.item.is('$textProxy') && !data.item.is('documentSelection')) {\n return;\n }\n const { languageCode, textDirection } = parseLanguageAttribute(attributeValue);\n return writer.createAttributeElement('span', {\n lang: languageCode,\n dir: textDirection\n });\n }\n });\n }\n}\n\n/**\n * The text part language UI plugin.\n *\n * It introduces the `'language'` dropdown.\n */ class TextPartLanguageUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextPartLanguageUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const t = editor.t;\n const defaultTitle = t('Choose language');\n const accessibleLabel = t('Language');\n // Register UI component.\n editor.ui.componentFactory.add('textPartLanguage', (locale)=>{\n const { definitions, titles } = this._getItemMetadata();\n const languageCommand = editor.commands.get('textPartLanguage');\n const dropdownView = createDropdown(locale);\n addListToDropdown(dropdownView, definitions, {\n ariaLabel: accessibleLabel,\n role: 'menu'\n });\n dropdownView.buttonView.set({\n ariaLabel: accessibleLabel,\n ariaLabelledBy: undefined,\n isOn: false,\n withText: true,\n tooltip: accessibleLabel\n });\n dropdownView.extendTemplate({\n attributes: {\n class: [\n 'ck-text-fragment-language-dropdown'\n ]\n }\n });\n dropdownView.bind('isEnabled').to(languageCommand, 'isEnabled');\n dropdownView.buttonView.bind('label').to(languageCommand, 'value', (value)=>{\n return value && titles[value] || defaultTitle;\n });\n dropdownView.buttonView.bind('ariaLabel').to(languageCommand, 'value', (value)=>{\n const selectedLanguageTitle = value && titles[value];\n if (!selectedLanguageTitle) {\n return accessibleLabel;\n }\n return `${selectedLanguageTitle}, ${accessibleLabel}`;\n });\n // Execute command when an item from the dropdown is selected.\n this.listenTo(dropdownView, 'execute', (evt)=>{\n languageCommand.execute({\n languageCode: evt.source.languageCode,\n textDirection: evt.source.textDirection\n });\n editor.editing.view.focus();\n });\n return dropdownView;\n });\n // Register menu bar UI component.\n editor.ui.componentFactory.add('menuBar:textPartLanguage', (locale)=>{\n const { definitions } = this._getItemMetadata();\n const languageCommand = editor.commands.get('textPartLanguage');\n const menuView = new MenuBarMenuView(locale);\n menuView.buttonView.set({\n label: accessibleLabel\n });\n const listView = new MenuBarMenuListView(locale);\n listView.set({\n ariaLabel: t('Language'),\n role: 'menu'\n });\n for (const definition of definitions){\n if (definition.type != 'button') {\n listView.items.add(new ListSeparatorView(locale));\n continue;\n }\n const listItemView = new MenuBarMenuListItemView(locale, menuView);\n const buttonView = new MenuBarMenuListItemButtonView(locale);\n buttonView.set({\n role: 'menuitemradio',\n isToggleable: true\n });\n buttonView.bind(...Object.keys(definition.model)).to(definition.model);\n buttonView.delegate('execute').to(menuView);\n listItemView.children.add(buttonView);\n listView.items.add(listItemView);\n }\n menuView.bind('isEnabled').to(languageCommand, 'isEnabled');\n menuView.panelView.children.add(listView);\n menuView.on('execute', (evt)=>{\n languageCommand.execute({\n languageCode: evt.source.languageCode,\n textDirection: evt.source.textDirection\n });\n editor.editing.view.focus();\n });\n return menuView;\n });\n }\n /**\n\t * Returns metadata for dropdown and menu items.\n\t */ _getItemMetadata() {\n const editor = this.editor;\n const itemDefinitions = new Collection();\n const titles = {};\n const languageCommand = editor.commands.get('textPartLanguage');\n const options = editor.config.get('language.textPartLanguage');\n const t = editor.locale.t;\n const removeTitle = t('Remove language');\n // Item definition with false `languageCode` will behave as remove lang button.\n itemDefinitions.add({\n type: 'button',\n model: new ViewModel({\n label: removeTitle,\n languageCode: false,\n withText: true\n })\n });\n itemDefinitions.add({\n type: 'separator'\n });\n for (const option of options){\n const def = {\n type: 'button',\n model: new ViewModel({\n label: option.title,\n languageCode: option.languageCode,\n role: 'menuitemradio',\n textDirection: option.textDirection,\n withText: true\n })\n };\n const language = stringifyLanguageAttribute(option.languageCode, option.textDirection);\n def.model.bind('isOn').to(languageCommand, 'value', (value)=>value === language);\n itemDefinitions.add(def);\n titles[language] = option.title;\n }\n return {\n definitions: itemDefinitions,\n titles\n };\n }\n}\n\n/**\n * The text part language feature.\n *\n * This feature allows setting a language of the document's text part to support\n * [WCAG 3.1.2 Language of Parts](https://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html) specification.\n *\n * To change the editor's UI language, refer to the {@glink getting-started/setup/ui-language Setting the UI language} guide.\n *\n * For more information about this feature, check the {@glink api/language package page} as well as the {@glink features/language\n * Text part language} feature guide.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:language/textpartlanguageediting~TextPartLanguageEditing text part language editing feature}\n * and the {@link module:language/textpartlanguageui~TextPartLanguageUI text part language UI feature}.\n */ class TextPartLanguage extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n TextPartLanguageEditing,\n TextPartLanguageUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextPartLanguage';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\nexport { TextPartLanguage, TextPartLanguageEditing, TextPartLanguageUI };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/utils\n */\n\nimport { getLanguageDirection, type LanguageDirection } from 'ckeditor5/src/utils.js';\n\n/**\n * Returns the language attribute value in a human-readable text format:\n *\n * ```\n * <languageCode>:<textDirection>\n * ```\n *\n * * `languageCode` - The language code used for the `lang` attribute in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n * * `textDirection` - One of the following values: `rtl` or `ltr`, indicating the reading direction of the language.\n *\n * See the {@link module:core/editor/editorconfig~LanguageConfig#textPartLanguage text part language configuration}\n * for more information about language properties.\n *\n * If the `textDirection` argument is omitted, it will be automatically detected based on `languageCode`.\n *\n * @param languageCode The language code in the ISO 639-1 format.\n * @param textDirection The language text direction. Automatically detected if omitted.\n */\nexport function stringifyLanguageAttribute( languageCode: string, textDirection?: LanguageDirection ): string {\n\ttextDirection = textDirection || getLanguageDirection( languageCode );\n\treturn `${ languageCode }:${ textDirection }`;\n}\n\n/**\n * Retrieves language properties converted to attribute value by the\n * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.\n *\n * @param str The attribute value.\n * @returns The object with properties:\n * * languageCode - The language code in the ISO 639 format.\n * * textDirection - The language text direction.\n */\nexport function parseLanguageAttribute( str: string ): { languageCode: string; textDirection: string } {\n\tconst [ languageCode, textDirection ] = str.split( ':' );\n\n\treturn { languageCode, textDirection };\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguagecommand\n */\n\nimport type { LanguageDirection } from 'ckeditor5/src/utils.js';\nimport { Command } from 'ckeditor5/src/core.js';\nimport { stringifyLanguageAttribute } from './utils.js';\n\n/**\n * The text part language command plugin.\n */\nexport default class TextPartLanguageCommand extends Command {\n\t/**\n\t * If the selection starts in a language attribute, the value is set to\n\t * the value of that language in the following format:\n\t *\n\t * ```\n\t * <languageCode>:<textDirection>\n\t * ```\n\t *\n\t * * `languageCode` - The language code used for the `lang` attribute in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1)\n\t * format.\n\t * * `textDirection` - One of the following values: `rtl` or `ltr`, indicating the reading direction of the language.\n\t *\n\t * See the {@link module:core/editor/editorconfig~LanguageConfig#textPartLanguage text part language configuration}\n\t * for more information about language properties.\n\t *\n\t * It is set to `false` otherwise.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: false | string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.value = this._getValueFromFirstAllowedNode();\n\t\tthis.isEnabled = model.schema.checkAttributeInSelection( doc.selection, 'language' );\n\t}\n\n\t/**\n\t * Executes the command. Applies the attribute to the selection or removes it from the selection.\n\t *\n\t * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set\n\t * the attribute in the `{@link #value value}` format.\n\t *\n\t * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}:\n\t *\n\t * * If the selection is on a range, the command applies the attribute to all nodes in that range\n\t * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}).\n\t * * If the selection is collapsed in a non-empty node, the command applies the attribute to the\n\t * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection).\n\t * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note\n\t * that the selection inherits all attributes from a node if it is in an empty node).\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.languageCode The language code to be applied to the model.\n\t * @param options.textDirection The language text direction.\n\t */\n\tpublic override execute(\n\t\t{ languageCode, textDirection }: { languageCode?: string | false; textDirection?: LanguageDirection } = {}\n\t): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\n\t\tconst value = languageCode ? stringifyLanguageAttribute( languageCode, textDirection ) : false;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tif ( value ) {\n\t\t\t\t\twriter.setSelectionAttribute( 'language', value );\n\t\t\t\t} else {\n\t\t\t\t\twriter.removeSelectionAttribute( 'language' );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst ranges = model.schema.getValidRanges( selection.getRanges(), 'language' );\n\n\t\t\t\tfor ( const range of ranges ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\twriter.setAttribute( 'language', value, range );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.removeAttribute( 'language', range );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the attribute value of the first node in the selection that allows the attribute.\n\t * For a collapsed selection it returns the selection attribute.\n\t *\n\t * @returns The attribute value.\n\t */\n\tprivate _getValueFromFirstAllowedNode(): false | string {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( selection.isCollapsed ) {\n\t\t\treturn selection.getAttribute( 'language' ) as string || false;\n\t\t}\n\n\t\tfor ( const range of selection.getRanges() ) {\n\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\tif ( schema.checkAttribute( item, 'language' ) ) {\n\t\t\t\t\treturn item.getAttribute( 'language' ) as string || false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguageediting\n */\n\nimport type { ViewElement } from 'ckeditor5/src/engine.js';\nimport type { LanguageDirection } from 'ckeditor5/src/utils.js';\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport TextPartLanguageCommand from './textpartlanguagecommand.js';\nimport { stringifyLanguageAttribute, parseLanguageAttribute } from './utils.js';\n\n/**\n * The text part language editing.\n *\n * Introduces the `'textPartLanguage'` command and the `'language'` model element attribute.\n */\nexport default class TextPartLanguageEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextPartLanguageEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Text part language options are only used to ensure that the feature works by default.\n\t\t// In the real usage it should be reconfigured by a developer. We are not providing\n\t\t// translations for `title` properties on purpose, as it's only an example configuration.\n\t\teditor.config.define( 'language', {\n\t\t\ttextPartLanguage: [\n\t\t\t\t{ title: 'Arabic', languageCode: 'ar' },\n\t\t\t\t{ title: 'French', languageCode: 'fr' },\n\t\t\t\t{ title: 'Spanish', languageCode: 'es' }\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.model.schema.extend( '$text', { allowAttributes: 'language' } );\n\t\teditor.model.schema.setAttributeProperties( 'language', {\n\t\t\tcopyOnEnter: true\n\t\t} );\n\n\t\tthis._defineConverters();\n\n\t\teditor.commands.add( 'textPartLanguage', new TextPartLanguageCommand( editor ) );\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate _defineConverters(): void {\n\t\tconst conversion = this.editor.conversion;\n\n\t\tconversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst languageCode = viewElement.getAttribute( 'lang' )!;\n\t\t\t\t\tconst textDirection = viewElement.getAttribute( 'dir' )! as LanguageDirection;\n\n\t\t\t\t\treturn stringifyLanguageAttribute( languageCode, textDirection );\n\t\t\t\t}\n\t\t\t},\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tattributes: { lang: /[\\s\\S]+/ }\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: 'language',\n\t\t\tview: ( attributeValue, { writer }, data ) => {\n\t\t\t\tif ( !attributeValue ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( !data.item.is( '$textProxy' ) && !data.item.is( 'documentSelection' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { languageCode, textDirection } = parseLanguageAttribute( attributeValue );\n\n\t\t\t\treturn writer.createAttributeElement( 'span', {\n\t\t\t\t\tlang: languageCode,\n\t\t\t\t\tdir: textDirection\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguageui\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport {\n\taddListToDropdown,\n\tcreateDropdown,\n\tListSeparatorView,\n\tMenuBarMenuView,\n\tMenuBarMenuListView,\n\tMenuBarMenuListItemView,\n\tMenuBarMenuListItemButtonView,\n\tViewModel,\n\ttype ListDropdownItemDefinition\n} from 'ckeditor5/src/ui.js';\nimport { Collection, type LanguageDirection } from 'ckeditor5/src/utils.js';\nimport { stringifyLanguageAttribute } from './utils.js';\nimport type TextPartLanguageCommand from './textpartlanguagecommand.js';\n\n/**\n * The text part language UI plugin.\n *\n * It introduces the `'language'` dropdown.\n */\nexport default class TextPartLanguageUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextPartLanguageUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst defaultTitle = t( 'Choose language' );\n\t\tconst accessibleLabel = t( 'Language' );\n\n\t\t// Register UI component.\n\t\teditor.ui.componentFactory.add( 'textPartLanguage', locale => {\n\t\t\tconst { definitions, titles } = this._getItemMetadata();\n\t\t\tconst languageCommand = editor.commands.get( 'textPartLanguage' )!;\n\n\t\t\tconst dropdownView = createDropdown( locale );\n\t\t\taddListToDropdown( dropdownView, definitions, {\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: undefined,\n\t\t\t\tisOn: false,\n\t\t\t\twithText: true,\n\t\t\t\ttooltip: accessibleLabel\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck-text-fragment-language-dropdown'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).to( languageCommand, 'isEnabled' );\n\t\t\tdropdownView.buttonView.bind( 'label' ).to( languageCommand, 'value', value => {\n\t\t\t\treturn ( value && titles[ value ] ) || defaultTitle;\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.bind( 'ariaLabel' ).to( languageCommand, 'value', value => {\n\t\t\t\tconst selectedLanguageTitle = value && titles[ value ];\n\n\t\t\t\tif ( !selectedLanguageTitle ) {\n\t\t\t\t\treturn accessibleLabel;\n\t\t\t\t}\n\n\t\t\t\treturn `${ selectedLanguageTitle }, ${ accessibleLabel }`;\n\t\t\t} );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\tlanguageCommand.execute( {\n\t\t\t\t\tlanguageCode: ( evt.source as any ).languageCode,\n\t\t\t\t\ttextDirection: ( evt.source as any ).textDirection\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\n\t\t// Register menu bar UI component.\n\t\teditor.ui.componentFactory.add( 'menuBar:textPartLanguage', locale => {\n\t\t\tconst { definitions } = this._getItemMetadata();\n\t\t\tconst languageCommand = editor.commands.get( 'textPartLanguage' )!;\n\n\t\t\tconst menuView = new MenuBarMenuView( locale );\n\n\t\t\tmenuView.buttonView.set( {\n\t\t\t\tlabel: accessibleLabel\n\t\t\t} );\n\n\t\t\tconst listView = new MenuBarMenuListView( locale );\n\n\t\t\tlistView.set( {\n\t\t\t\tariaLabel: t( 'Language' ),\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tfor ( const definition of definitions ) {\n\t\t\t\tif ( definition.type != 'button' ) {\n\t\t\t\t\tlistView.items.add( new ListSeparatorView( locale ) );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\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.set( {\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\tisToggleable: true\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.bind( ...Object.keys( definition.model ) as Array<keyof MenuBarMenuListItemButtonView> ).to( definition.model );\n\t\t\t\tbuttonView.delegate( 'execute' ).to( menuView );\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.bind( 'isEnabled' ).to( languageCommand, 'isEnabled' );\n\t\t\tmenuView.panelView.children.add( listView );\n\t\t\tmenuView.on( 'execute', evt => {\n\t\t\t\tlanguageCommand.execute( {\n\t\t\t\t\tlanguageCode: ( evt.source as any ).languageCode as string,\n\t\t\t\t\ttextDirection: ( evt.source as any ).textDirection as LanguageDirection\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn menuView;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns metadata for dropdown and menu items.\n\t */\n\tprivate _getItemMetadata(): ItemMetadata {\n\t\tconst editor = this.editor;\n\t\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\t\tconst titles: Record<string, string> = {};\n\t\tconst languageCommand: TextPartLanguageCommand = editor.commands.get( 'textPartLanguage' )!;\n\t\tconst options = editor.config.get( 'language.textPartLanguage' )!;\n\t\tconst t = editor.locale.t;\n\t\tconst removeTitle = t( 'Remove language' );\n\n\t\t// Item definition with false `languageCode` will behave as remove lang button.\n\t\titemDefinitions.add( {\n\t\t\ttype: 'button',\n\t\t\tmodel: new ViewModel( {\n\t\t\t\tlabel: removeTitle,\n\t\t\t\tlanguageCode: false,\n\t\t\t\twithText: true\n\t\t\t} )\n\t\t} );\n\n\t\titemDefinitions.add( {\n\t\t\ttype: 'separator'\n\t\t} );\n\n\t\tfor ( const option of options ) {\n\t\t\tconst def = {\n\t\t\t\ttype: 'button' as const,\n\t\t\t\tmodel: new ViewModel( {\n\t\t\t\t\tlabel: option.title,\n\t\t\t\t\tlanguageCode: option.languageCode,\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\ttextDirection: option.textDirection,\n\t\t\t\t\twithText: true\n\t\t\t\t} )\n\t\t\t};\n\n\t\t\tconst language = stringifyLanguageAttribute( option.languageCode, option.textDirection );\n\n\t\t\tdef.model.bind( 'isOn' ).to( languageCommand, 'value', value => value === language );\n\n\t\t\titemDefinitions.add( def );\n\n\t\t\ttitles[ language ] = option.title;\n\t\t}\n\n\t\treturn {\n\t\t\tdefinitions: itemDefinitions,\n\t\t\ttitles\n\t\t};\n\t}\n}\n\ntype ItemMetadata = {\n\tdefinitions: Collection<ListDropdownItemDefinition>;\n\ttitles: Record<string, string>;\n};\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguage\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport TextPartLanguageEditing from './textpartlanguageediting.js';\nimport TextPartLanguageUI from './textpartlanguageui.js';\n\n/**\n * The text part language feature.\n *\n * This feature allows setting a language of the document's text part to support\n * [WCAG 3.1.2 Language of Parts](https://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html) specification.\n *\n * To change the editor's UI language, refer to the {@glink getting-started/setup/ui-language Setting the UI language} guide.\n *\n * For more information about this feature, check the {@glink api/language package page} as well as the {@glink features/language\n * Text part language} feature guide.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:language/textpartlanguageediting~TextPartLanguageEditing text part language editing feature}\n * and the {@link module:language/textpartlanguageui~TextPartLanguageUI text part language UI feature}.\n */\nexport default class TextPartLanguage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TextPartLanguageEditing, TextPartLanguageUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextPartLanguage' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/utils.ts","../src/textpartlanguagecommand.ts","../src/textpartlanguageediting.ts","../src/textpartlanguageui.ts","../src/textpartlanguage.ts"],"names":["stringifyLanguageAttribute","languageCode","textDirection","getLanguageDirection","parseLanguageAttribute","str","split","TextPartLanguageCommand","Command","refresh","model","editor","doc","document","value","_getValueFromFirstAllowedNode","isEnabled","schema","checkAttributeInSelection","selection","execute","change","writer","isCollapsed","setSelectionAttribute","removeSelectionAttribute","ranges","getValidRanges","getRanges","range","setAttribute","removeAttribute","getAttribute","item","getItems","checkAttribute","TextPartLanguageEditing","Plugin","pluginName","isOfficialPlugin","config","define","textPartLanguage","title","init","extend","allowAttributes","setAttributeProperties","copyOnEnter","_defineConverters","commands","add","conversion","for","elementToAttribute","key","viewElement","view","name","attributes","lang","attributeToElement","attributeValue","data","is","createAttributeElement","dir","TextPartLanguageUI","t","defaultTitle","accessibleLabel","ui","componentFactory","locale","definitions","titles","_getItemMetadata","languageCommand","get","dropdownView","createDropdown","addListToDropdown","ariaLabel","role","buttonView","set","ariaLabelledBy","undefined","isOn","withText","tooltip","extendTemplate","class","bind","to","selectedLanguageTitle","listenTo","evt","source","editing","focus","menuView","MenuBarMenuView","label","listView","MenuBarMenuListView","definition","type","items","ListSeparatorView","listItemView","MenuBarMenuListItemView","MenuBarMenuListItemButtonView","isToggleable","Object","keys","delegate","children","panelView","on","itemDefinitions","Collection","options","removeTitle","UIModel","option","def","language","TextPartLanguage","requires"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { getLanguageDirection, Collection } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { createDropdown, addListToDropdown, MenuBarMenuView, MenuBarMenuListView, ListSeparatorView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, UIModel } from '@ckeditor/ckeditor5-ui/dist/index.js';\n\n/**\n * Returns the language attribute value in a human-readable text format:\n *\n * ```\n * <languageCode>:<textDirection>\n * ```\n *\n * * `languageCode` - The language code used for the `lang` attribute in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n * * `textDirection` - One of the following values: `rtl` or `ltr`, indicating the reading direction of the language.\n *\n * See the {@link module:core/editor/editorconfig~LanguageConfig#textPartLanguage text part language configuration}\n * for more information about language properties.\n *\n * If the `textDirection` argument is omitted, it will be automatically detected based on `languageCode`.\n *\n * @param languageCode The language code in the ISO 639-1 format.\n * @param textDirection The language text direction. Automatically detected if omitted.\n * @internal\n */ function stringifyLanguageAttribute(languageCode, textDirection) {\n textDirection = textDirection || getLanguageDirection(languageCode);\n return `${languageCode}:${textDirection}`;\n}\n/**\n * Retrieves language properties converted to attribute value by the\n * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.\n *\n * @internal\n * @param str The attribute value.\n * @returns The object with properties:\n * * languageCode - The language code in the ISO 639 format.\n * * textDirection - The language text direction.\n */ function parseLanguageAttribute(str) {\n const [languageCode, textDirection] = str.split(':');\n return {\n languageCode,\n textDirection\n };\n}\n\n/**\n * The text part language command plugin.\n */ class TextPartLanguageCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n const doc = model.document;\n this.value = this._getValueFromFirstAllowedNode();\n this.isEnabled = model.schema.checkAttributeInSelection(doc.selection, 'language');\n }\n /**\n\t * Executes the command. Applies the attribute to the selection or removes it from the selection.\n\t *\n\t * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set\n\t * the attribute in the `{@link #value value}` format.\n\t *\n\t * The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:\n\t *\n\t * * If the selection is on a range, the command applies the attribute to all nodes in that range\n\t * (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).\n\t * * If the selection is collapsed in a non-empty node, the command applies the attribute to the\n\t * {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).\n\t * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note\n\t * that the selection inherits all attributes from a node if it is in an empty node).\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.languageCode The language code to be applied to the model.\n\t * @param options.textDirection The language text direction.\n\t */ execute({ languageCode, textDirection } = {}) {\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const value = languageCode ? stringifyLanguageAttribute(languageCode, textDirection) : false;\n model.change((writer)=>{\n if (selection.isCollapsed) {\n if (value) {\n writer.setSelectionAttribute('language', value);\n } else {\n writer.removeSelectionAttribute('language');\n }\n } else {\n const ranges = model.schema.getValidRanges(selection.getRanges(), 'language');\n for (const range of ranges){\n if (value) {\n writer.setAttribute('language', value, range);\n } else {\n writer.removeAttribute('language', range);\n }\n }\n }\n });\n }\n /**\n\t * Returns the attribute value of the first node in the selection that allows the attribute.\n\t * For a collapsed selection it returns the selection attribute.\n\t *\n\t * @returns The attribute value.\n\t */ _getValueFromFirstAllowedNode() {\n const model = this.editor.model;\n const schema = model.schema;\n const selection = model.document.selection;\n if (selection.isCollapsed) {\n return selection.getAttribute('language') || false;\n }\n for (const range of selection.getRanges()){\n for (const item of range.getItems()){\n if (schema.checkAttribute(item, 'language')) {\n return item.getAttribute('language') || false;\n }\n }\n }\n return false;\n }\n}\n\n/**\n * The text part language editing.\n *\n * Introduces the `'textPartLanguage'` command and the `'language'` model element attribute.\n */ class TextPartLanguageEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextPartLanguageEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n // Text part language options are only used to ensure that the feature works by default.\n // In the real usage it should be reconfigured by a developer. We are not providing\n // translations for `title` properties on purpose, as it's only an example configuration.\n editor.config.define('language', {\n textPartLanguage: [\n {\n title: 'Arabic',\n languageCode: 'ar'\n },\n {\n title: 'French',\n languageCode: 'fr'\n },\n {\n title: 'Spanish',\n languageCode: 'es'\n }\n ]\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n editor.model.schema.extend('$text', {\n allowAttributes: 'language'\n });\n editor.model.schema.setAttributeProperties('language', {\n copyOnEnter: true\n });\n this._defineConverters();\n editor.commands.add('textPartLanguage', new TextPartLanguageCommand(editor));\n }\n /**\n\t * @private\n\t */ _defineConverters() {\n const conversion = this.editor.conversion;\n conversion.for('upcast').elementToAttribute({\n model: {\n key: 'language',\n value: (viewElement)=>{\n const languageCode = viewElement.getAttribute('lang');\n const textDirection = viewElement.getAttribute('dir');\n return stringifyLanguageAttribute(languageCode, textDirection);\n }\n },\n view: {\n name: 'span',\n attributes: {\n lang: /[\\s\\S]+/\n }\n }\n });\n conversion.for('downcast').attributeToElement({\n model: 'language',\n view: (attributeValue, { writer }, data)=>{\n if (!attributeValue) {\n return;\n }\n if (!data.item.is('$textProxy') && !data.item.is('documentSelection')) {\n return;\n }\n const { languageCode, textDirection } = parseLanguageAttribute(attributeValue);\n return writer.createAttributeElement('span', {\n lang: languageCode,\n dir: textDirection\n });\n }\n });\n }\n}\n\n/**\n * The text part language UI plugin.\n *\n * It introduces the `'language'` dropdown.\n */ class TextPartLanguageUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextPartLanguageUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const t = editor.t;\n const defaultTitle = t('Choose language');\n const accessibleLabel = t('Language');\n // Register UI component.\n editor.ui.componentFactory.add('textPartLanguage', (locale)=>{\n const { definitions, titles } = this._getItemMetadata();\n const languageCommand = editor.commands.get('textPartLanguage');\n const dropdownView = createDropdown(locale);\n addListToDropdown(dropdownView, definitions, {\n ariaLabel: accessibleLabel,\n role: 'menu'\n });\n dropdownView.buttonView.set({\n ariaLabel: accessibleLabel,\n ariaLabelledBy: undefined,\n isOn: false,\n withText: true,\n tooltip: accessibleLabel\n });\n dropdownView.extendTemplate({\n attributes: {\n class: [\n 'ck-text-fragment-language-dropdown'\n ]\n }\n });\n dropdownView.bind('isEnabled').to(languageCommand, 'isEnabled');\n dropdownView.buttonView.bind('label').to(languageCommand, 'value', (value)=>{\n return value && titles[value] || defaultTitle;\n });\n dropdownView.buttonView.bind('ariaLabel').to(languageCommand, 'value', (value)=>{\n const selectedLanguageTitle = value && titles[value];\n if (!selectedLanguageTitle) {\n return accessibleLabel;\n }\n return `${selectedLanguageTitle}, ${accessibleLabel}`;\n });\n // Execute command when an item from the dropdown is selected.\n this.listenTo(dropdownView, 'execute', (evt)=>{\n languageCommand.execute({\n languageCode: evt.source.languageCode,\n textDirection: evt.source.textDirection\n });\n editor.editing.view.focus();\n });\n return dropdownView;\n });\n // Register menu bar UI component.\n editor.ui.componentFactory.add('menuBar:textPartLanguage', (locale)=>{\n const { definitions } = this._getItemMetadata();\n const languageCommand = editor.commands.get('textPartLanguage');\n const menuView = new MenuBarMenuView(locale);\n menuView.buttonView.set({\n label: accessibleLabel\n });\n const listView = new MenuBarMenuListView(locale);\n listView.set({\n ariaLabel: t('Language'),\n role: 'menu'\n });\n for (const definition of definitions){\n if (definition.type != 'button') {\n listView.items.add(new ListSeparatorView(locale));\n continue;\n }\n const listItemView = new MenuBarMenuListItemView(locale, menuView);\n const buttonView = new MenuBarMenuListItemButtonView(locale);\n buttonView.set({\n role: 'menuitemradio',\n isToggleable: true\n });\n buttonView.bind(...Object.keys(definition.model)).to(definition.model);\n buttonView.delegate('execute').to(menuView);\n listItemView.children.add(buttonView);\n listView.items.add(listItemView);\n }\n menuView.bind('isEnabled').to(languageCommand, 'isEnabled');\n menuView.panelView.children.add(listView);\n menuView.on('execute', (evt)=>{\n languageCommand.execute({\n languageCode: evt.source.languageCode,\n textDirection: evt.source.textDirection\n });\n editor.editing.view.focus();\n });\n return menuView;\n });\n }\n /**\n\t * Returns metadata for dropdown and menu items.\n\t */ _getItemMetadata() {\n const editor = this.editor;\n const itemDefinitions = new Collection();\n const titles = {};\n const languageCommand = editor.commands.get('textPartLanguage');\n const options = editor.config.get('language.textPartLanguage');\n const t = editor.locale.t;\n const removeTitle = t('Remove language');\n // Item definition with false `languageCode` will behave as remove lang button.\n itemDefinitions.add({\n type: 'button',\n model: new UIModel({\n label: removeTitle,\n languageCode: false,\n withText: true\n })\n });\n itemDefinitions.add({\n type: 'separator'\n });\n for (const option of options){\n const def = {\n type: 'button',\n model: new UIModel({\n label: option.title,\n languageCode: option.languageCode,\n role: 'menuitemradio',\n textDirection: option.textDirection,\n withText: true\n })\n };\n const language = stringifyLanguageAttribute(option.languageCode, option.textDirection);\n def.model.bind('isOn').to(languageCommand, 'value', (value)=>value === language);\n itemDefinitions.add(def);\n titles[language] = option.title;\n }\n return {\n definitions: itemDefinitions,\n titles\n };\n }\n}\n\n/**\n * The text part language feature.\n *\n * This feature allows setting a language of the document's text part to support\n * [WCAG 3.1.2 Language of Parts](https://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html) specification.\n *\n * To change the editor's UI language, refer to the {@glink getting-started/setup/ui-language Setting the UI language} guide.\n *\n * For more information about this feature, check the {@glink api/language package page} as well as the {@glink features/language\n * Text part language} feature guide.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:language/textpartlanguageediting~TextPartLanguageEditing text part language editing feature}\n * and the {@link module:language/textpartlanguageui~TextPartLanguageUI text part language UI feature}.\n */ class TextPartLanguage extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n TextPartLanguageEditing,\n TextPartLanguageUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextPartLanguage';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\nexport { TextPartLanguage, TextPartLanguageCommand, TextPartLanguageEditing, TextPartLanguageUI, parseLanguageAttribute as _parseLanguageAttribute, stringifyLanguageAttribute as _stringifyLanguageAttribute };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/utils\n */\n\nimport { getLanguageDirection, type LanguageDirection } from 'ckeditor5/src/utils.js';\n\n/**\n * Returns the language attribute value in a human-readable text format:\n *\n * ```\n * <languageCode>:<textDirection>\n * ```\n *\n * * `languageCode` - The language code used for the `lang` attribute in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) format.\n * * `textDirection` - One of the following values: `rtl` or `ltr`, indicating the reading direction of the language.\n *\n * See the {@link module:core/editor/editorconfig~LanguageConfig#textPartLanguage text part language configuration}\n * for more information about language properties.\n *\n * If the `textDirection` argument is omitted, it will be automatically detected based on `languageCode`.\n *\n * @param languageCode The language code in the ISO 639-1 format.\n * @param textDirection The language text direction. Automatically detected if omitted.\n * @internal\n */\nexport function stringifyLanguageAttribute( languageCode: string, textDirection?: LanguageDirection ): string {\n\ttextDirection = textDirection || getLanguageDirection( languageCode );\n\treturn `${ languageCode }:${ textDirection }`;\n}\n\n/**\n * Retrieves language properties converted to attribute value by the\n * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.\n *\n * @internal\n * @param str The attribute value.\n * @returns The object with properties:\n * * languageCode - The language code in the ISO 639 format.\n * * textDirection - The language text direction.\n */\nexport function parseLanguageAttribute( str: string ): { languageCode: string; textDirection: string } {\n\tconst [ languageCode, textDirection ] = str.split( ':' );\n\n\treturn { languageCode, textDirection };\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguagecommand\n */\n\nimport type { LanguageDirection } from 'ckeditor5/src/utils.js';\nimport { Command } from 'ckeditor5/src/core.js';\nimport { stringifyLanguageAttribute } from './utils.js';\n\n/**\n * The text part language command plugin.\n */\nexport class TextPartLanguageCommand extends Command {\n\t/**\n\t * If the selection starts in a language attribute, the value is set to\n\t * the value of that language in the following format:\n\t *\n\t * ```\n\t * <languageCode>:<textDirection>\n\t * ```\n\t *\n\t * * `languageCode` - The language code used for the `lang` attribute in the [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1)\n\t * format.\n\t * * `textDirection` - One of the following values: `rtl` or `ltr`, indicating the reading direction of the language.\n\t *\n\t * See the {@link module:core/editor/editorconfig~LanguageConfig#textPartLanguage text part language configuration}\n\t * for more information about language properties.\n\t *\n\t * It is set to `false` otherwise.\n\t *\n\t * @observable\n\t * @readonly\n\t */\n\tdeclare public value: false | string;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.value = this._getValueFromFirstAllowedNode();\n\t\tthis.isEnabled = model.schema.checkAttributeInSelection( doc.selection, 'language' );\n\t}\n\n\t/**\n\t * Executes the command. Applies the attribute to the selection or removes it from the selection.\n\t *\n\t * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set\n\t * the attribute in the `{@link #value value}` format.\n\t *\n\t * The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:\n\t *\n\t * * If the selection is on a range, the command applies the attribute to all nodes in that range\n\t * (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).\n\t * * If the selection is collapsed in a non-empty node, the command applies the attribute to the\n\t * {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).\n\t * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note\n\t * that the selection inherits all attributes from a node if it is in an empty node).\n\t *\n\t * @fires execute\n\t * @param options Command options.\n\t * @param options.languageCode The language code to be applied to the model.\n\t * @param options.textDirection The language text direction.\n\t */\n\tpublic override execute(\n\t\t{ languageCode, textDirection }: { languageCode?: string | false; textDirection?: LanguageDirection } = {}\n\t): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\n\t\tconst value = languageCode ? stringifyLanguageAttribute( languageCode, textDirection ) : false;\n\n\t\tmodel.change( writer => {\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tif ( value ) {\n\t\t\t\t\twriter.setSelectionAttribute( 'language', value );\n\t\t\t\t} else {\n\t\t\t\t\twriter.removeSelectionAttribute( 'language' );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst ranges = model.schema.getValidRanges( selection.getRanges(), 'language' );\n\n\t\t\t\tfor ( const range of ranges ) {\n\t\t\t\t\tif ( value ) {\n\t\t\t\t\t\twriter.setAttribute( 'language', value, range );\n\t\t\t\t\t} else {\n\t\t\t\t\t\twriter.removeAttribute( 'language', range );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Returns the attribute value of the first node in the selection that allows the attribute.\n\t * For a collapsed selection it returns the selection attribute.\n\t *\n\t * @returns The attribute value.\n\t */\n\tprivate _getValueFromFirstAllowedNode(): false | string {\n\t\tconst model = this.editor.model;\n\t\tconst schema = model.schema;\n\t\tconst selection = model.document.selection;\n\n\t\tif ( selection.isCollapsed ) {\n\t\t\treturn selection.getAttribute( 'language' ) as string || false;\n\t\t}\n\n\t\tfor ( const range of selection.getRanges() ) {\n\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\tif ( schema.checkAttribute( item, 'language' ) ) {\n\t\t\t\t\treturn item.getAttribute( 'language' ) as string || false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguageediting\n */\n\nimport type { ViewElement } from 'ckeditor5/src/engine.js';\nimport type { LanguageDirection } from 'ckeditor5/src/utils.js';\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport { TextPartLanguageCommand } from './textpartlanguagecommand.js';\nimport { stringifyLanguageAttribute, parseLanguageAttribute } from './utils.js';\n\n/**\n * The text part language editing.\n *\n * Introduces the `'textPartLanguage'` command and the `'language'` model element attribute.\n */\nexport class TextPartLanguageEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextPartLanguageEditing' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\t// Text part language options are only used to ensure that the feature works by default.\n\t\t// In the real usage it should be reconfigured by a developer. We are not providing\n\t\t// translations for `title` properties on purpose, as it's only an example configuration.\n\t\teditor.config.define( 'language', {\n\t\t\ttextPartLanguage: [\n\t\t\t\t{ title: 'Arabic', languageCode: 'ar' },\n\t\t\t\t{ title: 'French', languageCode: 'fr' },\n\t\t\t\t{ title: 'Spanish', languageCode: 'es' }\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\n\t\teditor.model.schema.extend( '$text', { allowAttributes: 'language' } );\n\t\teditor.model.schema.setAttributeProperties( 'language', {\n\t\t\tcopyOnEnter: true\n\t\t} );\n\n\t\tthis._defineConverters();\n\n\t\teditor.commands.add( 'textPartLanguage', new TextPartLanguageCommand( editor ) );\n\t}\n\n\t/**\n\t * @private\n\t */\n\tprivate _defineConverters(): void {\n\t\tconst conversion = this.editor.conversion;\n\n\t\tconversion.for( 'upcast' ).elementToAttribute( {\n\t\t\tmodel: {\n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: ( viewElement: ViewElement ) => {\n\t\t\t\t\tconst languageCode = viewElement.getAttribute( 'lang' )!;\n\t\t\t\t\tconst textDirection = viewElement.getAttribute( 'dir' )! as LanguageDirection;\n\n\t\t\t\t\treturn stringifyLanguageAttribute( languageCode, textDirection );\n\t\t\t\t}\n\t\t\t},\n\t\t\tview: {\n\t\t\t\tname: 'span',\n\t\t\t\tattributes: { lang: /[\\s\\S]+/ }\n\t\t\t}\n\t\t} );\n\n\t\tconversion.for( 'downcast' ).attributeToElement( {\n\t\t\tmodel: 'language',\n\t\t\tview: ( attributeValue, { writer }, data ) => {\n\t\t\t\tif ( !attributeValue ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( !data.item.is( '$textProxy' ) && !data.item.is( 'documentSelection' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { languageCode, textDirection } = parseLanguageAttribute( attributeValue );\n\n\t\t\t\treturn writer.createAttributeElement( 'span', {\n\t\t\t\t\tlang: languageCode,\n\t\t\t\t\tdir: textDirection\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguageui\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport {\n\taddListToDropdown,\n\tcreateDropdown,\n\tListSeparatorView,\n\tMenuBarMenuView,\n\tMenuBarMenuListView,\n\tMenuBarMenuListItemView,\n\tMenuBarMenuListItemButtonView,\n\tUIModel,\n\ttype ListDropdownItemDefinition\n} from 'ckeditor5/src/ui.js';\nimport { Collection, type LanguageDirection } from 'ckeditor5/src/utils.js';\nimport { stringifyLanguageAttribute } from './utils.js';\nimport { type TextPartLanguageCommand } from './textpartlanguagecommand.js';\n\n/**\n * The text part language UI plugin.\n *\n * It introduces the `'language'` dropdown.\n */\nexport class TextPartLanguageUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextPartLanguageUI' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.t;\n\t\tconst defaultTitle = t( 'Choose language' );\n\t\tconst accessibleLabel = t( 'Language' );\n\n\t\t// Register UI component.\n\t\teditor.ui.componentFactory.add( 'textPartLanguage', locale => {\n\t\t\tconst { definitions, titles } = this._getItemMetadata();\n\t\t\tconst languageCommand = editor.commands.get( 'textPartLanguage' )!;\n\n\t\t\tconst dropdownView = createDropdown( locale );\n\t\t\taddListToDropdown( dropdownView, definitions, {\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.set( {\n\t\t\t\tariaLabel: accessibleLabel,\n\t\t\t\tariaLabelledBy: undefined,\n\t\t\t\tisOn: false,\n\t\t\t\twithText: true,\n\t\t\t\ttooltip: accessibleLabel\n\t\t\t} );\n\n\t\t\tdropdownView.extendTemplate( {\n\t\t\t\tattributes: {\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'ck-text-fragment-language-dropdown'\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tdropdownView.bind( 'isEnabled' ).to( languageCommand, 'isEnabled' );\n\t\t\tdropdownView.buttonView.bind( 'label' ).to( languageCommand, 'value', value => {\n\t\t\t\treturn ( value && titles[ value ] ) || defaultTitle;\n\t\t\t} );\n\n\t\t\tdropdownView.buttonView.bind( 'ariaLabel' ).to( languageCommand, 'value', value => {\n\t\t\t\tconst selectedLanguageTitle = value && titles[ value ];\n\n\t\t\t\tif ( !selectedLanguageTitle ) {\n\t\t\t\t\treturn accessibleLabel;\n\t\t\t\t}\n\n\t\t\t\treturn `${ selectedLanguageTitle }, ${ accessibleLabel }`;\n\t\t\t} );\n\n\t\t\t// Execute command when an item from the dropdown is selected.\n\t\t\tthis.listenTo( dropdownView, 'execute', evt => {\n\t\t\t\tlanguageCommand.execute( {\n\t\t\t\t\tlanguageCode: ( evt.source as any ).languageCode,\n\t\t\t\t\ttextDirection: ( evt.source as any ).textDirection\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn dropdownView;\n\t\t} );\n\n\t\t// Register menu bar UI component.\n\t\teditor.ui.componentFactory.add( 'menuBar:textPartLanguage', locale => {\n\t\t\tconst { definitions } = this._getItemMetadata();\n\t\t\tconst languageCommand = editor.commands.get( 'textPartLanguage' )!;\n\n\t\t\tconst menuView = new MenuBarMenuView( locale );\n\n\t\t\tmenuView.buttonView.set( {\n\t\t\t\tlabel: accessibleLabel\n\t\t\t} );\n\n\t\t\tconst listView = new MenuBarMenuListView( locale );\n\n\t\t\tlistView.set( {\n\t\t\t\tariaLabel: t( 'Language' ),\n\t\t\t\trole: 'menu'\n\t\t\t} );\n\n\t\t\tfor ( const definition of definitions ) {\n\t\t\t\tif ( definition.type != 'button' ) {\n\t\t\t\t\tlistView.items.add( new ListSeparatorView( locale ) );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\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.set( {\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\tisToggleable: true\n\t\t\t\t} );\n\n\t\t\t\tbuttonView.bind( ...Object.keys( definition.model ) as Array<keyof MenuBarMenuListItemButtonView> ).to( definition.model );\n\t\t\t\tbuttonView.delegate( 'execute' ).to( menuView );\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.bind( 'isEnabled' ).to( languageCommand, 'isEnabled' );\n\t\t\tmenuView.panelView.children.add( listView );\n\t\t\tmenuView.on( 'execute', evt => {\n\t\t\t\tlanguageCommand.execute( {\n\t\t\t\t\tlanguageCode: ( evt.source as any ).languageCode as string,\n\t\t\t\t\ttextDirection: ( evt.source as any ).textDirection as LanguageDirection\n\t\t\t\t} );\n\n\t\t\t\teditor.editing.view.focus();\n\t\t\t} );\n\n\t\t\treturn menuView;\n\t\t} );\n\t}\n\n\t/**\n\t * Returns metadata for dropdown and menu items.\n\t */\n\tprivate _getItemMetadata(): ItemMetadata {\n\t\tconst editor = this.editor;\n\t\tconst itemDefinitions = new Collection<ListDropdownItemDefinition>();\n\t\tconst titles: Record<string, string> = {};\n\t\tconst languageCommand: TextPartLanguageCommand = editor.commands.get( 'textPartLanguage' )!;\n\t\tconst options = editor.config.get( 'language.textPartLanguage' )!;\n\t\tconst t = editor.locale.t;\n\t\tconst removeTitle = t( 'Remove language' );\n\n\t\t// Item definition with false `languageCode` will behave as remove lang button.\n\t\titemDefinitions.add( {\n\t\t\ttype: 'button',\n\t\t\tmodel: new UIModel( {\n\t\t\t\tlabel: removeTitle,\n\t\t\t\tlanguageCode: false,\n\t\t\t\twithText: true\n\t\t\t} )\n\t\t} );\n\n\t\titemDefinitions.add( {\n\t\t\ttype: 'separator'\n\t\t} );\n\n\t\tfor ( const option of options ) {\n\t\t\tconst def = {\n\t\t\t\ttype: 'button' as const,\n\t\t\t\tmodel: new UIModel( {\n\t\t\t\t\tlabel: option.title,\n\t\t\t\t\tlanguageCode: option.languageCode,\n\t\t\t\t\trole: 'menuitemradio',\n\t\t\t\t\ttextDirection: option.textDirection,\n\t\t\t\t\twithText: true\n\t\t\t\t} )\n\t\t\t};\n\n\t\t\tconst language = stringifyLanguageAttribute( option.languageCode, option.textDirection );\n\n\t\t\tdef.model.bind( 'isOn' ).to( languageCommand, 'value', value => value === language );\n\n\t\t\titemDefinitions.add( def );\n\n\t\t\ttitles[ language ] = option.title;\n\t\t}\n\n\t\treturn {\n\t\t\tdefinitions: itemDefinitions,\n\t\t\ttitles\n\t\t};\n\t}\n}\n\ntype ItemMetadata = {\n\tdefinitions: Collection<ListDropdownItemDefinition>;\n\ttitles: Record<string, string>;\n};\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module language/textpartlanguage\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\n\nimport { TextPartLanguageEditing } from './textpartlanguageediting.js';\nimport { TextPartLanguageUI } from './textpartlanguageui.js';\n\n/**\n * The text part language feature.\n *\n * This feature allows setting a language of the document's text part to support\n * [WCAG 3.1.2 Language of Parts](https://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html) specification.\n *\n * To change the editor's UI language, refer to the {@glink getting-started/setup/ui-language Setting the UI language} guide.\n *\n * For more information about this feature, check the {@glink api/language package page} as well as the {@glink features/language\n * Text part language} feature guide.\n *\n * This is a \"glue\" plugin which loads the\n * {@link module:language/textpartlanguageediting~TextPartLanguageEditing text part language editing feature}\n * and the {@link module:language/textpartlanguageui~TextPartLanguageUI text part language UI feature}.\n */\nexport class TextPartLanguage extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ TextPartLanguageEditing, TextPartLanguageUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextPartLanguage' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-language",
3
- "version": "45.2.1-alpha.9",
3
+ "version": "46.0.0-alpha.0",
4
4
  "description": "Text part language feature for CKEditor 5.",
5
5
  "keywords": [
6
6
  "ckeditor",
@@ -13,10 +13,10 @@
13
13
  "type": "module",
14
14
  "main": "src/index.js",
15
15
  "dependencies": {
16
- "@ckeditor/ckeditor5-core": "45.2.1-alpha.9",
17
- "@ckeditor/ckeditor5-ui": "45.2.1-alpha.9",
18
- "@ckeditor/ckeditor5-utils": "45.2.1-alpha.9",
19
- "ckeditor5": "45.2.1-alpha.9"
16
+ "@ckeditor/ckeditor5-core": "46.0.0-alpha.0",
17
+ "@ckeditor/ckeditor5-ui": "46.0.0-alpha.0",
18
+ "@ckeditor/ckeditor5-utils": "46.0.0-alpha.0",
19
+ "ckeditor5": "46.0.0-alpha.0"
20
20
  },
21
21
  "author": "CKSource (http://cksource.com/)",
22
22
  "license": "SEE LICENSE IN LICENSE.md",
package/src/index.d.ts CHANGED
@@ -5,9 +5,10 @@
5
5
  /**
6
6
  * @module language
7
7
  */
8
- export { default as TextPartLanguage } from './textpartlanguage.js';
9
- export { default as TextPartLanguageEditing } from './textpartlanguageediting.js';
10
- export { default as TextPartLanguageUI } from './textpartlanguageui.js';
8
+ export { TextPartLanguage } from './textpartlanguage.js';
9
+ export { TextPartLanguageEditing } from './textpartlanguageediting.js';
10
+ export { TextPartLanguageUI } from './textpartlanguageui.js';
11
+ export { TextPartLanguageCommand } from './textpartlanguagecommand.js';
11
12
  export type { TextPartLanguageOption } from './textpartlanguageconfig.js';
12
- export type { default as TextPartLanguageCommand } from './textpartlanguagecommand.js';
13
+ export { stringifyLanguageAttribute as _stringifyLanguageAttribute, parseLanguageAttribute as _parseLanguageAttribute } from './utils.js';
13
14
  import './augmentation.js';
package/src/index.js CHANGED
@@ -5,7 +5,9 @@
5
5
  /**
6
6
  * @module language
7
7
  */
8
- export { default as TextPartLanguage } from './textpartlanguage.js';
9
- export { default as TextPartLanguageEditing } from './textpartlanguageediting.js';
10
- export { default as TextPartLanguageUI } from './textpartlanguageui.js';
8
+ export { TextPartLanguage } from './textpartlanguage.js';
9
+ export { TextPartLanguageEditing } from './textpartlanguageediting.js';
10
+ export { TextPartLanguageUI } from './textpartlanguageui.js';
11
+ export { TextPartLanguageCommand } from './textpartlanguagecommand.js';
12
+ export { stringifyLanguageAttribute as _stringifyLanguageAttribute, parseLanguageAttribute as _parseLanguageAttribute } from './utils.js';
11
13
  import './augmentation.js';
@@ -6,8 +6,8 @@
6
6
  * @module language/textpartlanguage
7
7
  */
8
8
  import { Plugin } from 'ckeditor5/src/core.js';
9
- import TextPartLanguageEditing from './textpartlanguageediting.js';
10
- import TextPartLanguageUI from './textpartlanguageui.js';
9
+ import { TextPartLanguageEditing } from './textpartlanguageediting.js';
10
+ import { TextPartLanguageUI } from './textpartlanguageui.js';
11
11
  /**
12
12
  * The text part language feature.
13
13
  *
@@ -23,7 +23,7 @@ import TextPartLanguageUI from './textpartlanguageui.js';
23
23
  * {@link module:language/textpartlanguageediting~TextPartLanguageEditing text part language editing feature}
24
24
  * and the {@link module:language/textpartlanguageui~TextPartLanguageUI text part language UI feature}.
25
25
  */
26
- export default class TextPartLanguage extends Plugin {
26
+ export declare class TextPartLanguage extends Plugin {
27
27
  /**
28
28
  * @inheritDoc
29
29
  */
@@ -6,8 +6,8 @@
6
6
  * @module language/textpartlanguage
7
7
  */
8
8
  import { Plugin } from 'ckeditor5/src/core.js';
9
- import TextPartLanguageEditing from './textpartlanguageediting.js';
10
- import TextPartLanguageUI from './textpartlanguageui.js';
9
+ import { TextPartLanguageEditing } from './textpartlanguageediting.js';
10
+ import { TextPartLanguageUI } from './textpartlanguageui.js';
11
11
  /**
12
12
  * The text part language feature.
13
13
  *
@@ -23,7 +23,7 @@ import TextPartLanguageUI from './textpartlanguageui.js';
23
23
  * {@link module:language/textpartlanguageediting~TextPartLanguageEditing text part language editing feature}
24
24
  * and the {@link module:language/textpartlanguageui~TextPartLanguageUI text part language UI feature}.
25
25
  */
26
- export default class TextPartLanguage extends Plugin {
26
+ export class TextPartLanguage extends Plugin {
27
27
  /**
28
28
  * @inheritDoc
29
29
  */
@@ -10,7 +10,7 @@ import { Command } from 'ckeditor5/src/core.js';
10
10
  /**
11
11
  * The text part language command plugin.
12
12
  */
13
- export default class TextPartLanguageCommand extends Command {
13
+ export declare class TextPartLanguageCommand extends Command {
14
14
  /**
15
15
  * If the selection starts in a language attribute, the value is set to
16
16
  * the value of that language in the following format:
@@ -42,12 +42,12 @@ export default class TextPartLanguageCommand extends Command {
42
42
  * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set
43
43
  * the attribute in the `{@link #value value}` format.
44
44
  *
45
- * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}:
45
+ * The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:
46
46
  *
47
47
  * * If the selection is on a range, the command applies the attribute to all nodes in that range
48
- * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}).
48
+ * (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).
49
49
  * * If the selection is collapsed in a non-empty node, the command applies the attribute to the
50
- * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection).
50
+ * {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).
51
51
  * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note
52
52
  * that the selection inherits all attributes from a node if it is in an empty node).
53
53
  *
@@ -7,7 +7,7 @@ import { stringifyLanguageAttribute } from './utils.js';
7
7
  /**
8
8
  * The text part language command plugin.
9
9
  */
10
- export default class TextPartLanguageCommand extends Command {
10
+ export class TextPartLanguageCommand extends Command {
11
11
  /**
12
12
  * @inheritDoc
13
13
  */
@@ -23,12 +23,12 @@ export default class TextPartLanguageCommand extends Command {
23
23
  * If `languageCode` is set to `false` or a `null` value, it will remove attributes. Otherwise, it will set
24
24
  * the attribute in the `{@link #value value}` format.
25
25
  *
26
- * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}:
26
+ * The execution result differs, depending on the {@link module:engine/model/document~ModelDocument#selection}:
27
27
  *
28
28
  * * If the selection is on a range, the command applies the attribute to all nodes in that range
29
- * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}).
29
+ * (if they are allowed to have this attribute by the {@link module:engine/model/schema~ModelSchema schema}).
30
30
  * * If the selection is collapsed in a non-empty node, the command applies the attribute to the
31
- * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection).
31
+ * {@link module:engine/model/document~ModelDocument#selection} itself (note that typed characters copy attributes from the selection).
32
32
  * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note
33
33
  * that the selection inherits all attributes from a node if it is in an empty node).
34
34
  *
@@ -8,7 +8,7 @@ import { Plugin, type Editor } from 'ckeditor5/src/core.js';
8
8
  *
9
9
  * Introduces the `'textPartLanguage'` command and the `'language'` model element attribute.
10
10
  */
11
- export default class TextPartLanguageEditing extends Plugin {
11
+ export declare class TextPartLanguageEditing extends Plugin {
12
12
  /**
13
13
  * @inheritDoc
14
14
  */
@@ -3,14 +3,14 @@
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
4
  */
5
5
  import { Plugin } from 'ckeditor5/src/core.js';
6
- import TextPartLanguageCommand from './textpartlanguagecommand.js';
6
+ import { TextPartLanguageCommand } from './textpartlanguagecommand.js';
7
7
  import { stringifyLanguageAttribute, parseLanguageAttribute } from './utils.js';
8
8
  /**
9
9
  * The text part language editing.
10
10
  *
11
11
  * Introduces the `'textPartLanguage'` command and the `'language'` model element attribute.
12
12
  */
13
- export default class TextPartLanguageEditing extends Plugin {
13
+ export class TextPartLanguageEditing extends Plugin {
14
14
  /**
15
15
  * @inheritDoc
16
16
  */
@@ -11,7 +11,7 @@ import { Plugin } from 'ckeditor5/src/core.js';
11
11
  *
12
12
  * It introduces the `'language'` dropdown.
13
13
  */
14
- export default class TextPartLanguageUI extends Plugin {
14
+ export declare class TextPartLanguageUI extends Plugin {
15
15
  /**
16
16
  * @inheritDoc
17
17
  */
@@ -6,7 +6,7 @@
6
6
  * @module language/textpartlanguageui
7
7
  */
8
8
  import { Plugin } from 'ckeditor5/src/core.js';
9
- import { addListToDropdown, createDropdown, ListSeparatorView, MenuBarMenuView, MenuBarMenuListView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, ViewModel } from 'ckeditor5/src/ui.js';
9
+ import { addListToDropdown, createDropdown, ListSeparatorView, MenuBarMenuView, MenuBarMenuListView, MenuBarMenuListItemView, MenuBarMenuListItemButtonView, UIModel } from 'ckeditor5/src/ui.js';
10
10
  import { Collection } from 'ckeditor5/src/utils.js';
11
11
  import { stringifyLanguageAttribute } from './utils.js';
12
12
  /**
@@ -14,7 +14,7 @@ import { stringifyLanguageAttribute } from './utils.js';
14
14
  *
15
15
  * It introduces the `'language'` dropdown.
16
16
  */
17
- export default class TextPartLanguageUI extends Plugin {
17
+ export class TextPartLanguageUI extends Plugin {
18
18
  /**
19
19
  * @inheritDoc
20
20
  */
@@ -134,7 +134,7 @@ export default class TextPartLanguageUI extends Plugin {
134
134
  // Item definition with false `languageCode` will behave as remove lang button.
135
135
  itemDefinitions.add({
136
136
  type: 'button',
137
- model: new ViewModel({
137
+ model: new UIModel({
138
138
  label: removeTitle,
139
139
  languageCode: false,
140
140
  withText: true
@@ -146,7 +146,7 @@ export default class TextPartLanguageUI extends Plugin {
146
146
  for (const option of options) {
147
147
  const def = {
148
148
  type: 'button',
149
- model: new ViewModel({
149
+ model: new UIModel({
150
150
  label: option.title,
151
151
  languageCode: option.languageCode,
152
152
  role: 'menuitemradio',
package/src/utils.d.ts CHANGED
@@ -23,12 +23,14 @@ import { type LanguageDirection } from 'ckeditor5/src/utils.js';
23
23
  *
24
24
  * @param languageCode The language code in the ISO 639-1 format.
25
25
  * @param textDirection The language text direction. Automatically detected if omitted.
26
+ * @internal
26
27
  */
27
28
  export declare function stringifyLanguageAttribute(languageCode: string, textDirection?: LanguageDirection): string;
28
29
  /**
29
30
  * Retrieves language properties converted to attribute value by the
30
31
  * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.
31
32
  *
33
+ * @internal
32
34
  * @param str The attribute value.
33
35
  * @returns The object with properties:
34
36
  * * languageCode - The language code in the ISO 639 format.
package/src/utils.js CHANGED
@@ -23,6 +23,7 @@ import { getLanguageDirection } from 'ckeditor5/src/utils.js';
23
23
  *
24
24
  * @param languageCode The language code in the ISO 639-1 format.
25
25
  * @param textDirection The language text direction. Automatically detected if omitted.
26
+ * @internal
26
27
  */
27
28
  export function stringifyLanguageAttribute(languageCode, textDirection) {
28
29
  textDirection = textDirection || getLanguageDirection(languageCode);
@@ -32,6 +33,7 @@ export function stringifyLanguageAttribute(languageCode, textDirection) {
32
33
  * Retrieves language properties converted to attribute value by the
33
34
  * {@link module:language/utils~stringifyLanguageAttribute stringifyLanguageAttribute} function.
34
35
  *
36
+ * @internal
35
37
  * @param str The attribute value.
36
38
  * @returns The object with properties:
37
39
  * * languageCode - The language code in the ISO 639 format.