@ui5/webcomponents-ai 0.0.0-c143e338b → 0.0.0-ccb0705ac

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/.ui5-cem-aliases.json +4 -0
  2. package/CHANGELOG.md +114 -1
  3. package/README.md +2 -3
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/Button.d.ts +4 -2
  6. package/dist/Button.js +3 -2
  7. package/dist/Button.js.map +1 -1
  8. package/dist/ButtonState.d.ts +2 -1
  9. package/dist/ButtonState.js +2 -1
  10. package/dist/ButtonState.js.map +1 -1
  11. package/dist/Input.d.ts +7 -4
  12. package/dist/Input.js +4 -1
  13. package/dist/Input.js.map +1 -1
  14. package/dist/InputTemplate.js +1 -1
  15. package/dist/InputTemplate.js.map +1 -1
  16. package/dist/PromptInput.d.ts +4 -2
  17. package/dist/PromptInput.js +2 -1
  18. package/dist/PromptInput.js.map +1 -1
  19. package/dist/TextArea.d.ts +8 -1
  20. package/dist/TextArea.js +45 -3
  21. package/dist/TextArea.js.map +1 -1
  22. package/dist/TextAreaTemplate.js +1 -1
  23. package/dist/TextAreaTemplate.js.map +1 -1
  24. package/dist/WritingAssistant.d.ts +1 -0
  25. package/dist/WritingAssistant.js +4 -0
  26. package/dist/WritingAssistant.js.map +1 -1
  27. package/dist/WritingAssistantTemplate.js +1 -1
  28. package/dist/WritingAssistantTemplate.js.map +1 -1
  29. package/dist/css/themes/Button.css +1 -1
  30. package/dist/css/themes/Input.css +1 -1
  31. package/dist/css/themes/TextArea.css +1 -1
  32. package/dist/css/themes/WritingAssistant.css +1 -1
  33. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -0
  34. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -0
  35. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -0
  36. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -0
  37. package/dist/custom-elements-internal.json +38 -13
  38. package/dist/custom-elements.json +10 -3
  39. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  40. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  41. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  42. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  43. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  44. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  45. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  46. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  47. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  48. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  49. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  50. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  51. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  52. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  53. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  54. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  55. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  56. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  57. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  58. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  59. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  60. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  61. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  62. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  63. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  64. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  65. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  66. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  67. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  68. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  69. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  70. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  71. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  72. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  73. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  74. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  75. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  76. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  77. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  78. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  79. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  80. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  81. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  82. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  83. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  84. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  85. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  90. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  91. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  92. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  93. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  94. package/dist/generated/i18n/i18n-defaults.js +2 -2
  95. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  96. package/dist/generated/json-imports/Themes-fetch.js +1 -1
  97. package/dist/generated/json-imports/Themes-fetch.js.map +1 -1
  98. package/dist/generated/json-imports/Themes-node.js +1 -1
  99. package/dist/generated/json-imports/Themes-node.js.map +1 -1
  100. package/dist/generated/json-imports/Themes.js +1 -1
  101. package/dist/generated/json-imports/Themes.js.map +1 -1
  102. package/dist/generated/themes/Button.css.d.ts +1 -1
  103. package/dist/generated/themes/Button.css.js +2 -2
  104. package/dist/generated/themes/Button.css.js.map +1 -1
  105. package/dist/generated/themes/Input.css.d.ts +1 -1
  106. package/dist/generated/themes/Input.css.js +2 -2
  107. package/dist/generated/themes/Input.css.js.map +1 -1
  108. package/dist/generated/themes/PromptInput.css.js +1 -1
  109. package/dist/generated/themes/PromptInput.css.js.map +1 -1
  110. package/dist/generated/themes/TextArea.css.d.ts +1 -1
  111. package/dist/generated/themes/TextArea.css.js +2 -2
  112. package/dist/generated/themes/TextArea.css.js.map +1 -1
  113. package/dist/generated/themes/Versioning.css.js +1 -1
  114. package/dist/generated/themes/Versioning.css.js.map +1 -1
  115. package/dist/generated/themes/WritingAssistant.css.d.ts +1 -1
  116. package/dist/generated/themes/WritingAssistant.css.js +2 -2
  117. package/dist/generated/themes/WritingAssistant.css.js.map +1 -1
  118. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  119. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  120. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  121. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  122. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  123. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  124. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  125. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  126. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  127. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  128. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  129. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  130. package/dist/web-types.json +1 -1
  131. package/package-scripts.cjs +1 -0
  132. package/package.json +7 -9
  133. package/src/InputTemplate.tsx +1 -1
  134. package/src/TextArea.css +0 -20
  135. package/src/TextAreaTemplate.tsx +1 -0
  136. package/src/WritingAssistantTemplate.tsx +13 -11
  137. package/src/i18n/messagebundle.properties +4 -4
  138. package/src/i18n/messagebundle_ar.properties +10 -2
  139. package/src/i18n/messagebundle_bg.properties +10 -2
  140. package/src/i18n/messagebundle_ca.properties +10 -2
  141. package/src/i18n/messagebundle_cnr.properties +10 -2
  142. package/src/i18n/messagebundle_cs.properties +10 -2
  143. package/src/i18n/messagebundle_cy.properties +10 -2
  144. package/src/i18n/messagebundle_da.properties +10 -2
  145. package/src/i18n/messagebundle_de.properties +13 -5
  146. package/src/i18n/messagebundle_el.properties +10 -2
  147. package/src/i18n/messagebundle_en.properties +10 -2
  148. package/src/i18n/messagebundle_en_GB.properties +10 -2
  149. package/src/i18n/messagebundle_en_US_sappsd.properties +10 -2
  150. package/src/i18n/messagebundle_en_US_saprigi.properties +10 -2
  151. package/src/i18n/messagebundle_en_US_saptrc.properties +10 -2
  152. package/src/i18n/messagebundle_es.properties +10 -2
  153. package/src/i18n/messagebundle_es_MX.properties +12 -4
  154. package/src/i18n/messagebundle_et.properties +10 -2
  155. package/src/i18n/messagebundle_fi.properties +10 -2
  156. package/src/i18n/messagebundle_fr.properties +10 -2
  157. package/src/i18n/messagebundle_fr_CA.properties +10 -2
  158. package/src/i18n/messagebundle_hi.properties +10 -2
  159. package/src/i18n/messagebundle_hr.properties +10 -2
  160. package/src/i18n/messagebundle_hu.properties +10 -2
  161. package/src/i18n/messagebundle_id.properties +10 -2
  162. package/src/i18n/messagebundle_it.properties +10 -2
  163. package/src/i18n/messagebundle_iw.properties +12 -4
  164. package/src/i18n/messagebundle_ja.properties +10 -2
  165. package/src/i18n/messagebundle_kk.properties +10 -2
  166. package/src/i18n/messagebundle_ko.properties +10 -2
  167. package/src/i18n/messagebundle_lt.properties +10 -2
  168. package/src/i18n/messagebundle_lv.properties +10 -2
  169. package/src/i18n/messagebundle_mk.properties +10 -2
  170. package/src/i18n/messagebundle_ms.properties +10 -2
  171. package/src/i18n/messagebundle_nl.properties +10 -2
  172. package/src/i18n/messagebundle_no.properties +10 -2
  173. package/src/i18n/messagebundle_pl.properties +10 -2
  174. package/src/i18n/messagebundle_pt.properties +10 -2
  175. package/src/i18n/messagebundle_pt_PT.properties +10 -2
  176. package/src/i18n/messagebundle_ro.properties +10 -2
  177. package/src/i18n/messagebundle_ru.properties +10 -2
  178. package/src/i18n/messagebundle_sh.properties +10 -2
  179. package/src/i18n/messagebundle_sk.properties +10 -2
  180. package/src/i18n/messagebundle_sl.properties +10 -2
  181. package/src/i18n/messagebundle_sr.properties +10 -2
  182. package/src/i18n/messagebundle_sv.properties +11 -3
  183. package/src/i18n/messagebundle_th.properties +10 -2
  184. package/src/i18n/messagebundle_tr.properties +10 -2
  185. package/src/i18n/messagebundle_uk.properties +10 -2
  186. package/src/i18n/messagebundle_vi.properties +10 -2
  187. package/src/i18n/messagebundle_zh_CN.properties +10 -2
  188. package/src/i18n/messagebundle_zh_TW.properties +10 -2
  189. package/src/themes/WritingAssistant.css +0 -22
  190. package/src/themes/base/Button-parameters.css +1 -1
package/dist/TextArea.js CHANGED
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var TextArea_1;
8
8
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
9
9
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
10
- import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
10
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
11
11
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
12
12
  import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
13
13
  import { BaseTextArea } from "@ui5/webcomponents/dist/TextArea.js";
@@ -41,6 +41,7 @@ import TextAreaTemplate from "./TextAreaTemplate.js";
41
41
  * @constructor
42
42
  * @extends BaseTextArea
43
43
  * @experimental The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.
44
+ * Furthermore, the package supports **Horizon** themes only.
44
45
  * @since 2.16.0
45
46
  * @public
46
47
  * @slot {HTMLElement} menu Defines a slot for `ui5-menu` integration. This slot allows you to pass a `ui5-menu` instance that will be associated with the assistant.
@@ -80,6 +81,7 @@ let TextArea = TextArea_1 = class TextArea extends BaseTextArea {
80
81
  * @public
81
82
  */
82
83
  this.totalVersions = 0;
84
+ this.focused = false;
83
85
  /**
84
86
  * Handles the generate click event from the AI toolbar.
85
87
  * Opens the AI menu and sets the opener element.
@@ -96,7 +98,8 @@ let TextArea = TextArea_1 = class TextArea extends BaseTextArea {
96
98
  }
97
99
  const menu = menuNodes[0];
98
100
  if (menu && typeof menu.open !== "undefined") {
99
- menu.opener = e.detail.clickTarget;
101
+ menu.opener = e.detail.clickTarget.shadowRoot?.querySelector("ui5-button");
102
+ menu.horizontalAlign = "End";
100
103
  menu.open = true;
101
104
  }
102
105
  };
@@ -171,12 +174,48 @@ let TextArea = TextArea_1 = class TextArea extends BaseTextArea {
171
174
  */
172
175
  onAfterRendering() {
173
176
  super.onAfterRendering();
174
- // Add keydown event listener to the textarea
175
177
  const textarea = this.shadowRoot?.querySelector("textarea");
176
178
  if (textarea && !this._keydownHandler) {
177
179
  this._keydownHandler = this._handleKeydown.bind(this);
178
180
  textarea.addEventListener("keydown", this._keydownHandler);
179
181
  }
182
+ const menuNodes = this.getSlottedNodes("menu");
183
+ if (menuNodes.length > 0) {
184
+ const menu = menuNodes[0];
185
+ if (!this._menuFocusinHandler) {
186
+ this._menuFocusinHandler = () => {
187
+ this.focused = true;
188
+ };
189
+ menu.addEventListener("focusin", this._menuFocusinHandler);
190
+ }
191
+ if (!this._menuFocusoutHandler) {
192
+ this._menuFocusoutHandler = (evt) => {
193
+ const e = evt;
194
+ const relatedTarget = e.relatedTarget;
195
+ const focusMovingWithinComponent = relatedTarget && this.shadowRoot?.contains(relatedTarget);
196
+ const focusStayingInMenu = relatedTarget && menu.contains(relatedTarget);
197
+ if (!focusMovingWithinComponent && !focusStayingInMenu) {
198
+ this.focused = false;
199
+ }
200
+ };
201
+ menu.addEventListener("focusout", this._menuFocusoutHandler);
202
+ }
203
+ }
204
+ }
205
+ _onfocusin() {
206
+ super._onfocusin();
207
+ this.focused = true;
208
+ }
209
+ _onfocusout(e) {
210
+ super._onfocusout(e);
211
+ const relatedTarget = e.relatedTarget;
212
+ const focusMovingWithinShadowDOM = relatedTarget && this.shadowRoot?.contains(relatedTarget);
213
+ const menuNodes = this.getSlottedNodes("menu");
214
+ const focusMovingToMenu = menuNodes.length > 0 && relatedTarget && (menuNodes[0].contains(relatedTarget)
215
+ || relatedTarget === menuNodes[0]);
216
+ if (!focusMovingWithinShadowDOM && !focusMovingToMenu) {
217
+ this.focused = false;
218
+ }
180
219
  }
181
220
  get _ariaLabel() {
182
221
  return this.accessibleName || TextArea_1.i18nBundle.getText(WRITING_ASSISTANT_LABEL);
@@ -194,6 +233,9 @@ __decorate([
194
233
  __decorate([
195
234
  property({ type: Number })
196
235
  ], TextArea.prototype, "totalVersions", void 0);
236
+ __decorate([
237
+ property({ type: Boolean })
238
+ ], TextArea.prototype, "focused", void 0);
197
239
  __decorate([
198
240
  slot({ type: HTMLElement })
199
241
  ], TextArea.prototype, "menu", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../src/TextArea.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n\nimport { BaseTextArea } from \"@ui5/webcomponents/dist/TextArea.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tWRITING_ASSISTANT_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\n// Styles\nimport TextAreaCss from \"./generated/themes/TextArea.css.js\";\nimport textareaStyles from \"@ui5/webcomponents/dist/generated/themes/TextArea.css.js\";\nimport valueStateMessageStyles from \"@ui5/webcomponents/dist/generated/themes/ValueStateMessage.css.js\";\n\n// Templates\nimport TextAreaTemplate from \"./TextAreaTemplate.js\";\n\ntype TextAreaVersionChangeEventDetail = {\n\tbackwards: boolean,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-ai-textarea` component extends the standard TextArea with Writing Assistant capabilities.\n * It provides AI-powered text generation, editing suggestions, and version management functionality.\n *\n * ### Structure\n * The `ui5-ai-textarea` consists of the following elements:\n * - TextArea: The main text input area with all standard textarea functionality\n * - WritingAssistant: Dedicated toolbar containing:\n * - Versioning: A component with left/right navigation buttons and a label for browsing AI-generated versions\n * - AI Button: Opens a menu that can be extended with custom AI generation options through slotting\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-ai/dist/TextArea.js\";`\n *\n * @constructor\n * @extends BaseTextArea\n * @experimental The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.\n * @since 2.16.0\n * @public\n * @slot {HTMLElement} menu Defines a slot for `ui5-menu` integration. This slot allows you to pass a `ui5-menu` instance that will be associated with the assistant.\n */\n@customElement({\n\ttag: \"ui5-ai-textarea\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: TextAreaTemplate,\n\tstyles: [\n\t\ttextareaStyles,\n\t\tvalueStateMessageStyles,\n\t\tTextAreaCss,\n\t],\n})\n\n/**\n * Fired when the user clicks on version navigation buttons.\n *\n * @param {boolean} backwards - Indicates if navigation is backwards (true) or forwards (false, default).\n * @public\n */\n@event(\"version-change\")\n\n/**\n * Fired when the user requests to stop AI text generation.\n *\n * @public\n */\n@event(\"stop-generation\")\n\nclass TextArea extends BaseTextArea {\n\teventDetails!: BaseTextArea[\"eventDetails\"] & {\n\t\t\"version-change\": TextAreaVersionChangeEventDetail;\n\t\t\"stop-generation\": void;\n\t};\n\n\t// Store bound handler for proper cleanup\n\tprivate _keydownHandler?: (event: KeyboardEvent) => void;\n\n\t/**\n\t * Defines whether the `ui5-ai-textarea` is currently in a loading(processing) state.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the prompt description of the current action.\n\t *\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tpromptDescription = \"\";\n\n\t/**\n\t * Indicates the index of the currently displayed version.\n\t *\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tcurrentVersion = 0;\n\n\t/**\n\t * Indicates the total number of result versions available.\n\t *\n\t * Notes:\n\t * Versioning is hidden if the value is `0`\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\ttotalVersions = 0;\n\n\t@slot({ type: HTMLElement })\n\tmenu!: Array<HTMLElement>;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tTextArea.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-ai\");\n\t}\n\n\t/**\n\t * Handles the click event for the \"Previous Version\" button.\n\t * Updates the current version index and syncs content.\n\t */\n\t_handlePreviousVersionClick(): void {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: true });\n\t}\n\n\t/**\n\t * Handles the click event for the \"Next Version\" button.\n\t * Updates the current version index and syncs content.\n\t */\n\t_handleNextVersionClick(): void {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: false });\n\t}\n\n\t/**\n\t * Handles the version change event from the writing assistant.\n\t */\n\t_handleVersionChange(e: CustomEvent<{ backwards: boolean }>): void {\n\t\tif (e.detail.backwards) {\n\t\t\tthis._handlePreviousVersionClick();\n\t\t} else {\n\t\t\tthis._handleNextVersionClick();\n\t\t}\n\t}\n\n\t/**\n\t * Handles keydown events for keyboard shortcuts.\n\t * @private\n\t */\n\t_handleKeydown(keyboardEvent: KeyboardEvent) {\n\t\tconst isCtrlOrCmd = keyboardEvent.ctrlKey || keyboardEvent.metaKey;\n\t\tconst isShift = keyboardEvent.shiftKey;\n\n\t\tif (isShift && keyboardEvent.key.toLowerCase() === \"f4\") {\n\t\t\tconst toolbar = this.shadowRoot?.querySelector(\"[ui5-ai-writing-assistant]\") as HTMLElement;\n\t\t\tconst aiButton = toolbar?.shadowRoot?.querySelector(\"#ai-menu-btn\") as HTMLElement;\n\n\t\t\tif (aiButton) {\n\t\t\t\taiButton.focus();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.totalVersions > 1) {\n\t\t\tif (isCtrlOrCmd && isShift && keyboardEvent.key.toLowerCase() === \"z\") {\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tthis._handlePreviousVersionClick();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isCtrlOrCmd && isShift && keyboardEvent.key.toLowerCase() === \"y\") {\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tthis._handleNextVersionClick();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Overrides the parent's onAfterRendering to add keydown handler.\n\t * @private\n\t */\n\tonAfterRendering() {\n\t\tsuper.onAfterRendering();\n\n\t\t// Add keydown event listener to the textarea\n\t\tconst textarea = this.shadowRoot?.querySelector(\"textarea\");\n\t\tif (textarea && !this._keydownHandler) {\n\t\t\tthis._keydownHandler = this._handleKeydown.bind(this);\n\t\t\ttextarea.addEventListener(\"keydown\", this._keydownHandler);\n\t\t}\n\t}\n\n\t/**\n\t * Handles the generate click event from the AI toolbar.\n\t * Opens the AI menu and sets the opener element.\n\t *\n\t * @private\n\t */\n\t_handleAIButtonClick = (e: CustomEvent<{ clickTarget?: HTMLElement }>) => {\n\t\tconst menuNodes = this.getSlottedNodes(\"menu\");\n\t\tif (menuNodes.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (!e.detail?.clickTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst menu = menuNodes[0] as HTMLElement & { opener?: HTMLElement; open?: boolean };\n\t\tif (menu && typeof menu.open !== \"undefined\") {\n\t\t\tmenu.opener = e.detail.clickTarget;\n\t\t\tmenu.open = true;\n\t\t}\n\t}\n\tget _ariaLabel() {\n\t\treturn this.accessibleName || TextArea.i18nBundle.getText(WRITING_ASSISTANT_LABEL);\n\t}\n\n\t/**\n\t * Handles the stop generation event from the AI toolbar.\n\t * Fires the stop-generation event to notify listeners.\n\t *\n\t * @private\n\t */\n\thandleStopGeneration = () => {\n\t\tthis.fireDecoratorEvent(\"stop-generation\");\n\t}\n}\n\nTextArea.define();\n\nexport type { TextAreaVersionChangeEventDetail };\nexport default TextArea;\n"]}
1
+ {"version":3,"file":"TextArea.js","sourceRoot":"","sources":["../src/TextArea.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot-strict.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n\nimport { BaseTextArea } from \"@ui5/webcomponents/dist/TextArea.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tWRITING_ASSISTANT_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\n// Styles\nimport TextAreaCss from \"./generated/themes/TextArea.css.js\";\nimport textareaStyles from \"@ui5/webcomponents/dist/generated/themes/TextArea.css.js\";\nimport valueStateMessageStyles from \"@ui5/webcomponents/dist/generated/themes/ValueStateMessage.css.js\";\n\n// Templates\nimport TextAreaTemplate from \"./TextAreaTemplate.js\";\nimport type { Slot } from \"@ui5/webcomponents-base/dist/UI5Element.js\";\n\ntype TextAreaVersionChangeEventDetail = {\n\tbackwards: boolean,\n};\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-ai-textarea` component extends the standard TextArea with Writing Assistant capabilities.\n * It provides AI-powered text generation, editing suggestions, and version management functionality.\n *\n * ### Structure\n * The `ui5-ai-textarea` consists of the following elements:\n * - TextArea: The main text input area with all standard textarea functionality\n * - WritingAssistant: Dedicated toolbar containing:\n * - Versioning: A component with left/right navigation buttons and a label for browsing AI-generated versions\n * - AI Button: Opens a menu that can be extended with custom AI generation options through slotting\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-ai/dist/TextArea.js\";`\n *\n * @constructor\n * @extends BaseTextArea\n * @experimental The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.\n * Furthermore, the package supports **Horizon** themes only.\n * @since 2.16.0\n * @public\n * @slot {HTMLElement} menu Defines a slot for `ui5-menu` integration. This slot allows you to pass a `ui5-menu` instance that will be associated with the assistant.\n */\n@customElement({\n\ttag: \"ui5-ai-textarea\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: TextAreaTemplate,\n\tstyles: [\n\t\ttextareaStyles,\n\t\tvalueStateMessageStyles,\n\t\tTextAreaCss,\n\t],\n})\n\n/**\n * Fired when the user clicks on version navigation buttons.\n *\n * @param {boolean} backwards - Indicates if navigation is backwards (true) or forwards (false, default).\n * @public\n */\n@event(\"version-change\")\n\n/**\n * Fired when the user requests to stop AI text generation.\n *\n * @public\n */\n@event(\"stop-generation\")\n\nclass TextArea extends BaseTextArea {\n\teventDetails!: BaseTextArea[\"eventDetails\"] & {\n\t\t\"version-change\": TextAreaVersionChangeEventDetail;\n\t\t\"stop-generation\": void;\n\t};\n\n\t// Store bound handler for proper cleanup\n\tprivate _keydownHandler?: (event: KeyboardEvent) => void;\n\tprivate _menuFocusinHandler?: () => void;\n\tprivate _menuFocusoutHandler?: (event: Event) => void;\n\n\t/**\n\t * Defines whether the `ui5-ai-textarea` is currently in a loading(processing) state.\n\t *\n\t * @default false\n\t * @public\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the prompt description of the current action.\n\t *\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tpromptDescription = \"\";\n\n\t/**\n\t * Indicates the index of the currently displayed version.\n\t *\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tcurrentVersion = 0;\n\n\t/**\n\t * Indicates the total number of result versions available.\n\t *\n\t * Notes:\n\t * Versioning is hidden if the value is `0`\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\ttotalVersions = 0;\n\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t@slot({ type: HTMLElement })\n\tmenu!: Slot<HTMLElement>;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tTextArea.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-ai\");\n\t}\n\n\t/**\n\t * Handles the click event for the \"Previous Version\" button.\n\t * Updates the current version index and syncs content.\n\t */\n\t_handlePreviousVersionClick(): void {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: true });\n\t}\n\n\t/**\n\t * Handles the click event for the \"Next Version\" button.\n\t * Updates the current version index and syncs content.\n\t */\n\t_handleNextVersionClick(): void {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: false });\n\t}\n\n\t/**\n\t * Handles the version change event from the writing assistant.\n\t */\n\t_handleVersionChange(e: CustomEvent<{ backwards: boolean }>): void {\n\t\tif (e.detail.backwards) {\n\t\t\tthis._handlePreviousVersionClick();\n\t\t} else {\n\t\t\tthis._handleNextVersionClick();\n\t\t}\n\t}\n\n\t/**\n\t * Handles keydown events for keyboard shortcuts.\n\t * @private\n\t */\n\t_handleKeydown(keyboardEvent: KeyboardEvent) {\n\t\tconst isCtrlOrCmd = keyboardEvent.ctrlKey || keyboardEvent.metaKey;\n\t\tconst isShift = keyboardEvent.shiftKey;\n\n\t\tif (isShift && keyboardEvent.key.toLowerCase() === \"f4\") {\n\t\t\tconst toolbar = this.shadowRoot?.querySelector(\"[ui5-ai-writing-assistant]\") as HTMLElement;\n\t\t\tconst aiButton = toolbar?.shadowRoot?.querySelector(\"#ai-menu-btn\") as HTMLElement;\n\n\t\t\tif (aiButton) {\n\t\t\t\taiButton.focus();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.totalVersions > 1) {\n\t\t\tif (isCtrlOrCmd && isShift && keyboardEvent.key.toLowerCase() === \"z\") {\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tthis._handlePreviousVersionClick();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isCtrlOrCmd && isShift && keyboardEvent.key.toLowerCase() === \"y\") {\n\t\t\t\tkeyboardEvent.preventDefault();\n\t\t\t\tthis._handleNextVersionClick();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Overrides the parent's onAfterRendering to add keydown handler.\n\t * @private\n\t */\n\tonAfterRendering() {\n\t\tsuper.onAfterRendering();\n\n\t\tconst textarea = this.shadowRoot?.querySelector(\"textarea\");\n\t\tif (textarea && !this._keydownHandler) {\n\t\t\tthis._keydownHandler = this._handleKeydown.bind(this);\n\t\t\ttextarea.addEventListener(\"keydown\", this._keydownHandler);\n\t\t}\n\n\t\tconst menuNodes = this.getSlottedNodes(\"menu\");\n\t\tif (menuNodes.length > 0) {\n\t\t\tconst menu = menuNodes[0];\n\t\t\tif (!this._menuFocusinHandler) {\n\t\t\t\tthis._menuFocusinHandler = () => {\n\t\t\t\t\tthis.focused = true;\n\t\t\t\t};\n\t\t\t\tmenu.addEventListener(\"focusin\", this._menuFocusinHandler);\n\t\t\t}\n\t\t\tif (!this._menuFocusoutHandler) {\n\t\t\t\tthis._menuFocusoutHandler = (evt: Event) => {\n\t\t\t\t\tconst e = evt as FocusEvent;\n\t\t\t\t\tconst relatedTarget = e.relatedTarget as HTMLElement;\n\t\t\t\t\tconst focusMovingWithinComponent = relatedTarget && this.shadowRoot?.contains(relatedTarget);\n\t\t\t\t\tconst focusStayingInMenu = relatedTarget && menu.contains(relatedTarget);\n\t\t\t\t\tif (!focusMovingWithinComponent && !focusStayingInMenu) {\n\t\t\t\t\t\tthis.focused = false;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tmenu.addEventListener(\"focusout\", this._menuFocusoutHandler);\n\t\t\t}\n\t\t}\n\t}\n\n\t_onfocusin() {\n\t\tsuper._onfocusin();\n\t\tthis.focused = true;\n\t}\n\n\t_onfocusout(e: FocusEvent) {\n\t\tsuper._onfocusout(e);\n\t\tconst relatedTarget = e.relatedTarget as HTMLElement;\n\t\tconst focusMovingWithinShadowDOM = relatedTarget && this.shadowRoot?.contains(relatedTarget);\n\t\tconst menuNodes = this.getSlottedNodes(\"menu\");\n\t\tconst focusMovingToMenu = menuNodes.length > 0 && relatedTarget && (\n\t\t\tmenuNodes[0].contains(relatedTarget)\n\t\t\t|| relatedTarget === menuNodes[0]\n\t\t);\n\t\tif (!focusMovingWithinShadowDOM && !focusMovingToMenu) {\n\t\t\tthis.focused = false;\n\t\t}\n\t}\n\n\t/**\n\t * Handles the generate click event from the AI toolbar.\n\t * Opens the AI menu and sets the opener element.\n\t *\n\t * @private\n\t */\n\t_handleAIButtonClick = (e: CustomEvent<{ clickTarget?: HTMLElement }>) => {\n\t\tconst menuNodes = this.getSlottedNodes(\"menu\");\n\t\tif (menuNodes.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tif (!e.detail?.clickTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst menu = menuNodes[0] as HTMLElement & { opener?: HTMLElement; open?: boolean, horizontalAlign?: string };\n\t\tif (menu && typeof menu.open !== \"undefined\") {\n\t\t\tmenu.opener = e.detail.clickTarget.shadowRoot?.querySelector(\"ui5-button\") as HTMLElement;\n\t\t\tmenu.horizontalAlign = \"End\";\n\t\t\tmenu.open = true;\n\t\t}\n\t}\n\tget _ariaLabel() {\n\t\treturn this.accessibleName || TextArea.i18nBundle.getText(WRITING_ASSISTANT_LABEL);\n\t}\n\n\t/**\n\t * Handles the stop generation event from the AI toolbar.\n\t * Fires the stop-generation event to notify listeners.\n\t *\n\t * @private\n\t */\n\thandleStopGeneration = () => {\n\t\tthis.fireDecoratorEvent(\"stop-generation\");\n\t}\n}\n\nTextArea.define();\n\nexport type { TextAreaVersionChangeEventDetail };\nexport default TextArea;\n"]}
@@ -6,7 +6,7 @@ export default function TextAreaTemplate() {
6
6
  return (_jsxs("div", { class: "ui5-ai-textarea-root", children: [_jsxs("div", { class: this.classes.root, onFocusIn: this._onfocusin, onFocusOut: this._onfocusout, children: [_jsxs("div", { class: "ui5-textarea-wrapper", children: [this.growing &&
7
7
  _jsx("div", { id: `${this._id}-mirror`, class: "ui5-textarea-mirror", "aria-hidden": "true", children: this._mirrorText.map(mirrorText => {
8
8
  return (_jsxs(_Fragment, { children: [mirrorText.text, _jsx("br", {})] }));
9
- }) }), _jsx(BusyIndicator, { id: `${this._id}-busyIndicator`, active: this.loading, class: "ui5-textarea-busy-indicator", children: _jsx("textarea", { id: `${this._id}-inner`, class: "ui5-textarea-inner", part: "textarea", placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, "aria-label": this._ariaLabel, "aria-describedby": this.ariaDescribedBy, "aria-invalid": this._ariaInvalid, "aria-required": this.required, maxlength: this._exceededTextProps.calcedMaxLength, value: this.value, "data-sap-focus-ref": true, onInput: this._oninput, onChange: this._onchange, onKeyUp: this._onkeyup, onKeyDown: this._onkeydown, onSelect: this._onselect, onScroll: this._onscroll }) }), _jsx("div", { part: "footer", children: _jsx("slot", { name: "footer", children: _jsx(WritingAssistant, { loading: this.loading, currentVersion: this.currentVersion, totalVersions: this.totalVersions, promptDescription: this.promptDescription, onButtonClick: this._handleAIButtonClick, onStopGeneration: this.handleStopGeneration, onVersionChange: this._handleVersionChange }) }) })] }), this.showExceededText &&
9
+ }) }), _jsx(BusyIndicator, { id: `${this._id}-busyIndicator`, active: this.loading, class: "ui5-textarea-busy-indicator", children: _jsx("textarea", { id: `${this._id}-inner`, class: "ui5-textarea-inner", part: "textarea", placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, "aria-label": this._ariaLabel, "aria-describedby": this.ariaDescribedBy, "aria-invalid": this._ariaInvalid, "aria-required": this.required, maxlength: this._exceededTextProps.calcedMaxLength, value: this.value, "data-sap-focus-ref": true, onInput: this._oninput, onChange: this._onchange, onKeyUp: this._onkeyup, onKeyDown: this._onkeydown, onSelect: this._onselect, onScroll: this._onscroll }) }), _jsx("div", { part: "footer", children: _jsx("slot", { name: "footer", children: _jsx(WritingAssistant, { loading: this.loading, currentVersion: this.currentVersion, totalVersions: this.totalVersions, promptDescription: this.promptDescription, focused: this.focused, onButtonClick: this._handleAIButtonClick, onStopGeneration: this.handleStopGeneration, onVersionChange: this._handleVersionChange }) }) })] }), this.showExceededText &&
10
10
  _jsx("span", { class: "ui5-textarea-exceeded-text", children: this._exceededTextProps.exceededText }), this.hasValueState &&
11
11
  _jsx("span", { id: `${this._id}-valueStateDesc`, class: "ui5-hidden-text", children: this.ariaValueStateHiddenText })] }), TextAreaPopoverTemplate.call(this), _jsx("div", { "aria-live": "polite", "aria-atomic": "true", class: "ui5-hidden-text", children: this.loading ? this.promptDescription : "" }), _jsx("div", { id: "ai-menu-wrapper", children: _jsx("slot", { name: "menu" }) })] }));
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaTemplate.js","sourceRoot":"","sources":["../src/TextAreaTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,uBAAuB,MAAM,oDAAoD,CAAC;AAEzF,MAAM,CAAC,OAAO,UAAU,gBAAgB;IACvC,OAAO,CACN,eAAK,KAAK,EAAC,sBAAsB,aAChC,eACC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EACxB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,aAE5B,eAAK,KAAK,EAAC,sBAAsB,aAC/B,IAAI,CAAC,OAAO;gCACb,cAAK,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,EAAE,KAAK,EAAC,qBAAqB,iBAAa,MAAM,YAC3E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;wCAClC,OAAO,CACN,8BACE,UAAU,CAAC,IAAI,EAChB,cAAM,IACJ,CACH,CAAC;oCACH,CAAC,CAAC,GACG,EAEN,KAAC,aAAa,IACb,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,gBAAgB,EAC/B,MAAM,EAAE,IAAI,CAAC,OAAO,EACpB,KAAK,EAAC,6BAA6B,YAEnC,mBACC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,EACvB,KAAK,EAAC,oBAAoB,EAC1B,IAAI,EAAC,UAAU,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,gBACX,IAAI,CAAC,UAAU,sBACT,IAAI,CAAC,eAAe,kBACxB,IAAI,CAAC,YAAY,mBAChB,IAAI,CAAC,QAAQ,EAC5B,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAClD,KAAK,EAAE,IAAI,CAAC,KAAK,8BAEjB,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,QAAQ,EAAE,IAAI,CAAC,SAAS,GACd,GACI,EAChB,cAAK,IAAI,EAAC,QAAQ,YACjB,eAAM,IAAI,EAAC,QAAQ,YAClB,KAAC,gBAAgB,IAChB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,aAAa,EAAE,IAAI,CAAC,oBAAoB,EACxC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAC3C,eAAe,EAAE,IAAI,CAAC,oBAAoB,GACzC,GACI,GACF,IACD,EAEL,IAAI,CAAC,gBAAgB;wBACtB,eAAM,KAAK,EAAC,4BAA4B,YAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAQ,EAGrF,IAAI,CAAC,aAAa;wBACnB,eAAM,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,iBAAiB,EAAE,KAAK,EAAC,iBAAiB,YAAE,IAAI,CAAC,wBAAwB,GAAQ,IAEjG,EAEL,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAGnC,2BAAe,QAAQ,iBAAa,MAAM,EAAC,KAAK,EAAC,iBAAiB,YAChE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GACtC,EAEN,cAAK,EAAE,EAAC,iBAAiB,YACxB,eAAM,IAAI,EAAC,MAAM,GAAQ,GACpB,IACD,CACN,CAAC;AACH,CAAC","sourcesContent":["import type TextArea from \"./TextArea.js\";\nimport WritingAssistant from \"./WritingAssistant.js\";\nimport BusyIndicator from \"@ui5/webcomponents/dist/BusyIndicator.js\";\nimport TextAreaPopoverTemplate from \"@ui5/webcomponents/dist/TextAreaPopoverTemplate.js\";\n\nexport default function TextAreaTemplate(this: TextArea) {\n\treturn (\n\t\t<div class=\"ui5-ai-textarea-root\">\n\t\t\t<div\n\t\t\t\tclass={this.classes.root}\n\t\t\t\tonFocusIn={this._onfocusin}\n\t\t\t\tonFocusOut={this._onfocusout}\n\t\t\t>\n\t\t\t\t<div class=\"ui5-textarea-wrapper\">\n\t\t\t\t\t{this.growing &&\n\t\t\t\t\t<div id={`${this._id}-mirror`} class=\"ui5-textarea-mirror\" aria-hidden=\"true\">\n\t\t\t\t\t\t{this._mirrorText.map(mirrorText => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{mirrorText.text}\n\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<BusyIndicator\n\t\t\t\t\t\tid={`${this._id}-busyIndicator`}\n\t\t\t\t\t\tactive={this.loading}\n\t\t\t\t\t\tclass=\"ui5-textarea-busy-indicator\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tid={`${this._id}-inner`}\n\t\t\t\t\t\t\tclass=\"ui5-textarea-inner\"\n\t\t\t\t\t\t\tpart=\"textarea\"\n\t\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\t\taria-label={this._ariaLabel}\n\t\t\t\t\t\t\taria-describedby={this.ariaDescribedBy}\n\t\t\t\t\t\t\taria-invalid={this._ariaInvalid}\n\t\t\t\t\t\t\taria-required={this.required}\n\t\t\t\t\t\t\tmaxlength={this._exceededTextProps.calcedMaxLength}\n\t\t\t\t\t\t\tvalue={this.value}\n\t\t\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t\t\t\tonInput={this._oninput}\n\t\t\t\t\t\t\tonChange={this._onchange}\n\t\t\t\t\t\t\tonKeyUp={this._onkeyup}\n\t\t\t\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\t\t\t\tonSelect={this._onselect}\n\t\t\t\t\t\t\tonScroll={this._onscroll}>\n\t\t\t\t\t\t</textarea>\n\t\t\t\t\t</BusyIndicator>\n\t\t\t\t\t<div part=\"footer\">\n\t\t\t\t\t\t<slot name=\"footer\">\n\t\t\t\t\t\t\t<WritingAssistant\n\t\t\t\t\t\t\t\tloading={this.loading}\n\t\t\t\t\t\t\t\tcurrentVersion={this.currentVersion}\n\t\t\t\t\t\t\t\ttotalVersions={this.totalVersions}\n\t\t\t\t\t\t\t\tpromptDescription={this.promptDescription}\n\t\t\t\t\t\t\t\tonButtonClick={this._handleAIButtonClick}\n\t\t\t\t\t\t\t\tonStopGeneration={this.handleStopGeneration}\n\t\t\t\t\t\t\t\tonVersionChange={this._handleVersionChange}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{this.showExceededText &&\n\t\t\t\t<span class=\"ui5-textarea-exceeded-text\">{this._exceededTextProps.exceededText}</span>\n\t\t\t\t}\n\n\t\t\t\t{this.hasValueState &&\n\t\t\t\t<span id={`${this._id}-valueStateDesc`} class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t{TextAreaPopoverTemplate.call(this)}\n\n\t\t\t{/* ARIA live region for screen readers */}\n\t\t\t<div aria-live=\"polite\" aria-atomic=\"true\" class=\"ui5-hidden-text\">\n\t\t\t\t{this.loading ? this.promptDescription : \"\"}\n\t\t\t</div>\n\n\t\t\t<div id=\"ai-menu-wrapper\">\n\t\t\t\t<slot name=\"menu\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"file":"TextAreaTemplate.js","sourceRoot":"","sources":["../src/TextAreaTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import type TextArea from \"./TextArea.js\";\nimport WritingAssistant from \"./WritingAssistant.js\";\nimport BusyIndicator from \"@ui5/webcomponents/dist/BusyIndicator.js\";\nimport TextAreaPopoverTemplate from \"@ui5/webcomponents/dist/TextAreaPopoverTemplate.js\";\n\nexport default function TextAreaTemplate(this: TextArea) {\n\treturn (\n\t\t<div class=\"ui5-ai-textarea-root\">\n\t\t\t<div\n\t\t\t\tclass={this.classes.root}\n\t\t\t\tonFocusIn={this._onfocusin}\n\t\t\t\tonFocusOut={this._onfocusout}\n\t\t\t>\n\t\t\t\t<div class=\"ui5-textarea-wrapper\">\n\t\t\t\t\t{this.growing &&\n\t\t\t\t\t<div id={`${this._id}-mirror`} class=\"ui5-textarea-mirror\" aria-hidden=\"true\">\n\t\t\t\t\t\t{this._mirrorText.map(mirrorText => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{mirrorText.text}\n\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<BusyIndicator\n\t\t\t\t\t\tid={`${this._id}-busyIndicator`}\n\t\t\t\t\t\tactive={this.loading}\n\t\t\t\t\t\tclass=\"ui5-textarea-busy-indicator\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\tid={`${this._id}-inner`}\n\t\t\t\t\t\t\tclass=\"ui5-textarea-inner\"\n\t\t\t\t\t\t\tpart=\"textarea\"\n\t\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\t\taria-label={this._ariaLabel}\n\t\t\t\t\t\t\taria-describedby={this.ariaDescribedBy}\n\t\t\t\t\t\t\taria-invalid={this._ariaInvalid}\n\t\t\t\t\t\t\taria-required={this.required}\n\t\t\t\t\t\t\tmaxlength={this._exceededTextProps.calcedMaxLength}\n\t\t\t\t\t\t\tvalue={this.value}\n\t\t\t\t\t\t\tdata-sap-focus-ref\n\t\t\t\t\t\t\tonInput={this._oninput}\n\t\t\t\t\t\t\tonChange={this._onchange}\n\t\t\t\t\t\t\tonKeyUp={this._onkeyup}\n\t\t\t\t\t\t\tonKeyDown={this._onkeydown}\n\t\t\t\t\t\t\tonSelect={this._onselect}\n\t\t\t\t\t\t\tonScroll={this._onscroll}>\n\t\t\t\t\t\t</textarea>\n\t\t\t\t\t</BusyIndicator>\n\t\t\t\t\t<div part=\"footer\">\n\t\t\t\t\t\t<slot name=\"footer\">\n\t\t\t\t\t\t\t<WritingAssistant\n\t\t\t\t\t\t\t\tloading={this.loading}\n\t\t\t\t\t\t\t\tcurrentVersion={this.currentVersion}\n\t\t\t\t\t\t\t\ttotalVersions={this.totalVersions}\n\t\t\t\t\t\t\t\tpromptDescription={this.promptDescription}\n\t\t\t\t\t\t\t\tfocused={this.focused}\n\t\t\t\t\t\t\t\tonButtonClick={this._handleAIButtonClick}\n\t\t\t\t\t\t\t\tonStopGeneration={this.handleStopGeneration}\n\t\t\t\t\t\t\t\tonVersionChange={this._handleVersionChange}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{this.showExceededText &&\n\t\t\t\t<span class=\"ui5-textarea-exceeded-text\">{this._exceededTextProps.exceededText}</span>\n\t\t\t\t}\n\n\t\t\t\t{this.hasValueState &&\n\t\t\t\t<span id={`${this._id}-valueStateDesc`} class=\"ui5-hidden-text\">{this.ariaValueStateHiddenText}</span>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t{TextAreaPopoverTemplate.call(this)}\n\n\t\t\t{/* ARIA live region for screen readers */}\n\t\t\t<div aria-live=\"polite\" aria-atomic=\"true\" class=\"ui5-hidden-text\">\n\t\t\t\t{this.loading ? this.promptDescription : \"\"}\n\t\t\t</div>\n\n\t\t\t<div id=\"ai-menu-wrapper\">\n\t\t\t\t<slot name=\"menu\"></slot>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -74,6 +74,7 @@ declare class WritingAssistant extends UI5Element {
74
74
  * @public
75
75
  */
76
76
  totalVersions: number;
77
+ focused: boolean;
77
78
  static i18nBundleAi: I18nBundle;
78
79
  static onDefine(): Promise<void>;
79
80
  /**
@@ -92,6 +92,7 @@ let WritingAssistant = WritingAssistant_1 = class WritingAssistant extends UI5El
92
92
  * @public
93
93
  */
94
94
  this.totalVersions = 0;
95
+ this.focused = false;
95
96
  }
96
97
  static async onDefine() {
97
98
  WritingAssistant_1.i18nBundleAi = await getI18nBundle("@ui5/webcomponents-ai");
@@ -152,6 +153,9 @@ __decorate([
152
153
  __decorate([
153
154
  property({ type: Number })
154
155
  ], WritingAssistant.prototype, "totalVersions", void 0);
156
+ __decorate([
157
+ property({ type: Boolean })
158
+ ], WritingAssistant.prototype, "focused", void 0);
155
159
  __decorate([
156
160
  i18n("@ui5/webcomponents-ai")
157
161
  ], WritingAssistant, "i18nBundleAi", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"WritingAssistant.js","sourceRoot":"","sources":["../src/WritingAssistant.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { i18n } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tWRITING_ASSISTANT_LABEL,\n\tVERSIONING_PREVIOUS_BUTTON_TEXT,\n\tVERSIONING_NEXT_BUTTON_TEXT,\n\tWRITING_ASSISTANT_GENERATING_ANNOUNCEMENT,\n\tWRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME,\n\tWRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME,\n\tWRITING_ASSISTANT_BUTTON_TOOLTIP,\n\tWRITING_ASSISTANT_STOP_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport WritingAssistantCss from \"./generated/themes/WritingAssistant.css.js\";\n\n// Templates\nimport WritingAssistantTemplate from \"./WritingAssistantTemplate.js\";\nimport Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\n// UI5 Components\nimport Toolbar from \"@ui5/webcomponents/dist/Toolbar.js\";\nimport ToolbarSpacer from \"@ui5/webcomponents/dist/ToolbarSpacer.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\n\n// Icons\nimport \"@ui5/webcomponents-icons/dist/ai.js\";\nimport \"@ui5/webcomponents-icons/dist/stop.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-ai-textarea-toolbar` component provides a specialized toolbar for AI TextArea functionality.\n * It manages different states of the AI assistant and provides version navigation capabilities.\n *\n * ### Structure\n * The `ui5-ai-textarea-toolbar` consists of the following elements:\n * - AI Generate Button: Triggers AI text generation or stops ongoing generation\n * - Version Navigation: Allows navigation between multiple AI-generated results\n * - Action Label: Displays the current AI action being performed\n *\n * ### ES6 Module Import\n *\n * `import \"@sap-webcomponents/ai/dist/WritingAssistant.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 2.16.0\n * @private\n */\n@customElement({\n\ttag: \"ui5-ai-writing-assistant\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: WritingAssistantTemplate,\n\tstyles: [WritingAssistantCss],\n\tdependencies: [\n\t\tVersioning,\n\t\tToolbarLabel,\n\t\tToolbar,\n\t\tToolbarSpacer,\n\t\tToolbarButton,\n\t],\n})\n\n/**\n * Fired when the user clicks on version navigation buttons.\n *\n * @public\n */\n@event(\"version-change\")\n\n/**\n * Fired when the user clicks on the AI button.\n *\n * @public\n */\n@event(\"button-click\")\n\n/**\n * Fired when the user clicks on the \"Stop\" button to stop ongoing AI text generation.\n *\n * @public\n */\n@event(\"stop-generation\")\n\nclass WritingAssistant extends UI5Element {\n\teventDetails!: {\n\t\t\"version-change\": {\n\t\t\tbackwards: boolean;\n\t\t};\n\t\t\"button-click\": {\n\t\t\tclickTarget: HTMLElement;\n\t\t};\n\t\t\"stop-generation\": object;\n\t};\n\n\t/**\n\t * Defines whether the Writing Assistant is currently loading.\n\t *\n\t * When `true`, indicates that an AI action is in progress.\n\t *\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the prompt description of the Writing Assistant.\n\t *\n\t * This text is displayed in the toolbar to indicate the current or last\n\t * performed AI action (e.g., \"Generated text\", \"Simplified text\").\n\t *\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tpromptDescription = \"\";\n\n\t/**\n\t * Indicates the index of the currently displayed result version.\n\t *\n\t * The index is **0-based** (i.e. `0` represents the first result).\n\t * This property is synchronized with the parent AI TextArea component.\n\t *\n\t * @default 0\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@property({ type: Number })\n\tcurrentVersion = 0;\n\n\t/**\n\t * Indicates the total number of result versions available.\n\t *\n\t * This property determines whether version navigation controls are displayed.\n\t * When totalVersions > 0, previous/next buttons become available.\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\ttotalVersions = 0;\n\n\t@i18n(\"@ui5/webcomponents-ai\")\n\tstatic i18nBundleAi: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tWritingAssistant.i18nBundleAi = await getI18nBundle(\"@ui5/webcomponents-ai\");\n\t}\n\n\t/**\n\t * Handles the version change event from the versioning component.\n\t */\n\thandleVersionChange(e: CustomEvent<{ backwards: boolean }>) {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: e.detail.backwards });\n\t}\n\n\t/**\n\t * Handles the click event for the AI generate button.\n\t * Toggles between generate and stop states based on current button state.\n\t *\n\t * @public\n\t */\n\thandleButtonClick(e: Event): void {\n\t\tconst target = e.target as HTMLElement & { dataset?: { state?: string } };\n\t\tif (target?.dataset?.state === \"generating\") {\n\t\t\tthis.fireDecoratorEvent(\"stop-generation\");\n\t\t} else {\n\t\t\tthis.fireDecoratorEvent(\"button-click\", { clickTarget: target });\n\t\t\tannounce(WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT), \"Polite\");\n\t\t}\n\t}\n\tget _ariaLabel() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_LABEL);\n\t}\n\n\tget _previousButtonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(VERSIONING_PREVIOUS_BUTTON_TEXT);\n\t}\n\n\tget _nextButtonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(VERSIONING_NEXT_BUTTON_TEXT);\n\t}\n\n\tget _toolbarAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME);\n\t}\n\n\tget _buttonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME);\n\t}\n\n\tget _buttonTooltip() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_BUTTON_TOOLTIP);\n\t}\n\n\tget _stopTooltip() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_STOP_TOOLTIP);\n\t}\n}\n\nWritingAssistant.define();\n\nexport default WritingAssistant;\n"]}
1
+ {"version":3,"file":"WritingAssistant.js","sourceRoot":"","sources":["../src/WritingAssistant.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAClE,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,QAAQ,MAAM,uDAAuD,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAE3E,OAAO,EACN,uBAAuB,EACvB,+BAA+B,EAC/B,2BAA2B,EAC3B,yCAAyC,EACzC,yCAAyC,EACzC,wCAAwC,EACxC,gCAAgC,EAChC,8BAA8B,GAC9B,MAAM,mCAAmC,CAAC;AAE3C,SAAS;AACT,OAAO,mBAAmB,MAAM,4CAA4C,CAAC;AAE7E,YAAY;AACZ,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AACrE,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,iBAAiB;AACjB,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,QAAQ;AACR,OAAO,qCAAqC,CAAC;AAC7C,OAAO,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAqCH,IAAM,gBAAgB,wBAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAWC;;;;;;WAMG;QAEH,YAAO,GAAG,KAAK,CAAC;QAEhB;;;;;;;;WAQG;QAEH,sBAAiB,GAAG,EAAE,CAAC;QAEvB;;;;;;;;;WASG;QAEH,mBAAc,GAAG,CAAC,CAAC;QAEnB;;;;;;;;WAQG;QAEH,kBAAa,GAAG,CAAC,CAAC;QAGlB,YAAO,GAAG,KAAK,CAAC;IA0DjB,CAAC;IArDA,MAAM,CAAC,KAAK,CAAC,QAAQ;QACpB,kBAAgB,CAAC,YAAY,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,CAAsC;QACzD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,CAAQ;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAwD,CAAC;QAC1E,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,KAAK,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,QAAQ,CAAC,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,yCAAyC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtG,CAAC;IACF,CAAC;IACD,IAAI,UAAU;QACb,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,6BAA6B;QAChC,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,yBAAyB;QAC5B,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,sBAAsB;QACzB,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,qBAAqB;QACxB,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,YAAY;QACf,OAAO,kBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC9E,CAAC;CACD,CAAA;AAlGA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACZ;AAYhB;IADC,QAAQ,EAAE;2DACY;AAavB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACR;AAYnB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDACT;AAGlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACZ;AAGT;IADN,IAAI,CAAC,uBAAuB,CAAC;4CACE;AA9D3B,gBAAgB;IApCrB,aAAa,CAAC;QACd,GAAG,EAAE,0BAA0B;QAC/B,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,wBAAwB;QAClC,MAAM,EAAE,CAAC,mBAAmB,CAAC;QAC7B,YAAY,EAAE;YACb,UAAU;YACV,YAAY;YACZ,OAAO;YACP,aAAa;YACb,aAAa;SACb;KACD,CAAC;IAEF;;;;OAIG;;IACF,KAAK,CAAC,gBAAgB,CAAC;IAExB;;;;OAIG;;IACF,KAAK,CAAC,cAAc,CAAC;IAEtB;;;;OAIG;;IACF,KAAK,CAAC,iBAAiB,CAAC;GAEnB,gBAAgB,CAqHrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { i18n } from \"@ui5/webcomponents-base/dist/decorators.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tWRITING_ASSISTANT_LABEL,\n\tVERSIONING_PREVIOUS_BUTTON_TEXT,\n\tVERSIONING_NEXT_BUTTON_TEXT,\n\tWRITING_ASSISTANT_GENERATING_ANNOUNCEMENT,\n\tWRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME,\n\tWRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME,\n\tWRITING_ASSISTANT_BUTTON_TOOLTIP,\n\tWRITING_ASSISTANT_STOP_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport WritingAssistantCss from \"./generated/themes/WritingAssistant.css.js\";\n\n// Templates\nimport WritingAssistantTemplate from \"./WritingAssistantTemplate.js\";\nimport Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\n// UI5 Components\nimport Toolbar from \"@ui5/webcomponents/dist/Toolbar.js\";\nimport ToolbarSpacer from \"@ui5/webcomponents/dist/ToolbarSpacer.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\n\n// Icons\nimport \"@ui5/webcomponents-icons/dist/ai.js\";\nimport \"@ui5/webcomponents-icons/dist/stop.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-ai-textarea-toolbar` component provides a specialized toolbar for AI TextArea functionality.\n * It manages different states of the AI assistant and provides version navigation capabilities.\n *\n * ### Structure\n * The `ui5-ai-textarea-toolbar` consists of the following elements:\n * - AI Generate Button: Triggers AI text generation or stops ongoing generation\n * - Version Navigation: Allows navigation between multiple AI-generated results\n * - Action Label: Displays the current AI action being performed\n *\n * ### ES6 Module Import\n *\n * `import \"@sap-webcomponents/ai/dist/WritingAssistant.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 2.16.0\n * @private\n */\n@customElement({\n\ttag: \"ui5-ai-writing-assistant\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: WritingAssistantTemplate,\n\tstyles: [WritingAssistantCss],\n\tdependencies: [\n\t\tVersioning,\n\t\tToolbarLabel,\n\t\tToolbar,\n\t\tToolbarSpacer,\n\t\tToolbarButton,\n\t],\n})\n\n/**\n * Fired when the user clicks on version navigation buttons.\n *\n * @public\n */\n@event(\"version-change\")\n\n/**\n * Fired when the user clicks on the AI button.\n *\n * @public\n */\n@event(\"button-click\")\n\n/**\n * Fired when the user clicks on the \"Stop\" button to stop ongoing AI text generation.\n *\n * @public\n */\n@event(\"stop-generation\")\n\nclass WritingAssistant extends UI5Element {\n\teventDetails!: {\n\t\t\"version-change\": {\n\t\t\tbackwards: boolean;\n\t\t};\n\t\t\"button-click\": {\n\t\t\tclickTarget: HTMLElement;\n\t\t};\n\t\t\"stop-generation\": object;\n\t};\n\n\t/**\n\t * Defines whether the Writing Assistant is currently loading.\n\t *\n\t * When `true`, indicates that an AI action is in progress.\n\t *\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\t/**\n\t * Defines the prompt description of the Writing Assistant.\n\t *\n\t * This text is displayed in the toolbar to indicate the current or last\n\t * performed AI action (e.g., \"Generated text\", \"Simplified text\").\n\t *\n\t * @default \"\"\n\t * @public\n\t */\n\t@property()\n\tpromptDescription = \"\";\n\n\t/**\n\t * Indicates the index of the currently displayed result version.\n\t *\n\t * The index is **0-based** (i.e. `0` represents the first result).\n\t * This property is synchronized with the parent AI TextArea component.\n\t *\n\t * @default 0\n\t * @public\n\t * @since 2.16.0\n\t */\n\t@property({ type: Number })\n\tcurrentVersion = 0;\n\n\t/**\n\t * Indicates the total number of result versions available.\n\t *\n\t * This property determines whether version navigation controls are displayed.\n\t * When totalVersions > 0, previous/next buttons become available.\n\t *\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\ttotalVersions = 0;\n\n\t@property({ type: Boolean })\n\tfocused = false;\n\n\t@i18n(\"@ui5/webcomponents-ai\")\n\tstatic i18nBundleAi: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tWritingAssistant.i18nBundleAi = await getI18nBundle(\"@ui5/webcomponents-ai\");\n\t}\n\n\t/**\n\t * Handles the version change event from the versioning component.\n\t */\n\thandleVersionChange(e: CustomEvent<{ backwards: boolean }>) {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: e.detail.backwards });\n\t}\n\n\t/**\n\t * Handles the click event for the AI generate button.\n\t * Toggles between generate and stop states based on current button state.\n\t *\n\t * @public\n\t */\n\thandleButtonClick(e: Event): void {\n\t\tconst target = e.target as HTMLElement & { dataset?: { state?: string } };\n\t\tif (target?.dataset?.state === \"generating\") {\n\t\t\tthis.fireDecoratorEvent(\"stop-generation\");\n\t\t} else {\n\t\t\tthis.fireDecoratorEvent(\"button-click\", { clickTarget: target });\n\t\t\tannounce(WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT), \"Polite\");\n\t\t}\n\t}\n\tget _ariaLabel() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_LABEL);\n\t}\n\n\tget _previousButtonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(VERSIONING_PREVIOUS_BUTTON_TEXT);\n\t}\n\n\tget _nextButtonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(VERSIONING_NEXT_BUTTON_TEXT);\n\t}\n\n\tget _toolbarAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME);\n\t}\n\n\tget _buttonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME);\n\t}\n\n\tget _buttonTooltip() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_BUTTON_TOOLTIP);\n\t}\n\n\tget _stopTooltip() {\n\t\treturn WritingAssistant.i18nBundleAi.getText(WRITING_ASSISTANT_STOP_TOOLTIP);\n\t}\n}\n\nWritingAssistant.define();\n\nexport default WritingAssistant;\n"]}
@@ -7,6 +7,6 @@ import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
7
7
  export default function WritingAssistantTemplate() {
8
8
  const isMultiResults = this.totalVersions > 1;
9
9
  const hasResults = (this.totalVersions > 0 && this.promptDescription) || this.loading;
10
- return (_jsxs(Toolbar, { accessibleName: this._toolbarAccessibleName, "aria-roledescription": "toolbar", class: `ui5-ai-writing-assistant-footer-bar${hasResults ? "--with-border" : ""}`, children: [isMultiResults && !this.loading && (_jsx(Versioning, { currentStep: this.currentVersion, totalSteps: this.totalVersions, "onVersion-change": this.handleVersionChange })), hasResults && this.promptDescription && (_jsx(ToolbarLabel, { text: this.promptDescription, class: "ui5-ai-writing-assistant-action-label" })), _jsx(ToolbarSpacer, {}), _jsx(ToolbarButton, { id: "ai-menu-btn", design: "Transparent", icon: this.loading ? "stop" : "ai", "data-state": this.loading ? "generating" : "generate", onClick: this.handleButtonClick, tooltip: this.loading ? this._stopTooltip : this._buttonTooltip, accessibilityAttributes: { hasPopup: this.loading ? "false" : "menu" }, accessibleName: this._buttonAccessibleName, overflowPriority: "NeverOverflow" })] }));
10
+ return (_jsxs(Toolbar, { accessibleName: this._toolbarAccessibleName, "aria-roledescription": "toolbar", class: `ui5-ai-writing-assistant-footer-bar${hasResults ? "--with-border" : ""}`, children: [isMultiResults && !this.loading && (_jsx(Versioning, { currentStep: this.currentVersion, totalSteps: this.totalVersions, "onVersion-change": this.handleVersionChange })), hasResults && this.promptDescription && (_jsx(ToolbarLabel, { text: this.promptDescription, class: "ui5-ai-writing-assistant-action-label" })), _jsx(ToolbarSpacer, {}), this.focused && (_jsx(ToolbarButton, { id: "ai-menu-btn", design: "Transparent", icon: this.loading ? "stop" : "ai", "data-state": this.loading ? "generating" : "generate", onClick: this.handleButtonClick, tooltip: this.loading ? this._stopTooltip : this._buttonTooltip, accessibilityAttributes: { hasPopup: this.loading ? "false" : "menu" }, accessibleName: this._buttonAccessibleName, overflowPriority: "NeverOverflow" }))] }));
11
11
  }
12
12
  //# sourceMappingURL=WritingAssistantTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WritingAssistantTemplate.js","sourceRoot":"","sources":["../src/WritingAssistantTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IAEtF,OAAO,CACN,MAAC,OAAO,IACP,cAAc,EAAE,IAAI,CAAC,sBAAsB,0BACtB,SAAS,EAC9B,KAAK,EAAE,sCAAsC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,aAE/E,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CACnC,KAAC,UAAU,IACV,WAAW,EAAE,IAAI,CAAC,cAAc,EAChC,UAAU,EAAE,IAAI,CAAC,aAAa,sBACZ,IAAI,CAAC,mBAAmB,GACzC,CACF,EAEA,UAAU,IAAI,IAAI,CAAC,iBAAiB,IAAI,CACxC,KAAC,YAAY,IACZ,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAC5B,KAAK,EAAC,uCAAuC,GAC5C,CACF,EAED,KAAC,aAAa,KAAG,EAEjB,KAAC,aAAa,IACb,EAAE,EAAC,aAAa,EAChB,MAAM,EAAC,aAAa,EACpB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,gBACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EACpD,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAC/D,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EACtE,cAAc,EAAE,IAAI,CAAC,qBAAqB,EAC1C,gBAAgB,EAAC,eAAe,GAC/B,IACO,CACV,CAAC;AACH,CAAC","sourcesContent":["import type WritingAssistant from \"./WritingAssistant.js\";\nimport Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\nimport Toolbar from \"@ui5/webcomponents/dist/Toolbar.js\";\nimport ToolbarSpacer from \"@ui5/webcomponents/dist/ToolbarSpacer.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\n\nexport default function WritingAssistantTemplate(this: WritingAssistant) {\n\tconst isMultiResults = this.totalVersions > 1;\n\tconst hasResults = (this.totalVersions > 0 && this.promptDescription) || this.loading;\n\n\treturn (\n\t\t<Toolbar\n\t\t\taccessibleName={this._toolbarAccessibleName}\n\t\t\taria-roledescription=\"toolbar\"\n\t\t\tclass={`ui5-ai-writing-assistant-footer-bar${hasResults ? \"--with-border\" : \"\"}`}\n\t\t>\n\t\t\t{isMultiResults && !this.loading && (\n\t\t\t\t<Versioning\n\t\t\t\t\tcurrentStep={this.currentVersion}\n\t\t\t\t\ttotalSteps={this.totalVersions}\n\t\t\t\t\tonVersion-change={this.handleVersionChange}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{hasResults && this.promptDescription && (\n\t\t\t\t<ToolbarLabel\n\t\t\t\t\ttext={this.promptDescription}\n\t\t\t\t\tclass=\"ui5-ai-writing-assistant-action-label\"\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<ToolbarSpacer />\n\n\t\t\t<ToolbarButton\n\t\t\t\tid=\"ai-menu-btn\"\n\t\t\t\tdesign=\"Transparent\"\n\t\t\t\ticon={this.loading ? \"stop\" : \"ai\"}\n\t\t\t\tdata-state={this.loading ? \"generating\" : \"generate\"}\n\t\t\t\tonClick={this.handleButtonClick}\n\t\t\t\ttooltip={this.loading ? this._stopTooltip : this._buttonTooltip}\n\t\t\t\taccessibilityAttributes={{ hasPopup: this.loading ? \"false\" : \"menu\" }}\n\t\t\t\taccessibleName={this._buttonAccessibleName}\n\t\t\t\toverflowPriority=\"NeverOverflow\"\n\t\t\t/>\n\t\t</Toolbar>\n\t);\n}\n"]}
1
+ {"version":3,"file":"WritingAssistantTemplate.js","sourceRoot":"","sources":["../src/WritingAssistantTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IAEtF,OAAO,CACN,MAAC,OAAO,IACP,cAAc,EAAE,IAAI,CAAC,sBAAsB,0BACtB,SAAS,EAC9B,KAAK,EAAE,sCAAsC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,aAE/E,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CACnC,KAAC,UAAU,IACV,WAAW,EAAE,IAAI,CAAC,cAAc,EAChC,UAAU,EAAE,IAAI,CAAC,aAAa,sBACZ,IAAI,CAAC,mBAAmB,GACzC,CACF,EAEA,UAAU,IAAI,IAAI,CAAC,iBAAiB,IAAI,CACxC,KAAC,YAAY,IACZ,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAC5B,KAAK,EAAC,uCAAuC,GAC5C,CACF,EAED,KAAC,aAAa,KAAG,EAEhB,IAAI,CAAC,OAAO,IAAI,CAChB,KAAC,aAAa,IACb,EAAE,EAAC,aAAa,EAChB,MAAM,EAAC,aAAa,EACpB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,gBACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EACpD,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAC/D,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EACtE,cAAc,EAAE,IAAI,CAAC,qBAAqB,EAC1C,gBAAgB,EAAC,eAAe,GAC/B,CACF,IACQ,CACV,CAAC;AACH,CAAC","sourcesContent":["import type WritingAssistant from \"./WritingAssistant.js\";\nimport Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\nimport Toolbar from \"@ui5/webcomponents/dist/Toolbar.js\";\nimport ToolbarSpacer from \"@ui5/webcomponents/dist/ToolbarSpacer.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\n\nexport default function WritingAssistantTemplate(this: WritingAssistant) {\n\tconst isMultiResults = this.totalVersions > 1;\n\tconst hasResults = (this.totalVersions > 0 && this.promptDescription) || this.loading;\n\n\treturn (\n\t\t<Toolbar\n\t\t\taccessibleName={this._toolbarAccessibleName}\n\t\t\taria-roledescription=\"toolbar\"\n\t\t\tclass={`ui5-ai-writing-assistant-footer-bar${hasResults ? \"--with-border\" : \"\"}`}\n\t\t>\n\t\t\t{isMultiResults && !this.loading && (\n\t\t\t\t<Versioning\n\t\t\t\t\tcurrentStep={this.currentVersion}\n\t\t\t\t\ttotalSteps={this.totalVersions}\n\t\t\t\t\tonVersion-change={this.handleVersionChange}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{hasResults && this.promptDescription && (\n\t\t\t\t<ToolbarLabel\n\t\t\t\t\ttext={this.promptDescription}\n\t\t\t\t\tclass=\"ui5-ai-writing-assistant-action-label\"\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<ToolbarSpacer />\n\n\t\t\t{this.focused && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tid=\"ai-menu-btn\"\n\t\t\t\t\tdesign=\"Transparent\"\n\t\t\t\t\ticon={this.loading ? \"stop\" : \"ai\"}\n\t\t\t\t\tdata-state={this.loading ? \"generating\" : \"generate\"}\n\t\t\t\t\tonClick={this.handleButtonClick}\n\t\t\t\t\ttooltip={this.loading ? this._stopTooltip : this._buttonTooltip}\n\t\t\t\t\taccessibilityAttributes={{ hasPopup: this.loading ? \"false\" : \"menu\" }}\n\t\t\t\t\taccessibleName={this._buttonAccessibleName}\n\t\t\t\t\toverflowPriority=\"NeverOverflow\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Toolbar>\n\t);\n}\n"]}
@@ -1 +1 @@
1
- :host{display:inline-block}:host([disabled]){pointer-events:none}.ui5-ai-button-text{display:inline-block}:host([icon-only]) .ui5-ai-button-text{min-width:0;margin-inline-start:0}.ui5-ai-button-hidden{position:absolute;top:-10000px;left:-10000px;visibility:hidden;display:block;width:fit-content}:host .ui5-ai-button-inner{width:100%}:host{width:auto;position:relative;transition:width .18s cubic-bezier(.67,1,.95,1.3) .12s}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5-v0-0-0-c143e338b_button_base_min_width)!important;max-width:var(--_ui5-v0-0-0-c143e338b_button_base_min_width)!important}:host(.ui5-ai-button-menu-to-button) .ui5-ai-button-inner::part(button),:host(.ui5-ai-button-fade-out:not([icon-only])) .ui5-ai-button-inner::part(button){justify-content:flex-start}:host([icon-only]) .ui5-ai-button-inner[_end-icon]:not([_end-icon=""])::part(button),:host([icon-only]) .ui5-ai-button-inner[_hide-arrow-button]::part(button){justify-content:flex-start;padding-inline-start:var(--_ui5-v0-0-0-c143e338b_button_base_padding)}:host(.ui5-ai-button-fade-in[icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(button){max-width:var(--_ui5-v0-0-0-c143e338b_button_base_min_width)}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5-v0-0-0-c143e338b_button_base_min_width);max-width:var(--_ui5-v0-0-0-c143e338b_button_base_min_width)}:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) .ui5-ai-button-text,:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) ::part(endIcon),:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) ::part(arrowButton){opacity:1;transform:translateY(0)}:host(.ui5-ai-button-button-to-menu) .ui5-ai-button-inner::part(endIcon),:host(.ui5-ai-button-button-to-menu) .ui5-ai-button-inner::part(arrowButton){display:none;transform:translateY(0);opacity:0}:host(.ui5-ai-button-fade-out) .ui5-ai-button-text{opacity:0;transform:translateY(-1rem);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-out) ::part(icon){opacity:0;transform:translateY(-1rem);transition:opacity .05s ease-in-out 25ms,transform .1s ease-in-out 0s}:host(.ui5-ai-button-fade-out) ::part(endIcon){opacity:0;transform:translateY(-1rem);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-mid) .ui5-ai-button-text,:host(.ui5-ai-button-fade-mid) ::part(icon),:host(.ui5-ai-button-fade-mid) ::part(endIcon),:host(.ui5-ai-button-fade-mid) ::part(arrowButton){opacity:0;transform:translateY(1rem);transition:none}:host(.ui5-ai-button-fade-in) .ui5-ai-button-text{opacity:1;transform:translateY(0);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-in) ::part(icon){opacity:1;transform:translateY(0);transition:opacity .05s ease-in-out 25ms,transform .1s ease-in-out 0s}:host(.ui5-ai-button-fade-in) ::part(endIcon){opacity:1;transform:translateY(0);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}
1
+ :host{display:inline-block}:host([disabled]){pointer-events:none}.ui5-ai-button-text{display:inline-block}:host([icon-only]) .ui5-ai-button-text{min-width:0;margin-inline-start:0}.ui5-ai-button-hidden{position:absolute;top:-10000px;left:-10000px;visibility:hidden;display:block;width:fit-content}:host .ui5-ai-button-inner{width:100%}:host{width:auto;position:relative;transition:width .18s cubic-bezier(.67,1,.95,1.3) .12s}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5_button_base_min_width)!important;max-width:var(--_ui5_button_base_min_width)!important}:host(.ui5-ai-button-menu-to-button) .ui5-ai-button-inner::part(button),:host(.ui5-ai-button-fade-out:not([icon-only])) .ui5-ai-button-inner::part(button){justify-content:flex-start}:host([icon-only]) .ui5-ai-button-inner[_end-icon]:not([_end-icon=""])::part(button),:host([icon-only]) .ui5-ai-button-inner[_hide-arrow-button]::part(button){justify-content:flex-start;padding-inline-start:var(--_ui5_button_base_padding)}:host(.ui5-ai-button-fade-in[icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(button){max-width:var(--_ui5_button_base_min_width)}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5_button_base_min_width);max-width:var(--_ui5_button_base_min_width)}:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) .ui5-ai-button-text,:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) ::part(endIcon),:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) ::part(arrowButton){opacity:1;transform:translateY(0)}:host(.ui5-ai-button-button-to-menu) .ui5-ai-button-inner::part(endIcon),:host(.ui5-ai-button-button-to-menu) .ui5-ai-button-inner::part(arrowButton){display:none;transform:translateY(0);opacity:0}:host(.ui5-ai-button-fade-out) .ui5-ai-button-text{opacity:0;transform:translateY(-1rem);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-out) ::part(icon){opacity:0;transform:translateY(-1rem);transition:opacity .05s ease-in-out 25ms,transform .1s ease-in-out 0s}:host(.ui5-ai-button-fade-out) ::part(endIcon){opacity:0;transform:translateY(-1rem);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-mid) .ui5-ai-button-text,:host(.ui5-ai-button-fade-mid) ::part(icon),:host(.ui5-ai-button-fade-mid) ::part(endIcon),:host(.ui5-ai-button-fade-mid) ::part(arrowButton){opacity:0;transform:translateY(1rem);transition:none}:host(.ui5-ai-button-fade-in) .ui5-ai-button-text{opacity:1;transform:translateY(0);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-in) ::part(icon){opacity:1;transform:translateY(0);transition:opacity .05s ease-in-out 25ms,transform .1s ease-in-out 0s}:host(.ui5-ai-button-fade-in) ::part(endIcon){opacity:1;transform:translateY(0);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}
@@ -1 +1 @@
1
- .ui5-ai-input-root{width:100%;height:100%;border-right:none}:host([focused]:not([opened])[_is-menu-open]) .ui5-ai-input-root:hover{border-radius:var(--_ui5-v0-0-0-c143e338b_input_border_radius);box-shadow:var(--sapField_Hover_Shadow)}:host([focused]:not([opened])[_is-menu-open]) .ui5-input-focusable-element:after{border:var(--_ui5-v0-0-0-c143e338b-input-border)}.ui5-input-busy-indicator{flex:1;width:100%;height:100%;position:relative;box-sizing:border-box;display:block}.ui5-ai-input-busy .ui5-ai-input-button-wrapper{background-color:inherit;border:none}.ui5-ai-input-button-wrapper{display:flex;justify-content:center;align-items:center;width:var(--_ui5-v0-0-0-c143e338b_input_icon_width);min-width:var(--_ui5-v0-0-0-c143e338b_input_icon_width);height:var(--_ui5-v0-0-0-c143e338b_input_icon_wrapper_height);padding:0;box-sizing:border-box;border-radius:var(--_ui5-v0-0-0-c143e338b_input_border_radius);cursor:pointer;border:none}.ui5-input-ai-button[hidden]{display:none}.ui5-ai-input-button-wrapper.ui5-input-button-menu-open,.ui5-ai-input-button-wrapper:active{background-color:var(--sapButton_Selected_Background);box-shadow:var(--sapField_Hover_Shadow);color:var(--sapButton_Selected_TextColor)}.ui5-ai-input-button-wrapper:not(.ui5-input-button-menu-open):not(.ui5-ai-input-loading):not(:active):hover,.ui5-ai-input-button-wrapper.ui5-ai-input-loading:hover{background-color:var(--sapButton_Hover_Background);border:1px solid var(--sapButton_Hover_BorderColor);box-shadow:inset 0 0 0 .0625rem var(--sapContent_Neutral_Shadow)}.ui5-input-button-menu-open{background-color:var(--sapButton_Selected_Background);box-shadow:var(--sapField_Hover_Shadow)}[ui5-menu-item].ui5-ai-versioning-menu-footer:hover{background-color:inherit}.ui5-ai-versioning-menu-footer::part(native-li){padding-right:.25rem}#ai-menu-btn{--_ui5-v0-0-0-c143e338b_button_focused_border: none}
1
+ .ui5-ai-input-root{width:100%;height:100%;border-right:none}:host([focused]:not([opened])[_is-menu-open]) .ui5-ai-input-root:hover{border-radius:var(--_ui5_input_border_radius);box-shadow:var(--sapField_Hover_Shadow)}:host([focused]:not([opened])[_is-menu-open]) .ui5-input-focusable-element:after{border:var(--_ui5-input-border)}.ui5-input-busy-indicator{flex:1;width:100%;height:100%;position:relative;box-sizing:border-box;display:block}.ui5-ai-input-busy .ui5-ai-input-button-wrapper{background-color:inherit;border:none}.ui5-ai-input-button-wrapper{display:flex;justify-content:center;align-items:center;width:var(--_ui5_input_icon_width);min-width:var(--_ui5_input_icon_width);height:var(--_ui5_input_icon_wrapper_height);padding:0;box-sizing:border-box;border-radius:var(--_ui5_input_border_radius);cursor:pointer;border:none}.ui5-input-ai-button[hidden]{display:none}.ui5-ai-input-button-wrapper.ui5-input-button-menu-open,.ui5-ai-input-button-wrapper:active{background-color:var(--sapButton_Selected_Background);box-shadow:var(--sapField_Hover_Shadow);color:var(--sapButton_Selected_TextColor)}.ui5-ai-input-button-wrapper:not(.ui5-input-button-menu-open):not(.ui5-ai-input-loading):not(:active):hover,.ui5-ai-input-button-wrapper.ui5-ai-input-loading:hover{background-color:var(--sapButton_Hover_Background);border:1px solid var(--sapButton_Hover_BorderColor);box-shadow:inset 0 0 0 .0625rem var(--sapContent_Neutral_Shadow)}.ui5-input-button-menu-open{background-color:var(--sapButton_Selected_Background);box-shadow:var(--sapField_Hover_Shadow)}[ui5-menu-item].ui5-ai-versioning-menu-footer:hover{background-color:inherit}.ui5-ai-versioning-menu-footer::part(native-li){padding-right:.25rem}#ai-menu-btn{--_ui5_button_focused_border: none}
@@ -1 +1 @@
1
- .ui5-ai-textarea-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%}.ui5-ai-textarea-root .ui5-textarea-wrapper{display:flex;flex-direction:column;flex:1;position:relative}.ui5-ai-textarea-root [part=footer]{position:relative;width:100%;margin-top:auto;flex-shrink:0}.ui5-ai-writing-assistant-footer-bar{background:var(--_ui5-v0-0-0-c143e338b_texteditor_toolbar_background, var(--sapPageFooter_Background));width:100%;box-sizing:border-box;box-shadow:none;border-bottom:none;border-top:none}.ui5-ai-writing-assistant-footer-bar--with-border{border-top:1px solid var(--sapPageFooter_BorderColor)}.ui5-ai-writing-assistant-action-label{margin-left:.5rem;color:var(--sapContent_LabelColor);font-size:var(--sapFontSmallSize)}#ai-menu-wrapper{position:relative;z-index:1000}
1
+ .ui5-ai-textarea-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%}.ui5-ai-textarea-root .ui5-textarea-wrapper{display:flex;flex-direction:column;flex:1;position:relative}.ui5-ai-textarea-root [part=footer]{position:relative;width:100%;margin-top:auto;flex-shrink:0}.ui5-ai-writing-assistant-footer-bar{background:var(--_ui5_texteditor_toolbar_background, var(--sapPageFooter_Background));width:100%;box-sizing:border-box;box-shadow:none;border-bottom:none;border-top:none}.ui5-ai-writing-assistant-footer-bar--with-border{border-top:1px solid var(--sapPageFooter_BorderColor)}.ui5-ai-writing-assistant-action-label{margin-left:.5rem;color:var(--sapContent_LabelColor);font-size:var(--sapFontSmallSize)}#ai-menu-wrapper{position:relative;z-index:1000}
@@ -1 +1 @@
1
- .ui5-ai-textarea-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%}.ui5-ai-textarea-root .ui5-textarea-wrapper{display:flex;flex-direction:column;flex:1;position:relative}.ui5-ai-textarea-root [part=footer]{width:100%;margin-top:auto;flex-shrink:0}.ui5-ai-writing-assistant-footer-bar{background:var(--_ui5-v0-0-0-c143e338b_texteditor_toolbar_background, var(--sapPageFooter_Background));width:100%;box-sizing:border-box;box-shadow:none;border-bottom:none;border-top:none;padding:.5rem;min-height:2.75rem;display:flex;align-items:center;justify-content:flex-start}.ui5-ai-writing-assistant-footer-bar--with-border{border-top:1px solid var(--sapPageFooter_BorderColor)}.ui5-ai-writing-assistant-action-label{color:var(--sapContent_LabelColor);font-size:var(--sapFontSize);font-family:"72override",var(--sapFontFamily);margin-left:.25rem}
1
+ .ui5-ai-writing-assistant-footer-bar{background:var(--_ui5_texteditor_toolbar_background, var(--sapPageFooter_Background));width:100%;box-sizing:border-box;box-shadow:none;border-bottom:none;border-top:none;padding:.5rem;display:flex;align-items:center;justify-content:flex-start}.ui5-ai-writing-assistant-footer-bar--with-border{border-top:1px solid var(--sapPageFooter_BorderColor)}.ui5-ai-writing-assistant-action-label{color:var(--sapContent_LabelColor);font-size:var(--sapFontSize);font-family:"72override",var(--sapFontFamily);margin-left:.25rem}
@@ -0,0 +1 @@
1
+ :host {}
@@ -34,7 +34,7 @@
34
34
  "description": "Defines the available states of the component.\n**Note:** Although this slot accepts HTML Elements, it is strongly recommended that\nyou only use `ui5-ai-button-state` components in order to preserve the intended design.",
35
35
  "_ui5propertyName": "states",
36
36
  "_ui5type": {
37
- "text": "Array<ButtonState>",
37
+ "text": "DefaultSlot<ButtonState>",
38
38
  "references": [
39
39
  {
40
40
  "name": "ButtonState",
@@ -193,7 +193,7 @@
193
193
  },
194
194
  "tagName": "ui5-ai-button",
195
195
  "customElement": true,
196
- "_ui5experimental": "The Button and ButtonState web components are availabe since 2.0 under an experimental flag and their API and behaviour are subject to change.",
196
+ "_ui5experimental": "The **@ui5/webcomponents-ai** package (including Button and ButtonState) is under active development and considered experimental. Component APIs are subject to change.\nFurthermore, the package supports **Horizon** themes only.",
197
197
  "_ui5since": "2.0.0",
198
198
  "_ui5privacy": "public"
199
199
  }
@@ -332,7 +332,7 @@
332
332
  },
333
333
  "tagName": "ui5-ai-button-state",
334
334
  "customElement": true,
335
- "_ui5experimental": "The Button and ButtonState web components are available since 2.0 under an experimental flag and their API and behaviour are subject to change.",
335
+ "_ui5experimental": "The **@ui5/webcomponents-ai** package (including ButtonState) is under active development and considered experimental. Component APIs are subject to change.\nFurthermore, the package supports **Horizon** themes only.",
336
336
  "_ui5since": "2.0.0",
337
337
  "_ui5privacy": "public",
338
338
  "_ui5abstract": true
@@ -370,7 +370,7 @@
370
370
  "name": "actions",
371
371
  "description": "Defines the items of the menu for the component.",
372
372
  "_ui5type": {
373
- "text": "Array<HTMLElement>"
373
+ "text": "Slot<HTMLElement>"
374
374
  },
375
375
  "_ui5privacy": "public"
376
376
  }
@@ -423,12 +423,37 @@
423
423
  "name": "item-click",
424
424
  "_ui5privacy": "public",
425
425
  "type": {
426
- "text": "CustomEvent"
426
+ "text": "CustomEvent<InputItemClickEventDetail>",
427
+ "references": [
428
+ {
429
+ "name": "InputItemClickEventDetail",
430
+ "package": "@ui5/webcomponents-ai",
431
+ "module": "dist/Input.js"
432
+ }
433
+ ]
427
434
  },
428
435
  "description": "Fired when an item from the AI actions menu is clicked.",
429
436
  "_ui5Cancelable": false,
430
437
  "_ui5allowPreventDefault": false,
431
- "_ui5Bubbles": false
438
+ "_ui5Bubbles": false,
439
+ "_ui5parameters": [
440
+ {
441
+ "type": {
442
+ "text": "HTMLElement"
443
+ },
444
+ "name": "item",
445
+ "_ui5privacy": "public",
446
+ "description": "The currently clicked menu item."
447
+ },
448
+ {
449
+ "type": {
450
+ "text": "string"
451
+ },
452
+ "name": "text",
453
+ "_ui5privacy": "public",
454
+ "description": "The text of the currently clicked menu item."
455
+ }
456
+ ]
432
457
  },
433
458
  {
434
459
  "name": "stop-generation",
@@ -500,13 +525,13 @@
500
525
  }
501
526
  ],
502
527
  "superclass": {
503
- "name": "BaseInput",
528
+ "name": "Input",
504
529
  "package": "@ui5/webcomponents",
505
530
  "module": "dist/Input.js"
506
531
  },
507
532
  "tagName": "ui5-ai-input",
508
533
  "customElement": true,
509
- "_ui5experimental": "The **@ui5/webcomponents-ai** package is under active development and considered experimental. Component APIs are subject to change.",
534
+ "_ui5experimental": "The **@ui5/webcomponents-ai** package is under active development and considered experimental. Component APIs are subject to change.\nFurthermore, the package supports **Horizon** themes only.",
510
535
  "_ui5since": "2.16.0",
511
536
  "_ui5privacy": "public"
512
537
  }
@@ -544,7 +569,7 @@
544
569
  "description": "Defines the suggestion items.\n\n**Note:** The suggestions would be displayed only if the `showSuggestions`\nproperty is set to `true`.\n\n**Note:** The `<ui5-suggestion-item>`, `<ui5-suggestion-item-group>` and `ui5-suggestion-item-custom` are recommended to be used as suggestion items.",
545
570
  "_ui5propertyName": "suggestionItems",
546
571
  "_ui5type": {
547
- "text": "Array<IInputSuggestionItem>",
572
+ "text": "DefaultSlot<IInputSuggestionItem>",
548
573
  "references": [
549
574
  {
550
575
  "name": "IInputSuggestionItem",
@@ -560,7 +585,7 @@
560
585
  "description": "Defines the value state message that will be displayed as pop up under the component.\nThe value state message slot should contain only one root element.\n\n**Note:** If not specified, a default text (in the respective language) will be displayed.\n\n**Note:** The `valueStateMessage` would be displayed,\nwhen the component is in `Information`, `Critical` or `Negative` value state.",
561
586
  "_ui5since": "2.0.0",
562
587
  "_ui5type": {
563
- "text": "Array<HTMLElement>"
588
+ "text": "Slot<HTMLElement>"
564
589
  },
565
590
  "_ui5privacy": "public"
566
591
  }
@@ -820,7 +845,7 @@
820
845
  },
821
846
  "tagName": "ui5-ai-prompt-input",
822
847
  "customElement": true,
823
- "_ui5experimental": "The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.",
848
+ "_ui5experimental": "The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.\nFurthermore, the package supports **Horizon** themes only.",
824
849
  "_ui5privacy": "public"
825
850
  }
826
851
  ],
@@ -983,13 +1008,13 @@
983
1008
  }
984
1009
  ],
985
1010
  "superclass": {
986
- "name": "BaseTextArea",
1011
+ "name": "TextArea",
987
1012
  "package": "@ui5/webcomponents",
988
1013
  "module": "dist/TextArea.js"
989
1014
  },
990
1015
  "tagName": "ui5-ai-textarea",
991
1016
  "customElement": true,
992
- "_ui5experimental": "The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.",
1017
+ "_ui5experimental": "The **@ui5/webcomponents-ai** package is under development and considered experimental - components' APIs are subject to change.\nFurthermore, the package supports **Horizon** themes only.",
993
1018
  "_ui5since": "2.16.0",
994
1019
  "_ui5privacy": "public"
995
1020
  }
@@ -383,7 +383,14 @@
383
383
  {
384
384
  "name": "item-click",
385
385
  "type": {
386
- "text": "CustomEvent"
386
+ "text": "CustomEvent<InputItemClickEventDetail>",
387
+ "references": [
388
+ {
389
+ "name": "InputItemClickEventDetail",
390
+ "package": "@ui5/webcomponents-ai",
391
+ "module": "dist/Input.js"
392
+ }
393
+ ]
387
394
  },
388
395
  "description": "Fired when an item from the AI actions menu is clicked."
389
396
  },
@@ -439,7 +446,7 @@
439
446
  }
440
447
  ],
441
448
  "superclass": {
442
- "name": "BaseInput",
449
+ "name": "Input",
443
450
  "package": "@ui5/webcomponents",
444
451
  "module": "dist/Input.js"
445
452
  },
@@ -854,7 +861,7 @@
854
861
  }
855
862
  ],
856
863
  "superclass": {
857
- "name": "BaseTextArea",
864
+ "name": "TextArea",
858
865
  "package": "@ui5/webcomponents",
859
866
  "module": "dist/TextArea.js"
860
867
  },
@@ -1 +1 @@
1
- {"PROMPT_INPUT_CHARACTERS_LEFT":"متبق {0} من الحروف","PROMPT_INPUT_CHARACTERS_EXCEEDED":"تم تجاوز الحد بمقدار {0} من الحروف","BUTTON_TOOLTIP_TEXT":"{0} مع الذكاء الاصطناعي","WRITING_ASSISTANT_LABEL":"شريط أدوات مساعد الكتابة Shift + F4","VERSIONING_PREVIOUS_BUTTON_TEXT":"الإصدار السابق","VERSIONING_NEXT_BUTTON_TEXT":"الإصدار التالي","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"إيقاف الإنشاء (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"شريط أدوات مساعد الكتابة","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"مساعد الكتابة","WRITING_ASSISTANT_BUTTON_TOOLTIP":"مساعد الكتابة (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"الإصدار السابق","VERSIONING_NEXT_BUTTON_TOOLTIP":"الإصدار التالي"}
1
+ {"PROMPT_INPUT_CHARACTERS_LEFT":"متبق {0} من الحروف","PROMPT_INPUT_CHARACTERS_EXCEEDED":"تم تجاوز الحد بمقدار {0} من الحروف","BUTTON_TOOLTIP_TEXT":"{0} مع الذكاء الاصطناعي","WRITING_ASSISTANT_LABEL":"شريط أدوات مساعد الكتابة Shift + F4","INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP":"الإصدار التالي (Ctrl + Shift + Y)","INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"الإصدار السابق (Ctrl + Shift + Z)","INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP":"مساعد الكتابة بالذكاء الاصطناعي (Shift + ‏F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"الإصدار السابق","VERSIONING_NEXT_BUTTON_TEXT":"الإصدار التالي","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"إيقاف الإنشاء (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"شريط أدوات مساعد الكتابة","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"مساعد الكتابة","WRITING_ASSISTANT_BUTTON_TOOLTIP":"مساعد الكتابة (Shift + F4)","WRITING_ASSISTANT_STOP_TOOLTIP":"إيقاف الإنشاء (ESC)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"الإصدار السابق (Ctrl + Shift + Z)","VERSIONING_NEXT_BUTTON_TOOLTIP":"الإصدار التالي (Ctrl + Shift + Y)"}
@@ -1 +1 @@
1
- {"PROMPT_INPUT_CHARACTERS_LEFT":"Остават {0} символа","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} символа над ограничението","BUTTON_TOOLTIP_TEXT":"{0} с изкуствен интелект","WRITING_ASSISTANT_LABEL":"Лента с инструменти на асистента за писане Shift + F4","VERSIONING_PREVIOUS_BUTTON_TEXT":"Предишна версия","VERSIONING_NEXT_BUTTON_TEXT":"Следваща версия","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Спиране на генерирането (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Лента с инструменти на асистента за писане","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Асистент писане","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Асистент за писане (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Предишна версия","VERSIONING_NEXT_BUTTON_TOOLTIP":"Следваща версия"}
1
+ {"PROMPT_INPUT_CHARACTERS_LEFT":"Остават {0} символа","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} символа над ограничението","BUTTON_TOOLTIP_TEXT":"{0} с изкуствен интелект","WRITING_ASSISTANT_LABEL":"Лента с инструменти на асистента за писане Shift + F4","INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP":"Следваща версия (Ctrl + Shift + Y)","INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Предходна версия (Ctrl + Shift + Z)","INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP":"AI асистент за писане (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"Предишна версия","VERSIONING_NEXT_BUTTON_TEXT":"Следваща версия","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Спиране на генерирането (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Лента с инструменти на асистента за писане","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Асистент писане","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Асистент за писане (Shift + F4)","WRITING_ASSISTANT_STOP_TOOLTIP":"Спиране на генерирането (Esc)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Предходна версия (Ctrl + Shift + Z)","VERSIONING_NEXT_BUTTON_TOOLTIP":"Следваща версия (Ctrl + Shift + Y)"}
@@ -1 +1 @@
1
- {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} caràcters restants","PROMPT_INPUT_CHARACTERS_EXCEEDED":"S''han excedit {0} caràcters","BUTTON_TOOLTIP_TEXT":"{0} amb intel·ligència artificial","WRITING_ASSISTANT_LABEL":"Barra d''eines de l''assistent de redacció (Majús + F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"Versió anterior","VERSIONING_NEXT_BUTTON_TEXT":"Versió següent","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Aturar la generació (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Barra d''eines de l''assistent de redacció","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Assistent de redacció","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Assistent de redacció (Majús + F4)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Versió anterior","VERSIONING_NEXT_BUTTON_TOOLTIP":"Versió següent"}
1
+ {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} caràcters restants","PROMPT_INPUT_CHARACTERS_EXCEEDED":"S''han excedit {0} caràcters","BUTTON_TOOLTIP_TEXT":"{0} amb intel·ligència artificial","WRITING_ASSISTANT_LABEL":"Barra d''eines de l''assistent de redacció (Majús + F4)","INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP":"Següent versió (Ctrl + Majús + Y)","INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Versió anterior (Ctrl + Majús + Z)","INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP":"Assistent de redacció amb IA (Majús + F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"Versió anterior","VERSIONING_NEXT_BUTTON_TEXT":"Versió següent","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Aturar la generació (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Barra d''eines de l''assistent de redacció","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Assistent de redacció","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Assistent de redacció (Majús + F4)","WRITING_ASSISTANT_STOP_TOOLTIP":"Aturar la generació (Esc)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Versió anterior (Control + Majús + Z)","VERSIONING_NEXT_BUTTON_TOOLTIP":"Versió següent (Control + Majús + Y)"}
@@ -1 +1 @@
1
- {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} znakova preostaje","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} znakova prekoračeno","BUTTON_TOOLTIP_TEXT":"{0} sa vještačkom inteligencijom","WRITING_ASSISTANT_LABEL":"Traka sa alatkama pomoćnika pri pisanju Shift + F4","VERSIONING_PREVIOUS_BUTTON_TEXT":"Prethodna verzija","VERSIONING_NEXT_BUTTON_TEXT":"Sljedeća verzija","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Zaustavi generisanje (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Traka sa alatkama pomoćnika pri pisanju","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Pomoćnik pri pisanju","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Pomoćnik pri pisanju (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Prethodna verzija","VERSIONING_NEXT_BUTTON_TOOLTIP":"Sljedeća verzija"}
1
+ {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} znakova preostaje","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} znakova prekoračeno","BUTTON_TOOLTIP_TEXT":"{0} sa vještačkom inteligencijom","WRITING_ASSISTANT_LABEL":"Traka sa alatkama pomoćnika pri pisanju Shift + F4","INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP":"Sljedeća verzija (Ctrl + Shift + Y)","INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Prethodna verzija (Ctrl + Shift + Z)","INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP":"Pomoćnik pri pisanju uz upotrebu vještačke inteligencije (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"Prethodna verzija","VERSIONING_NEXT_BUTTON_TEXT":"Sljedeća verzija","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Zaustavi generisanje (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Traka sa alatkama pomoćnika pri pisanju","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Pomoćnik pri pisanju","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Pomoćnik pri pisanju (Shift + F4)","WRITING_ASSISTANT_STOP_TOOLTIP":"Zaustavi generisanje (Esc)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Prethodna verzija (Ctrl + Shift + Z)","VERSIONING_NEXT_BUTTON_TOOLTIP":"Sljedeća verzija (Ctrl + Shift + Y)"}
@@ -1 +1 @@
1
- {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} znaky zbývají","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} znaky přes limit","BUTTON_TOOLTIP_TEXT":"{0} s umělou inteligencí","WRITING_ASSISTANT_LABEL":"Nástrojová lišta asistenta psaní Shift + F4","VERSIONING_PREVIOUS_BUTTON_TEXT":"Předchozí verze","VERSIONING_NEXT_BUTTON_TEXT":"Další verze","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Zastavit generování (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Nástrojová lišta asistenta psaní","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Asistent psaní","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Asistent psaní (Shift + F4","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Předchozí verze","VERSIONING_NEXT_BUTTON_TOOLTIP":"Další verze"}
1
+ {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} znaky zbývají","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} znaky přes limit","BUTTON_TOOLTIP_TEXT":"{0} s umělou inteligencí","WRITING_ASSISTANT_LABEL":"Nástrojová lišta asistenta psaní Shift + F4","INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP":"Příští verze (Ctrl + Shift + Y)","INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Předchozí verze (Ctrl + Shift + Z)","INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP":"Asistent psaní s umělou inteligencí (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"Předchozí verze","VERSIONING_NEXT_BUTTON_TEXT":"Další verze","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Zastavit generování (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Nástrojová lišta asistenta psaní","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Asistent psaní","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Asistent psaní (Shift + F4","WRITING_ASSISTANT_STOP_TOOLTIP":"Zastavit generování (Esc)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Předchozí verze (Ctrl + Shift + Z)","VERSIONING_NEXT_BUTTON_TOOLTIP":"Příští verze (Ctrl + Shift + Y)"}
@@ -1 +1 @@
1
- {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} nod ar ôl","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} nod dros yr uchafswm","BUTTON_TOOLTIP_TEXT":"{0} gyda Deallusrwydd Artiffisial","WRITING_ASSISTANT_LABEL":"Bar Offer Cynorthwyydd Ysgrifennu Shift + F4","VERSIONING_PREVIOUS_BUTTON_TEXT":"Fersiwn Flaenorol","VERSIONING_NEXT_BUTTON_TEXT":"Fersiwn Nesaf","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Stopio cynhyrchu (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Bar Offer Cynorthwyydd Ysgrifennu","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Cynorthwyydd Ysgrifennu","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Cynorthwyydd Ysgrifennu (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Fersiwn Flaenorol","VERSIONING_NEXT_BUTTON_TOOLTIP":"Fersiwn Nesaf"}
1
+ {"PROMPT_INPUT_CHARACTERS_LEFT":"{0} nod ar ôl","PROMPT_INPUT_CHARACTERS_EXCEEDED":"{0} nod dros yr uchafswm","BUTTON_TOOLTIP_TEXT":"{0} gyda Deallusrwydd Artiffisial","WRITING_ASSISTANT_LABEL":"Bar Offer Cynorthwyydd Ysgrifennu Shift + F4","INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP":"Fersiwn Nesaf (Ctrl + Shift + Y)","INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Fersiwn Flaenorol (Ctrl + Shift + Z)","INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP":"Cynorthwyydd Ysgrifennu AI (Shift + F4)","VERSIONING_PREVIOUS_BUTTON_TEXT":"Fersiwn Flaenorol","VERSIONING_NEXT_BUTTON_TEXT":"Fersiwn Nesaf","WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT":"Stopio cynhyrchu (ESC)","WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME":"Bar Offer Cynorthwyydd Ysgrifennu","WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME":"Cynorthwyydd Ysgrifennu","WRITING_ASSISTANT_BUTTON_TOOLTIP":"Cynorthwyydd Ysgrifennu (Shift + F4)","WRITING_ASSISTANT_STOP_TOOLTIP":"Stopio Cynhyrchu (Esc)","VERSIONING_PREVIOUS_BUTTON_TOOLTIP":"Fersiwn Flaenorol (Ctrl + Shift + Z)","VERSIONING_NEXT_BUTTON_TOOLTIP":"Fersiwn Nesaf (Ctrl + Shift + Y)"}