fmode-ng 0.0.83 → 0.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +1 -1
- package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +1 -1
- package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +1 -1
- package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +1 -1
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +1 -1
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +1 -1
- package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +1 -1
- package/esm2022/lib/aigc/index.mjs +1 -1
- package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -0
- package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -0
- package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -0
- package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -0
- package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -0
- package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -0
- package/esm2022/lib/aigc/story/index.mjs +10 -0
- package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -0
- package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -0
- package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -0
- package/esm2022/lib/aigc/story/story.service.mjs +10 -0
- package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +1 -1
- package/esm2022/lib/aigc/voice/index.mjs +1 -1
- package/esm2022/lib/aigc/voice/{audio.player.mjs → lib/audio/audio.player.mjs} +2 -2
- package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -0
- package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -0
- package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +10 -0
- package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +1 -1
- package/esm2022/lib/aigc/voice/tts/index.mjs +1 -1
- package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -0
- package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +10 -0
- package/esm2022/lib/aigc/voice/tts/provider-microsoft.mjs +10 -0
- package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +1 -1
- package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -0
- package/esm2022/lib/core/agent/chat/fmode-chat.mjs +1 -1
- package/esm2022/lib/core/agent/chat/index.mjs +1 -1
- package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +1 -1
- package/esm2022/lib/core/index.mjs +10 -0
- package/esm2022/lib/core/voice/index.mjs +10 -0
- package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/file.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -0
- package/esm2022/lib/icon/filetype/index.mjs +10 -0
- package/esm2022/lib/icon/filetype/md.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -0
- package/esm2022/lib/icon/filetype/video.svg.mjs +10 -0
- package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -0
- package/esm2022/lib/icon/index.mjs +10 -0
- package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -0
- package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -0
- package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -0
- package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +10 -0
- package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -0
- package/esm2022/lib/person/index.mjs +10 -0
- package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -0
- package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -0
- package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -0
- package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -0
- package/esm2022/lib/person/person.service.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -0
- package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -0
- package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -0
- package/esm2022/lib/text/index.mjs +10 -0
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/fmode-ng.mjs +1 -1
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +5 -3
- package/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.d.ts +4 -2
- package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +6 -1
- package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +6 -3
- package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +5 -1
- package/lib/aigc/index.d.ts +1 -0
- package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +23 -0
- package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +26 -0
- package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +71 -0
- package/lib/aigc/story/fm-story-list/story-preview.d.ts +20 -0
- package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +38 -0
- package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +13 -0
- package/lib/aigc/story/index.d.ts +5 -0
- package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +14 -0
- package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +29 -0
- package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +44 -0
- package/lib/aigc/story/story.service.d.ts +12 -0
- package/lib/aigc/voice/fmode-voice.service.d.ts +3 -6
- package/lib/aigc/voice/index.d.ts +3 -2
- package/lib/aigc/voice/lib/audio/audio.streamer.d.ts +33 -0
- package/lib/aigc/voice/{stream.player.d.ts → lib/audio/streamer.microsoft.d.ts} +2 -2
- package/lib/aigc/voice/lib/audio/streamer.pcm.d.ts +45 -0
- package/lib/aigc/voice/tts/fmode-tts-class.d.ts +17 -37
- package/lib/aigc/voice/tts/index.d.ts +3 -0
- package/lib/aigc/voice/tts/int-tts-provider.d.ts +35 -0
- package/lib/aigc/voice/tts/provider-doubao.d.ts +43 -0
- package/lib/aigc/voice/tts/provider-microsoft.d.ts +21 -0
- package/lib/core/agent/chat/completion/fmode-completion.d.ts +2 -1
- package/lib/core/agent/chat/completion/int-gpt-chat-options.d.ts +72 -0
- package/lib/core/agent/chat/index.d.ts +1 -1
- package/lib/core/agent/chat/interface.d.ts +3 -0
- package/lib/core/agent/prompt/agent.prompt.d.ts +2 -1
- package/lib/core/index.d.ts +2 -0
- package/lib/core/voice/index.d.ts +1 -0
- package/lib/icon/filetype/audio.svg.d.ts +1 -0
- package/lib/icon/filetype/avatar.svg.d.ts +1 -0
- package/lib/icon/filetype/chat.svg.d.ts +1 -0
- package/lib/icon/filetype/docx.svg.d.ts +1 -0
- package/lib/icon/filetype/file.svg.d.ts +1 -0
- package/lib/icon/filetype/filetype.pipe.d.ts +8 -0
- package/lib/icon/filetype/index.d.ts +11 -0
- package/lib/icon/filetype/md.svg.d.ts +1 -0
- package/lib/icon/filetype/pdf.svg.d.ts +1 -0
- package/lib/icon/filetype/pptx.svg.d.ts +1 -0
- package/lib/icon/filetype/svgtoblob.d.ts +1 -0
- package/lib/icon/filetype/video.svg.d.ts +1 -0
- package/lib/icon/filetype/xlsx.svg.d.ts +1 -0
- package/lib/icon/index.d.ts +1 -0
- package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +20 -0
- package/lib/person/comp-person-item/comp-person-item.component.d.ts +10 -0
- package/lib/person/comp-person-story/comp-person-story.component.d.ts +67 -0
- package/lib/person/edit-upload/edit-upload.component.d.ts +81 -0
- package/lib/person/edit-upload/edit-upload.module.d.ts +11 -0
- package/lib/person/index.d.ts +4 -0
- package/lib/person/modal-person-select/modal-person-select.component.d.ts +25 -0
- package/lib/person/modal-user-verify/secret-text.pipe.d.ts +7 -0
- package/lib/person/modal-user-verify/user-verify.component.d.ts +88 -0
- package/lib/person/person-detail/person-detail.component.d.ts +41 -0
- package/lib/person/person.service.d.ts +33 -0
- package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +23 -0
- package/lib/text/fm-article-editor/article.service.d.ts +41 -0
- package/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.d.ts +19 -0
- package/lib/text/fm-article-editor/draft.service.d.ts +33 -0
- package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +73 -0
- package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +81 -0
- package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +90 -0
- package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +36 -0
- package/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.d.ts +12 -0
- package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +55 -0
- package/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.d.ts +31 -0
- package/lib/text/fm-article-editor/outline-count.pipe.d.ts +7 -0
- package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +6 -0
- package/lib/text/fm-article-editor/task-article-generation.d.ts +23 -0
- package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +18 -0
- package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +14 -0
- package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +19 -0
- package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +7 -0
- package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +14 -0
- package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +14 -0
- package/lib/text/fm-text-quill/fm-text-quill.component.d.ts +39 -0
- package/lib/text/index.d.ts +3 -0
- package/package.json +6 -2
- package/public-api.d.ts +4 -0
- package/esm2022/lib/aigc/voice/lib/recorder/engine-pcm.mjs +0 -10
- package/esm2022/lib/aigc/voice/lib/recorder/engine-wav.mjs +0 -10
- package/esm2022/lib/aigc/voice/stream.player.mjs +0 -10
- package/lib/aigc/voice/lib/recorder/engine-pcm.d.ts +0 -1
- package/lib/aigc/voice/lib/recorder/engine-wav.d.ts +0 -1
- /package/lib/aigc/voice/{audio.player.d.ts → lib/audio/audio.player.d.ts} +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,ViewChild,Input,Output,EventEmitter,ElementRef,ChangeDetectorRef}from"@angular/core";import{IonicModule}from"@ionic/angular";import{NzToolTipModule}from"ng-zorro-antd/tooltip";import{NzInputModule}from"ng-zorro-antd/input";import{NzDividerModule}from"ng-zorro-antd/divider";import{NzDropDownModule}from"ng-zorro-antd/dropdown";import{NzEmptyModule}from"ng-zorro-antd/empty";import{NzAvatarModule}from"ng-zorro-antd/avatar";import{NzPopoverModule}from"ng-zorro-antd/popover";import{NzPipesModule}from"ng-zorro-antd/pipes";import{FormGroup,FormsModule,ReactiveFormsModule}from"@angular/forms";import{ArticleEditorTopbarComponent}from"./article-editor-topbar/article-editor-topbar.component";import{MatDialog,MatDialogModule}from"@angular/material/dialog";import{TaskDocumentSelect}from"./tasks/task-document-select";import{FmAgentTaskComponent}from"../../aigc/agent/fm-agent-task/fm-agent-task.component";import{TaskArticleWritingOptions}from"./tasks/task-article-writing-options";import{TaskArticleOutline}from"./tasks/task-article-outline";import{MatFormFieldModule}from"@angular/material/form-field";import{MatInputModule}from"@angular/material/input";import{MatButtonModule}from"@angular/material/button";import{ClipboardService,FmodeChatCompletion}from"../../aigc";import{MatIconModule}from"@angular/material/icon";import{finalize}from"rxjs";import{AlertController,ModalController}from"@ionic/angular/standalone";import{TaskArticleOutlineEdit}from"./tasks/task-article-outline-edit";import{MatChipsModule}from"@angular/material/chips";import{TaskArticleDraft}from"./tasks/task-article-draft-create";import{DraftService}from"./draft.service";import{FmTextQuillComponent}from"../fm-text-quill/fm-text-quill.component";import{OutlineCountPipe}from"./outline-count.pipe";import{FmArticleOutlineLeftitemComponent}from"./fm-article-outline-leftitem/fm-article-outline-leftitem.component";import{Router}from"@angular/router";import{TaskArticlePreview}from"./tasks/task-article-preview";import Parse from"parse";import{MatExpansionModule}from"@angular/material/expansion";import{NovaUploadService}from"../../storage/service-upload/nova-upload.service";import{Diagnostic}from"@awesome-cordova-plugins/diagnostic/ngx";import{addIcons}from"ionicons";import{closeOutline,copyOutline,cloudDoneOutline,createOutline}from"ionicons/icons";import{taskArticleGeneration}from"./task-article-generation";import{PersonService}from"../../person/person.service";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular/standalone";import*as i2 from"@angular/material/dialog";import*as i3 from"../../aigc";import*as i4 from"./draft.service";import*as i5 from"@angular/router";import*as i6 from"../../storage/service-upload/nova-upload.service";import*as i7 from"../../person/person.service";import*as i8 from"@angular/common";import*as i9 from"@angular/forms";import*as i10 from"@ionic/angular";import*as i11 from"ng-zorro-antd/input";import*as i12 from"@angular/material/form-field";import*as i13 from"@angular/material/input";import*as i14 from"@angular/material/button";import*as i15 from"@angular/material/icon";import*as i16 from"@angular/material/chips";import*as i17 from"@angular/material/expansion";addIcons({closeOutline:closeOutline,copyOutline:copyOutline,cloudDoneOutline:cloudDoneOutline,createOutline:createOutline});export class FmArticleEditorComponent{async ngOnInit(){this.article?.id&&this.draftServ?.loadArticleDraft(this.article)}setContent(n,e){e?e.content=n:this.article?.set("content",n),this.contentChanged=!0}selectChange(n){this.selectRange=n?.range,this.selectText=n?.text,this.selectQuill=n?.quill,this.cdRef.detectChanges()}goOptimizeText(n){this.selectChange(n),this.aitab="AI润色",this.optimizeContent()}cancelOptimize(){this.isOptimizing=!1,this.optimize$?.unsubscribe()}optimizeContent(){if(!this.selectText)return;this.isOptimizing=!0;let n=[{role:"user",content:`有段文字要润色,目的是提高其专业性和清晰度。请您调整语言,确保逻辑流畅,并使用行业相关术语。同时,请检查并修正任何语法错误。直接返回润色后内容。这是原文:${this.selectText}`}],e=new FmodeChatCompletion(n);e.model="fmode-4.0-cn-256k",this.optimize$=e.sendCompletion().pipe(finalize((()=>{undefined.complete=!0}))).subscribe((n=>{this.optimizeText=n.content,n?.complete&&(this.isOptimizing=!1,this.optimize$?.unsubscribe(),this.cdRef.detectChanges())}))}copyOptimize(){this.clipboard.copyToClipboard(this.optimizeText)}applyOptimize(){this.selectRange&&(this.selectQuill?.deleteText(this.selectRange?.index,this.selectRange.length),this.selectQuill?.insertText(this.selectRange?.index,this.optimizeText),this.selectRange=void 0)}handleNavEvent(n,e){if("preview"==n&&this.article?.id&&TaskArticlePreview({modal:this.modalCtrl,dialog:this.dialog,article:this.article}),"backmenu"==n&&(this.article?.get("chapter")?.get("book")?.id||this.router.navigateByUrl("/editor/my/home"),this.onClose.emit(!0)),"toggle-aitool"==n&&(this.isDivHidden=!this.isDivHidden),"save"==n&&this.saveArticleContent(),"options"==n){if(this.readOnly)return;let n={};this.doArticleTask([TaskArticleWritingOptions({shareData:n,dialog:this.dialog,editOnly:!0})],n)}if("outline"==n){if(this.readOnly)return;let n={};this.doArticleTask([TaskArticleOutlineEdit({shareData:n,dialog:this.dialog})],n)}if("draft"==n){let n={};if(this.readOnly)return;this.doArticleTask([TaskArticleDraft({isSelectedMode:!0,shareData:n,dialog:this.dialog,modalCtrl:this.modalCtrl})],n,(()=>{}))}}async saveArticleContent(){this.isSaving=!0,this.article?.get("author")?.id||this.article?.set("author",Parse.User.current()?.toPointer()),await(this.article?.save()),this.contentChanged=!1,this.isSaving=!1}close(){this.onClose.emit(!0)}async presentAlert(n){const e=await this.alertController.create({header:"提示",subHeader:n?.message,buttons:["好的"]});await e.present()}async aiTab(n){this.aitab=n}async clickTab(n){this.clicktab=n}async dashboardTab(n){this.dashboardtab=n}showContent(n){this.selectedContent=n}constructor(n,e,t,i,a,o,r,l,s){this.modalCtrl=n,this.alertController=e,this.dialog=t,this.cdRef=i,this.clipboard=a,this.draftServ=o,this.router=r,this.nupload=l,this.personServ=s,this.onClose=new EventEmitter,this.readOnly=!1,this.title="此处是标题",this.content="",this.contentChanged=!1,this.selectText="",this.optimizeText="",this.isOptimizing=!1,this.isSaving=!1,this.isDivHidden=!1,this.aitab="AI写作",this.clicktab="语法错误",this.dashboardtab="全部",this.cards=[{title:"全文创作",handle:()=>{this.taskArticleGeneration()},content:"按步骤快速创作一篇完整的文章",imageurl:"../../../assets/images/write.png"},{title:"润色改写",handle:()=>{this.aitab="AI润色"},content:"根据选段,调整语言,逻辑顺畅表达清晰",imageurl:"../../../assets/images/句子续写.png"},{title:"智能摘要(未开放)",handle:()=>{this.presentAlert({message:"暂未开放,敬请期待"})},content:"快速生成文章摘要",imageurl:"../../../assets/images/智能摘要.png"},{title:"句子续写(未开放)",handle:()=>{this.presentAlert({message:"暂未开放,敬请期待"})},content:"根据上文,续写多个句子",imageurl:"../../../assets/images/句子续写.png"},{title:"段落评论(未开放)",handle:()=>{this.presentAlert({message:"暂未开放,敬请期待"})},content:"根据段落特点,进行有针对性的评论",imageurl:"../../../assets/images/产品评论.png"},{title:"模板建议(未开放)",handle:()=>{this.presentAlert({message:"暂未开放,敬请期待"})},content:"欢迎与我们反馈您的需求",imageurl:"../../../assets/images/模板建议.png"}],this.tempFormGroup=new FormGroup({}),this.selectedContent="图片"}enableButton(){document.getElementById("start").disabled=!0}async taskArticleGeneration(n){let e={createNewDraft:!0};taskArticleGeneration((()=>{}),{modalCtrl:this.modalCtrl,article:this.article,person:this.book?.get("person"),book:this.book,shareData:e,dialog:this.dialog,personServ:this.personServ})}doArticleTask(n,e,t){e.article=this.article;let i=this.article?.get("writingOptions");i&&(e.writingOptions=i);let a=n;this.dialog.open(FmAgentTaskComponent,{data:{shareData:e,stepsList:a},disableClose:!0}).afterClosed().subscribe((n=>{t&&t()}))}uploadImage(){let n=this,e=document.createElement("input");e.type="file",e.accept="image/*",e.multiple=!1,e.addEventListener("change",(async()=>{let t=e?.files?.[0];if(t){let e=await n.nupload.upload(t);e?.url&&(this.article?.set("image",e?.url),this.article?.save())}})),e.click()}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleEditorComponent,deps:[{token:i1.ModalController},{token:i1.AlertController},{token:i2.MatDialog},{token:i0.ChangeDetectorRef},{token:i3.ClipboardService},{token:i4.DraftService},{token:i5.Router},{token:i6.NovaUploadService},{token:i7.PersonService}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:FmArticleEditorComponent,isStandalone:!0,selector:"fm-article-editor",inputs:{article:"article",book:"book",readOnly:"readOnly"},outputs:{onClose:"onClose"},providers:[DraftService,NovaUploadService,Diagnostic],viewQueries:[{propertyName:"editorComp",first:!0,predicate:["editorComp"],descendants:!0}],ngImport:i0,template:'<div class="page">\n\n \x3c!-- 导航栏 --\x3e\n <div class="nav" *ngIf="!readOnly">\n <fm-article-editor-topbar #topbar [article]="article" [isSaving]="isSaving" [contentChanged]="contentChanged" (onNavEvent)="handleNavEvent($event)"></fm-article-editor-topbar>\n </div>\n\n <div class="page-container">\n \x3c!-- (scroll)="onScroll($event)" --\x3e\n\n \x3c!-- 编辑文本 --\x3e\n \x3c!-- --\x3e\n <div class="editor-text" [ngClass]="{\'center\':isDivHidden}">\n <div class="editor-main">\n\n <div role="toolbar" class="ql-toolbar ql-snow" *ngIf="false">\n <span class="ql-formats"><span class="ql-header ql-picker"><span class="ql-picker-label" tabindex="0" role="button" aria-expanded="false" aria-controls="ql-picker-options-0"><svg viewBox="0 0 18 18"><polygon class="ql-stroke" points="7 11 9 13 11 11 7 11"></polygon><polygon class="ql-stroke" points="7 7 9 5 11 7 7 7"></polygon></svg></span><span class="ql-picker-options" aria-hidden="true" tabindex="-1" id="ql-picker-options-0"><span tabindex="0" role="button" class="ql-picker-item" data-value="1"></span><span tabindex="0" role="button" class="ql-picker-item" data-value="2"></span><span tabindex="0" role="button" class="ql-picker-item" data-value="3"></span><span tabindex="0" role="button" class="ql-picker-item" data-value="4"></span><span tabindex="0" role="button" class="ql-picker-item"></span></span></span><select class="ql-header" style="display: none;"><option value="1"></option><option value="2"></option><option value="3"></option><option value="4"></option><option selected="selected"></option></select></span>\n <span class="ql-formats"><button type="button" class="ql-bold" aria-pressed="false" aria-label="bold"><svg viewBox="0 0 18 18"><path class="ql-stroke" d="M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z"></path><path class="ql-stroke" d="M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z"></path></svg></button><button type="button" class="ql-italic" aria-pressed="false" aria-label="italic"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="7" x2="13" y1="4" y2="4"></line><line class="ql-stroke" x1="5" x2="11" y1="14" y2="14"></line><line class="ql-stroke" x1="8" x2="10" y1="14" y2="4"></line></svg></button><button type="button" class="ql-underline" aria-pressed="false" aria-label="underline"><svg viewBox="0 0 18 18"><path class="ql-stroke" d="M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3"></path><rect class="ql-fill" height="1" rx="0.5" ry="0.5" width="12" x="3" y="15"></rect></svg></button></span>\n <span class="ql-formats"><button type="button" class="ql-list" aria-pressed="false" value="bullet" aria-label="list: bullet"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="6" x2="15" y1="4" y2="4"></line><line class="ql-stroke" x1="6" x2="15" y1="9" y2="9"></line><line class="ql-stroke" x1="6" x2="15" y1="14" y2="14"></line><line class="ql-stroke" x1="3" x2="3" y1="4" y2="4"></line><line class="ql-stroke" x1="3" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="3" x2="3" y1="14" y2="14"></line></svg></button></span>\n <span class="ql-formats"><span class="ql-align ql-picker ql-icon-picker"><span class="ql-picker-label" tabindex="0" role="button" aria-expanded="false" aria-controls="ql-picker-options-1"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line><line class="ql-stroke" x1="3" x2="13" y1="14" y2="14"></line><line class="ql-stroke" x1="3" x2="9" y1="4" y2="4"></line></svg></span><span class="ql-picker-options" aria-hidden="true" tabindex="-1" id="ql-picker-options-1"><span tabindex="0" role="button" class="ql-picker-item"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line><line class="ql-stroke" x1="3" x2="13" y1="14" y2="14"></line><line class="ql-stroke" x1="3" x2="9" y1="4" y2="4"></line></svg></span><span tabindex="0" role="button" class="ql-picker-item" data-value="center"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="14" x2="4" y1="14" y2="14"></line><line class="ql-stroke" x1="12" x2="6" y1="4" y2="4"></line></svg></span><span tabindex="0" role="button" class="ql-picker-item" data-value="right"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="15" x2="5" y1="14" y2="14"></line><line class="ql-stroke" x1="15" x2="9" y1="4" y2="4"></line></svg></span><span tabindex="0" role="button" class="ql-picker-item" data-value="justify"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="15" x2="3" y1="14" y2="14"></line><line class="ql-stroke" x1="15" x2="3" y1="4" y2="4"></line></svg></span></span></span><select class="ql-align" style="display: none;"><option selected="selected"></option><option value="center"></option><option value="right"></option><option value="justify"></option></select></span>\n <span class="ql-formats"><button type="button" class="ql-code-block" aria-pressed="false" aria-label="code-block"><svg viewBox="0 0 18 18"><polyline class="ql-even ql-stroke" points="5 7 3 9 5 11"></polyline><polyline class="ql-even ql-stroke" points="13 7 15 9 13 11"></polyline><line class="ql-stroke" x1="10" x2="8" y1="5" y2="13"></line></svg></button></span>\n <span class="ql-formats"><button class="ql-ai-optimize">AI</button></span>\n </div>\n\n <div class="text-header">\n <input [ngModel]="article?.get(\'title\')" (ngModelChange)="article?.set(\'title\',$event)" type="text" />\n \x3c!-- <quill-editor [(ngModel)]="title" [modules]="{toolbar: true}"></quill-editor> --\x3e\n </div>\n <div class="article-info">\n <ng-container *ngIf="article?.get(\'keywords\')?.length">\n <div>关键字:<mat-chip *ngFor="let key of article?.get(\'keywords\')">{{key}}</mat-chip></div>\n </ng-container>\n <ng-container *ngIf="article?.get(\'writingOptions\')">\n <div (click)="handleNavEvent(\'options\')">设 定:\n <mat-chip *ngIf="article?.get(\'writingOptions\')?.writingStyle">{{article?.get(\'writingOptions\')?.writingStyle}}</mat-chip>\n <mat-chip *ngIf="article?.get(\'writingOptions\')?.wordCount">约{{article?.get(\'writingOptions\')?.wordCount}}字</mat-chip></div>\n </ng-container>\n <ng-container *ngIf="article?.get(\'outlineJson\')?.length">\n <div (click)="handleNavEvent(\'outline\')">提 纲:<mat-chip>{{article?.get(\'outlineJson\') | outlineCount}}字</mat-chip></div>\n </ng-container>\n <div *ngIf="article?.id" (click)="handleNavEvent(\'draft\')">稿件箱:<mat-chip>{{draftServ.DraftCountMap?.[article?.id||\'\']?.total || 0}}篇</mat-chip></div>\n </div>\n\n <div class="article-content">\n \x3c!-- 文本编辑区域:仅content正文 --\x3e\n <ng-container *ngIf="!article?.get(\'contentArray\')?.length">\n <fm-text-quill #textQuill [readOnly]="readOnly" [content]="article?.get(\'content\')" (onContentChange)="setContent($event)"\n (onAIClick)="goOptimizeText($event)" (onSelectChange)="selectChange($event)"\n ></fm-text-quill>\n </ng-container>\n \x3c!-- 文本编辑区域:含大纲正文 --\x3e\n <ng-container *ngIf="article?.get(\'contentArray\')?.length">\n <ng-container *ngFor="let item of article?.get(\'contentArray\');let index=index;">\n \x3c!-- 章节信息 --\x3e\n \x3c!-- <h2 style="margin:0px;padding-left:12px;" *ngIf="article?.get(\'outlineJson\')?.sections?.[index]?.title">{{article?.get(\'outlineJson\')?.sections?.[index]?.title}}</h2> --\x3e\n <fm-text-quill #textQuill [readOnly]="readOnly" [content]="item?.content" (onContentChange)="setContent($event,item)"\n (onAIClick)="goOptimizeText($event)" (onSelectChange)="selectChange($event)"\n ></fm-text-quill>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n\n\n \x3c!-- AI工具 --\x3e\n <div *ngIf="!readOnly && !isDivHidden" class="page-right">\n <div class="nav-ai">\n \x3c!-- AI功能按钮 --\x3e\n \x3c!-- <div class="ai-btn">\n <button (click)="showContent(\'AI-写作\')">AI写作</button>\n <button (click)="showContent(\'AI-润色\')">AI润色</button>\n <button (click)="showContent(\'校阅\')">校阅</button>\n <button (click)="showContent(\'图片\')">图片</button>\n <button (click)="showContent(\'评论\')">评论</button>\n </div> --\x3e\n\n <ul class="ai-btn">\n <li class="active0" (click)="aiTab(\'AI写作\')" [ngClass]="{ \'active1\': aitab == \'AI写作\' }">\n <div>AI写作</div>\n </li>\n <li class="active0" (click)="aiTab(\'AI润色\')" [ngClass]="{ \'active1\': aitab == \'AI润色\' }">\n <div>AI润色</div>\n </li>\n \x3c!-- <li class="active0" (click)="aiTab(\'校阅\')" [ngClass]="{ \'active1\': aitab == \'校阅\' }">\n <div>校阅</div>\n </li> --\x3e\n <li class="active0" (click)="aiTab(\'AI配图\')" [ngClass]="{ \'active1\': aitab == \'AI配图\' }">\n <div>AI配图</div>\n </li>\n\n </ul>\n \x3c!-- AI功能退出按钮 --\x3e\n <div>\n <ion-icon class="icon" name="close-outline" (click)="this.isDivHidden = !this.isDivHidden;"></ion-icon>\n </div>\n\n </div>\n\n\n \x3c!-- 工具面板 --\x3e\n <div class="ai-panel">\n\n <div *ngIf="aitab==\'AI写作\'" class="ai-write">\n \x3c!-- 搜索 --\x3e\n <div class="search-bar">\n <ion-searchbar color="light" placeholder="搜索模板"></ion-searchbar>\n </div>\n\n <div class="ai-tool-grid">\n <ng-container *ngFor="let card of cards">\n <ion-card class="card" style="margin-left: 5%;max-width:215px;" (click)="card?.handle()">\n <ion-card-header>\n <ion-card-title class="card-image">\n <img src="{{card.imageurl}}" width="25" height="25" alt="write">\n </ion-card-title>\n <ion-card-subtitle>{{card.title}}</ion-card-subtitle>\n </ion-card-header>\n\n <ion-card-content>\n {{card.content}}\n </ion-card-content>\n </ion-card>\n </ng-container>\n </div>\n\n </div>\n <div *ngIf="aitab==\'AI润色\'" class="ai-polish" [formGroup]="tempFormGroup">\n <div class="ai-polish-input">\n <mat-form-field style="width:95%;">\n <mat-label>输入或选中左侧文本开始润色</mat-label>\n <textarea matInput [(ngModel)]="selectText" [ngModelOptions]="{standalone: true}" rows="10"></textarea>\n </mat-form-field>\n\n \x3c!-- <textarea [(ngModel)]="selectText" rows="10" formControlName="comment" nz-input placeholder="输入或选中左侧文本开始润色"></textarea> --\x3e\n </div>\n <div class="ai-polish-button">\n <button *ngIf="!isOptimizing" mat-raised-button color="primary" (click)="optimizeContent()">开始润色</button>\n <button *ngIf="isOptimizing" mat-raised-button color="warn" (click)="cancelOptimize()">停止润色</button>\n \x3c!-- <ion-button id="start" [disabled]="false" (click)="enableButton()">开始润色</ion-button> --\x3e\n </div>\n <div class="ai-polish-input">\n <mat-form-field style="width:95%;">\n <mat-label>生成内容</mat-label>\n <textarea matInput [(ngModel)]="optimizeText" [ngModelOptions]="{standalone: true}" rows="10"></textarea>\n </mat-form-field>\n </div>\n <div class="ai-polish-button">\n <button *ngIf="selectRange?.length" mat-raised-button (click)="applyOptimize()"><mat-icon fontIcon="flip"></mat-icon>替换</button>\n <button mat-raised-button (click)="copyOptimize()"><mat-icon fontIcon="content_copy"></mat-icon>复制</button>\n \x3c!-- <ion-button id="start" [disabled]="false" (click)="enableButton()">开始润色</ion-button> --\x3e\n </div>\n \x3c!-- <div class="copy">\n <ion-icon name="copy-outline" style="color:#4e80f4" (click)="Copy(polishContent)"></ion-icon>\n </div> --\x3e\n </div>\n <div *ngIf="aitab==\'校阅\'" class="ai-proofread">\n\n <div class="showItems-container">\n <div class="showItems">\n\n <div class="showItem" (click)="clickTab(\'内容建议\')" [ngClass]="{ \'active1\': clicktab == \'内容建议\' }">\n <div style="line-height: 12px;">\n <svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M11 10H5M7 14H5M13 6H5M17 9.5V5.8C17 4.11984 17 3.27976 16.673 2.63803C16.3854 2.07354 15.9265 1.6146 15.362 1.32698C14.7202 1 13.8802 1 12.2 1H5.8C4.11984 1 3.27976 1 2.63803 1.32698C2.07354 1.6146 1.6146 2.07354 1.32698 2.63803C1 3.27976 1 4.11984 1 5.8V16.2C1 17.8802 1 18.7202 1.32698 19.362C1.6146 19.9265 2.07354 20.3854 2.63803 20.673C3.27976 21 4.11984 21 5.8 21H8.5M19 21L17.5 19.5M18.5 17C18.5 18.933 16.933 20.5 15 20.5C13.067 20.5 11.5 18.933 11.5 17C11.5 15.067 13.067 13.5 15 13.5C16.933 13.5 18.5 15.067 18.5 17Z"\n stroke="#1570EF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <span>内容建议</span>\n\n\n </div>\n\n <div class="showItem" (click)="clickTab(\'事实验证\')" [ngClass]="{\'active1\': clicktab==\'事实验证\'}">\n <div style="line-height: 12px;">\n <svg width="18" height="22" viewBox="0 0 18 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M11 1.26953V5.40007C11 5.96012 11 6.24015 11.109 6.45406C11.2049 6.64222 11.3578 6.7952 11.546 6.89108C11.7599 7.00007 12.0399 7.00007 12.6 7.00007H16.7305M6 15L8 17L12.5 12.5M11 1H5.8C4.11984 1 3.27976 1 2.63803 1.32698C2.07354 1.6146 1.6146 2.07354 1.32698 2.63803C1 3.27976 1 4.11984 1 5.8V16.2C1 17.8802 1 18.7202 1.32698 19.362C1.6146 19.9265 2.07354 20.3854 2.63803 20.673C3.27976 21 4.11984 21 5.8 21H12.2C13.8802 21 14.7202 21 15.362 20.673C15.9265 20.3854 16.3854 19.9265 16.673 19.362C17 18.7202 17 17.8802 17 16.2V7L11 1Z"\n stroke="#D92D20" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <span>事实验证</span>\n </div>\n\n <div class="showItem" (click)="clickTab(\'全文总结\')" [ngClass]="{\'active1\': clicktab==\'全文总结\'}">\n <div style="line-height: 12px;"> <svg width="20" height="22" viewBox="0 0 16 20" fill="none"\n xmlns="http://www.w3.org/2000/svg">\n <path\n d="M14.1668 5.83329V5.66663C14.1668 4.26649 14.1668 3.56643 13.8943 3.03165C13.6547 2.56124 13.2722 2.17879 12.8018 1.93911C12.267 1.66663 11.567 1.66663 10.1668 1.66663H4.8335C3.43336 1.66663 2.7333 1.66663 2.19852 1.93911C1.72811 2.17879 1.34566 2.56124 1.10598 3.03165C0.833496 3.56643 0.833496 4.26649 0.833496 5.66663V14.3333C0.833496 15.7334 0.833496 16.4335 1.10598 16.9683C1.34566 17.4387 1.72811 17.8211 2.19852 18.0608C2.7333 18.3333 3.43336 18.3333 4.8335 18.3333H7.91683M7.91683 9.16663H4.16683M7.0835 12.5H4.16683M10.8335 5.83329H4.16683M12.5002 15V10.4166C12.5002 9.72627 13.0598 9.16663 13.7502 9.16663C14.4405 9.16663 15.0002 9.72627 15.0002 10.4166V15C15.0002 16.3807 13.8809 17.5 12.5002 17.5C11.1195 17.5 10.0002 16.3807 10.0002 15V11.6666"\n stroke="#F79009" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <span>全文总结</span>\n </div>\n\n </div>\n </div>\n\n <div class="showItem-content">\n <div *ngIf="clicktab==\'语法错误\'" class="grammar-panel">\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n\n </div>\n <div *ngIf="clicktab==\'内容建议\'" class="suggest-panel">\n\n <div class="content-suggest">\n <div style="line-height: 12px;">\n <svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M11 10H5M7 14H5M13 6H5M17 9.5V5.8C17 4.11984 17 3.27976 16.673 2.63803C16.3854 2.07354 15.9265 1.6146 15.362 1.32698C14.7202 1 13.8802 1 12.2 1H5.8C4.11984 1 3.27976 1 2.63803 1.32698C2.07354 1.6146 1.6146 2.07354 1.32698 2.63803C1 3.27976 1 4.11984 1 5.8V16.2C1 17.8802 1 18.7202 1.32698 19.362C1.6146 19.9265 2.07354 20.3854 2.63803 20.673C3.27976 21 4.11984 21 5.8 21H8.5M19 21L17.5 19.5M18.5 17C18.5 18.933 16.933 20.5 15 20.5C13.067 20.5 11.5 18.933 11.5 17C11.5 15.067 13.067 13.5 15 13.5C16.933 13.5 18.5 15.067 18.5 17Z"\n stroke="#1570EF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <div class="content-suggest-title">内容建议</div>\n </div>\n\n <div class="content">\n <div class="content-title"> 这篇文章介绍的是七个关于中国企业家的管理之道的自传小说章节标题,旨在展示企业家们的个人经历、管理理念和人生哲学。\n </div>\n <div class="content-title">改进建议:</div>\n <ol>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n </ol>\n\n\n </div>\n </div>\n <div *ngIf="clicktab==\'事实验证\'" class="verify-panel">\n <div class="dashboard">\n <div class="item" (click)="dashboardTab(\'全部\')" [ngClass]="{\'itemChoose\': dashboardtab==\'全部\'}">\n <div class="icon">\n <div class="statusIcon" style="border: 1px solid black; box-sizing: border-box;"></div>\n </div>\n <div class="text">全部</div>\n <div class="number">28</div>\n </div>\n\n <div class="item" (click)="dashboardTab(\'通过\')" [ngClass]="{\'itemChoose\': dashboardtab==\'通过\'}">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n <div class="number">9</div>\n </div>\n\n <div class="item" (click)="dashboardTab(\'不通过\')" [ngClass]="{\'itemChoose\': dashboardtab==\'不通过\'}">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(217, 45, 32);"><svg\n xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">\n <path d="M7 17L17 7" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n <path d="M7 7L17 17" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </svg></div>\n </div>\n <div class="text" style="color: rgb(217, 45, 32);">不通过</div>\n <div class="number">1</div>\n </div>\n <div class="item" (click)="dashboardTab(\'无法判断\')" [ngClass]="{\'itemChoose\': dashboardtab==\'无法判断\'}">\n <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="3 3 18 18"\n fill="none">\n <path\n d="M7.8824 8.679C7.88035 8.72744 7.88822 8.77579 7.90555 8.82107C7.92287 8.86636 7.94927 8.90762 7.98313 8.94232C8.01699 8.97703 8.05759 9.00444 8.10244 9.02287C8.14728 9.0413 8.19542 9.05036 8.2439 9.0495H9.4814C9.6884 9.0495 9.8534 8.88 9.8804 8.6745C10.0154 7.6905 10.6904 6.9735 11.8934 6.9735C12.9224 6.9735 13.8644 7.488 13.8644 8.7255C13.8644 9.678 13.3034 10.116 12.4169 10.782C11.4074 11.5155 10.6079 12.372 10.6649 13.7625L10.6694 14.088C10.671 14.1864 10.7112 14.2803 10.7813 14.3493C10.8515 14.4183 10.946 14.457 11.0444 14.457H12.2609C12.3604 14.457 12.4557 14.4175 12.5261 14.3472C12.5964 14.2768 12.6359 14.1815 12.6359 14.082V13.9245C12.6359 12.8475 13.0454 12.534 14.1509 11.6955C15.0644 11.001 16.0169 10.23 16.0169 8.6115C16.0169 6.345 14.1029 5.25 12.0074 5.25C10.1069 5.25 8.0249 6.135 7.8824 8.679ZM10.2179 17.3235C10.2179 18.123 10.8554 18.714 11.7329 18.714C12.6464 18.714 13.2749 18.123 13.2749 17.3235C13.2749 16.4955 12.6449 15.9135 11.7314 15.9135C10.8554 15.9135 10.2179 16.4955 10.2179 17.3235Z"\n fill="#475467"></path>\n </svg></div>\n <div class="text">无法判断</div>\n <div class="number">18</div>\n </div>\n </div>\n\n <div class="verify-card-list">\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n </div>\n </div>\n <div *ngIf="clicktab==\'全文总结\'" class="summary-panel">\n\n <div class="text-summary">\n <div style="line-height: 12px;">\n <svg width="20" height="22" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M14.1668 5.83329V5.66663C14.1668 4.26649 14.1668 3.56643 13.8943 3.03165C13.6547 2.56124 13.2722 2.17879 12.8018 1.93911C12.267 1.66663 11.567 1.66663 10.1668 1.66663H4.8335C3.43336 1.66663 2.7333 1.66663 2.19852 1.93911C1.72811 2.17879 1.34566 2.56124 1.10598 3.03165C0.833496 3.56643 0.833496 4.26649 0.833496 5.66663V14.3333C0.833496 15.7334 0.833496 16.4335 1.10598 16.9683C1.34566 17.4387 1.72811 17.8211 2.19852 18.0608C2.7333 18.3333 3.43336 18.3333 4.8335 18.3333H7.91683M7.91683 9.16663H4.16683M7.0835 12.5H4.16683M10.8335 5.83329H4.16683M12.5002 15V10.4166C12.5002 9.72627 13.0598 9.16663 13.7502 9.16663C14.4405 9.16663 15.0002 9.72627 15.0002 10.4166V15C15.0002 16.3807 13.8809 17.5 12.5002 17.5C11.1195 17.5 10.0002 16.3807 10.0002 15V11.6666"\n stroke="#F79009" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <div class="text-summary-title">全文总结</div>\n </div>\n\n <div class="text">\n <div class="text-title">概括:</div>\n\n <p>\n 这本自传小说由企业家曹国熊撰写,讲述了他如何从贫穷孩子成长为成功企业家的经历和管理智慧,同时通过不同章节探讨了企业家的成长、团队合作、创新驱动、领导力培养、面对危机和可持续发展等主题。\n </p>\n <div class="text-title">要点:</div>\n <ul>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n </ul>\n\n\n\n\n\n\n </div>\n </div>\n </div>\n\n\n\n </div>\n <div *ngIf="aitab==\'AI配图\'" class="ai-img">\n <mat-accordion multi>\n <mat-expansion-panel expanded="true">\n <mat-expansion-panel-header>\n <mat-panel-title>文章封面</mat-panel-title>\n </mat-expansion-panel-header>\n <div class="image" (click)="uploadImage()">\n <img [src]="article?.get(\'image\') || \'/assets/img/icon/addphoto.png\'" alt="">\n </div>\n </mat-expansion-panel>\n\n <mat-expansion-panel expanded="false">\n <mat-expansion-panel-header>\n <mat-panel-title>段落插图</mat-panel-title>\n </mat-expansion-panel-header>\n \n <div class="ai-img-search">\n\n <div class="ai-img-search-input">\n <input type="text" nz-input placeholder="请输入图片描述" />\n </div>\n\n <div class="ai-img-search-button">\n <ion-button>\n <ion-icon name="search-outline"></ion-icon>\n 查找\n </ion-button>\n </div>\n\n </div>\n\n <div class="img-tip">\n <img class="bg-img" src="../../../assets/images/火箭2.png">\n </div>\n <div class="ai-img-tip">\n <h1>输入描述,自动配图</h1>\n\n </div>\n\n <div class="ai-img-tip-list">\n <div class="pce-inner-tip-point"></div>\n <span>\n 根据您对图片的描述,智能匹配相关图片\n </span>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n\n\n </div>\n\n\n </div>\n </div>\n\n\n\n\n </div>\n</div>',styles:['@charset "UTF-8";.image{width:100%;height:240px;overflow:hidden;display:flex;justify-content:center;align-items:center}.image img{height:100%;object-fit:contain;height:auto;transition:transform .2s}.image:hover img{transform:scale(1.2)}.page{background-color:#fafafa;height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden}.page .nav{position:sticky;top:0;z-index:3}.page .icon{width:20px;height:20px;margin:0 10px 0 5%}.page .page-container{display:flex;height:calc(100vh - 120px)}.page .page-container .center{margin:5vh auto!important}.page .page-container .editor-text{display:flex;justify-content:center;flex:1;right:0;height:auto;min-height:75vh;min-width:35%;box-shadow:#00000026 1px 2px 8px;background-color:#fff;overflow:visible}.page .page-container .editor-text .editor-main{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.page .page-container .editor-text .editor-main .text-header{display:flex;justify-content:center;padding-top:10px}.page .page-container .editor-text .editor-main .text-header input,.page .page-container .editor-text .editor-main .text-header input:focus{width:100%;text-align:center;border:none;font-size:22px;font-weight:700;box-shadow:none;outline:none}.page .page-container .editor-text .editor-main .article-info{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.page .page-container .editor-text .editor-main .article-info div{padding-left:5px;padding-right:5px;margin-bottom:3px}.page .page-container .editor-text .editor-main .article-info div mat-chip{margin-right:3px}.page .page-container .editor-text .editor-main .article-content{flex:1;min-height:50vh;overflow-y:auto}.page .page-container .page-right{height:calc(80vh - 10px);margin-top:6px;margin-left:3px;min-width:480px;background-color:#fafafa;opacity:1;transition:opacity 2s ease-in-out;overflow-y:hidden;overflow-x:hidden}.page .page-container .page-right .nav-ai{background-color:#fafafa;display:flex;width:100%;justify-content:space-between;z-index:3;position:sticky;top:0}.page .page-container .page-right .nav-ai ul{width:100%;list-style-type:none;padding:0;margin:0;display:flex;flex-wrap:wrap;justify-content:space-around}.page .page-container .page-right .nav-ai ul .active0{position:relative;padding:5px 15px;margin:0 5px 10px;font-size:18px;font-weight:700;color:#8e8e8e;border-radius:5px;transition:.3s}.page .page-container .page-right .nav-ai ul .active1{color:#333}.page .page-container .page-right .nav-ai ul .active1 div:after{content:"";position:absolute;left:0;bottom:0;width:100%;border-bottom:4px solid #8e8e8e;border-radius:10px;margin-bottom:-6px}.page .page-container .page-right .nav-ai ul li div{cursor:pointer;text-align:center;position:relative}.page .page-container .page-right .nav-ai .icon{cursor:pointer;margin-top:20%;width:25px;height:25px;align-content:center}.page .page-container .page-right .ai-panel{right:2%;background-color:#fafafa;width:95%;z-index:1}.page .page-container .page-right .ai-panel .ai-tool-grid{display:flex;flex-wrap:wrap}.page .page-container .page-right .ai-panel .ai-tool-grid ion-card{max-width:33%}.page .page-container .page-right .ai-panel div::-webkit-scrollbar{display:none}.page .page-container .page-right .ai-panel .ai-write{width:515px}.page .page-container .page-right .ai-panel .ai-write .search-bar{height:40px;width:100%;margin-left:15px}.page .page-container .page-right .ai-panel .ai-write ion-col{background-color:#fafafa;border:solid 2px #fafafa;text-align:center;padding:0;margin-left:3%}.page .page-container .page-right .ai-panel .ai-write .card{max-height:150px;max-width:220px;height:15vh;width:16vw;cursor:pointer}.page .page-container .page-right .ai-panel .ai-write .card .card-image{margin-right:80%}.page .page-container .page-right .ai-panel .ai-write .card ion-card-header{padding:6%}.page .page-container .page-right .ai-panel .ai-write .card ion-card-subtitle{font-weight:600;text-align:left}.page .page-container .page-right .ai-panel .ai-write .card ion-card-content{text-align:left;white-space:pre-line;font-size:12px;margin-left:6%;padding:0}.page .page-container .page-right .ai-panel .ai-write .card-image{background:#fff;box-shadow:0 1px 4px #0000000a,0 4px 10px #00000014;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}.page .page-container .page-right .ai-panel .ai-polish{margin-top:10px;background-color:#fafafa}.page .page-container .page-right .ai-panel .ai-polish textarea.ant-input{max-width:93%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.page .page-container .page-right .ai-panel .ai-polish ::-webkit-scrollbar{width:4px;border-radius:3px}.page .page-container .page-right .ai-panel .ai-polish ::-webkit-scrollbar-thumb{background-color:#dddee0;border-radius:2px}.page .page-container .page-right .ai-panel .ai-polish .ai-polish-button{text-align:right;margin-right:21px}.page .page-container .page-right .ai-panel .ai-polish .ai-polish-button button{margin-left:15px}.page .page-container .page-right .ai-panel .ai-polish .copy{text-align:right;margin-right:7%;cursor:pointer}.page .page-container .page-right .ai-panel .ai-proofread{height:73vh;margin-top:2%;position:sticky;top:0}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container{width:100%;z-index:2}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container .showItems{display:flex;justify-content:space-around;position:sticky;top:0;padding-left:15px;padding-right:15px}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container .showItems .showItem{display:flex;flex-shrink:0;cursor:pointer;gap:8px;padding:12px 15px;background:#fff;border:1px solid #f9fafb;box-shadow:0 1px 2px #1018280d;font-size:16px;font-weight:400}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container .showItems .active1{color:#333;font-weight:700}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel{margin-top:10%;margin-left:2.3%;height:61vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error{display:flex;text-align:center;margin-bottom:5%;width:90%;height:6vh;margin-left:4%;background:#fff;border:1px solid #f9fafb;box-shadow:0 1px 2px #1018280d;line-height:6vh}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .alert-point{color:#ff7a7a;margin-left:6%;margin-right:5%;font-size:20px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .alert-point-gray{color:#8189a9;font-size:10px;margin-right:1%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .error-content{margin-right:4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .right-content{margin-left:4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel{position:sticky;top:0;margin-top:4%;margin-left:6.8%;width:91%;background-color:#fff}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content-suggest{display:flex;cursor:pointer;padding:5% 3%;height:6%;width:100%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content-suggest .content-suggest-title{margin-left:3%;font-size:16px;font-weight:400}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content{width:98%;height:55vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content .content-title{margin:3% 4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content ol{margin:3% 4%;counter-reset:section}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content li:before{counter-increment:section;content:"Section " counter(section) ". "}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel{margin-top:2%;margin-left:6.8%;width:95%;margin-bottom:2%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .icon{width:16px;height:16px;display:inline-block;margin-top:3px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard{display:flex;margin-left:-1%;margin-top:3%;height:5%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .itemChoose{background-color:#eaecf0}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .item{display:flex;height:76%;width:23%;padding:6px 8px;cursor:pointer}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .item .text{font-weight:bolder;margin-right:4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .item .number{font-weight:bolder;margin-right:1%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .statusIcon{border-radius:50%;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list{height:61vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .card{box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a;width:95%;height:auto;margin-top:3%;padding:2% 3%;background-color:#fff}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .card .item{display:flex}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .card .card-content{margin-top:3%;margin-bottom:3%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .statusIcon{border-radius:50%;width:18px;height:18px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel{margin-top:2%;margin-left:6.8%;width:91%;background-color:#fff}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text-summary{display:flex;cursor:pointer;padding:5% 3%;height:6%;width:100%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text-summary .text-summary-title{margin-left:3%;font-size:16px;font-weight:400}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text{width:100%;height:57vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text .text-title{margin:3% 4%;font-weight:700}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text p{margin:3% 4%}.page .page-container .page-right .ai-panel .ai-img{width:480px}.page .page-container .page-right .ai-panel .ai-img .ai-img-search{display:flex;height:4%;width:100%;margin-left:4%;margin-top:5%}.page .page-container .page-right .ai-panel .ai-img .ai-img-search .ai-img-search-input{width:65%}.page .page-container .page-right .ai-panel .ai-img .ai-img-search .ai-img-search-input input{height:100%}.page .page-container .page-right .ai-panel .ai-img .ai-img-search .ai-img-search-button{margin-left:5%;margin-top:-.8%}.page .page-container .page-right .ai-panel .ai-img .img-tip{display:flex;text-align:center;justify-content:center;margin-top:20%;width:95%}.page .page-container .page-right .ai-panel .ai-img .img-tip .bg-img{width:65%}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip{display:flex;justify-content:center;text-align:center;margin-top:2%;margin-right:5%}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip h1{font-weight:600}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip-list{display:flex;justify-content:center;text-align:center;margin-top:2%;margin-right:5%}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip-list .pce-inner-tip-point{display:inline-block;margin-top:2%;margin-right:1%;height:8px;width:8px;border-radius:50%;background-color:#4b4b4b}\n'],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i8.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"directive",type:i8.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i8.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule},{kind:"directive",type:i9.NgSelectOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i9.ɵNgSelectMultipleOption,selector:"option",inputs:["ngValue","value"]},{kind:"directive",type:i9.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i9.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i9.NgControlStatusGroup,selector:"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]"},{kind:"directive",type:i9.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"directive",type:i9.FormGroupDirective,selector:"[formGroup]",inputs:["formGroup"],outputs:["ngSubmit"],exportAs:["ngForm"]},{kind:"ngmodule",type:IonicModule},{kind:"component",type:i10.IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:i10.IonCard,selector:"ion-card",inputs:["button","color","disabled","download","href","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i10.IonCardContent,selector:"ion-card-content",inputs:["mode"]},{kind:"component",type:i10.IonCardHeader,selector:"ion-card-header",inputs:["color","mode","translucent"]},{kind:"component",type:i10.IonCardSubtitle,selector:"ion-card-subtitle",inputs:["color","mode"]},{kind:"component",type:i10.IonCardTitle,selector:"ion-card-title",inputs:["color","mode"]},{kind:"component",type:i10.IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:i10.IonSearchbar,selector:"ion-searchbar",inputs:["animated","autocapitalize","autocomplete","autocorrect","cancelButtonIcon","cancelButtonText","clearIcon","color","debounce","disabled","enterkeyhint","inputmode","maxlength","minlength","mode","name","placeholder","searchIcon","showCancelButton","showClearButton","spellcheck","type","value"]},{kind:"directive",type:i10.TextValueAccessor,selector:"ion-input:not([type=number]),ion-textarea,ion-searchbar"},{kind:"ngmodule",type:NzInputModule},{kind:"directive",type:i11.NzInputDirective,selector:"input[nz-input],textarea[nz-input]",inputs:["nzBorderless","nzSize","nzStepperless","nzStatus","disabled"],exportAs:["nzInput"]},{kind:"ngmodule",type:NzDropDownModule},{kind:"ngmodule",type:NzDividerModule},{kind:"ngmodule",type:NzEmptyModule},{kind:"ngmodule",type:NzAvatarModule},{kind:"ngmodule",type:NzPopoverModule},{kind:"ngmodule",type:NzToolTipModule},{kind:"ngmodule",type:NzPipesModule},{kind:"ngmodule",type:MatDialogModule},{kind:"ngmodule",type:MatFormFieldModule},{kind:"component",type:i12.MatFormField,selector:"mat-form-field",inputs:["hideRequiredMarker","color","floatLabel","appearance","subscriptSizing","hintLabel"],exportAs:["matFormField"]},{kind:"directive",type:i12.MatLabel,selector:"mat-label"},{kind:"ngmodule",type:MatInputModule},{kind:"directive",type:i13.MatInput,selector:"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]",inputs:["disabled","id","placeholder","name","required","type","errorStateMatcher","aria-describedby","value","readonly"],exportAs:["matInput"]},{kind:"ngmodule",type:MatButtonModule},{kind:"component",type:i14.MatButton,selector:" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ",exportAs:["matButton"]},{kind:"ngmodule",type:MatIconModule},{kind:"component",type:i15.MatIcon,selector:"mat-icon",inputs:["color","inline","svgIcon","fontSet","fontIcon"],exportAs:["matIcon"]},{kind:"ngmodule",type:MatChipsModule},{kind:"component",type:i16.MatChip,selector:"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]",inputs:["role","id","aria-label","aria-description","value","color","removable","highlighted","disableRipple","disabled","tabIndex"],outputs:["removed","destroyed"],exportAs:["matChip"]},{kind:"ngmodule",type:MatExpansionModule},{kind:"directive",type:i17.MatAccordion,selector:"mat-accordion",inputs:["hideToggle","displayMode","togglePosition"],exportAs:["matAccordion"]},{kind:"component",type:i17.MatExpansionPanel,selector:"mat-expansion-panel",inputs:["hideToggle","togglePosition"],outputs:["afterExpand","afterCollapse"],exportAs:["matExpansionPanel"]},{kind:"component",type:i17.MatExpansionPanelHeader,selector:"mat-expansion-panel-header",inputs:["expandedHeight","collapsedHeight","tabIndex"]},{kind:"directive",type:i17.MatExpansionPanelTitle,selector:"mat-panel-title"},{kind:"component",type:ArticleEditorTopbarComponent,selector:"fm-article-editor-topbar",inputs:["article","contentChanged","isSaving"],outputs:["onNavEvent"]},{kind:"component",type:FmTextQuillComponent,selector:"fm-text-quill",inputs:["readOnly","content","theme","toolbar"],outputs:["onAIClick","onContentChange","onSelectChange"]},{kind:"pipe",type:OutlineCountPipe,name:"outlineCount"}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleEditorComponent,decorators:[{type:Component,args:[{selector:"fm-article-editor",standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,IonicModule,NzInputModule,NzDropDownModule,NzDividerModule,NzEmptyModule,NzAvatarModule,NzPopoverModule,NzToolTipModule,NzPipesModule,MatDialogModule,MatFormFieldModule,MatInputModule,MatButtonModule,MatIconModule,MatChipsModule,MatExpansionModule,ArticleEditorTopbarComponent,FmTextQuillComponent,OutlineCountPipe,FmArticleOutlineLeftitemComponent],providers:[DraftService,NovaUploadService,Diagnostic],template:'<div class="page">\n\n \x3c!-- 导航栏 --\x3e\n <div class="nav" *ngIf="!readOnly">\n <fm-article-editor-topbar #topbar [article]="article" [isSaving]="isSaving" [contentChanged]="contentChanged" (onNavEvent)="handleNavEvent($event)"></fm-article-editor-topbar>\n </div>\n\n <div class="page-container">\n \x3c!-- (scroll)="onScroll($event)" --\x3e\n\n \x3c!-- 编辑文本 --\x3e\n \x3c!-- --\x3e\n <div class="editor-text" [ngClass]="{\'center\':isDivHidden}">\n <div class="editor-main">\n\n <div role="toolbar" class="ql-toolbar ql-snow" *ngIf="false">\n <span class="ql-formats"><span class="ql-header ql-picker"><span class="ql-picker-label" tabindex="0" role="button" aria-expanded="false" aria-controls="ql-picker-options-0"><svg viewBox="0 0 18 18"><polygon class="ql-stroke" points="7 11 9 13 11 11 7 11"></polygon><polygon class="ql-stroke" points="7 7 9 5 11 7 7 7"></polygon></svg></span><span class="ql-picker-options" aria-hidden="true" tabindex="-1" id="ql-picker-options-0"><span tabindex="0" role="button" class="ql-picker-item" data-value="1"></span><span tabindex="0" role="button" class="ql-picker-item" data-value="2"></span><span tabindex="0" role="button" class="ql-picker-item" data-value="3"></span><span tabindex="0" role="button" class="ql-picker-item" data-value="4"></span><span tabindex="0" role="button" class="ql-picker-item"></span></span></span><select class="ql-header" style="display: none;"><option value="1"></option><option value="2"></option><option value="3"></option><option value="4"></option><option selected="selected"></option></select></span>\n <span class="ql-formats"><button type="button" class="ql-bold" aria-pressed="false" aria-label="bold"><svg viewBox="0 0 18 18"><path class="ql-stroke" d="M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z"></path><path class="ql-stroke" d="M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z"></path></svg></button><button type="button" class="ql-italic" aria-pressed="false" aria-label="italic"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="7" x2="13" y1="4" y2="4"></line><line class="ql-stroke" x1="5" x2="11" y1="14" y2="14"></line><line class="ql-stroke" x1="8" x2="10" y1="14" y2="4"></line></svg></button><button type="button" class="ql-underline" aria-pressed="false" aria-label="underline"><svg viewBox="0 0 18 18"><path class="ql-stroke" d="M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3"></path><rect class="ql-fill" height="1" rx="0.5" ry="0.5" width="12" x="3" y="15"></rect></svg></button></span>\n <span class="ql-formats"><button type="button" class="ql-list" aria-pressed="false" value="bullet" aria-label="list: bullet"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="6" x2="15" y1="4" y2="4"></line><line class="ql-stroke" x1="6" x2="15" y1="9" y2="9"></line><line class="ql-stroke" x1="6" x2="15" y1="14" y2="14"></line><line class="ql-stroke" x1="3" x2="3" y1="4" y2="4"></line><line class="ql-stroke" x1="3" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="3" x2="3" y1="14" y2="14"></line></svg></button></span>\n <span class="ql-formats"><span class="ql-align ql-picker ql-icon-picker"><span class="ql-picker-label" tabindex="0" role="button" aria-expanded="false" aria-controls="ql-picker-options-1"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line><line class="ql-stroke" x1="3" x2="13" y1="14" y2="14"></line><line class="ql-stroke" x1="3" x2="9" y1="4" y2="4"></line></svg></span><span class="ql-picker-options" aria-hidden="true" tabindex="-1" id="ql-picker-options-1"><span tabindex="0" role="button" class="ql-picker-item"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="3" x2="15" y1="9" y2="9"></line><line class="ql-stroke" x1="3" x2="13" y1="14" y2="14"></line><line class="ql-stroke" x1="3" x2="9" y1="4" y2="4"></line></svg></span><span tabindex="0" role="button" class="ql-picker-item" data-value="center"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="14" x2="4" y1="14" y2="14"></line><line class="ql-stroke" x1="12" x2="6" y1="4" y2="4"></line></svg></span><span tabindex="0" role="button" class="ql-picker-item" data-value="right"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="15" x2="5" y1="14" y2="14"></line><line class="ql-stroke" x1="15" x2="9" y1="4" y2="4"></line></svg></span><span tabindex="0" role="button" class="ql-picker-item" data-value="justify"><svg viewBox="0 0 18 18"><line class="ql-stroke" x1="15" x2="3" y1="9" y2="9"></line><line class="ql-stroke" x1="15" x2="3" y1="14" y2="14"></line><line class="ql-stroke" x1="15" x2="3" y1="4" y2="4"></line></svg></span></span></span><select class="ql-align" style="display: none;"><option selected="selected"></option><option value="center"></option><option value="right"></option><option value="justify"></option></select></span>\n <span class="ql-formats"><button type="button" class="ql-code-block" aria-pressed="false" aria-label="code-block"><svg viewBox="0 0 18 18"><polyline class="ql-even ql-stroke" points="5 7 3 9 5 11"></polyline><polyline class="ql-even ql-stroke" points="13 7 15 9 13 11"></polyline><line class="ql-stroke" x1="10" x2="8" y1="5" y2="13"></line></svg></button></span>\n <span class="ql-formats"><button class="ql-ai-optimize">AI</button></span>\n </div>\n\n <div class="text-header">\n <input [ngModel]="article?.get(\'title\')" (ngModelChange)="article?.set(\'title\',$event)" type="text" />\n \x3c!-- <quill-editor [(ngModel)]="title" [modules]="{toolbar: true}"></quill-editor> --\x3e\n </div>\n <div class="article-info">\n <ng-container *ngIf="article?.get(\'keywords\')?.length">\n <div>关键字:<mat-chip *ngFor="let key of article?.get(\'keywords\')">{{key}}</mat-chip></div>\n </ng-container>\n <ng-container *ngIf="article?.get(\'writingOptions\')">\n <div (click)="handleNavEvent(\'options\')">设 定:\n <mat-chip *ngIf="article?.get(\'writingOptions\')?.writingStyle">{{article?.get(\'writingOptions\')?.writingStyle}}</mat-chip>\n <mat-chip *ngIf="article?.get(\'writingOptions\')?.wordCount">约{{article?.get(\'writingOptions\')?.wordCount}}字</mat-chip></div>\n </ng-container>\n <ng-container *ngIf="article?.get(\'outlineJson\')?.length">\n <div (click)="handleNavEvent(\'outline\')">提 纲:<mat-chip>{{article?.get(\'outlineJson\') | outlineCount}}字</mat-chip></div>\n </ng-container>\n <div *ngIf="article?.id" (click)="handleNavEvent(\'draft\')">稿件箱:<mat-chip>{{draftServ.DraftCountMap?.[article?.id||\'\']?.total || 0}}篇</mat-chip></div>\n </div>\n\n <div class="article-content">\n \x3c!-- 文本编辑区域:仅content正文 --\x3e\n <ng-container *ngIf="!article?.get(\'contentArray\')?.length">\n <fm-text-quill #textQuill [readOnly]="readOnly" [content]="article?.get(\'content\')" (onContentChange)="setContent($event)"\n (onAIClick)="goOptimizeText($event)" (onSelectChange)="selectChange($event)"\n ></fm-text-quill>\n </ng-container>\n \x3c!-- 文本编辑区域:含大纲正文 --\x3e\n <ng-container *ngIf="article?.get(\'contentArray\')?.length">\n <ng-container *ngFor="let item of article?.get(\'contentArray\');let index=index;">\n \x3c!-- 章节信息 --\x3e\n \x3c!-- <h2 style="margin:0px;padding-left:12px;" *ngIf="article?.get(\'outlineJson\')?.sections?.[index]?.title">{{article?.get(\'outlineJson\')?.sections?.[index]?.title}}</h2> --\x3e\n <fm-text-quill #textQuill [readOnly]="readOnly" [content]="item?.content" (onContentChange)="setContent($event,item)"\n (onAIClick)="goOptimizeText($event)" (onSelectChange)="selectChange($event)"\n ></fm-text-quill>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n\n\n\n \x3c!-- AI工具 --\x3e\n <div *ngIf="!readOnly && !isDivHidden" class="page-right">\n <div class="nav-ai">\n \x3c!-- AI功能按钮 --\x3e\n \x3c!-- <div class="ai-btn">\n <button (click)="showContent(\'AI-写作\')">AI写作</button>\n <button (click)="showContent(\'AI-润色\')">AI润色</button>\n <button (click)="showContent(\'校阅\')">校阅</button>\n <button (click)="showContent(\'图片\')">图片</button>\n <button (click)="showContent(\'评论\')">评论</button>\n </div> --\x3e\n\n <ul class="ai-btn">\n <li class="active0" (click)="aiTab(\'AI写作\')" [ngClass]="{ \'active1\': aitab == \'AI写作\' }">\n <div>AI写作</div>\n </li>\n <li class="active0" (click)="aiTab(\'AI润色\')" [ngClass]="{ \'active1\': aitab == \'AI润色\' }">\n <div>AI润色</div>\n </li>\n \x3c!-- <li class="active0" (click)="aiTab(\'校阅\')" [ngClass]="{ \'active1\': aitab == \'校阅\' }">\n <div>校阅</div>\n </li> --\x3e\n <li class="active0" (click)="aiTab(\'AI配图\')" [ngClass]="{ \'active1\': aitab == \'AI配图\' }">\n <div>AI配图</div>\n </li>\n\n </ul>\n \x3c!-- AI功能退出按钮 --\x3e\n <div>\n <ion-icon class="icon" name="close-outline" (click)="this.isDivHidden = !this.isDivHidden;"></ion-icon>\n </div>\n\n </div>\n\n\n \x3c!-- 工具面板 --\x3e\n <div class="ai-panel">\n\n <div *ngIf="aitab==\'AI写作\'" class="ai-write">\n \x3c!-- 搜索 --\x3e\n <div class="search-bar">\n <ion-searchbar color="light" placeholder="搜索模板"></ion-searchbar>\n </div>\n\n <div class="ai-tool-grid">\n <ng-container *ngFor="let card of cards">\n <ion-card class="card" style="margin-left: 5%;max-width:215px;" (click)="card?.handle()">\n <ion-card-header>\n <ion-card-title class="card-image">\n <img src="{{card.imageurl}}" width="25" height="25" alt="write">\n </ion-card-title>\n <ion-card-subtitle>{{card.title}}</ion-card-subtitle>\n </ion-card-header>\n\n <ion-card-content>\n {{card.content}}\n </ion-card-content>\n </ion-card>\n </ng-container>\n </div>\n\n </div>\n <div *ngIf="aitab==\'AI润色\'" class="ai-polish" [formGroup]="tempFormGroup">\n <div class="ai-polish-input">\n <mat-form-field style="width:95%;">\n <mat-label>输入或选中左侧文本开始润色</mat-label>\n <textarea matInput [(ngModel)]="selectText" [ngModelOptions]="{standalone: true}" rows="10"></textarea>\n </mat-form-field>\n\n \x3c!-- <textarea [(ngModel)]="selectText" rows="10" formControlName="comment" nz-input placeholder="输入或选中左侧文本开始润色"></textarea> --\x3e\n </div>\n <div class="ai-polish-button">\n <button *ngIf="!isOptimizing" mat-raised-button color="primary" (click)="optimizeContent()">开始润色</button>\n <button *ngIf="isOptimizing" mat-raised-button color="warn" (click)="cancelOptimize()">停止润色</button>\n \x3c!-- <ion-button id="start" [disabled]="false" (click)="enableButton()">开始润色</ion-button> --\x3e\n </div>\n <div class="ai-polish-input">\n <mat-form-field style="width:95%;">\n <mat-label>生成内容</mat-label>\n <textarea matInput [(ngModel)]="optimizeText" [ngModelOptions]="{standalone: true}" rows="10"></textarea>\n </mat-form-field>\n </div>\n <div class="ai-polish-button">\n <button *ngIf="selectRange?.length" mat-raised-button (click)="applyOptimize()"><mat-icon fontIcon="flip"></mat-icon>替换</button>\n <button mat-raised-button (click)="copyOptimize()"><mat-icon fontIcon="content_copy"></mat-icon>复制</button>\n \x3c!-- <ion-button id="start" [disabled]="false" (click)="enableButton()">开始润色</ion-button> --\x3e\n </div>\n \x3c!-- <div class="copy">\n <ion-icon name="copy-outline" style="color:#4e80f4" (click)="Copy(polishContent)"></ion-icon>\n </div> --\x3e\n </div>\n <div *ngIf="aitab==\'校阅\'" class="ai-proofread">\n\n <div class="showItems-container">\n <div class="showItems">\n\n <div class="showItem" (click)="clickTab(\'内容建议\')" [ngClass]="{ \'active1\': clicktab == \'内容建议\' }">\n <div style="line-height: 12px;">\n <svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M11 10H5M7 14H5M13 6H5M17 9.5V5.8C17 4.11984 17 3.27976 16.673 2.63803C16.3854 2.07354 15.9265 1.6146 15.362 1.32698C14.7202 1 13.8802 1 12.2 1H5.8C4.11984 1 3.27976 1 2.63803 1.32698C2.07354 1.6146 1.6146 2.07354 1.32698 2.63803C1 3.27976 1 4.11984 1 5.8V16.2C1 17.8802 1 18.7202 1.32698 19.362C1.6146 19.9265 2.07354 20.3854 2.63803 20.673C3.27976 21 4.11984 21 5.8 21H8.5M19 21L17.5 19.5M18.5 17C18.5 18.933 16.933 20.5 15 20.5C13.067 20.5 11.5 18.933 11.5 17C11.5 15.067 13.067 13.5 15 13.5C16.933 13.5 18.5 15.067 18.5 17Z"\n stroke="#1570EF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <span>内容建议</span>\n\n\n </div>\n\n <div class="showItem" (click)="clickTab(\'事实验证\')" [ngClass]="{\'active1\': clicktab==\'事实验证\'}">\n <div style="line-height: 12px;">\n <svg width="18" height="22" viewBox="0 0 18 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M11 1.26953V5.40007C11 5.96012 11 6.24015 11.109 6.45406C11.2049 6.64222 11.3578 6.7952 11.546 6.89108C11.7599 7.00007 12.0399 7.00007 12.6 7.00007H16.7305M6 15L8 17L12.5 12.5M11 1H5.8C4.11984 1 3.27976 1 2.63803 1.32698C2.07354 1.6146 1.6146 2.07354 1.32698 2.63803C1 3.27976 1 4.11984 1 5.8V16.2C1 17.8802 1 18.7202 1.32698 19.362C1.6146 19.9265 2.07354 20.3854 2.63803 20.673C3.27976 21 4.11984 21 5.8 21H12.2C13.8802 21 14.7202 21 15.362 20.673C15.9265 20.3854 16.3854 19.9265 16.673 19.362C17 18.7202 17 17.8802 17 16.2V7L11 1Z"\n stroke="#D92D20" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <span>事实验证</span>\n </div>\n\n <div class="showItem" (click)="clickTab(\'全文总结\')" [ngClass]="{\'active1\': clicktab==\'全文总结\'}">\n <div style="line-height: 12px;"> <svg width="20" height="22" viewBox="0 0 16 20" fill="none"\n xmlns="http://www.w3.org/2000/svg">\n <path\n d="M14.1668 5.83329V5.66663C14.1668 4.26649 14.1668 3.56643 13.8943 3.03165C13.6547 2.56124 13.2722 2.17879 12.8018 1.93911C12.267 1.66663 11.567 1.66663 10.1668 1.66663H4.8335C3.43336 1.66663 2.7333 1.66663 2.19852 1.93911C1.72811 2.17879 1.34566 2.56124 1.10598 3.03165C0.833496 3.56643 0.833496 4.26649 0.833496 5.66663V14.3333C0.833496 15.7334 0.833496 16.4335 1.10598 16.9683C1.34566 17.4387 1.72811 17.8211 2.19852 18.0608C2.7333 18.3333 3.43336 18.3333 4.8335 18.3333H7.91683M7.91683 9.16663H4.16683M7.0835 12.5H4.16683M10.8335 5.83329H4.16683M12.5002 15V10.4166C12.5002 9.72627 13.0598 9.16663 13.7502 9.16663C14.4405 9.16663 15.0002 9.72627 15.0002 10.4166V15C15.0002 16.3807 13.8809 17.5 12.5002 17.5C11.1195 17.5 10.0002 16.3807 10.0002 15V11.6666"\n stroke="#F79009" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <span>全文总结</span>\n </div>\n\n </div>\n </div>\n\n <div class="showItem-content">\n <div *ngIf="clicktab==\'语法错误\'" class="grammar-panel">\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n <div class="grammar-error">\n\n <span class="alert-point">\n •\n </span>\n <div class="error-content">\n <span>古老</span>\n </div>\n <span class="alert-point-gray">\n •\n </span>\n\n <span style="color:#8189a9">\n 建议替换为\n </span>\n\n <div class="right-content">\n <span>古老</span>\n </div>\n\n </div>\n\n </div>\n <div *ngIf="clicktab==\'内容建议\'" class="suggest-panel">\n\n <div class="content-suggest">\n <div style="line-height: 12px;">\n <svg width="20" height="22" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M11 10H5M7 14H5M13 6H5M17 9.5V5.8C17 4.11984 17 3.27976 16.673 2.63803C16.3854 2.07354 15.9265 1.6146 15.362 1.32698C14.7202 1 13.8802 1 12.2 1H5.8C4.11984 1 3.27976 1 2.63803 1.32698C2.07354 1.6146 1.6146 2.07354 1.32698 2.63803C1 3.27976 1 4.11984 1 5.8V16.2C1 17.8802 1 18.7202 1.32698 19.362C1.6146 19.9265 2.07354 20.3854 2.63803 20.673C3.27976 21 4.11984 21 5.8 21H8.5M19 21L17.5 19.5M18.5 17C18.5 18.933 16.933 20.5 15 20.5C13.067 20.5 11.5 18.933 11.5 17C11.5 15.067 13.067 13.5 15 13.5C16.933 13.5 18.5 15.067 18.5 17Z"\n stroke="#1570EF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <div class="content-suggest-title">内容建议</div>\n </div>\n\n <div class="content">\n <div class="content-title"> 这篇文章介绍的是七个关于中国企业家的管理之道的自传小说章节标题,旨在展示企业家们的个人经历、管理理念和人生哲学。\n </div>\n <div class="content-title">改进建议:</div>\n <ol>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n <li> 标题一致性:文章中的章节标题应保持一致的格式,例如“啊手动阀士大夫”和“爱喝水的人,一定是有品味的”与其他章节的格式不一致,建议统一格式以增强文章的专业性。</li>\n <li> 语言风格:文章中出现了一些非正式或口语化的表达,如“嫩给够穿越时空的力量”和“包韩了对生命意义的深刻反思”,建议使用更正式的语言以符合专业文章的标准。</li>\n <li> 信息重复:在介绍《时光的裂缝》的部分,有关时间旅行的描述被多次提及,建议合并相似内容以避免重复。\n </li>\n </ol>\n\n\n </div>\n </div>\n <div *ngIf="clicktab==\'事实验证\'" class="verify-panel">\n <div class="dashboard">\n <div class="item" (click)="dashboardTab(\'全部\')" [ngClass]="{\'itemChoose\': dashboardtab==\'全部\'}">\n <div class="icon">\n <div class="statusIcon" style="border: 1px solid black; box-sizing: border-box;"></div>\n </div>\n <div class="text">全部</div>\n <div class="number">28</div>\n </div>\n\n <div class="item" (click)="dashboardTab(\'通过\')" [ngClass]="{\'itemChoose\': dashboardtab==\'通过\'}">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n <div class="number">9</div>\n </div>\n\n <div class="item" (click)="dashboardTab(\'不通过\')" [ngClass]="{\'itemChoose\': dashboardtab==\'不通过\'}">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(217, 45, 32);"><svg\n xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">\n <path d="M7 17L17 7" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n <path d="M7 7L17 17" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </svg></div>\n </div>\n <div class="text" style="color: rgb(217, 45, 32);">不通过</div>\n <div class="number">1</div>\n </div>\n <div class="item" (click)="dashboardTab(\'无法判断\')" [ngClass]="{\'itemChoose\': dashboardtab==\'无法判断\'}">\n <div class="icon"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="3 3 18 18"\n fill="none">\n <path\n d="M7.8824 8.679C7.88035 8.72744 7.88822 8.77579 7.90555 8.82107C7.92287 8.86636 7.94927 8.90762 7.98313 8.94232C8.01699 8.97703 8.05759 9.00444 8.10244 9.02287C8.14728 9.0413 8.19542 9.05036 8.2439 9.0495H9.4814C9.6884 9.0495 9.8534 8.88 9.8804 8.6745C10.0154 7.6905 10.6904 6.9735 11.8934 6.9735C12.9224 6.9735 13.8644 7.488 13.8644 8.7255C13.8644 9.678 13.3034 10.116 12.4169 10.782C11.4074 11.5155 10.6079 12.372 10.6649 13.7625L10.6694 14.088C10.671 14.1864 10.7112 14.2803 10.7813 14.3493C10.8515 14.4183 10.946 14.457 11.0444 14.457H12.2609C12.3604 14.457 12.4557 14.4175 12.5261 14.3472C12.5964 14.2768 12.6359 14.1815 12.6359 14.082V13.9245C12.6359 12.8475 13.0454 12.534 14.1509 11.6955C15.0644 11.001 16.0169 10.23 16.0169 8.6115C16.0169 6.345 14.1029 5.25 12.0074 5.25C10.1069 5.25 8.0249 6.135 7.8824 8.679ZM10.2179 17.3235C10.2179 18.123 10.8554 18.714 11.7329 18.714C12.6464 18.714 13.2749 18.123 13.2749 17.3235C13.2749 16.4955 12.6449 15.9135 11.7314 15.9135C10.8554 15.9135 10.2179 16.4955 10.2179 17.3235Z"\n fill="#475467"></path>\n </svg></div>\n <div class="text">无法判断</div>\n <div class="number">18</div>\n </div>\n </div>\n\n <div class="verify-card-list">\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n <div class="card">\n <div class="item">\n <div class="icon">\n <div class="statusIcon" style="background-color: rgb(18, 183, 106);">\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25" fill="none">\n <g clip-path="url(#clip0_9987_2125)">\n <path d="M20 7.5L10 17.5L5 12.5" stroke="#ffffff" stroke-width="3" stroke-linecap="round"\n stroke-linejoin="round"></path>\n </g>\n <defs>\n <clipPath id="clip0_9987_2125">\n <rect width="24" height="24" fill="white" transform="translate(0 0.5)">\n </rect>\n </clipPath>\n </defs>\n </svg>\n </div>\n </div>\n <div class="text" style="color: rgb(18, 183, 106);">通过</div>\n\n </div>\n <div class="card-content">\n 本书分为四个部分:第二部分讲述中国经济体制改革过程中,他是如何在“摸着石头过河”的过程中不断探索、不断创新。\n </div>\n </div>\n\n </div>\n </div>\n <div *ngIf="clicktab==\'全文总结\'" class="summary-panel">\n\n <div class="text-summary">\n <div style="line-height: 12px;">\n <svg width="20" height="22" viewBox="0 0 16 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path\n d="M14.1668 5.83329V5.66663C14.1668 4.26649 14.1668 3.56643 13.8943 3.03165C13.6547 2.56124 13.2722 2.17879 12.8018 1.93911C12.267 1.66663 11.567 1.66663 10.1668 1.66663H4.8335C3.43336 1.66663 2.7333 1.66663 2.19852 1.93911C1.72811 2.17879 1.34566 2.56124 1.10598 3.03165C0.833496 3.56643 0.833496 4.26649 0.833496 5.66663V14.3333C0.833496 15.7334 0.833496 16.4335 1.10598 16.9683C1.34566 17.4387 1.72811 17.8211 2.19852 18.0608C2.7333 18.3333 3.43336 18.3333 4.8335 18.3333H7.91683M7.91683 9.16663H4.16683M7.0835 12.5H4.16683M10.8335 5.83329H4.16683M12.5002 15V10.4166C12.5002 9.72627 13.0598 9.16663 13.7502 9.16663C14.4405 9.16663 15.0002 9.72627 15.0002 10.4166V15C15.0002 16.3807 13.8809 17.5 12.5002 17.5C11.1195 17.5 10.0002 16.3807 10.0002 15V11.6666"\n stroke="#F79009" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round"></path>\n </svg>\n </div>\n <div class="text-summary-title">全文总结</div>\n </div>\n\n <div class="text">\n <div class="text-title">概括:</div>\n\n <p>\n 这本自传小说由企业家曹国熊撰写,讲述了他如何从贫穷孩子成长为成功企业家的经历和管理智慧,同时通过不同章节探讨了企业家的成长、团队合作、创新驱动、领导力培养、面对危机和可持续发展等主题。\n </p>\n <div class="text-title">要点:</div>\n <ul>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 章节《从小梦想到大事业》回顾了作者从少年时代怀揣创业梦想,克服困难和挑战的过程。</li>\n <li> 《时光的裂缝》是一部结合悬疑、奇幻和哲思的小说,通过杰克的视角探索人性、选择和成长。</li>\n <li> 书中还涉及了如何培养企业家的道德操守和社会责任感、团队合作的重要性、科技创新的推动、领导力的培养以及如何面对和化解危机。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n <li>曹国熊是中国的企业家、作家,他的自传记录了从贫穷到成功的历程。</li>\n <li> 最后一章《绿色转型的先锋》探讨了作者作为企业家在社会责任方面的努力,包括推动企业绿色转型和可持续发展。</li>\n </ul>\n\n\n\n\n\n\n </div>\n </div>\n </div>\n\n\n\n </div>\n <div *ngIf="aitab==\'AI配图\'" class="ai-img">\n <mat-accordion multi>\n <mat-expansion-panel expanded="true">\n <mat-expansion-panel-header>\n <mat-panel-title>文章封面</mat-panel-title>\n </mat-expansion-panel-header>\n <div class="image" (click)="uploadImage()">\n <img [src]="article?.get(\'image\') || \'/assets/img/icon/addphoto.png\'" alt="">\n </div>\n </mat-expansion-panel>\n\n <mat-expansion-panel expanded="false">\n <mat-expansion-panel-header>\n <mat-panel-title>段落插图</mat-panel-title>\n </mat-expansion-panel-header>\n \n <div class="ai-img-search">\n\n <div class="ai-img-search-input">\n <input type="text" nz-input placeholder="请输入图片描述" />\n </div>\n\n <div class="ai-img-search-button">\n <ion-button>\n <ion-icon name="search-outline"></ion-icon>\n 查找\n </ion-button>\n </div>\n\n </div>\n\n <div class="img-tip">\n <img class="bg-img" src="../../../assets/images/火箭2.png">\n </div>\n <div class="ai-img-tip">\n <h1>输入描述,自动配图</h1>\n\n </div>\n\n <div class="ai-img-tip-list">\n <div class="pce-inner-tip-point"></div>\n <span>\n 根据您对图片的描述,智能匹配相关图片\n </span>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n\n\n </div>\n\n\n </div>\n </div>\n\n\n\n\n </div>\n</div>',styles:['@charset "UTF-8";.image{width:100%;height:240px;overflow:hidden;display:flex;justify-content:center;align-items:center}.image img{height:100%;object-fit:contain;height:auto;transition:transform .2s}.image:hover img{transform:scale(1.2)}.page{background-color:#fafafa;height:100%;width:100%;display:flex;flex-direction:column;overflow:hidden}.page .nav{position:sticky;top:0;z-index:3}.page .icon{width:20px;height:20px;margin:0 10px 0 5%}.page .page-container{display:flex;height:calc(100vh - 120px)}.page .page-container .center{margin:5vh auto!important}.page .page-container .editor-text{display:flex;justify-content:center;flex:1;right:0;height:auto;min-height:75vh;min-width:35%;box-shadow:#00000026 1px 2px 8px;background-color:#fff;overflow:visible}.page .page-container .editor-text .editor-main{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.page .page-container .editor-text .editor-main .text-header{display:flex;justify-content:center;padding-top:10px}.page .page-container .editor-text .editor-main .text-header input,.page .page-container .editor-text .editor-main .text-header input:focus{width:100%;text-align:center;border:none;font-size:22px;font-weight:700;box-shadow:none;outline:none}.page .page-container .editor-text .editor-main .article-info{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.page .page-container .editor-text .editor-main .article-info div{padding-left:5px;padding-right:5px;margin-bottom:3px}.page .page-container .editor-text .editor-main .article-info div mat-chip{margin-right:3px}.page .page-container .editor-text .editor-main .article-content{flex:1;min-height:50vh;overflow-y:auto}.page .page-container .page-right{height:calc(80vh - 10px);margin-top:6px;margin-left:3px;min-width:480px;background-color:#fafafa;opacity:1;transition:opacity 2s ease-in-out;overflow-y:hidden;overflow-x:hidden}.page .page-container .page-right .nav-ai{background-color:#fafafa;display:flex;width:100%;justify-content:space-between;z-index:3;position:sticky;top:0}.page .page-container .page-right .nav-ai ul{width:100%;list-style-type:none;padding:0;margin:0;display:flex;flex-wrap:wrap;justify-content:space-around}.page .page-container .page-right .nav-ai ul .active0{position:relative;padding:5px 15px;margin:0 5px 10px;font-size:18px;font-weight:700;color:#8e8e8e;border-radius:5px;transition:.3s}.page .page-container .page-right .nav-ai ul .active1{color:#333}.page .page-container .page-right .nav-ai ul .active1 div:after{content:"";position:absolute;left:0;bottom:0;width:100%;border-bottom:4px solid #8e8e8e;border-radius:10px;margin-bottom:-6px}.page .page-container .page-right .nav-ai ul li div{cursor:pointer;text-align:center;position:relative}.page .page-container .page-right .nav-ai .icon{cursor:pointer;margin-top:20%;width:25px;height:25px;align-content:center}.page .page-container .page-right .ai-panel{right:2%;background-color:#fafafa;width:95%;z-index:1}.page .page-container .page-right .ai-panel .ai-tool-grid{display:flex;flex-wrap:wrap}.page .page-container .page-right .ai-panel .ai-tool-grid ion-card{max-width:33%}.page .page-container .page-right .ai-panel div::-webkit-scrollbar{display:none}.page .page-container .page-right .ai-panel .ai-write{width:515px}.page .page-container .page-right .ai-panel .ai-write .search-bar{height:40px;width:100%;margin-left:15px}.page .page-container .page-right .ai-panel .ai-write ion-col{background-color:#fafafa;border:solid 2px #fafafa;text-align:center;padding:0;margin-left:3%}.page .page-container .page-right .ai-panel .ai-write .card{max-height:150px;max-width:220px;height:15vh;width:16vw;cursor:pointer}.page .page-container .page-right .ai-panel .ai-write .card .card-image{margin-right:80%}.page .page-container .page-right .ai-panel .ai-write .card ion-card-header{padding:6%}.page .page-container .page-right .ai-panel .ai-write .card ion-card-subtitle{font-weight:600;text-align:left}.page .page-container .page-right .ai-panel .ai-write .card ion-card-content{text-align:left;white-space:pre-line;font-size:12px;margin-left:6%;padding:0}.page .page-container .page-right .ai-panel .ai-write .card-image{background:#fff;box-shadow:0 1px 4px #0000000a,0 4px 10px #00000014;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}.page .page-container .page-right .ai-panel .ai-polish{margin-top:10px;background-color:#fafafa}.page .page-container .page-right .ai-panel .ai-polish textarea.ant-input{max-width:93%;height:auto;min-height:32px;line-height:1.5715;vertical-align:bottom;transition:all .3s,height 0s}.page .page-container .page-right .ai-panel .ai-polish ::-webkit-scrollbar{width:4px;border-radius:3px}.page .page-container .page-right .ai-panel .ai-polish ::-webkit-scrollbar-thumb{background-color:#dddee0;border-radius:2px}.page .page-container .page-right .ai-panel .ai-polish .ai-polish-button{text-align:right;margin-right:21px}.page .page-container .page-right .ai-panel .ai-polish .ai-polish-button button{margin-left:15px}.page .page-container .page-right .ai-panel .ai-polish .copy{text-align:right;margin-right:7%;cursor:pointer}.page .page-container .page-right .ai-panel .ai-proofread{height:73vh;margin-top:2%;position:sticky;top:0}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container{width:100%;z-index:2}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container .showItems{display:flex;justify-content:space-around;position:sticky;top:0;padding-left:15px;padding-right:15px}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container .showItems .showItem{display:flex;flex-shrink:0;cursor:pointer;gap:8px;padding:12px 15px;background:#fff;border:1px solid #f9fafb;box-shadow:0 1px 2px #1018280d;font-size:16px;font-weight:400}.page .page-container .page-right .ai-panel .ai-proofread .showItems-container .showItems .active1{color:#333;font-weight:700}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel{margin-top:10%;margin-left:2.3%;height:61vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error{display:flex;text-align:center;margin-bottom:5%;width:90%;height:6vh;margin-left:4%;background:#fff;border:1px solid #f9fafb;box-shadow:0 1px 2px #1018280d;line-height:6vh}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .alert-point{color:#ff7a7a;margin-left:6%;margin-right:5%;font-size:20px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .alert-point-gray{color:#8189a9;font-size:10px;margin-right:1%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .error-content{margin-right:4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .grammar-panel .grammar-error .right-content{margin-left:4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel{position:sticky;top:0;margin-top:4%;margin-left:6.8%;width:91%;background-color:#fff}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content-suggest{display:flex;cursor:pointer;padding:5% 3%;height:6%;width:100%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content-suggest .content-suggest-title{margin-left:3%;font-size:16px;font-weight:400}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content{width:98%;height:55vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content .content-title{margin:3% 4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content ol{margin:3% 4%;counter-reset:section}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .suggest-panel .content li:before{counter-increment:section;content:"Section " counter(section) ". "}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel{margin-top:2%;margin-left:6.8%;width:95%;margin-bottom:2%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .icon{width:16px;height:16px;display:inline-block;margin-top:3px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard{display:flex;margin-left:-1%;margin-top:3%;height:5%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .itemChoose{background-color:#eaecf0}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .item{display:flex;height:76%;width:23%;padding:6px 8px;cursor:pointer}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .item .text{font-weight:bolder;margin-right:4%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .item .number{font-weight:bolder;margin-right:1%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .dashboard .statusIcon{border-radius:50%;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:18px;height:18px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list{height:61vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .card{box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a;width:95%;height:auto;margin-top:3%;padding:2% 3%;background-color:#fff}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .card .item{display:flex}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .card .card-content{margin-top:3%;margin-bottom:3%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .verify-panel .verify-card-list .statusIcon{border-radius:50%;width:18px;height:18px}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel{margin-top:2%;margin-left:6.8%;width:91%;background-color:#fff}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text-summary{display:flex;cursor:pointer;padding:5% 3%;height:6%;width:100%}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text-summary .text-summary-title{margin-left:3%;font-size:16px;font-weight:400}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text{width:100%;height:57vh;overflow-y:scroll}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text .text-title{margin:3% 4%;font-weight:700}.page .page-container .page-right .ai-panel .ai-proofread .showItem-content .summary-panel .text p{margin:3% 4%}.page .page-container .page-right .ai-panel .ai-img{width:480px}.page .page-container .page-right .ai-panel .ai-img .ai-img-search{display:flex;height:4%;width:100%;margin-left:4%;margin-top:5%}.page .page-container .page-right .ai-panel .ai-img .ai-img-search .ai-img-search-input{width:65%}.page .page-container .page-right .ai-panel .ai-img .ai-img-search .ai-img-search-input input{height:100%}.page .page-container .page-right .ai-panel .ai-img .ai-img-search .ai-img-search-button{margin-left:5%;margin-top:-.8%}.page .page-container .page-right .ai-panel .ai-img .img-tip{display:flex;text-align:center;justify-content:center;margin-top:20%;width:95%}.page .page-container .page-right .ai-panel .ai-img .img-tip .bg-img{width:65%}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip{display:flex;justify-content:center;text-align:center;margin-top:2%;margin-right:5%}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip h1{font-weight:600}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip-list{display:flex;justify-content:center;text-align:center;margin-top:2%;margin-right:5%}.page .page-container .page-right .ai-panel .ai-img .ai-img-tip-list .pce-inner-tip-point{display:inline-block;margin-top:2%;margin-right:1%;height:8px;width:8px;border-radius:50%;background-color:#4b4b4b}\n']}]}],ctorParameters:()=>[{type:i1.ModalController},{type:i1.AlertController},{type:i2.MatDialog},{type:i0.ChangeDetectorRef},{type:i3.ClipboardService},{type:i4.DraftService},{type:i5.Router},{type:i6.NovaUploadService},{type:i7.PersonService}],propDecorators:{editorComp:[{type:ViewChild,args:["editorComp"]}],article:[{type:Input}],onClose:[{type:Output}],book:[{type:Input}],readOnly:[{type:Input}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2ZtLWFydGljbGUtZWRpdG9yLmNvbXBvbmVudC5tanM=`
|
|
10
|
+
|
package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,Inject,Input,ViewChild}from"@angular/core";import{FormsModule,ReactiveFormsModule}from"@angular/forms";import{MatButtonModule}from"@angular/material/button";import{MatDialogModule,MatDialogRef,MAT_DIALOG_DATA}from"@angular/material/dialog";import{MatInputModule}from"@angular/material/input";import{NzCodeEditorModule}from"ng-zorro-antd/code-editor";import{NzInputModule}from"ng-zorro-antd/input";import{OutlineCountPipe}from"../outline-count.pipe";import{FmArticleOutlineLeftitemComponent}from"../fm-article-outline-leftitem/fm-article-outline-leftitem.component";import*as i0 from"@angular/core";import*as i1 from"@angular/common";import*as i2 from"@angular/forms";import*as i3 from"ng-zorro-antd/input";import*as i4 from"@angular/material/dialog";import*as i5 from"@angular/material/button";export class FmArticleOutlineComponent{constructor(){}ngOnInit(){this.outlineJson=this.article?.get("outlineJson")}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleOutlineComponent,deps:[],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:FmArticleOutlineComponent,isStandalone:!0,selector:"fm-article-outline",inputs:{article:"article"},ngImport:i0,template:'<div class="page" *ngIf="article?.id">\n <div id="editor-outline" *ngIf="outlineJson">\n <div class="row title" *ngIf="outlineJson?.title">\n <span>标题</span>\n <input matInput type="text" [(ngModel)]="outlineJson.title" placeholder="请填写文章标题" nzBorderless />\n </div>\n <div class="row" *ngIf="outlineJson?.desc">\n <span>描述</span>\n <textarea nzAutosize matInput type="text" [(ngModel)]="outlineJson.desc" placeholder="请描述文章内容" nzBorderless></textarea>\n </div>\n\n\n <ng-container *ngIf="outlineJson.sections?.length">\n\n <ng-container *ngFor="let section of outlineJson.sections;let index=index">\n <div class="row">\n <fm-article-outline-leftitem style="width:100%;" [width]="\'100%\'" [section]="section" [index]="index"></fm-article-outline-leftitem>\n </div>\n \x3c!-- <div class="row divide title" *ngIf="section?.title">\n <span>章{{index+1}}.</span>\n <input nz-input type="text" [(ngModel)]="section.title" placeholder="请填章节标题" nzBorderless />\n </div>\n <div class="row" *ngIf="section?.outline">\n <span>内容</span>\n <textarea nzAutosize nz-input type="text" [(ngModel)]="section.outline" placeholder="请填主要内容" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.skill">\n <span>技巧</span>\n <textarea nzAutosize nz-input type="text" [(ngModel)]="section.skill" placeholder="请填写作技巧" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.case">\n <span>事例</span>\n <textarea nzAutosize nz-input type="text" [(ngModel)]="section.case" placeholder="请填重点事例" nzBorderless></textarea>\n </div> --\x3e\n </ng-container>\n </ng-container>\n\n \x3c!-- <nz-code-editor *ngIf="article?.get(\'outline\')?.length"\n style="height:calc( 90vh - 60px );width:75vw;display: block;"\n [ngModel]="article?.get(\'outline\')"\n (ngModelChange)="article?.set(\'outline\',$event)"\n [nzEditorOption]="{ language: \'markdown\' }"\n ></nz-code-editor> --\x3e\n </div>\n</div>',styles:[":host-context(body.dark) .row{color:#fff}:host-context(body.dark) .row textarea,:host-context(body.dark) .row input{background-color:#00000080;border-radius:5px}.page{width:100%;height:100%;padding-top:10px}.page #editor-outline{padding-top:10px;width:100%;height:100%;display:flex;flex-direction:column;justify-content:start;align-items:center}.page #editor-outline .row{width:95%;display:flex;justify-content:center}.page #editor-outline .row span{padding-top:4px;width:50px}.page #editor-outline .row input,.page #editor-outline .row textarea{width:calc(100% - 60px)}.page #editor-outline .divide{border-top:1px solid rgba(0,0,0,.06)}.page #editor-outline .title{font-weight:600}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i1.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i1.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"ngmodule",type:NzInputModule},{kind:"directive",type:i3.NzAutosizeDirective,selector:"textarea[nzAutosize]",inputs:["nzAutosize"],exportAs:["nzAutosize"]},{kind:"ngmodule",type:NzCodeEditorModule},{kind:"component",type:FmArticleOutlineLeftitemComponent,selector:"fm-article-outline-leftitem",inputs:["section","index","readOnly","width"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleOutlineComponent,decorators:[{type:Component,args:[{selector:"fm-article-outline",standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,NzInputModule,NzCodeEditorModule,FmArticleOutlineLeftitemComponent],template:'<div class="page" *ngIf="article?.id">\n <div id="editor-outline" *ngIf="outlineJson">\n <div class="row title" *ngIf="outlineJson?.title">\n <span>标题</span>\n <input matInput type="text" [(ngModel)]="outlineJson.title" placeholder="请填写文章标题" nzBorderless />\n </div>\n <div class="row" *ngIf="outlineJson?.desc">\n <span>描述</span>\n <textarea nzAutosize matInput type="text" [(ngModel)]="outlineJson.desc" placeholder="请描述文章内容" nzBorderless></textarea>\n </div>\n\n\n <ng-container *ngIf="outlineJson.sections?.length">\n\n <ng-container *ngFor="let section of outlineJson.sections;let index=index">\n <div class="row">\n <fm-article-outline-leftitem style="width:100%;" [width]="\'100%\'" [section]="section" [index]="index"></fm-article-outline-leftitem>\n </div>\n \x3c!-- <div class="row divide title" *ngIf="section?.title">\n <span>章{{index+1}}.</span>\n <input nz-input type="text" [(ngModel)]="section.title" placeholder="请填章节标题" nzBorderless />\n </div>\n <div class="row" *ngIf="section?.outline">\n <span>内容</span>\n <textarea nzAutosize nz-input type="text" [(ngModel)]="section.outline" placeholder="请填主要内容" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.skill">\n <span>技巧</span>\n <textarea nzAutosize nz-input type="text" [(ngModel)]="section.skill" placeholder="请填写作技巧" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.case">\n <span>事例</span>\n <textarea nzAutosize nz-input type="text" [(ngModel)]="section.case" placeholder="请填重点事例" nzBorderless></textarea>\n </div> --\x3e\n </ng-container>\n </ng-container>\n\n \x3c!-- <nz-code-editor *ngIf="article?.get(\'outline\')?.length"\n style="height:calc( 90vh - 60px );width:75vw;display: block;"\n [ngModel]="article?.get(\'outline\')"\n (ngModelChange)="article?.set(\'outline\',$event)"\n [nzEditorOption]="{ language: \'markdown\' }"\n ></nz-code-editor> --\x3e\n </div>\n</div>',styles:[":host-context(body.dark) .row{color:#fff}:host-context(body.dark) .row textarea,:host-context(body.dark) .row input{background-color:#00000080;border-radius:5px}.page{width:100%;height:100%;padding-top:10px}.page #editor-outline{padding-top:10px;width:100%;height:100%;display:flex;flex-direction:column;justify-content:start;align-items:center}.page #editor-outline .row{width:95%;display:flex;justify-content:center}.page #editor-outline .row span{padding-top:4px;width:50px}.page #editor-outline .row input,.page #editor-outline .row textarea{width:calc(100% - 60px)}.page #editor-outline .divide{border-top:1px solid rgba(0,0,0,.06)}.page #editor-outline .title{font-weight:600}\n"]}]}],ctorParameters:()=>[],propDecorators:{article:[{type:Input}]}});export class DialogArticleOutline{confirmOutline(){this.dialogRef.close(this.article?.get("outlineJson"))}constructor(t,e){this.dialogRef=t,this.data=e,this.isSelectMode=!0,this.selectCount=0,this.outline="",this.writingOptions={},this.article=e?.article,this.person=e?.person,this.book=e?.book}onConfirm(){this.dialogRef.close(this.article?.get("outlineJson"))}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:DialogArticleOutline,deps:[{token:i4.MatDialogRef},{token:MAT_DIALOG_DATA}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:DialogArticleOutline,isStandalone:!0,selector:"article-outline-dialog",viewQueries:[{propertyName:"storySelectComp",first:!0,predicate:FmArticleOutlineComponent,descendants:!0}],ngImport:i0,template:'\n <fm-article-outline [article]="article"></fm-article-outline>\n <mat-dialog-actions align="start" style="display: flex;justify-content: center;">\n <button mat-button>大纲篇幅:{{article?.get(\'outlineJson\')|outlineCount}}字</button>\n <button mat-button style="color:red;">请您检查或修改大纲,确认后点击生成</button>\n <button mat-button color="primary" [mat-dialog-close]="true">取消</button>\n <button mat-raised-button color="primary" (click)="onConfirm()" cdkFocusInitial>生成文章</button>\n </mat-dialog-actions>\n ',isInline:!0,styles:["fm-article-outline{height:calc(100% - 60px);width:100%;overflow-y:auto}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"ngmodule",type:MatDialogModule},{kind:"directive",type:i4.MatDialogClose,selector:"[mat-dialog-close], [matDialogClose]",inputs:["aria-label","type","mat-dialog-close","matDialogClose"],exportAs:["matDialogClose"]},{kind:"directive",type:i4.MatDialogActions,selector:"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",inputs:["align"]},{kind:"ngmodule",type:MatButtonModule},{kind:"component",type:i5.MatButton,selector:" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ",exportAs:["matButton"]},{kind:"ngmodule",type:MatInputModule},{kind:"component",type:FmArticleOutlineComponent,selector:"fm-article-outline",inputs:["article"]},{kind:"pipe",type:OutlineCountPipe,name:"outlineCount"}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:DialogArticleOutline,decorators:[{type:Component,args:[{selector:"article-outline-dialog",template:'\n <fm-article-outline [article]="article"></fm-article-outline>\n <mat-dialog-actions align="start" style="display: flex;justify-content: center;">\n <button mat-button>大纲篇幅:{{article?.get(\'outlineJson\')|outlineCount}}字</button>\n <button mat-button style="color:red;">请您检查或修改大纲,确认后点击生成</button>\n <button mat-button color="primary" [mat-dialog-close]="true">取消</button>\n <button mat-raised-button color="primary" (click)="onConfirm()" cdkFocusInitial>生成文章</button>\n </mat-dialog-actions>\n ',standalone:!0,imports:[CommonModule,MatDialogModule,MatButtonModule,MatInputModule,FmArticleOutlineComponent,OutlineCountPipe],styles:["fm-article-outline{height:calc(100% - 60px);width:100%;overflow-y:auto}\n"]}]}],ctorParameters:()=>[{type:i4.MatDialogRef},{type:void 0,decorators:[{type:Inject,args:[MAT_DIALOG_DATA]}]}],propDecorators:{storySelectComp:[{type:ViewChild,args:[FmArticleOutlineComponent]}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2ZtLWFydGljbGUtb3V0bGluZS9mbS1hcnRpY2xlLW91dGxpbmUuY29tcG9uZW50Lm1qcw==`
|
|
10
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,Input}from"@angular/core";import{FormsModule,ReactiveFormsModule}from"@angular/forms";import{MatInputModule}from"@angular/material/input";import{NzInputModule}from"ng-zorro-antd/input";import*as i0 from"@angular/core";import*as i1 from"@angular/common";import*as i2 from"@angular/forms";import*as i3 from"ng-zorro-antd/input";import*as i4 from"@angular/material/input";export class FmArticleOutlineLeftitemComponent{constructor(){this.readOnly=!1,this.width="200px"}ngOnInit(){}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleOutlineLeftitemComponent,deps:[],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:FmArticleOutlineLeftitemComponent,isStandalone:!0,selector:"fm-article-outline-leftitem",inputs:{section:"section",index:"index",readOnly:"readOnly",width:"width"},ngImport:i0,template:'<div class="outline" [style.width]="width">\n <div class="row divide section-title" *ngIf="section?.title">\n <span>章{{(index||0)+1}}.</span>\n <input matInput [readonly]="readOnly" type="text" [(ngModel)]="section.title" placeholder="请填章节标题" nzBorderless />\n </div>\n <div class="row" *ngIf="section?.outline">\n <span>内容</span>\n <textarea nzAutosize matInput [readonly]="readOnly" type="text" [(ngModel)]="section.outline" placeholder="请填主要内容" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.skill">\n <span>技巧</span>\n <textarea nzAutosize matInput [readonly]="readOnly" type="text" [(ngModel)]="section.skill" placeholder="请填写作技巧" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.case">\n <span>事例</span>\n <textarea nzAutosize matInput [readonly]="readOnly" type="text" [(ngModel)]="section.case" placeholder="请填重点事例" nzBorderless></textarea>\n </div>\n</div>',styles:[":host-context(body.dark) .outline{color:#fff}:host-context(body.dark) .outline textarea,:host-context(body.dark) .outline input{background-color:#00000080;border-radius:5px}.outline{height:auto;display:flex;flex-direction:column}.outline mat-chip{margin:0 3px 0 0}.outline mat-chip .mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:5px;padding-right:5px}.outline .row{width:100%;display:flex;justify-content:left;padding-left:5px}.outline .row span{padding-top:4px;width:50px}.outline .row input,.outline .row textarea{width:calc(100% - 60px)}.outline .divide{border-top:1px solid rgba(0,0,0,.06)}.outline .section-title{font-weight:600}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i1.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule},{kind:"directive",type:i2.DefaultValueAccessor,selector:"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]"},{kind:"directive",type:i2.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i2.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"ngmodule",type:NzInputModule},{kind:"directive",type:i3.NzAutosizeDirective,selector:"textarea[nzAutosize]",inputs:["nzAutosize"],exportAs:["nzAutosize"]},{kind:"ngmodule",type:MatInputModule},{kind:"directive",type:i4.MatInput,selector:"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]",inputs:["disabled","id","placeholder","name","required","type","errorStateMatcher","aria-describedby","value","readonly"],exportAs:["matInput"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleOutlineLeftitemComponent,decorators:[{type:Component,args:[{selector:"fm-article-outline-leftitem",standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,NzInputModule,MatInputModule],template:'<div class="outline" [style.width]="width">\n <div class="row divide section-title" *ngIf="section?.title">\n <span>章{{(index||0)+1}}.</span>\n <input matInput [readonly]="readOnly" type="text" [(ngModel)]="section.title" placeholder="请填章节标题" nzBorderless />\n </div>\n <div class="row" *ngIf="section?.outline">\n <span>内容</span>\n <textarea nzAutosize matInput [readonly]="readOnly" type="text" [(ngModel)]="section.outline" placeholder="请填主要内容" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.skill">\n <span>技巧</span>\n <textarea nzAutosize matInput [readonly]="readOnly" type="text" [(ngModel)]="section.skill" placeholder="请填写作技巧" nzBorderless></textarea>\n </div>\n <div class="row" *ngIf="section?.case">\n <span>事例</span>\n <textarea nzAutosize matInput [readonly]="readOnly" type="text" [(ngModel)]="section.case" placeholder="请填重点事例" nzBorderless></textarea>\n </div>\n</div>',styles:[":host-context(body.dark) .outline{color:#fff}:host-context(body.dark) .outline textarea,:host-context(body.dark) .outline input{background-color:#00000080;border-radius:5px}.outline{height:auto;display:flex;flex-direction:column}.outline mat-chip{margin:0 3px 0 0}.outline mat-chip .mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:5px;padding-right:5px}.outline .row{width:100%;display:flex;justify-content:left;padding-left:5px}.outline .row span{padding-top:4px;width:50px}.outline .row input,.outline .row textarea{width:calc(100% - 60px)}.outline .divide{border-top:1px solid rgba(0,0,0,.06)}.outline .section-title{font-weight:600}\n"]}]}],ctorParameters:()=>[],propDecorators:{section:[{type:Input}],index:[{type:Input}],readOnly:[{type:Input}],width:[{type:Input}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2ZtLWFydGljbGUtb3V0bGluZS1sZWZ0aXRlbS9mbS1hcnRpY2xlLW91dGxpbmUtbGVmdGl0ZW0uY29tcG9uZW50Lm1qcw==`
|
|
10
|
+
|