raise-common-lib 0.0.249 → 0.0.251

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 (61) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +197 -788
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/dialog/common-dialog/index.component.js +1 -1
  7. package/esm2015/lib/form/richtexteditor/data-config.js +68 -1
  8. package/esm2015/lib/form/richtexteditor/index.component.js +130 -470
  9. package/esm5/lib/dialog/common-dialog/index.component.js +1 -1
  10. package/esm5/lib/form/richtexteditor/data-config.js +68 -1
  11. package/esm5/lib/form/richtexteditor/index.component.js +132 -519
  12. package/fesm2015/raise-common-lib.js +196 -704
  13. package/fesm2015/raise-common-lib.js.map +1 -1
  14. package/fesm5/raise-common-lib.js +198 -789
  15. package/fesm5/raise-common-lib.js.map +1 -1
  16. package/lib/form/richtexteditor/data-config.d.ts +8 -0
  17. package/lib/form/richtexteditor/index.component.d.ts +41 -64
  18. package/package.json +1 -1
  19. package/raise-common-lib.metadata.json +1 -1
  20. package/src/assets/img/arrow_right.svg +4 -4
  21. package/src/assets/img/bullet-dash.svg +3 -0
  22. package/src/assets/img/calendar-disabled.svg +6 -6
  23. package/src/assets/img/calendar.svg +6 -6
  24. package/src/assets/img/calendar_arrow_left.svg +3 -3
  25. package/src/assets/img/calendar_arrow_right.svg +3 -3
  26. package/src/assets/img/checked-vector.svg +3 -3
  27. package/src/assets/img/dialog-close.svg +4 -4
  28. package/src/assets/img/dialog-grow.svg +6 -6
  29. package/src/assets/img/dialog-shrink.svg +6 -6
  30. package/src/assets/img/plus.svg +4 -4
  31. package/src/assets/img/search.svg +4 -4
  32. package/src/assets/img/shrink-icon.svg +6 -6
  33. package/src/assets/img/time-disabled.svg +4 -4
  34. package/src/assets/img/time.svg +4 -4
  35. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  36. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  37. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  38. package/src/assets/img/toolbar-action-combine.svg +4 -4
  39. package/src/assets/img/toolbar-action-edit.svg +4 -4
  40. package/src/assets/img/toolbar-action-expand.svg +7 -7
  41. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  42. package/src/assets/img/toolbar-action-lock.svg +6 -6
  43. package/src/assets/img/toolbar-action-preview.svg +7 -7
  44. package/src/assets/img/toolbar-action-publish.svg +5 -5
  45. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  46. package/src/assets/img/toolbar-action-rename.svg +7 -7
  47. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  48. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  49. package/src/assets/img/toolbar-action-settle.svg +7 -7
  50. package/src/assets/img/toolbar-action-share.svg +5 -5
  51. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  52. package/src/assets/img/toolbar-action-sync.svg +4 -4
  53. package/src/assets/img/toolbar-action-template.svg +6 -6
  54. package/src/assets/img/toolbar-action-workflow.svg +9 -9
  55. package/src/assets/style/reset/button.scss +5 -1
  56. package/esm2015/lib/form/richtexteditor/ai-config.js +0 -70
  57. package/esm2015/lib/form/richtexteditor/openapi.js +0 -175
  58. package/esm5/lib/form/richtexteditor/ai-config.js +0 -73
  59. package/esm5/lib/form/richtexteditor/openapi.js +0 -208
  60. package/lib/form/richtexteditor/ai-config.d.ts +0 -10
  61. package/lib/form/richtexteditor/openapi.d.ts +0 -3
@@ -32,7 +32,7 @@ import { DropDownListModule, DropDownTreeModule, MultiSelectAllModule, AutoCompl
32
32
  import { ToolbarService, FieldListService, NumberFormattingService, CalculatedFieldService, GroupingBarService, VirtualScrollService as VirtualScrollService$1, DrillThroughService, PivotViewAllModule, PivotFieldListAllModule } from '@syncfusion/ej2-angular-pivotview';
33
33
  import { ChartAllModule, AccumulationChartAllModule, RangeNavigatorAllModule, AccumulationChartModule, PieSeriesService, AccumulationLegendService, AccumulationTooltipService, AccumulationAnnotationService, AccumulationDataLabelService } from '@syncfusion/ej2-angular-charts';
34
34
  import { PdfViewerModule, LinkAnnotationService, BookmarkViewService, MagnificationService, ThumbnailViewService, ToolbarService as ToolbarService$2, NavigationService, TextSearchService, TextSelectionService, PrintService } from '@syncfusion/ej2-angular-pdfviewer';
35
- import { DropDownButton, DropDownButtonModule, SplitButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
35
+ import { DropDownButtonModule, SplitButtonModule } from '@syncfusion/ej2-angular-splitbuttons';
36
36
  import { RichTextEditorAllModule, HtmlEditorService, ToolbarService as ToolbarService$3 } from '@syncfusion/ej2-angular-richtexteditor';
37
37
  import { MatMenuModule } from '@angular/material/menu';
38
38
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -24465,7 +24465,7 @@ CommonDialogComponent.decorators = [
24465
24465
  { type: Component, args: [{
24466
24466
  selector: "rs-common-dialog",
24467
24467
  template: "<div class=\"dialog\" [ngClass]=\"size\" [ngStyle]=\"dialogStyle\">\r\n <!-- \u5934\u90E8 -->\r\n <div *ngIf=\"!hideHeader\" mat-dialog-title class=\"dialog__header\">\r\n <ng-container *ngIf=\"customPageTitle; else defaultTitle\">\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </ng-container>\r\n <ng-template #defaultTitle>\r\n <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n </div>\r\n </ng-template>\r\n <!-- <div class=\"header__title\">\r\n <img\r\n src=\"../../../assets/img/notification-status-warning.svg\"\r\n alt=\"\"\r\n *ngIf=\"showErrorIcon\"\r\n />\r\n {{ title }}\r\n <ng-content select=\"[titleSlot]\"></ng-content>\r\n </div> -->\r\n <div class=\"header__actions\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-btn\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div *ngIf=\"!hideCloseIcon\" class=\"header-btn\" (click)=\"onClose()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- \u5185\u5BB9 -->\r\n <div class=\"dialog__content\" mat-dialog-content>\r\n <ng-content></ng-content>\r\n </div>\r\n <!-- \u5E95\u90E8\u6309\u94AE -->\r\n <div mat-dialog-actions class=\"dialog__footer\">\r\n <ng-content select=\"[footerSlot]\"></ng-content>\r\n <!-- \u9ED8\u8BA4\u5C55\u793A\u4FDD\u5B58/\u5173\u95ED\u6309\u94AE -->\r\n <ng-container *ngIf=\"!customFooter\">\r\n <ng-template [ngTemplateOutlet]=\"defaultTemplate\"></ng-template>\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <button *ngIf=\"!hideCloseBtn\" class=\"e-btn\" (click)=\"onClose()\">\r\n {{ cancelBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideDiscardBtn\" class=\"e-btn\" (click)=\"onDiscard()\">\r\n {{ discardBtnLabel }}\r\n </button>\r\n <button *ngIf=\"!hideSaveBtn\" class=\"e-btn e-primary\" (click)=\"onSave()\">\r\n {{ saveBtnLabel }}\r\n </button>\r\n </ng-template>\r\n </div>\r\n <!-- loading -->\r\n <div class=\"dialog__loading\" [hidden]=\"!loading\">\r\n <img src=\"../../../assets/img/raise_loading.gif\" alt=\"\" />\r\n </div>\r\n</div>\r\n",
24468
- styles: [":host::ng-deep .dialog{position:relative;max-height:90vh;font-weight:400;padding:20px;overflow:hidden;display:flex;flex-direction:column}:host::ng-deep .dialog.largest{width:96vw!important;height:88vh!important;max-width:2100px;padding:20px}:host::ng-deep .dialog.medium{width:500px;padding:20px}:host::ng-deep .dialog.small{width:350px;padding:20px 16px}:host::ng-deep .dialog.small .dialog__header{color:#002c4f;margin-bottom:16px}:host::ng-deep .dialog.small .dialog__header .header__title{font-size:13px;line-height:16px}:host::ng-deep .dialog.small .dialog__content{font-size:12px;line-height:16px}:host::ng-deep .dialog.small .dialog__footer{min-height:42px;padding:16px 0 0;font-size:12px;line-height:14px}:host::ng-deep .dialog.small .dialog__footer button{padding:6px 12px;min-width:60px}:host::ng-deep .dialog.large{width:800px;padding:20px}:host::ng-deep .dialog .dialog__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:0}:host::ng-deep .dialog .dialog__header::before{display:none}:host::ng-deep .dialog .dialog__header .header__title{color:#002c4f;font-family:Arial;font-size:15px;font-weight:700;line-height:18px;flex:1;overflow:hidden;display:flex;align-items:center;gap:8px}:host::ng-deep .dialog .dialog__header .header__actions{display:flex;align-items:center;gap:20px}:host::ng-deep .dialog .dialog__header .header-icon{display:block}:host::ng-deep .dialog .dialog__header .header-btn{cursor:pointer;padding:2px;display:flex;justify-content:center;align-items:center}:host::ng-deep .dialog .dialog__content{width:100%;min-height:38px;position:relative;overflow-y:auto;overflow-x:hidden;margin:0;padding:0;font-size:13px;line-height:19px;flex:1;height:0}:host::ng-deep .dialog .dialog__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:20px 0 0;font-size:13px;line-height:16px;margin-bottom:0}:host::ng-deep .dialog .dialog__loading{height:100%;background:0 0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999}:host::ng-deep .dialog .dialog__loading img{position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}"]
24468
+ styles: [":host::ng-deep .dialog{position:relative;max-height:90vh;max-width:90vw;font-weight:400;padding:20px;overflow:hidden;display:flex;flex-direction:column}:host::ng-deep .dialog.largest{width:96vw!important;height:88vh!important;max-width:2100px;padding:20px}:host::ng-deep .dialog.medium{width:500px;padding:20px}:host::ng-deep .dialog.small{width:350px;padding:20px 16px}:host::ng-deep .dialog.small .dialog__header{color:#002c4f;margin-bottom:16px}:host::ng-deep .dialog.small .dialog__header .header__title{font-size:13px;line-height:16px}:host::ng-deep .dialog.small .dialog__content{font-size:12px;line-height:16px}:host::ng-deep .dialog.small .dialog__footer{min-height:42px;padding:16px 0 0;font-size:12px;line-height:14px}:host::ng-deep .dialog.small .dialog__footer button{padding:6px 12px;min-width:60px}:host::ng-deep .dialog.large{width:800px;padding:20px}:host::ng-deep .dialog .dialog__header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:0}:host::ng-deep .dialog .dialog__header::before{display:none}:host::ng-deep .dialog .dialog__header .header__title{color:#002c4f;font-family:Arial;font-size:15px;font-weight:700;line-height:18px;flex:1;overflow:hidden;display:flex;align-items:center;gap:8px}:host::ng-deep .dialog .dialog__header .header__actions{display:flex;align-items:center;gap:20px}:host::ng-deep .dialog .dialog__header .header-icon{display:block}:host::ng-deep .dialog .dialog__header .header-btn{cursor:pointer;padding:2px;display:flex;justify-content:center;align-items:center}:host::ng-deep .dialog .dialog__content{width:100%;min-height:38px;position:relative;overflow-y:auto;overflow-x:hidden;margin:0;padding:0;font-size:13px;line-height:19px;flex:1;height:0}:host::ng-deep .dialog .dialog__footer{position:relative;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:20px 0 0;font-size:13px;line-height:16px;margin-bottom:0}:host::ng-deep .dialog .dialog__loading{height:100%;background:0 0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999}:host::ng-deep .dialog .dialog__loading img{position:absolute;left:50%;top:50%;width:40px;height:40px;transform:translate(-50%,-50%)}"]
24469
24469
  }] }
24470
24470
  ];
24471
24471
  /** @nocollapse */
@@ -35133,248 +35133,6 @@ if (false) {
35133
35133
  ConfirmSelectComponent.prototype.isInteracted;
35134
35134
  }
35135
35135
 
35136
- /**
35137
- * @fileoverview added by tsickle
35138
- * Generated from: lib/form/richtexteditor/ai-config.ts
35139
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
35140
- */
35141
- /**
35142
- * @record
35143
- */
35144
- function AIConfig() { }
35145
- if (false) {
35146
- /** @type {?} */
35147
- AIConfig.prototype.endpoint;
35148
- /** @type {?} */
35149
- AIConfig.prototype.apiKey;
35150
- /** @type {?} */
35151
- AIConfig.prototype.deployment;
35152
- /** @type {?} */
35153
- AIConfig.prototype.apiVersion;
35154
- /** @type {?} */
35155
- AIConfig.prototype.enabled;
35156
- }
35157
- // 从环境配置获取AI配置
35158
- /**
35159
- * @return {?}
35160
- */
35161
- function getAIConfig() {
35162
- return {
35163
- endpoint: "https://aidevused.openai.azure.com/",
35164
- apiKey: "ccba76e279f64653a50ac4fee90afe5c",
35165
- deployment: "gpt-4",
35166
- apiVersion: "2025-01-01-preview",
35167
- enabled: true,
35168
- };
35169
- }
35170
- // 检查配置是否有效
35171
- /**
35172
- * @param {?} config
35173
- * @return {?}
35174
- */
35175
- function isAIConfigValid(config) {
35176
- // 检查是否为aidevused端点且有有效API密钥
35177
- return !!((config.endpoint &&
35178
- config.apiKey &&
35179
- config.deployment &&
35180
- config.enabled &&
35181
- config.endpoint === "https://aidevused.openai.azure.com/" &&
35182
- config.apiKey !== "your-api-key-here") // Azure OpenAI API密钥通常以sk-开头
35183
- );
35184
- }
35185
- // 从后端API获取AI配置(推荐方式)
35186
- /**
35187
- * @return {?}
35188
- * @this {*}
35189
- */
35190
- function getAIConfigFromBackend() {
35191
- return __awaiter(this, void 0, void 0, function* () {
35192
- try {
35193
- // 这里应该调用你的后端API来获取AI配置
35194
- // 例如:return await this.http.get('/api/ai-config');
35195
- // 临时返回默认配置
35196
- return getAIConfig();
35197
- }
35198
- catch (error) {
35199
- console.error("Failed to get AI config from backend:", error);
35200
- return getAIConfig();
35201
- }
35202
- });
35203
- }
35204
-
35205
- /**
35206
- * @fileoverview added by tsickle
35207
- * Generated from: lib/form/richtexteditor/openapi.ts
35208
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
35209
- */
35210
- // import { testAIFunction } from './ai-test';
35211
- // testAIFunction();
35212
- // 使用fetch API发送请求到Azure OpenAI
35213
- /**
35214
- * @param {?} messages
35215
- * @param {?} config
35216
- * @return {?}
35217
- * @this {*}
35218
- */
35219
- function sendAIRequest(messages, config) {
35220
- return __awaiter(this, void 0, void 0, function* () {
35221
- try {
35222
- /** @type {?} */
35223
- const url = `${config.endpoint}/openai/deployments/${config.deployment}/chat/completions?api-version=${config.apiVersion}`;
35224
- /** @type {?} */
35225
- const url1 = `${config.endpoint}`;
35226
- /** @type {?} */
35227
- const response = yield fetch(url, {
35228
- method: 'POST',
35229
- headers: {
35230
- 'Content-Type': 'application/json',
35231
- 'api-key': config.apiKey,
35232
- },
35233
- body: JSON.stringify({
35234
- messages: messages,
35235
- max_tokens: 1000,
35236
- temperature: 0.7,
35237
- top_p: 1,
35238
- frequency_penalty: 0,
35239
- presence_penalty: 0,
35240
- }),
35241
- });
35242
- if (!response.ok) {
35243
- /** @type {?} */
35244
- const errorText = yield response.text();
35245
- throw new Error(`HTTP error! status: ${response.status}, message: ${errorText}`);
35246
- }
35247
- /** @type {?} */
35248
- const data = yield response.json();
35249
- if (!data.choices || !data.choices[0] || !data.choices[0].message) {
35250
- throw new Error('Invalid response format from AI service');
35251
- }
35252
- return data.choices[0].message.content;
35253
- }
35254
- catch (error) {
35255
- console.error('AI request failed:', error);
35256
- throw error;
35257
- }
35258
- });
35259
- }
35260
- // 备用方案:使用模拟数据(用于开发测试)
35261
- /**
35262
- * @param {?} subQuery
35263
- * @param {?} promptQuery
35264
- * @return {?}
35265
- */
35266
- function getMockAIResponse(subQuery, promptQuery) {
35267
- /** @type {?} */
35268
- const mockResponses = {
35269
- Rephrase: `Rephrased: ${promptQuery}`,
35270
- Grammar: `Corrected: ${promptQuery}`,
35271
- Summarize: `Summary: ${promptQuery.substring(0, 100)}...`,
35272
- Elaborate: `Elaborated: ${promptQuery} with additional details and context.`,
35273
- Translate: `Translated: ${promptQuery}`,
35274
- SentimentAnalysis: '😊 Positive',
35275
- };
35276
- for (const [key, value] of Object.entries(mockResponses)) {
35277
- if (subQuery.includes(key)) {
35278
- return value;
35279
- }
35280
- }
35281
- return `AI processed: ${promptQuery}`;
35282
- }
35283
- // 主要的AI请求方法
35284
- /**
35285
- * @param {?} subQuery
35286
- * @param {?} promptQuery
35287
- * @return {?}
35288
- * @this {*}
35289
- */
35290
- function OpenAiModelRTE(subQuery, promptQuery) {
35291
- return __awaiter(this, void 0, void 0, function* () {
35292
- try {
35293
- /** @type {?} */
35294
- const config = getAIConfig();
35295
- // 检查配置是否有效
35296
- if (!isAIConfigValid(config)) {
35297
- console.warn('AI configuration is incomplete or disabled, using mock response');
35298
- return getMockAIResponse(subQuery, promptQuery);
35299
- }
35300
- /** @type {?} */
35301
- const messages = [
35302
- {
35303
- role: 'system',
35304
- content: subQuery.includes('emoji followed by the sentiment in the format')
35305
- ? 'You are a helpful assistant. Please respond in string format.'
35306
- : "NOTE: Return same html format just do changes content only. don't change html formats.",
35307
- },
35308
- {
35309
- role: 'user',
35310
- content: `${subQuery} ${promptQuery}`,
35311
- },
35312
- ];
35313
- /** @type {?} */
35314
- const result = yield sendAIRequest(messages, config);
35315
- return result;
35316
- }
35317
- catch (error) {
35318
- console.error('AI request failed, using mock response:', error);
35319
- return getMockAIResponse(subQuery, promptQuery);
35320
- }
35321
- });
35322
- }
35323
- // 兼容性方法(保持向后兼容)
35324
- /**
35325
- * @param {?} options
35326
- * @return {?}
35327
- * @this {*}
35328
- */
35329
- function getAzureChatAIRequest(options) {
35330
- return __awaiter(this, void 0, void 0, function* () {
35331
- try {
35332
- /** @type {?} */
35333
- const config = getAIConfig();
35334
- if (!isAIConfigValid(config)) {
35335
- return null;
35336
- }
35337
- /** @type {?} */
35338
- const result = yield sendAIRequest(options.messages, config);
35339
- return result;
35340
- }
35341
- catch (err) {
35342
- console.error('Error occurred:', err);
35343
- return null;
35344
- }
35345
- });
35346
- }
35347
- /**
35348
- * @param {?} prompt
35349
- * @return {?}
35350
- * @this {*}
35351
- */
35352
- function getAzureTextAIRequest(prompt) {
35353
- return __awaiter(this, void 0, void 0, function* () {
35354
- try {
35355
- /** @type {?} */
35356
- const config = getAIConfig();
35357
- if (!isAIConfigValid(config)) {
35358
- return undefined;
35359
- }
35360
- /** @type {?} */
35361
- const messages = [
35362
- {
35363
- role: 'user',
35364
- content: prompt,
35365
- },
35366
- ];
35367
- /** @type {?} */
35368
- const result = yield sendAIRequest(messages, config);
35369
- return result;
35370
- }
35371
- catch (err) {
35372
- console.error('Error occurred:', err);
35373
- return undefined;
35374
- }
35375
- });
35376
- }
35377
-
35378
35136
  /**
35379
35137
  * @fileoverview added by tsickle
35380
35138
  * Generated from: lib/form/richtexteditor/data-config.ts
@@ -35469,6 +35227,73 @@ const fontFamily = {
35469
35227
  command: "Font",
35470
35228
  subCommand: "FontName",
35471
35229
  },
35230
+ // New fonts
35231
+ {
35232
+ text: "Tiempos Headline - Semibold",
35233
+ value: "Tiempos Headline Semibold",
35234
+ cssClass: "e-tiempos-headline",
35235
+ command: "Font",
35236
+ subCommand: "FontName",
35237
+ },
35238
+ {
35239
+ text: "微软雅黑",
35240
+ value: "Microsoft YaHei,微软雅黑,SimHei, sans-serif",
35241
+ cssClass: "e-yahei",
35242
+ command: "Font",
35243
+ subCommand: "FontName",
35244
+ },
35245
+ {
35246
+ text: "等线",
35247
+ value: "DengXian,等线,sans-serif",
35248
+ cssClass: "e-dengxian",
35249
+ command: "Font",
35250
+ subCommand: "FontName",
35251
+ },
35252
+ {
35253
+ text: "思源黑体",
35254
+ value: "Source Han Sans CN, Microsoft YaHei,'微软雅黑', sans-serif",
35255
+ cssClass: "e-source-han-sans-cn-regular",
35256
+ command: "Font",
35257
+ subCommand: "FontName",
35258
+ },
35259
+ {
35260
+ text: "思源宋体",
35261
+ value: "Source Han Serif CN, SimSun,'宋体',serif",
35262
+ cssClass: "e-source-han-serif-cn-regular",
35263
+ command: "Font",
35264
+ subCommand: "FontName",
35265
+ },
35266
+ {
35267
+ text: "霞鹜文楷",
35268
+ value: "LXGW WenKai,'霞鹜文楷',STKaiti, KaiTi, '楷体', '华文楷体', Arial, sans-serif",
35269
+ cssClass: "e-lxgw",
35270
+ command: "Font",
35271
+ subCommand: "FontName",
35272
+ },
35273
+ // Ping Fang SC 系列
35274
+ {
35275
+ text: "Ping Fang SC - Light",
35276
+ value: "苹方-简",
35277
+ cssClass: "e-ping-fang-sc-light",
35278
+ command: "Font",
35279
+ subCommand: "FontName",
35280
+ },
35281
+ ],
35282
+ };
35283
+ /** @type {?} */
35284
+ const size = {
35285
+ default: "11pt",
35286
+ width: "40px",
35287
+ items: [
35288
+ { text: "8 pt", value: "8pt" },
35289
+ { text: "9 pt", value: "9pt" },
35290
+ { text: "10 pt", value: "10pt" },
35291
+ { text: "11 pt", value: "11pt" },
35292
+ { text: "12 pt", value: "12pt" },
35293
+ { text: "14 pt", value: "14pt" },
35294
+ { text: "18 pt", value: "18pt" },
35295
+ { text: "24 pt", value: "24pt" },
35296
+ { text: "36 pt", value: "36pt" },
35472
35297
  ],
35473
35298
  };
35474
35299
  // line height配置
@@ -35654,74 +35479,30 @@ function applyBulletStyle(ul, style) {
35654
35479
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
35655
35480
  */
35656
35481
  class RichtexteditorComponent {
35657
- /**
35658
- * @param {?} ref
35659
- */
35660
- constructor(ref) {
35661
- this.ref = ref;
35662
- // @ViewChild("chipList", { static: false }) public chipList!: ChipListComponent;
35663
- this.placeholder = "";
35482
+ constructor() {
35664
35483
  this.value = "";
35484
+ this.editorId = "editorId";
35665
35485
  this.height = 150;
35666
35486
  this.autoSaveOnIdle = true;
35667
- this.target = "#container"; // dialog 弹窗父级
35668
- // dialog 弹窗父级
35669
- this.toolbarClick = new EventEmitter();
35670
- this.change = new EventEmitter();
35671
- // @Output() change = new EventEmitter();
35672
- this.family = fontFamily;
35673
- this.dialogWidth = "800px";
35674
- this.dialogHeight = "642px";
35675
- this.showZoomBtn = true;
35676
- this.showMsg = false;
35487
+ this.disabled = false;
35677
35488
  this.insertImageSettings = {
35678
35489
  saveFormat: "Blob",
35679
35490
  allowedTypes: [".svg", ".png"],
35680
35491
  display: "none",
35681
35492
  };
35682
- this.size = "";
35683
- this.dropValIndex = 0;
35684
- this.queryList = [
35685
- { id: "Rephrase", text: "Rephrase" },
35686
- { id: "Grammar", text: "Correct Grammar" },
35687
- { id: "Summarize", text: "Summarize" },
35688
- { id: "Elaborate", text: "Elaborate" },
35689
- { id: "Translate", text: "Translate" },
35690
- { id: "SentimentAnalysis", text: "Sentiment Analysis" },
35691
- ];
35692
- this.rephraseTyleList = [
35693
- { text: "Standard", id: "Standard" },
35694
- { text: "Fluent", id: "Fluent" },
35695
- { text: "Professional", id: "Professional" },
35696
- ];
35697
- this.languageList = [
35698
- { id: "EN", text: "English" },
35699
- { id: "ZH", text: "Chinese (Simplified)" },
35700
- { id: "ES", text: "Spanish" },
35701
- { id: "ZHT", text: "Chinese (Traditional)" },
35702
- { id: "HI", text: "Hindi" },
35703
- { id: "AR", text: "Arabic" },
35704
- { id: "BN", text: "Bengali" },
35705
- { id: "PT", text: "Portuguese" },
35706
- { id: "RU", text: "Russian" },
35707
- { id: "JA", text: "Japanese" },
35708
- { id: "DE", text: "German" },
35709
- { id: "KO", text: "Korean" },
35710
- { id: "FR", text: "French" },
35711
- { id: "IT", text: "Italian" },
35712
- { id: "TR", text: "Turkish" },
35713
- ];
35714
- this.promptQuery = "";
35715
- this.isSentimentCheck = false;
35716
- this.subQuery = "";
35717
- this.chipValue = "Standard";
35493
+ this.toolbarClick = new EventEmitter();
35494
+ this.change = new EventEmitter();
35495
+ this.created = new EventEmitter();
35496
+ this.actionBegin = new EventEmitter();
35497
+ this.input = new EventEmitter();
35498
+ this.focus = new EventEmitter();
35499
+ this.blur = new EventEmitter();
35500
+ this.actionComplete = new EventEmitter();
35501
+ this.family = fontFamily;
35502
+ this.fontSize = size;
35718
35503
  this.tools = {
35719
35504
  enableFloating: false,
35720
35505
  items: [
35721
- {
35722
- tooltipText: "AI Assist",
35723
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="ai_assistant_button_tbar" style="width:100%"><div class="e-rte-dropdown-btn-text">AI Assist</div></button>',
35724
- },
35725
35506
  "Bold",
35726
35507
  "Italic",
35727
35508
  "Underline",
@@ -35736,21 +35517,12 @@ class RichtexteditorComponent {
35736
35517
  "CreateTable",
35737
35518
  "Formats",
35738
35519
  "Alignments",
35739
- {
35740
- tooltipText: "Line Height",
35741
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="lineheight_tbar" style="width:100%"></button>',
35742
- },
35743
- "OrderedList",
35744
- "UnorderedList",
35520
+ "BulletFormatList",
35521
+ "NumberFormatList",
35745
35522
  "Outdent",
35746
35523
  "Indent",
35747
35524
  "|",
35748
35525
  "CreateLink",
35749
- {
35750
- tooltipText: "",
35751
- template: '<button class="e-tbar-btn e-btn" tabindex="-1" id="custom_tbar" style="width:100%">' +
35752
- '<div class="e-tbar-btn-text" style="font-weight: 500;"><img src="/assets/img/file-icon.svg" style="position: relative;top: -2px;"/><div class="uploadActions"><div id="uploadFromUser">Computer File</div><div id="relationDom">Ticket Attachment</div></div></div></button>',
35753
- },
35754
35526
  "|",
35755
35527
  "FormatPainter",
35756
35528
  "ClearFormat",
@@ -35759,484 +35531,204 @@ class RichtexteditorComponent {
35759
35531
  "Redo",
35760
35532
  ],
35761
35533
  };
35534
+ /**
35535
+ * 表格快捷工具栏:含 TableCell(合并/拆分单元格)
35536
+ */
35537
+ this.quickToolbarSettings = {
35538
+ table: [
35539
+ "Tableheader",
35540
+ "TableRemove",
35541
+ "|",
35542
+ "TableRows",
35543
+ "TableColumns",
35544
+ "TableCell",
35545
+ "|",
35546
+ "Styles",
35547
+ "BackgroundColor",
35548
+ "Alignments",
35549
+ "TableCellVerticalAlign",
35550
+ ],
35551
+ };
35552
+ this.bulletFormatList = {
35553
+ types: [
35554
+ { text: "None", value: "none" },
35555
+ { text: "●", value: "disc" },
35556
+ { text: "○", value: "circle" },
35557
+ { text: "■", value: "square" },
35558
+ { text: "-", value: "dash" },
35559
+ ],
35560
+ };
35561
+ this.numberFormatList = {
35562
+ types: [
35563
+ { text: "None", value: "none" },
35564
+ { text: "1, 2, 3, …", value: "decimal" },
35565
+ {
35566
+ text: "α, β, γ, …",
35567
+ value: "lowerGreek",
35568
+ },
35569
+ {
35570
+ text: "i, ii, iii, …",
35571
+ value: "lowerRoman",
35572
+ },
35573
+ {
35574
+ text: "A, B, C, …",
35575
+ value: "upperAlpha",
35576
+ },
35577
+ {
35578
+ text: "a, b, c, …",
35579
+ value: "lowerAlpha",
35580
+ },
35581
+ {
35582
+ text: "I, II, III, …",
35583
+ value: "upperRoman",
35584
+ },
35585
+ {
35586
+ text: "(1), (2), (3), …",
35587
+ value: "parentheses",
35588
+ },
35589
+ ],
35590
+ };
35762
35591
  }
35763
- /**
35764
- * @return {?}
35765
- */
35766
- ngOnInit() { }
35767
35592
  /**
35768
35593
  * @param {?} args
35769
35594
  * @return {?}
35770
35595
  */
35771
35596
  onContentChange(args) {
35772
- /** @type {?} */
35773
- const tables = document.querySelectorAll("table.e-rte-table");
35774
- tables.forEach((/**
35775
- * @param {?} table
35776
- * @return {?}
35777
- */
35778
- (table) => {
35779
- /** @type {?} */
35780
- const htmlTable = (/** @type {?} */ (table));
35781
- htmlTable.style.marginBottom = "10px";
35782
- htmlTable.style.borderCollapse = "collapse";
35783
- htmlTable.style.emptyCells = "show";
35784
- /** @type {?} */
35785
- const tdElements = table.querySelectorAll("td");
35786
- tdElements.forEach((/**
35787
- * @param {?} td
35788
- * @return {?}
35789
- */
35790
- (td) => {
35791
- td.style.border = "1px solid #adb5bd";
35792
- td.style.height = "20px";
35793
- td.style.minWidth = "20px";
35794
- td.style.padding = "2px 5px";
35795
- td.style.boxSizing = "border-box";
35796
- }));
35797
- }));
35798
35597
  this.change.emit(args);
35799
35598
  }
35800
35599
  /**
35801
35600
  * @return {?}
35802
35601
  */
35803
35602
  onCreate() {
35804
- //bind the a click event
35805
- // let editorContent = this.rteObj.contentModule.getEditPanel() as HTMLElement;
35806
- // editorContent.addEventListener('click', this.OnClicked.bind(this));
35807
- //add the line height
35808
- this.editorManager = this.rteObj.formatter.editorManager;
35809
- /** @type {?} */
35810
- let splitButton = new DropDownButton({
35811
- items: lineHeight_items,
35812
- iconCss: "e-icons e-line-spacing",
35813
- select: this.onSelect.bind(this),
35814
- });
35815
- splitButton.appendTo("#lineheight_tbar");
35816
- // ai assist
35817
- /** @type {?} */
35818
- let aiassistantButton = new DropDownButton({
35819
- items: this.queryList,
35820
- // iconCss: "e-btn-icon e-icons e-assistview-icon e-icon-left",
35821
- select: (/**
35822
- * @param {?} args
35823
- * @return {?}
35824
- */
35825
- (args) => this.aiQuerySelectedMenu(args)),
35826
- });
35827
- aiassistantButton.appendTo("#ai_assistant_button_tbar");
35603
+ this.created.emit();
35828
35604
  }
35829
35605
  /**
35830
- * @private
35831
35606
  * @param {?} args
35832
35607
  * @return {?}
35833
35608
  */
35834
- onSelect(args) {
35835
- if (this.rteObj.formatter.getUndoRedoStack().length === 0) {
35836
- this.rteObj.formatter.saveData();
35837
- }
35838
- /** @type {?} */
35839
- let nodes = this.editorManager.domNode.blockNodes();
35840
- for (let i = 0; nodes.length > i; i++) {
35841
- ((/** @type {?} */ (nodes[i]))).style.lineHeight = args.item.text;
35842
- }
35843
- this.rteObj.formatter.saveData();
35844
- this.rteObj.formatter.enableUndo(this.rteObj);
35609
+ _toolbarClick(args) {
35610
+ this.toolbarClick.emit(args);
35845
35611
  }
35846
35612
  /**
35847
- * @private
35848
35613
  * @param {?} args
35849
35614
  * @return {?}
35850
35615
  */
35851
- aiQuerySelectedMenu(args) {
35852
- this.dialogueOpen(args.item.text);
35853
- }
35854
- /**
35855
- * @param {?} selectedQuery
35856
- * @return {?}
35857
- */
35858
- dialogueOpen(selectedQuery) {
35859
- /** @type {?} */
35860
- var selectionText = this.rteObj.getSelectedHtml();
35861
- this.selectedQuery = selectedQuery;
35862
- if (selectionText) {
35863
- /** @type {?} */
35864
- let range = ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
35865
- ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.save(range, ((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
35866
- this.dropValIndex = this.queryList.findIndex((/**
35867
- * @param {?} q
35868
- * @return {?}
35869
- */
35870
- (q) => q.text.toLowerCase() === selectedQuery.toLowerCase()));
35871
- this.queryCategory.index = this.dropValIndex;
35872
- this.leftRte.value = this.promptQuery = selectionText;
35873
- this.leftRte.refreshUI();
35874
- this.AIdialog.show();
35875
- this.updateAISugesstionsData(selectedQuery);
35876
- }
35877
- else {
35878
- this.showMsg = true;
35879
- setTimeout((/**
35880
- * @return {?}
35881
- */
35882
- () => {
35883
- this.showMsg = false;
35884
- }), 3000);
35885
- console.log("Please select the content to perform the AI operation.");
35886
- }
35616
+ _actionBegin(args) {
35617
+ this.actionBegin.emit(args);
35887
35618
  }
35888
35619
  /**
35889
- * @param {?} selectedQuery
35620
+ * @param {?} args
35890
35621
  * @return {?}
35891
35622
  */
35892
- updateAISugesstionsData(selectedQuery) {
35893
- this.isSentimentCheck = false;
35894
- switch (selectedQuery) {
35895
- case "Summarize":
35896
- this.subQuery = "Summarize the upcoming sentence shortly.";
35897
- break;
35898
- case "Elaborate":
35899
- this.subQuery = "Elaborate on the upcoming sentence.";
35900
- break;
35901
- case "Rephrase":
35902
- this.subQuery = this.chipValue + " rephrase the upcoming sentence.";
35903
- break;
35904
- case "Correct Grammar":
35905
- this.subQuery = "Correct the grammar of the upcoming sentence.";
35906
- break;
35907
- case "Translate":
35908
- this.subQuery =
35909
- "Translate the upcoming sentence to " + this.translatelanguage + ".";
35910
- break;
35911
- case "Sentiment Analysis":
35912
- this.isSentimentCheck = true;
35913
- this.subQuery =
35914
- 'Analyze the sentiment and grammar of the following paragraphs and provide the expression score with an emoji followed by the sentiment in the format: "😊 Neutral". \n\nNOTE: Avoid any additional text or explanation:';
35915
- break;
35916
- }
35917
- this.updateAISugesstions();
35623
+ _input(args) {
35624
+ this.input.emit(args);
35918
35625
  }
35919
35626
  /**
35627
+ * @param {?} args
35920
35628
  * @return {?}
35921
35629
  */
35922
- updateAISugesstions() {
35923
- try {
35924
- if (this.promptQuery) {
35925
- ((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
35926
- "";
35927
- ((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
35928
- "none";
35929
- this.sentimentButton.element.style.display = "none";
35930
- this.regenerateButton.disabled = true;
35931
- this.copyButton.disabled = true;
35932
- this.replaceButton.disabled = true;
35933
- this.apiResultData = this.getResponseFromOpenAI(this.subQuery, this.promptQuery);
35934
- this.apiResultData.then((/**
35935
- * @param {?} result
35936
- * @return {?}
35937
- */
35938
- (result) => {
35939
- this.AIResult = this.isSentimentCheck ? this.promptQuery : result;
35940
- this.sentimentButton.content = result
35941
- .toLowerCase()
35942
- .includes("positive")
35943
- ? "😊 Positive"
35944
- : result.toLowerCase().includes("negative")
35945
- ? "😞 Negative"
35946
- : "😐 Neutral";
35947
- this.sentimentButton.element.style.display = !this.isSentimentCheck
35948
- ? "none"
35949
- : "";
35950
- this.rightRte.value = this.AIResult;
35951
- /** @type {?} */
35952
- var noResultsFound = !(this.AIResult || this.promptQuery);
35953
- ((/** @type {?} */ (document.getElementById("no-results-found")))).style.display = noResultsFound ? "" : "none";
35954
- this.regenerateButton.disabled = noResultsFound;
35955
- this.copyButton.disabled = noResultsFound;
35956
- this.replaceButton.disabled = noResultsFound;
35957
- ((/** @type {?} */ (document.getElementById("skeletonId")))).style.display =
35958
- "none";
35959
- ((/** @type {?} */ (document.getElementById("rightRte")))).style.display =
35960
- noResultsFound ? "none" : "";
35961
- console.log(noResultsFound, ((/** @type {?} */ (document.getElementById("rightRte")))).style);
35962
- // this.ref.markForCheck();
35963
- }));
35630
+ _actionComplete(args) {
35631
+ if (args.requestType == "UL") {
35632
+ if (args.elements[0].parentElement.style.listStyleType == "dash") {
35633
+ args.elements[0].parentElement.style.listStyleImage =
35634
+ "url('../../../assets/img/bullet-dash.svg')";
35635
+ args.elements[0].parentElement.style.listStyleType = "none";
35964
35636
  }
35965
35637
  }
35966
- catch (_a) {
35967
- // this.toastObj.show();
35968
- }
35969
- }
35970
- /**
35971
- * @param {?} subQuery
35972
- * @param {?} promptQuery
35973
- * @return {?}
35974
- */
35975
- getResponseFromOpenAI(subQuery, promptQuery) {
35976
- return __awaiter(this, void 0, void 0, function* () {
35977
- /** @type {?} */
35978
- const content = yield OpenAiModelRTE(subQuery, promptQuery);
35979
- return content ? ((/** @type {?} */ (content))) : "";
35980
- });
35981
- }
35982
- /**
35983
- * @return {?}
35984
- */
35985
- dialogShow() {
35986
- (/** @type {?} */ (this.regenerateButton)).element.addEventListener("click", (/**
35987
- * @return {?}
35988
- */
35989
- () => {
35990
- this.updateAISugesstions();
35991
- }));
35992
- (/** @type {?} */ (this.copyButton)).element.addEventListener("click", (/**
35993
- * @return {?}
35994
- */
35995
- () => {
35996
- this.copyTextToClipboard(this.AIResult);
35997
- }));
35998
- (/** @type {?} */ (this.replaceButton)).element.addEventListener("click", (/**
35999
- * @return {?}
36000
- */
36001
- () => {
36002
- /** @type {?} */
36003
- let range = ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.getRange(((/** @type {?} */ (this.rteObj))).contentModule.getDocument());
36004
- ((/** @type {?} */ (this.rteObj))).formatter.editorManager.nodeSelection.restore(range);
36005
- ((/** @type {?} */ (this.rteObj))).executeCommand("insertHTML", this.AIResult, {
36006
- undo: true,
36007
- });
36008
- this.closeDialog();
36009
- }));
36010
- ((/** @type {?} */ (this.AIdialog))).element.style.display = "";
36011
- }
36012
- /**
36013
- * @return {?}
36014
- */
36015
- closeDialog() {
36016
- this.AIdialog.hide();
36017
- this.rightRte.value = "";
36018
- this.leftRte.value = "";
36019
- this.promptQuery = "";
36020
- this.chipValue = "Standard";
36021
- this.AIResult = "";
36022
- this.dropValIndex = 0;
36023
- this.selectedQuery = "Rephrase";
36024
- this.sentimentButton.content = "😊 Neutral";
36025
- }
36026
- /**
36027
- * @param {?} text
36028
- * @return {?}
36029
- */
36030
- copyTextToClipboard(text) {
36031
- if (navigator.clipboard) {
36032
- navigator.clipboard
36033
- .writeText(text)
36034
- .then((/**
36035
- * @return {?}
36036
- */
36037
- () => {
36038
- console.log("Text copied to clipboard successfully!");
36039
- }))
36040
- .catch((/**
36041
- * @param {?} err
36042
- * @return {?}
36043
- */
36044
- (err) => {
36045
- console.error("Failed to copy text: ", err);
36046
- }));
36047
- }
36048
- else {
36049
- // Fallback for browsers that do not support the Clipboard API
36050
- /** @type {?} */
36051
- const textarea = document.createElement("textarea");
36052
- textarea.value = text;
36053
- document.body.appendChild(textarea);
36054
- textarea.select();
36055
- try {
36056
- document.execCommand("copy");
36057
- console.log("Text copied to clipboard using execCommand");
36058
- }
36059
- catch (err) {
36060
- console.error("Failed to copy text: ", err);
36061
- }
36062
- finally {
36063
- document.body.removeChild(textarea);
35638
+ else if (args.requestType == "OL") {
35639
+ args.elements[0].parentElement.classList.remove("custom-list", "parentheses");
35640
+ if (args.elements[0].parentElement.style.listStyleType == "parentheses") {
35641
+ args.elements[0].parentElement.classList = "custom-list";
35642
+ args.elements[0].parentElement.classList.add("parentheses");
36064
35643
  }
36065
35644
  }
36066
- }
36067
- /**
36068
- * @return {?}
36069
- */
36070
- onOverlayClick() {
36071
- /** @type {?} */
36072
- let activeEle = this.AIdialog.element.querySelector(".char_block.e-active");
36073
- if (activeEle) {
36074
- activeEle.classList.remove("e-active");
36075
- }
36076
- this.closeDialog();
36077
- }
36078
- /**
36079
- * @param {?} args
36080
- * @return {?}
36081
- */
36082
- onQuerySelect(args) {
36083
- // this.chipList.selectedChips = 0;
36084
- this.translatelanguage = "EN";
36085
- this.selectedQuery = args.itemData.text;
36086
- this.updateAISugesstionsData(args.itemData.text);
35645
+ this.actionComplete.emit(args);
36087
35646
  }
36088
35647
  /**
36089
35648
  * @param {?} args
36090
35649
  * @return {?}
36091
35650
  */
36092
- onLanguageSelect(args) {
36093
- this.translatelanguage = args.itemData.id;
36094
- this.updateAISugesstionsData("Translate");
35651
+ _focus(args) {
35652
+ this.focus.emit(args);
36095
35653
  }
36096
35654
  /**
36097
35655
  * @param {?} args
36098
35656
  * @return {?}
36099
35657
  */
36100
- onChipClick(args) {
36101
- this.chipValue = args.itemData.text;
36102
- // 事件会触发两次 必须判断args.text是否有值
36103
- if (args.itemData.text)
36104
- this.updateAISugesstionsData("Rephrase");
36105
- }
36106
- /**
36107
- * @param {?} args
36108
- * @return {?}
36109
- */
36110
- _toolbarClick(args) {
36111
- this.toolbarClick.emit(args);
36112
- }
36113
- /**
36114
- * @return {?}
36115
- */
36116
- hideToast() {
36117
- this.showMsg = false;
36118
- }
36119
- /**
36120
- * @return {?}
36121
- */
36122
- onZoom() {
36123
- if (this.size === "largest") {
36124
- this.size = ""; // 恢复到原始大小
36125
- }
36126
- else {
36127
- this.size = "largest"; // 设置为最大化
36128
- }
35658
+ _blur(args) {
35659
+ this.blur.emit(args);
36129
35660
  }
36130
35661
  }
36131
35662
  RichtexteditorComponent.decorators = [
36132
35663
  { type: Component, args: [{
36133
35664
  selector: "rs-richtext-editor",
36134
- template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n id=\"editor\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [fontFamily]=\"family\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n <ejs-dialog\r\n #AIdialog\r\n id=\"AIdialog\"\r\n [ngClass]=\"size\"\r\n [visible]=\"false\"\r\n [target]=\"target\"\r\n [isModal]=\"true\"\r\n [height]=\"dialogHeight\"\r\n [width]=\"dialogWidth\"\r\n maxHeight=\"80%\"\r\n cssClass=\"e-rte-elements custom-dialog-rte\"\r\n zIndex=\"1000\"\r\n (close)=\"closeDialog()\"\r\n (overlayClick)=\"onOverlayClick()\"\r\n (open)=\"dialogShow()\"\r\n >\r\n <ng-template #header>\r\n <div class=\"header-title\">AI Assist</div>\r\n <div class=\"header-buttons\">\r\n <div *ngIf=\"showZoomBtn\" class=\"header-zoom\" (click)=\"onZoom()\">\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size === 'largest'\"\r\n src=\"../../../assets/img/dialog-shrink.svg\"\r\n />\r\n <img\r\n class=\"header-icon\"\r\n *ngIf=\"size !== 'largest'\"\r\n src=\"../../../assets/img/dialog-grow.svg\"\r\n />\r\n </div>\r\n <div class=\"header-btn\" (click)=\"closeDialog()\">\r\n <img class=\"header-icon\" src=\"../../../assets/img/dialog-close.svg\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #footerTemplate>\r\n <div id=\"dialog-footer-content\">\r\n <div class=\"custom-row-0\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"width: 100%; align-items: center; justify-content: left\"\r\n ></div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: right; width: 100%\">\r\n <button\r\n ejs-button\r\n #sentimentButton\r\n content=\"\uD83D\uDE0A Neutral\"\r\n disabled=\"false\"\r\n cssClass=\"sentiment\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #copyButton\r\n content=\"Copy\"\r\n disabled=\"false\"\r\n class=\"copy-btn\"\r\n ></button>\r\n <button\r\n ejs-button\r\n #replaceButton\r\n content=\"Replace\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"dialog-content\" style=\"height: 100%\">\r\n <div class=\"custom-row-0\">\r\n <div class=\"cuscol-0\" style=\"width: 100%\">\r\n <ejs-dropdownlist\r\n #queryCategory\r\n style=\"width: 200px\"\r\n id=\"queryCategory\"\r\n [dataSource]=\"queryList\"\r\n index=\"0\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onQuerySelect($event)\"\r\n >\r\n Rephrase\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Rephrase'\"\r\n id=\"chips-container\"\r\n #chipList\r\n style=\"width: 160px\"\r\n [(ngModel)]=\"chipValue\"\r\n [dataSource]=\"rephraseTyleList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onChipClick($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n <ejs-dropdownlist\r\n *ngIf=\"selectedQuery == 'Translate'\"\r\n #languageCategory\r\n index=\"0\"\r\n id=\"language-Category\"\r\n [dataSource]=\"languageList\"\r\n [fields]=\"{ text: 'text', value: 'id' }\"\r\n (select)=\"onLanguageSelect($event)\"\r\n >\r\n </ejs-dropdownlist>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 100%;\r\n \"\r\n >\r\n <!-- <ejs-chiplist\r\n id=\"chips-container\"\r\n #chipList\r\n [chips]=\"['Standard', 'Fluent', 'Professional']\"\r\n selection=\"Single\"\r\n cssClass=\"e-outline\"\r\n [selectedChips]=\"[0]\"\r\n (click)=\"onChipClick($event)\"\r\n >\r\n </ejs-chiplist> -->\r\n <button\r\n ejs-button\r\n #regenerateButton\r\n content=\"Regenerate\"\r\n isPrimary=\"true\"\r\n disabled=\"false\"\r\n ></button>\r\n </div>\r\n </div>\r\n <div class=\"custom-row-1\" style=\"height: calc(100% - 40px)\">\r\n <div\r\n class=\"cuscol-0\"\r\n style=\"\r\n width: 100%;\r\n height: 100%;\r\n align-items: center;\r\n justify-content: left;\r\n \"\r\n >\r\n <div style=\"text-align: left; height: 100%\">\r\n <ejs-richtexteditor\r\n #leftRte\r\n id=\"leftRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n </ejs-richtexteditor>\r\n </div>\r\n </div>\r\n <div\r\n class=\"cuscol-1\"\r\n style=\"\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n height: 100%;\r\n \"\r\n >\r\n <div style=\"text-align: left; width: 100%; height: 100%\">\r\n <ejs-richtexteditor\r\n #rightRte\r\n id=\"rightRte\"\r\n height=\"100%\"\r\n [toolbarSettings]=\"{ enable: false }\"\r\n placeholder=\"Analysis of AI Support\"\r\n cssClass=\"e-outline\"\r\n >\r\n <!-- style=\"display: none\" -->\r\n </ejs-richtexteditor>\r\n <div\r\n class=\"no-results-found\"\r\n id=\"no-results-found\"\r\n style=\"display: none; height: 244px; align-content: center\"\r\n >\r\n <img\r\n height=\"50\"\r\n width=\"50\"\r\n src=\"https://storage.googleapis.com/cdn-bolddesk/agent-angular-app/images/light/no-records-warning.svg\"\r\n />\r\n <div>No results found</div>\r\n </div>\r\n <div id=\"skeletonId\" style=\"display: none\">\r\n <ejs-skeleton\r\n #skeletonId1\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"100%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId2\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"90%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId3\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"70%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId4\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"50%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId5\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"30%\"\r\n ></ejs-skeleton\r\n ><br />\r\n <ejs-skeleton\r\n #skeletonId6\r\n shape=\"Rectangle\"\r\n height=\"20px\"\r\n width=\"10%\"\r\n ></ejs-skeleton\r\n ><br />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ejs-dialog>\r\n <div class=\"toast\" *ngIf=\"showMsg\">\r\n <span class=\"toast_text\">First, Select some text</span\r\n ><span class=\"close_icon\" (click)=\"hideToast()\"></span>\r\n </div>\r\n</div>\r\n",
35665
+ template: "<div class=\"editor_box\" id=\"container\">\r\n <ejs-richtexteditor\r\n #editor\r\n [id]=\"editorId\"\r\n [height]=\"height\"\r\n [saveInterval]=\"0\"\r\n [autoSaveOnIdle]=\"autoSaveOnIdle\"\r\n [toolbarSettings]=\"tools\"\r\n [quickToolbarSettings]=\"quickToolbarSettings\"\r\n [bulletFormatList]=\"bulletFormatList\"\r\n [numberFormatList]=\"numberFormatList\"\r\n [fontFamily]=\"family\"\r\n [fontSize]=\"fontSize\"\r\n [disabled]=\"disabled\"\r\n [insertImageSettings]=\"insertImageSettings\"\r\n [(value)]=\"value\"\r\n (actionBegin)=\"_actionBegin($event)\"\r\n (change)=\"onContentChange($event)\"\r\n (created)=\"onCreate()\"\r\n (toolbarClick)=\"_toolbarClick($event)\"\r\n (input)=\"_input($event)\"\r\n (focus)=\"_focus($event)\"\r\n (blur)=\"_blur($event)\"\r\n (actionComplete)=\"_actionComplete($event)\"\r\n >\r\n </ejs-richtexteditor>\r\n</div>\r\n",
36135
35666
  styles: [".editor_box{position:relative;width:100%;height:100%}.editor_box .toast{position:absolute;left:35%;top:110px;z-index:1;width:400px;border-radius:4px;border:1px solid #e8f2ff;background:#f4f8ff;padding:4px 12px;color:#1f3f5c;font-size:12px;font-style:normal;font-weight:400;height:32px;font-family:Arial;display:flex;align-items:center;justify-content:space-between}.editor_box .toast .toast_text::before{content:url(../../assets/img/info.svg);display:inline-block;width:16px;height:16px;vertical-align:bottom;margin-right:8px}.editor_box .toast .close_icon{background-image:url(../../assets/img/notification-close.svg);cursor:pointer;display:inline-block;width:16px;height:16px}.custom-dialog-rte{padding:0 20px;border-radius:10px}.custom-row-0,.custom-row-1,.custom-row-2{display:flex;align-items:center;padding:12px 24px}.e-rte-dropdown-btn-text{padding-left:4px}.no-results-found{text-align:center}.no-results-found img{display:block;margin:0 auto}.e-custom{margin-right:.5rem;border-radius:25px!important}.custom-dialog-rte .skeleton-rectangle{border-radius:4px}@media (max-width:767px){.cuscol-0,.cuscol-1,.cuscol-2{justify-content:center!important}.custom-row-0,.custom-row-1,.custom-row-2{flex-direction:column!important}.cuscol-1{border-right:none!important}.cuscol-0{width:100%;align-items:center}::ng-deep:host .e-dialog{max-height:80%!important}.custom-dialog-rte .e-dialog .e-dlg-content{overflow-y:auto!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor{height:100px!important}.cuscol-noresult{padding-bottom:20px!important}.e-chip-list{padding:5px!important}.cuscol{padding-right:.2rem!important;width:auto!important}.custom-row-1{height:auto!important}}.cuscol-1{display:flex;flex-direction:row!important}.cuscol-2{display:flex;flex-direction:column!important}.sentiment{color:#000!important}.custom-dialog-rte .e-dialog .e-dlg-content{padding:0!important;overflow-y:hidden}.custom-dialog-rte .e-dialog .e-dlg-header-content{padding:20px 0!important;border:0!important}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header{display:flex;align-items:center;line-height:18px;justify-content:space-between}.custom-dialog-rte .e-dialog .e-dlg-header-content .e-dlg-header .header-title{font-family:Arial;font-size:15px;font-weight:700;font-style:normal}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons{display:flex}.custom-dialog-rte .e-dialog .e-dlg-header-content .header-buttons img{width:16px;height:16px;cursor:pointer;padding:2px;margin-left:12px}.custom-dialog-rte .e-dialog .e-footer-content{padding:0!important}.custom-dialog-rte .e-dialog .e-dlg-content .e-richtexteditor.e-rte-tb-expand .e-rte-content,.e-richtexteditor.e-rte-tb-expand .e-source-content{border:0;border-bottom:1px solid #dee2e6;border-top:0 solid #dee2e6!important}.custom-dialog-rte .dialog-content .custom-row-0{border-top:0 solid #ddd!important;padding:0;margin-bottom:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-0{justify-content:left;border-right:none!important;padding:0;display:flex;gap:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1{padding:0;margin-left:12px}.custom-dialog-rte .dialog-content .custom-row-0 .cuscol-1 .e-primary{color:#44566c;border-radius:4px;border:1px solid #dbe1e7;background:#fff;width:87px;margin:0;padding:2px 12px;font-family:Arial;font-size:12px;font-style:normal;font-weight:400;line-height:14px;height:28px}.custom-dialog-rte .dialog-content .custom-row-1{padding:0;height:calc(100% - 40px);gap:12px}.custom-dialog-rte .e-footer-content{border:0}.custom-dialog-rte .e-footer-content .custom-row-0{padding:20px 0}.custom-dialog-rte .e-footer-content .e-control.e-btn{font-family:Arial;font-size:12px;line-height:14px;padding:2px 12px;height:28px;background:#fff;color:#44566c}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn{border-color:#dbe1e7}.custom-dialog-rte .e-footer-content .e-control.e-btn.copy-btn::before{content:url(../../assets/img/editor-copy.svg);vertical-align:middle;margin-right:6px}.custom-dialog-rte .e-footer-content .e-control.e-btn.e-primary{color:#fff;background:#1364b3}.editor_box .e-dialog.largest{width:96vw!important;height:88vh!important;max-height:88vh;max-width:2100px}"]
36136
35667
  }] }
36137
35668
  ];
36138
- /** @nocollapse */
36139
- RichtexteditorComponent.ctorParameters = () => [
36140
- { type: ChangeDetectorRef }
36141
- ];
36142
35669
  RichtexteditorComponent.propDecorators = {
36143
35670
  rteObj: [{ type: ViewChild, args: ["editor", { static: false },] }],
36144
- queryCategory: [{ type: ViewChild, args: ["queryCategory", { static: false },] }],
36145
- leftRte: [{ type: ViewChild, args: ["leftRte", { static: false },] }],
36146
- rightRte: [{ type: ViewChild, args: ["rightRte", { static: false },] }],
36147
- AIdialog: [{ type: ViewChild, args: ["AIdialog", { static: true },] }],
36148
- sentimentButton: [{ type: ViewChild, args: ["sentimentButton", { static: false },] }],
36149
- regenerateButton: [{ type: ViewChild, args: ["regenerateButton", { static: false },] }],
36150
- copyButton: [{ type: ViewChild, args: ["copyButton", { static: false },] }],
36151
- replaceButton: [{ type: ViewChild, args: ["replaceButton", { static: false },] }],
36152
- placeholder: [{ type: Input }],
36153
35671
  value: [{ type: Input }],
35672
+ editorId: [{ type: Input }],
36154
35673
  height: [{ type: Input }],
36155
35674
  autoSaveOnIdle: [{ type: Input }],
36156
- target: [{ type: Input }],
35675
+ disabled: [{ type: Input }],
35676
+ insertImageSettings: [{ type: Input }],
36157
35677
  toolbarClick: [{ type: Output }],
36158
- change: [{ type: Output }]
35678
+ change: [{ type: Output }],
35679
+ created: [{ type: Output }],
35680
+ actionBegin: [{ type: Output }],
35681
+ input: [{ type: Output }],
35682
+ focus: [{ type: Output }],
35683
+ blur: [{ type: Output }],
35684
+ actionComplete: [{ type: Output }]
36159
35685
  };
36160
35686
  if (false) {
36161
35687
  /** @type {?} */
36162
35688
  RichtexteditorComponent.prototype.rteObj;
36163
35689
  /** @type {?} */
36164
- RichtexteditorComponent.prototype.queryCategory;
36165
- /** @type {?} */
36166
- RichtexteditorComponent.prototype.leftRte;
36167
- /** @type {?} */
36168
- RichtexteditorComponent.prototype.rightRte;
36169
- /** @type {?} */
36170
- RichtexteditorComponent.prototype.AIdialog;
36171
- /** @type {?} */
36172
- RichtexteditorComponent.prototype.sentimentButton;
36173
- /** @type {?} */
36174
- RichtexteditorComponent.prototype.regenerateButton;
36175
- /** @type {?} */
36176
- RichtexteditorComponent.prototype.copyButton;
36177
- /** @type {?} */
36178
- RichtexteditorComponent.prototype.replaceButton;
36179
- /** @type {?} */
36180
- RichtexteditorComponent.prototype.placeholder;
36181
- /** @type {?} */
36182
35690
  RichtexteditorComponent.prototype.value;
36183
35691
  /** @type {?} */
35692
+ RichtexteditorComponent.prototype.editorId;
35693
+ /** @type {?} */
36184
35694
  RichtexteditorComponent.prototype.height;
36185
35695
  /** @type {?} */
36186
35696
  RichtexteditorComponent.prototype.autoSaveOnIdle;
36187
35697
  /** @type {?} */
36188
- RichtexteditorComponent.prototype.target;
36189
- /** @type {?} */
36190
- RichtexteditorComponent.prototype.toolbarClick;
36191
- /** @type {?} */
36192
- RichtexteditorComponent.prototype.change;
36193
- /** @type {?} */
36194
- RichtexteditorComponent.prototype.family;
36195
- /** @type {?} */
36196
- RichtexteditorComponent.prototype.dialogWidth;
36197
- /** @type {?} */
36198
- RichtexteditorComponent.prototype.dialogHeight;
36199
- /** @type {?} */
36200
- RichtexteditorComponent.prototype.showZoomBtn;
36201
- /** @type {?} */
36202
- RichtexteditorComponent.prototype.showMsg;
35698
+ RichtexteditorComponent.prototype.disabled;
36203
35699
  /** @type {?} */
36204
35700
  RichtexteditorComponent.prototype.insertImageSettings;
36205
35701
  /** @type {?} */
36206
- RichtexteditorComponent.prototype.editorManager;
36207
- /** @type {?} */
36208
- RichtexteditorComponent.prototype.size;
36209
- /** @type {?} */
36210
- RichtexteditorComponent.prototype.selectedQuery;
36211
- /** @type {?} */
36212
- RichtexteditorComponent.prototype.dropValIndex;
36213
- /** @type {?} */
36214
- RichtexteditorComponent.prototype.queryList;
35702
+ RichtexteditorComponent.prototype.toolbarClick;
36215
35703
  /** @type {?} */
36216
- RichtexteditorComponent.prototype.rephraseTyleList;
35704
+ RichtexteditorComponent.prototype.change;
36217
35705
  /** @type {?} */
36218
- RichtexteditorComponent.prototype.languageList;
35706
+ RichtexteditorComponent.prototype.created;
36219
35707
  /** @type {?} */
36220
- RichtexteditorComponent.prototype.promptQuery;
35708
+ RichtexteditorComponent.prototype.actionBegin;
36221
35709
  /** @type {?} */
36222
- RichtexteditorComponent.prototype.isSentimentCheck;
35710
+ RichtexteditorComponent.prototype.input;
36223
35711
  /** @type {?} */
36224
- RichtexteditorComponent.prototype.subQuery;
35712
+ RichtexteditorComponent.prototype.focus;
36225
35713
  /** @type {?} */
36226
- RichtexteditorComponent.prototype.translatelanguage;
35714
+ RichtexteditorComponent.prototype.blur;
36227
35715
  /** @type {?} */
36228
- RichtexteditorComponent.prototype.chipValue;
35716
+ RichtexteditorComponent.prototype.actionComplete;
36229
35717
  /** @type {?} */
36230
- RichtexteditorComponent.prototype.apiResultData;
35718
+ RichtexteditorComponent.prototype.family;
36231
35719
  /** @type {?} */
36232
- RichtexteditorComponent.prototype.AIResult;
35720
+ RichtexteditorComponent.prototype.fontSize;
36233
35721
  /** @type {?} */
36234
35722
  RichtexteditorComponent.prototype.tools;
36235
35723
  /**
35724
+ * 表格快捷工具栏:含 TableCell(合并/拆分单元格)
36236
35725
  * @type {?}
36237
- * @private
36238
35726
  */
36239
- RichtexteditorComponent.prototype.ref;
35727
+ RichtexteditorComponent.prototype.quickToolbarSettings;
35728
+ /** @type {?} */
35729
+ RichtexteditorComponent.prototype.bulletFormatList;
35730
+ /** @type {?} */
35731
+ RichtexteditorComponent.prototype.numberFormatList;
36240
35732
  }
36241
35733
 
36242
35734
  /**