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
package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.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-preview/fm-article-preview.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,Inject,Input}from"@angular/core";import{MatCardModule}from"@angular/material/card";import{MatChipsModule}from"@angular/material/chips";import{MatSlideToggleModule}from"@angular/material/slide-toggle";import{MatDialogRef,MAT_DIALOG_DATA,MatDialog,MatDialogModule}from"@angular/material/dialog";import{MatToolbarModule}from"@angular/material/toolbar";import{NzPipesModule}from"ng-zorro-antd/pipes";import{Swiper}from"swiper";import{NzIconModule}from"ng-zorro-antd/icon";import{MatButtonModule}from"@angular/material/button";import{AlertController,AnimationController,IonButton,IonButtons,IonContent,IonFooter,IonHeader,IonIcon,IonTitle,IonToolbar,ModalController,NavController}from"@ionic/angular/standalone";import{ActivatedRoute,Router}from"@angular/router";import{ArticleService}from"../article.service";import Parse from"parse";import{openArticleAITool}from"../fm-article-aitool/fm-article-aitool.component";import{TaskArticleWritingOptions}from"../tasks/task-article-writing-options";import{TaskArticleOutlineEdit}from"../tasks/task-article-outline-edit";import{TaskArticleDraft}from"../tasks/task-article-draft-create";import{doArticleTask}from"../task-article-generation";import{DraftService}from"../draft.service";import{OutlineCountPipe}from"../outline-count.pipe";import{SecretTextPipe}from"../../../person/modal-user-verify/secret-text.pipe";import{CompUserAvatarComponent}from"../../../user/comp-user-avatar/comp-user-avatar.component";import{CompUploadBookBannersComponent}from"../comp-upload-book-banners/comp-upload-book-banners.component";import*as i0 from"@angular/core";import*as i1 from"@angular/router";import*as i2 from"@angular/material/dialog";import*as i3 from"@ionic/angular/standalone";import*as i4 from"../article.service";import*as i5 from"../draft.service";import*as i6 from"@angular/common";import*as i7 from"@angular/material/slide-toggle";import*as i8 from"ng-zorro-antd/pipes";export class FmArticlePreviewComponent{constructor(t,e,n,i,o,a,r,l,c){this.route=t,this.router=e,this.dialog=n,this.navCtrl=i,this.modalCtrl=o,this.animationCtrl=a,this.articleServ=r,this.alertCtrl=l,this.draftServ=c,this.isDisplayEdit=!0,this.isDisplayPublic=!0,this.isDisplayUploadImage=!1,this.isAuthor=!1,this.previewStyle="<style>\n .content-block h1,.content-block h2,.content-block h3,.content-block h4,.content-block h5,.content-block h6{\n color:white !important;\n }\n </style>",this.bannerList=[],this.isShare=!1}ngOnInit(){this.route.params.subscribe((async t=>{console.log(t);let e=t?.id;console.log(111,e),this.article?.id||await this.loadArticle(e),this.initArticleBanner(),this.article?.id&&(this.articleServ.initWxShareInfo(this.article),(this.article?.get("author")?.id||this.article?.get("author")?.objectId)==Parse.User.current()?.id&&(this.isAuthor=!0),this.draftServ?.loadArticleDraft(this.article),this.articleServ.viewArticle(this.article))}))}handleNavEvent(t,e){let n={article:null};e={shareData:n,dialog:this.dialog,article:this.article},console.log(t,n),"options"==t&&doArticleTask([TaskArticleWritingOptions({shareData:n,dialog:this.dialog,editOnly:!0})],e),"outline"==t&&doArticleTask([TaskArticleOutlineEdit({shareData:n,dialog:this.dialog})],e),"draft"==t&&doArticleTask([TaskArticleDraft({isSelectedMode:!0,shareData:n,dialog:this.dialog,modalCtrl:this.modalCtrl})],e,(()=>{}))}async loadArticle(t){let e=new Parse.Query("Article");this.article=await e.get(t),console.log(this.article)}shareArticle(){this.articleServ.shareArticle(this.article)}async editArticle(){document.body.clientWidth>1e3?this.navCtrl.navigateForward("/editor/article/"+this.article?.id):this.article&&openArticleAITool({modalCtrl:this.modalCtrl,alertCtrl:this.alertCtrl,animationCtrl:this.animationCtrl,article:this.article})}initArticleBanner(){this.bannerList=this.articleServ.getArticleBanner(this.article),this.bannerList?.length&&this.initSwiperTimeEvent()}back(){if(location?.pathname?.indexOf("chapter")>-1){let t=location.pathname.split("/chapter")[0];this.navCtrl.navigateRoot(t)}else location?.pathname?.indexOf("article")>-1?this.navCtrl.navigateRoot("/app/book"):this.modalCtrl?.dismiss()}onPublicChange(t){this.article?.set("isPublic",t?.checked),this.article?.save()}async delete(){const t=await this.alertCtrl.create({header:"删除文章",subHeader:"您确认删除文章及其数据吗?",buttons:[{text:"取消",role:"cancel",handler:()=>{}},{text:"删除",role:"confirm",handler:()=>{this.article?.set("isDeleted",!0),this.article?.save(),this.modalCtrl.dismiss()}}]});await t.present()}onScroll(t){}initSwiperTimeEvent(){this.pageSwiper=new Swiper(".swiper",{mousewheel:!0,effect:"fade",loop:!0,pagination:{el:".swiper-pagination",clickable:!0}})}openOverlay(){this.isShare=!0}closeOverlay(){this.isShare=!1}openUploadBanner(){let t=this.article?.id;openUploadBannerModal(this.modalCtrl,t).then((t=>{t&&this.bannerList.push(t)}))}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticlePreviewComponent,deps:[{token:i1.ActivatedRoute},{token:i1.Router},{token:i2.MatDialog},{token:i3.NavController},{token:i3.ModalController},{token:i3.AnimationController},{token:i4.ArticleService},{token:i3.AlertController},{token:i5.DraftService}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"17.3.12",type:FmArticlePreviewComponent,isStandalone:!0,selector:"fm-article-preview",inputs:{article:"article",isDisplayEdit:"isDisplayEdit",isDisplayPublic:"isDisplayPublic",isDisplayUploadImage:"isDisplayUploadImage"},ngImport:i0,template:'<ion-header [translucent]="true" collapse="fade" class="ion-no-border">\n <ion-toolbar>\n \x3c!-- 返回 --\x3e\n <ion-buttons slot="secondary">\n <ion-button (click)="back()">\n <ion-icon slot="icon-only" name="arrow-back-circle"></ion-icon>\n </ion-button>\n @if(isAuthor){\n @if(isDisplayPublic===true){\n <div style="display:flex;justify-content: center;align-items: center;margin-left: 20px;">\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)"></mat-slide-toggle>\n <span class="toggle-text">公开</span>\n </div>\n }\n }\n </ion-buttons>\n <ion-title style="font-size: 1.3rem;font-weight: bold;">文章预览</ion-title>\n <ion-buttons slot="primary">\n \x3c!-- 编辑 --\x3e\n @if(isAuthor){\n \x3c!-- <div style="display:flex;justify-content: center;align-items: center;">\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)"></mat-slide-toggle>\n <span class="toggle-text">公开</span>\n </div> --\x3e\n @if(isDisplayEdit===true){\n <ion-button (click)="editArticle()" style="display: none;">\n <ion-icon slot="icon-only" name="create"></ion-icon>\n </ion-button>\n }\n }\n \x3c!-- 上传轮播图 --\x3e\n @if(isAuthor){\n \x3c!-- <div style="display:flex;justify-content: center;align-items: center;">\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)"></mat-slide-toggle>\n <span class="toggle-text">公开</span>\n </div> --\x3e\n \x3c!-- @if(isDisplayUploadImage===true){ --\x3e\n <ion-button (click)="openUploadBanner()">\n \x3c!-- <ion-icon slot="icon-only" name="create"></ion-icon> --\x3e\n <div>上传封面</div>\n </ion-button>\n \x3c!-- } --\x3e\n }\n \x3c!-- 分享 --\x3e\n \x3c!-- (click)="shareArticle()" --\x3e\n <ion-button (click)="openOverlay()">\n <ion-icon slot="icon-only" name="share"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<div class="sharetOverlay" (click)="closeOverlay()" *ngIf="isShare">\n\n <div class="overlay-content">\n <img src="https://static.ws.126.net/163/frontend/backflow-ssr/article/share-cover.98543a0088a4.png" alt="">\n <ion-icon style="color: white;" name="ellipsis-horizontal"></ion-icon>\n\n </div>\n</div>\n<ion-content>\n <div class="page">\n <div style="background-color: #1e1f22;">\n \x3c!-- <div class="btn">\n <button mat-raised-button color="primary">\n <span nz-icon nzType="close" nzTheme="outline"></span>\n </button>\n </div> --\x3e\n \n \x3c!-- 轮播图 --\x3e\n <div class="swiper" (wheel)="onScroll($event)" *ngIf="bannerList?.length">\n <div class="swiper-wrapper">\n <div class="swiper-slide bg-purple-blue" *ngFor="let imgUrl of bannerList">\n <img [src]="imgUrl" alt="" srcset="">\n </div>\n </div>\n </div>\n \n \x3c!-- 标题、关键字 --\x3e\n <div class="article-header">\n <h1 style="color: #5a55d1 !important;">{{article?.get(\'title\')}}</h1>\n </div>\n <div class="chip-list">关键字:\n \x3c!-- <mat-chip *ngFor="let keyword of article?.get(\'keywords\')">{{keyword}}</mat-chip> --\x3e\n <span class="cueWord" *ngFor="let keyword of article?.get(\'keywords\')">\n #{{keyword}}\n </span>\n </div>\n\n @if(isAuthor){\n <div class="article-info">\n <ng-container *ngIf="article?.get(\'writingOptions\')">\n <div (click)="handleNavEvent(\'options\')">设 定:\n \x3c!-- <mat-chip (click)="handleNavEvent(\'outline\')" [disabled]="!article?.get(\'outlineJson\')">\n 大纲\n </mat-chip> --\x3e\n \x3c!-- <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> --\x3e\n <span class="cueWord" *ngIf="article?.get(\'writingOptions\')?.writingStyle">{{article?.get(\'writingOptions\')?.writingStyle}}</span>\n <span class="cueWord" *ngIf="article?.get(\'writingOptions\')?.wordCount">约{{article?.get(\'writingOptions\')?.wordCount}}字</span>\n </div>\n </ng-container>\n <ng-container *ngIf="article?.get(\'outlineJson\')">\n <div (click)="handleNavEvent(\'outline\')">提 纲:\n \x3c!-- <mat-chip>{{article?.get(\'outlineJson\') | outlineCount}}字</mat-chip> --\x3e\n <span class="cueWord">{{article?.get(\'outlineJson\') | outlineCount}}字</span>\n </div>\n </ng-container>\n <div *ngIf="article?.id" (click)="handleNavEvent(\'draft\')">稿件箱:\n \x3c!-- <mat-chip>{{draftServ.DraftCountMap?.[article?.id||\'\']?.total || 0}}篇</mat-chip> --\x3e\n <span class="cueWord">{{draftServ.DraftCountMap?.[article?.id||\'\']?.total || 0}}篇</span>\n </div>\n </div>\n }\n \n \x3c!-- 文章内容 --\x3e\n <div class="content">\n <ng-container *ngFor="let item of article?.get(\'contentArray\');let index=index;" >\n \x3c!-- 章节信息 --\x3e\n \x3c!-- <h2 style="margin:5px 0px;" *ngIf="article?.get(\'outlineJson\')?.sections?.[index]?.title">{{article?.get(\'outlineJson\')?.sections?.[index]?.title}}</h2> --\x3e\n <div class="content-block" [innerHTML]="(previewStyle+item?.content)| nzSanitizer: \'html\'"></div>\n </ng-container>\n <div style="height:100px;width:100%;"></div>\n </div>\n </div>\n\n </div>\n\n</ion-content>\n\n<ion-footer class="ion-no-border">\n <ion-toolbar>\n @if(article?.get("author")){\n <ion-buttons slot="start">\n <ion-button>\n <div class="author">\n @if(article?.get("author")?.get("nickname")){ \n <app-comp-user-avatar [user]="article?.get(\'author\')"></app-comp-user-avatar>\n }\n <span>\n {{article?.get("author")?.get("nickname") || (article?.get("author")?.get("realname")| secretText)}}\n </span>\n </div>\n </ion-button>\n </ion-buttons>\n }\n @if(article?.id){\n <ion-buttons slot="end">\n @if(isAuthor){\n <ion-button (click)="delete()" color="medium" size="small">\n <ion-icon slot="icon-only" name="trash"></ion-icon>\n </ion-button>\n }\n <ion-button color="medium" size="small">\n <span class="count">{{article?.get("viewCount")||""}}</span>\n <ion-icon slot="icon-only" name="eye-outline"></ion-icon>\n </ion-button>\n <ion-button [color]="articleServ?.likeMap[article?.id||\'666\']?\'danger\':\'medium\'" size="small" (click)="articleServ.likeArticle(article)">\n <span class="count">{{article?.get("likeCount")||""}}</span>\n <ion-icon slot="icon-only" [name]="\'heart\'+(articleServ?.likeMap[article?.id||\'666\']?\'\':\'-outline\')"></ion-icon>\n </ion-button>\n <ion-button [color]="articleServ?.collectMap[article?.id||\'666\']?\'warn\':\'medium\'" size="small" (click)="articleServ.likeArticle(article,\'collect\')">\n <span class="count">{{article?.get("collectCount")||""}}</span>\n <ion-icon slot="icon-only" [name]="\'star\'+(articleServ?.collectMap[article?.id||\'666\']?\'\':\'-outline\')"></ion-icon>\n </ion-button>\n \x3c!-- <ion-button color="medium" size="small">\n <span class="count">{{article?.get("commentCount")||""}}</span>\n <ion-icon slot="icon-only" name="chatbubble-outline"></ion-icon>\n </ion-button> --\x3e\n </ion-buttons>\n }\n\n </ion-toolbar>\n</ion-footer>',styles:[":host-context(body.dark) .page{background:var(--background-black);background-color:#1e1f22;color:#ddd!important}:host-context(body.dark) .page h1,:host-context(body.dark) .page h2,:host-context(body.dark) .page h3,:host-context(body.dark) .page h4,:host-context(body.dark) .page h5,:host-context(body.dark) .page h6{color:#ddd!important}:host-context(body.dark) .page .content-block{color:#ddd!important;font-size:1.1rem}:host-context(body.dark) .page .content-block h1,:host-context(body.dark) .page .content-block h2,:host-context(body.dark) .page .content-block h3,:host-context(body.dark) .page .content-block h4,:host-context(body.dark) .page .content-block h5,:host-context(body.dark) .page .content-block h6{color:#ddd!important}:host-context(body.dark) .page .toggle-text{color:#ddd!important}.page{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:flex;flex-direction:column;padding:10px;position:relative}.page .btn{z-index:999;position:fixed;top:0;right:0}.page .btn>button{width:80px}.page .article-info{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:0% 3%}.page .article-info div{margin-bottom:3px;display:flex;font-size:1.1rem}.page .article-info div mat-chip{margin-right:3px}.page .article-info div .cueWord{display:flex;flex-wrap:wrap;margin-right:10px}.page .article-header{display:flex;flex-direction:column;justify-content:center;align-items:center}.page .article-header h1{color:#5a55d1!important}.page .chip-list{display:flex;justify-content:flex-start;margin-top:30px;padding:0% 3%;font-size:1.1rem;flex-wrap:wrap}.page .chip-list>mat-chip{margin:0}.page .chip-list .cueWord{display:flex;flex-wrap:wrap;margin-right:10px}.page .content{padding:12px;width:100%}.swiper{width:100%}.swiper .swiper-slide{display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.swiper .swiper-slide img{object-fit:cover}.count{margin-top:-17px}.author{display:flex;align-items:center;text-align:left}.author span{margin-left:7px}.sharetOverlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:999}.sharetOverlay .overlay-content{position:absolute;top:0;width:100%;padding:20px;box-shadow:0 2px 10px #0000001a}.sharetOverlay .overlay-content ion-icon{position:absolute;top:0;right:11px;font-size:2em;color:#000}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i6.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i6.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:MatToolbarModule},{kind:"ngmodule",type:MatCardModule},{kind:"ngmodule",type:MatChipsModule},{kind:"ngmodule",type:MatButtonModule},{kind:"ngmodule",type:MatSlideToggleModule},{kind:"component",type:i7.MatSlideToggle,selector:"mat-slide-toggle",inputs:["name","id","labelPosition","aria-label","aria-labelledby","aria-describedby","required","color","disabled","disableRipple","tabIndex","checked","hideIcon"],outputs:["change","toggleChange"],exportAs:["matSlideToggle"]},{kind:"ngmodule",type:NzPipesModule},{kind:"pipe",type:i8.NzSanitizerPipe,name:"nzSanitizer"},{kind:"ngmodule",type:NzIconModule},{kind:"component",type:IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:IonToolbar,selector:"ion-toolbar",inputs:["color","mode"]},{kind:"component",type:IonTitle,selector:"ion-title",inputs:["color","size"]},{kind:"component",type:IonHeader,selector:"ion-header",inputs:["collapse","mode","translucent"]},{kind:"component",type:IonButtons,selector:"ion-buttons",inputs:["collapse"]},{kind:"component",type: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:IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:IonFooter,selector:"ion-footer",inputs:["collapse","mode","translucent"]},{kind:"pipe",type:OutlineCountPipe,name:"outlineCount"},{kind:"pipe",type:SecretTextPipe,name:"secretText"},{kind:"component",type:CompUserAvatarComponent,selector:"app-comp-user-avatar",inputs:["user"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticlePreviewComponent,decorators:[{type:Component,args:[{selector:"fm-article-preview",standalone:!0,imports:[CommonModule,MatToolbarModule,MatCardModule,MatChipsModule,MatButtonModule,MatSlideToggleModule,MatChipsModule,NzPipesModule,NzIconModule,IonContent,IonToolbar,IonTitle,IonHeader,IonButtons,IonButton,IonIcon,IonFooter,IonToolbar,OutlineCountPipe,SecretTextPipe,CompUserAvatarComponent],template:'<ion-header [translucent]="true" collapse="fade" class="ion-no-border">\n <ion-toolbar>\n \x3c!-- 返回 --\x3e\n <ion-buttons slot="secondary">\n <ion-button (click)="back()">\n <ion-icon slot="icon-only" name="arrow-back-circle"></ion-icon>\n </ion-button>\n @if(isAuthor){\n @if(isDisplayPublic===true){\n <div style="display:flex;justify-content: center;align-items: center;margin-left: 20px;">\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)"></mat-slide-toggle>\n <span class="toggle-text">公开</span>\n </div>\n }\n }\n </ion-buttons>\n <ion-title style="font-size: 1.3rem;font-weight: bold;">文章预览</ion-title>\n <ion-buttons slot="primary">\n \x3c!-- 编辑 --\x3e\n @if(isAuthor){\n \x3c!-- <div style="display:flex;justify-content: center;align-items: center;">\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)"></mat-slide-toggle>\n <span class="toggle-text">公开</span>\n </div> --\x3e\n @if(isDisplayEdit===true){\n <ion-button (click)="editArticle()" style="display: none;">\n <ion-icon slot="icon-only" name="create"></ion-icon>\n </ion-button>\n }\n }\n \x3c!-- 上传轮播图 --\x3e\n @if(isAuthor){\n \x3c!-- <div style="display:flex;justify-content: center;align-items: center;">\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)"></mat-slide-toggle>\n <span class="toggle-text">公开</span>\n </div> --\x3e\n \x3c!-- @if(isDisplayUploadImage===true){ --\x3e\n <ion-button (click)="openUploadBanner()">\n \x3c!-- <ion-icon slot="icon-only" name="create"></ion-icon> --\x3e\n <div>上传封面</div>\n </ion-button>\n \x3c!-- } --\x3e\n }\n \x3c!-- 分享 --\x3e\n \x3c!-- (click)="shareArticle()" --\x3e\n <ion-button (click)="openOverlay()">\n <ion-icon slot="icon-only" name="share"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<div class="sharetOverlay" (click)="closeOverlay()" *ngIf="isShare">\n\n <div class="overlay-content">\n <img src="https://static.ws.126.net/163/frontend/backflow-ssr/article/share-cover.98543a0088a4.png" alt="">\n <ion-icon style="color: white;" name="ellipsis-horizontal"></ion-icon>\n\n </div>\n</div>\n<ion-content>\n <div class="page">\n <div style="background-color: #1e1f22;">\n \x3c!-- <div class="btn">\n <button mat-raised-button color="primary">\n <span nz-icon nzType="close" nzTheme="outline"></span>\n </button>\n </div> --\x3e\n \n \x3c!-- 轮播图 --\x3e\n <div class="swiper" (wheel)="onScroll($event)" *ngIf="bannerList?.length">\n <div class="swiper-wrapper">\n <div class="swiper-slide bg-purple-blue" *ngFor="let imgUrl of bannerList">\n <img [src]="imgUrl" alt="" srcset="">\n </div>\n </div>\n </div>\n \n \x3c!-- 标题、关键字 --\x3e\n <div class="article-header">\n <h1 style="color: #5a55d1 !important;">{{article?.get(\'title\')}}</h1>\n </div>\n <div class="chip-list">关键字:\n \x3c!-- <mat-chip *ngFor="let keyword of article?.get(\'keywords\')">{{keyword}}</mat-chip> --\x3e\n <span class="cueWord" *ngFor="let keyword of article?.get(\'keywords\')">\n #{{keyword}}\n </span>\n </div>\n\n @if(isAuthor){\n <div class="article-info">\n <ng-container *ngIf="article?.get(\'writingOptions\')">\n <div (click)="handleNavEvent(\'options\')">设 定:\n \x3c!-- <mat-chip (click)="handleNavEvent(\'outline\')" [disabled]="!article?.get(\'outlineJson\')">\n 大纲\n </mat-chip> --\x3e\n \x3c!-- <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> --\x3e\n <span class="cueWord" *ngIf="article?.get(\'writingOptions\')?.writingStyle">{{article?.get(\'writingOptions\')?.writingStyle}}</span>\n <span class="cueWord" *ngIf="article?.get(\'writingOptions\')?.wordCount">约{{article?.get(\'writingOptions\')?.wordCount}}字</span>\n </div>\n </ng-container>\n <ng-container *ngIf="article?.get(\'outlineJson\')">\n <div (click)="handleNavEvent(\'outline\')">提 纲:\n \x3c!-- <mat-chip>{{article?.get(\'outlineJson\') | outlineCount}}字</mat-chip> --\x3e\n <span class="cueWord">{{article?.get(\'outlineJson\') | outlineCount}}字</span>\n </div>\n </ng-container>\n <div *ngIf="article?.id" (click)="handleNavEvent(\'draft\')">稿件箱:\n \x3c!-- <mat-chip>{{draftServ.DraftCountMap?.[article?.id||\'\']?.total || 0}}篇</mat-chip> --\x3e\n <span class="cueWord">{{draftServ.DraftCountMap?.[article?.id||\'\']?.total || 0}}篇</span>\n </div>\n </div>\n }\n \n \x3c!-- 文章内容 --\x3e\n <div class="content">\n <ng-container *ngFor="let item of article?.get(\'contentArray\');let index=index;" >\n \x3c!-- 章节信息 --\x3e\n \x3c!-- <h2 style="margin:5px 0px;" *ngIf="article?.get(\'outlineJson\')?.sections?.[index]?.title">{{article?.get(\'outlineJson\')?.sections?.[index]?.title}}</h2> --\x3e\n <div class="content-block" [innerHTML]="(previewStyle+item?.content)| nzSanitizer: \'html\'"></div>\n </ng-container>\n <div style="height:100px;width:100%;"></div>\n </div>\n </div>\n\n </div>\n\n</ion-content>\n\n<ion-footer class="ion-no-border">\n <ion-toolbar>\n @if(article?.get("author")){\n <ion-buttons slot="start">\n <ion-button>\n <div class="author">\n @if(article?.get("author")?.get("nickname")){ \n <app-comp-user-avatar [user]="article?.get(\'author\')"></app-comp-user-avatar>\n }\n <span>\n {{article?.get("author")?.get("nickname") || (article?.get("author")?.get("realname")| secretText)}}\n </span>\n </div>\n </ion-button>\n </ion-buttons>\n }\n @if(article?.id){\n <ion-buttons slot="end">\n @if(isAuthor){\n <ion-button (click)="delete()" color="medium" size="small">\n <ion-icon slot="icon-only" name="trash"></ion-icon>\n </ion-button>\n }\n <ion-button color="medium" size="small">\n <span class="count">{{article?.get("viewCount")||""}}</span>\n <ion-icon slot="icon-only" name="eye-outline"></ion-icon>\n </ion-button>\n <ion-button [color]="articleServ?.likeMap[article?.id||\'666\']?\'danger\':\'medium\'" size="small" (click)="articleServ.likeArticle(article)">\n <span class="count">{{article?.get("likeCount")||""}}</span>\n <ion-icon slot="icon-only" [name]="\'heart\'+(articleServ?.likeMap[article?.id||\'666\']?\'\':\'-outline\')"></ion-icon>\n </ion-button>\n <ion-button [color]="articleServ?.collectMap[article?.id||\'666\']?\'warn\':\'medium\'" size="small" (click)="articleServ.likeArticle(article,\'collect\')">\n <span class="count">{{article?.get("collectCount")||""}}</span>\n <ion-icon slot="icon-only" [name]="\'star\'+(articleServ?.collectMap[article?.id||\'666\']?\'\':\'-outline\')"></ion-icon>\n </ion-button>\n \x3c!-- <ion-button color="medium" size="small">\n <span class="count">{{article?.get("commentCount")||""}}</span>\n <ion-icon slot="icon-only" name="chatbubble-outline"></ion-icon>\n </ion-button> --\x3e\n </ion-buttons>\n }\n\n </ion-toolbar>\n</ion-footer>',styles:[":host-context(body.dark) .page{background:var(--background-black);background-color:#1e1f22;color:#ddd!important}:host-context(body.dark) .page h1,:host-context(body.dark) .page h2,:host-context(body.dark) .page h3,:host-context(body.dark) .page h4,:host-context(body.dark) .page h5,:host-context(body.dark) .page h6{color:#ddd!important}:host-context(body.dark) .page .content-block{color:#ddd!important;font-size:1.1rem}:host-context(body.dark) .page .content-block h1,:host-context(body.dark) .page .content-block h2,:host-context(body.dark) .page .content-block h3,:host-context(body.dark) .page .content-block h4,:host-context(body.dark) .page .content-block h5,:host-context(body.dark) .page .content-block h6{color:#ddd!important}:host-context(body.dark) .page .toggle-text{color:#ddd!important}.page{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:flex;flex-direction:column;padding:10px;position:relative}.page .btn{z-index:999;position:fixed;top:0;right:0}.page .btn>button{width:80px}.page .article-info{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:0% 3%}.page .article-info div{margin-bottom:3px;display:flex;font-size:1.1rem}.page .article-info div mat-chip{margin-right:3px}.page .article-info div .cueWord{display:flex;flex-wrap:wrap;margin-right:10px}.page .article-header{display:flex;flex-direction:column;justify-content:center;align-items:center}.page .article-header h1{color:#5a55d1!important}.page .chip-list{display:flex;justify-content:flex-start;margin-top:30px;padding:0% 3%;font-size:1.1rem;flex-wrap:wrap}.page .chip-list>mat-chip{margin:0}.page .chip-list .cueWord{display:flex;flex-wrap:wrap;margin-right:10px}.page .content{padding:12px;width:100%}.swiper{width:100%}.swiper .swiper-slide{display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.swiper .swiper-slide img{object-fit:cover}.count{margin-top:-17px}.author{display:flex;align-items:center;text-align:left}.author span{margin-left:7px}.sharetOverlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:999}.sharetOverlay .overlay-content{position:absolute;top:0;width:100%;padding:20px;box-shadow:0 2px 10px #0000001a}.sharetOverlay .overlay-content ion-icon{position:absolute;top:0;right:11px;font-size:2em;color:#000}\n"]}]}],ctorParameters:()=>[{type:i1.ActivatedRoute},{type:i1.Router},{type:i2.MatDialog},{type:i3.NavController},{type:i3.ModalController},{type:i3.AnimationController},{type:i4.ArticleService},{type:i3.AlertController},{type:i5.DraftService}],propDecorators:{article:[{type:Input}],isDisplayEdit:[{type:Input}],isDisplayPublic:[{type:Input}],isDisplayUploadImage:[{type:Input}]}});export class DialogArticlePreview{constructor(t,e){this.dialogRef=t,this.data=e}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:DialogArticlePreview,deps:[{token:i2.MatDialogRef},{token:MAT_DIALOG_DATA}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:DialogArticlePreview,isStandalone:!0,selector:"article-preview-dialog",ngImport:i0,template:'<fm-article-preview [article]="data?.article"></fm-article-preview>',isInline:!0,styles:[""],dependencies:[{kind:"ngmodule",type:MatDialogModule},{kind:"component",type:FmArticlePreviewComponent,selector:"fm-article-preview",inputs:["article","isDisplayEdit","isDisplayPublic","isDisplayUploadImage"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:DialogArticlePreview,decorators:[{type:Component,args:[{selector:"article-preview-dialog",template:'<fm-article-preview [article]="data?.article"></fm-article-preview>',standalone:!0,imports:[MatDialogModule,FmArticlePreviewComponent]}]}],ctorParameters:()=>[{type:i2.MatDialogRef},{type:void 0,decorators:[{type:Inject,args:[MAT_DIALOG_DATA]}]}]});export async function openUploadBannerModal(t,e){const n=await t.create({component:CompUploadBookBannersComponent,componentProps:{articleId:e},breakpoints:[.5,.8,1],initialBreakpoint:.8});await n.present();const{data:i,role:o}=await n.onWillDismiss();return"confirm"===o&&i?.success?(console.log("新章节:",i.banner),i.banner):null}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2ZtLWFydGljbGUtcHJldmlldy9mbS1hcnRpY2xlLXByZXZpZXcuY29tcG9uZW50Lm1qcw==`
|
|
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-write-options/fm-article-write-options.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,Inject}from"@angular/core";import{FormControl,FormsModule,ReactiveFormsModule}from"@angular/forms";import{MatButtonModule}from"@angular/material/button";import{MatCheckboxModule}from"@angular/material/checkbox";import{MatDialogModule,MatDialogRef,MAT_DIALOG_DATA}from"@angular/material/dialog";import{MatFormFieldModule}from"@angular/material/form-field";import{MatInputModule}from"@angular/material/input";import{MatRadioModule}from"@angular/material/radio";import*as i0 from"@angular/core";import*as i1 from"@angular/material/dialog";import*as i2 from"@angular/common";import*as i3 from"@angular/forms";import*as i4 from"@angular/material/radio";import*as i5 from"@angular/material/button";export class FmArticleWriteOptionsComponent{validatorMaxCount(t){return(t?.value||0)>4e3?{maxCount:"characters over 4000"}:null}genWordCountList(t){let o=t?.wordCountDocument||0;o<2500&&(this.wordCountList=[{label:"简练",value:.6*o},{label:"正常",value:1*o},{label:"发散",value:1.4*o}])}constructor(t,o){this.dialogRef=t,this.data=o,this.writingOptions={writingStyle:"记叙文",writingPerson:"第三人称"},this.writingStyleList=["记叙文","说明文","议论文","应用文"],this.writingPersonList=["第一人称","第三人称"],this.wordCountLimit=new FormControl("",[this.validatorMaxCount]),this.wordCountList=[{label:"简练",value:1500},{label:"正常",value:2500},{label:"发散",value:3500}],this.writingOptions=o?.writingOptions||this.writingOptions||{},this.genWordCountList(o?.writingOptions)}ngOnInit(){}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleWriteOptionsComponent,deps:[{token:i1.MatDialogRef},{token:MAT_DIALOG_DATA}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:FmArticleWriteOptionsComponent,isStandalone:!0,selector:"app-fm-article-write-options",ngImport:i0,template:'\n<h2 mat-dialog-title>文章写作设定</h2>\n\n<mat-dialog-content>\n\n <div class="row">\n <h3>文章体裁</h3>\n <mat-radio-group [(ngModel)]="writingOptions.writingStyle">\n <mat-radio-button *ngFor="let style of writingStyleList" [value]="style">{{style}}</mat-radio-button>\n </mat-radio-group>\n </div>\n <div class="row">\n <h3>写作人称</h3>\n <mat-radio-group [(ngModel)]="writingOptions.writingPerson">\n <mat-radio-button *ngFor="let item of writingPersonList" [value]="item">{{item}}</mat-radio-button>\n </mat-radio-group>\n </div>\n \x3c!-- <div class="row">\n <h3>篇幅字数 <span *ngIf="writingOptions?.wordCountDocument">已选知识库总字数 {{writingOptions?.wordCountDocument}}</span></h3>\n <mat-radio-group [(ngModel)]="writingOptions.wordCount">\n <mat-radio-button *ngFor="let item of wordCountList" [value]="item.value">{{item.label}}({{item.value}}字)</mat-radio-button>\n </mat-radio-group><br/>\n <mat-form-field style="width:300px;" hintLabel="字数不超过">\n <mat-label>自定义字数</mat-label>\n <input #wordCountInput matInput placeholder="填写整数" [formControl]="wordCountLimit" step="1" min="100" max="4000" [(ngModel)]="writingOptions.wordCount">\n <mat-icon matSuffix>字</mat-icon>\n <mat-hint align="end">{{wordCountInput.value || 0}}/4000</mat-hint>\n <mat-error *ngIf="writingOptions.wordCount&&writingOptions.wordCount>4000">字数不可超过4000</mat-error>\n </mat-form-field>\n </div> --\x3e\n\n</mat-dialog-content>\n\n<mat-dialog-actions [align]="\'end\'" style="display: flex;justify-content: center;">\n \x3c!-- <button mat-button (click)="onNoClick()">No Thanks</button> --\x3e\n <button style="font-size: 20px;" mat-button color="warn" [mat-dialog-close]="false">取消</button>\n <button style="font-size: 20px;" mat-button color="primary" [mat-dialog-close]="writingOptions" cdkFocusInitial>完成</button>\n</mat-dialog-actions>\n\n',styles:[":host-context(body.dark) .row h3,:host-context(body.dark) .row span{color:#fff!important}.row h3 span{font-size:16px}h2{text-align:center;background-color:#6e23ce}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i2.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"ngmodule",type:FormsModule},{kind:"directive",type:i3.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i3.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"ngmodule",type:MatDialogModule},{kind:"directive",type:i1.MatDialogClose,selector:"[mat-dialog-close], [matDialogClose]",inputs:["aria-label","type","mat-dialog-close","matDialogClose"],exportAs:["matDialogClose"]},{kind:"directive",type:i1.MatDialogTitle,selector:"[mat-dialog-title], [matDialogTitle]",inputs:["id"],exportAs:["matDialogTitle"]},{kind:"directive",type:i1.MatDialogActions,selector:"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]",inputs:["align"]},{kind:"directive",type:i1.MatDialogContent,selector:"[mat-dialog-content], mat-dialog-content, [matDialogContent]"},{kind:"ngmodule",type:MatCheckboxModule},{kind:"ngmodule",type:MatRadioModule},{kind:"directive",type:i4.MatRadioGroup,selector:"mat-radio-group",inputs:["color","name","labelPosition","value","selected","disabled","required"],outputs:["change"],exportAs:["matRadioGroup"]},{kind:"component",type:i4.MatRadioButton,selector:"mat-radio-button",inputs:["id","name","aria-label","aria-labelledby","aria-describedby","disableRipple","tabIndex","checked","value","labelPosition","disabled","required","color"],outputs:["change"],exportAs:["matRadioButton"]},{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:MatFormFieldModule},{kind:"ngmodule",type:MatInputModule}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmArticleWriteOptionsComponent,decorators:[{type:Component,args:[{selector:"app-fm-article-write-options",standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,MatDialogModule,MatCheckboxModule,MatRadioModule,MatButtonModule,MatFormFieldModule,MatInputModule],template:'\n<h2 mat-dialog-title>文章写作设定</h2>\n\n<mat-dialog-content>\n\n <div class="row">\n <h3>文章体裁</h3>\n <mat-radio-group [(ngModel)]="writingOptions.writingStyle">\n <mat-radio-button *ngFor="let style of writingStyleList" [value]="style">{{style}}</mat-radio-button>\n </mat-radio-group>\n </div>\n <div class="row">\n <h3>写作人称</h3>\n <mat-radio-group [(ngModel)]="writingOptions.writingPerson">\n <mat-radio-button *ngFor="let item of writingPersonList" [value]="item">{{item}}</mat-radio-button>\n </mat-radio-group>\n </div>\n \x3c!-- <div class="row">\n <h3>篇幅字数 <span *ngIf="writingOptions?.wordCountDocument">已选知识库总字数 {{writingOptions?.wordCountDocument}}</span></h3>\n <mat-radio-group [(ngModel)]="writingOptions.wordCount">\n <mat-radio-button *ngFor="let item of wordCountList" [value]="item.value">{{item.label}}({{item.value}}字)</mat-radio-button>\n </mat-radio-group><br/>\n <mat-form-field style="width:300px;" hintLabel="字数不超过">\n <mat-label>自定义字数</mat-label>\n <input #wordCountInput matInput placeholder="填写整数" [formControl]="wordCountLimit" step="1" min="100" max="4000" [(ngModel)]="writingOptions.wordCount">\n <mat-icon matSuffix>字</mat-icon>\n <mat-hint align="end">{{wordCountInput.value || 0}}/4000</mat-hint>\n <mat-error *ngIf="writingOptions.wordCount&&writingOptions.wordCount>4000">字数不可超过4000</mat-error>\n </mat-form-field>\n </div> --\x3e\n\n</mat-dialog-content>\n\n<mat-dialog-actions [align]="\'end\'" style="display: flex;justify-content: center;">\n \x3c!-- <button mat-button (click)="onNoClick()">No Thanks</button> --\x3e\n <button style="font-size: 20px;" mat-button color="warn" [mat-dialog-close]="false">取消</button>\n <button style="font-size: 20px;" mat-button color="primary" [mat-dialog-close]="writingOptions" cdkFocusInitial>完成</button>\n</mat-dialog-actions>\n\n',styles:[":host-context(body.dark) .row h3,:host-context(body.dark) .row span{color:#fff!important}.row h3 span{font-size:16px}h2{text-align:center;background-color:#6e23ce}\n"]}]}],ctorParameters:()=>[{type:i1.MatDialogRef},{type:void 0,decorators:[{type:Inject,args:[MAT_DIALOG_DATA]}]}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2ZtLWFydGljbGUtd3JpdGUtb3B0aW9ucy9mbS1hcnRpY2xlLXdyaXRlLW9wdGlvbnMuY29tcG9uZW50Lm1qcw==`
|
|
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/outline-count.pipe.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Pipe}from"@angular/core";import*as i0 from"@angular/core";export class OutlineCountPipe{transform(e,...t){return"string"==typeof e?e?.length:"object"==typeof e?JSON.stringify(e)?.length:0}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:OutlineCountPipe,deps:[],target:i0.ɵɵFactoryTarget.Pipe})}static{this.ɵpipe=i0.ɵɵngDeclarePipe({minVersion:"14.0.0",version:"17.3.12",ngImport:i0,type:OutlineCountPipe,isStandalone:!0,name:"outlineCount"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:OutlineCountPipe,decorators:[{type:Pipe,args:[{name:"outlineCount",pure:!0,standalone:!0}]}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL291dGxpbmUtY291bnQucGlwZS5tanM=`
|
|
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/prompt/prompt-insertion-article.mjs
|
|
7
|
+
*/
|
|
8
|
+
import Parse from"parse";export async function getRelationByDocList(e,t){if(!e?.length&&!t?.length)return[];let n=[];e?.length&&e?.forEach((e=>{e?.id&&n.push({docList:e?.toPointer()})}));let r=t?.map((e=>e?.get("person")));if(r=r?.filter((e=>e)),r?.forEach((e=>{e?.id&&(n.push({person:e?.toPointer()}),n.push({person1:e?.toPointer()}),n.push({person2:e?.toPointer()}))})),!n?.length)return;let o=Parse.Query.fromJSON("PersonRelation",{where:{$or:n}});o.notEqualTo("isDeleted",!0),o.include("person1","person2","relation");try{return await o.find()||[]}catch(e){}return[]}export async function PromptInsertionRoleList(e,t){let n=await getRelationByDocList(e,t),r="";return n?.forEach((e=>{let t=e?.get("person1"),n=t?.get("name")||e?.get("person1Data")?.name,o=e?.get("person2"),i=o?.get("name")||e?.get("person2Data")?.name,a=e?.get("relation");o?.id&&(r+=`\n角色ID:${o?.id},名称:${i},是${n}的${a?.get("name")}`)})),r?r?"\n以下是相关角色id及名称:\n"+r:void 0:""}export async function PromptInsertionDocumentList(e,t,n){let r="";if(e&&e?.forEach((e=>{let t=e?.get("pageContent");t=t?.replaceAll("\n\n","\n"),t&&(r+=`\`\`\`\n文档ID:${e?.id}\n文档内容:${t}\n\`\`\`\n`)})),t){t=t?.filter((e=>"chat"==e?.get("type")&&e?.get("chatSession")?.id||"diary"==e?.get("type")&&e?.get("content")));for(let e=0;e<t.length;e++){let o=t[e],i=await storyJsonToContent(o,n);i&&(r+=`\`\`\`\n文档ID:${o?.id}\n文档内容:${i}\n\`\`\`\n`)}}return"\n以下是知识文档id及内容:\n"+r}export async function storyJsonToContent(e,t){let n,r=e?.get("contentJson"),o=e?.get("person")?.id||e?.get("person")?.objectId;if(o)try{n=await(t?.loadPersonById(o))}catch(e){}let i,a=n?.get&&n?.get("name"),s=e?.get("recorder")?.id||e?.get("recorder")?.objectId;if(s)try{i=await(t?.loadPersonById(s))}catch(e){}let g=i?.get&&i?.get("name")||e?.get("user")?.get&&e?.get("user")?.get("realname");if("diary"==e?.get("type")){if(r?.title){return`日记主题:${r?.title},作者:${a||g},描述:${r?.desc},关键字${r?.keywords?.join(",")},内容:${e?.get("content")}`}return""}if("chat"==e?.get("type")){let n,o="",i=e?.get("chatSession")?.get("messageList"),a=e?.get("chatSession")?.get("role")?.get("name")||"记者";try{n=await(t?.loadPersonById(e?.get("person")?.id||e?.get("person")?.objectId))}catch(e){}let s=n?.get("name")||n?.get("userVerify")?.get("name")||"当前人物",g=e?.get("user")?.get("realname")||e?.get("user")?.get("nickname")||"用户";return i?.length?(i?.forEach(((e,t)=>{if(e?.hidden)return;if("system"==e?.role)return;let n;"assistant"==e?.role&&(n=`${a}问:${e?.content}\n`),"user"==e?.role&&(n=`${g}答:${e?.content}\n`),o+=n||""})),`人物:${s},被采访人:${g},主题:${r?.title},描述:${r?.desc},关键字:${r?.keywords?.join(",")},对话记录:\n${o}`):""}return""}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Byb21wdC9wcm9tcHQtaW5zZXJ0aW9uLWFydGljbGUubWpz`
|
|
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/task-article-generation.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{FmAgentTaskComponent}from"../../aigc";import{TaskArticleDraft}from"./tasks/task-article-draft-create";import{TaskArticleOutline}from"./tasks/task-article-outline";import{TaskArticleOutlineEdit}from"./tasks/task-article-outline-edit";import{TaskArticleWritingOptions}from"./tasks/task-article-writing-options";import{TaskDocumentSelect}from"./tasks/task-document-select";import{openPersonSelectModal}from"../../person";export async function taskArticleGeneration(a,e){if(e?.shareData&&(e.shareData.createNewDraft=!0,e?.dialog)){if(!e?.person&&(e.person=await openPersonSelectModal(e?.modalCtrl),!e?.person))return;doArticleTask([TaskDocumentSelect({person:e?.book?.get("person"),book:e?.book,shareData:e.shareData,dialog:e?.dialog}),TaskArticleWritingOptions({shareData:e.shareData,dialog:e?.dialog}),TaskArticleOutline({person:e?.book?.get("person"),book:e?.book,shareData:e.shareData,dialog:e?.dialog,personServ:e?.personServ}),TaskArticleOutlineEdit({person:e?.book?.get("person"),book:e?.book,shareData:e.shareData,dialog:e?.dialog}),TaskArticleDraft({person:e?.person,isSelectedMode:!0,shareData:e.shareData,dialog:e?.dialog,modalCtrl:e?.modalCtrl})],e,(()=>{}))}}export function doArticleTask(a,e,t){if(!e)return;console.log(e.shareData),e.shareData.article=e?.article||e.shareData.article,e.person?.id&&e.shareData?.article.set("person",e.person?.toPointer());let r=e?.article?.get("writingOptions");r&&(e.shareData.writingOptions=r);let o=a,s=e?.dialog.open(FmAgentTaskComponent,{data:{shareData:e?.shareData,stepsList:o},disableClose:!0});s.afterClosed().subscribe((a=>{e?.shareData?.article?.get("outlineJson")||a||(e?.shareData?.article?.set("isDeleted",!0),e?.shareData?.article?.destroy()),t&&t()}))}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2stYXJ0aWNsZS1nZW5lcmF0aW9uLm1qcw==`
|
|
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/tasks/task-article-draft-create.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{AgentTaskStep}from"../../../core/agent/task/agent.task";import{DialogArticleDraft}from"../fm-article-draft/fm-article-draft.component";export function TaskArticleDraft(t){let a=new AgentTaskStep({title:"整篇文章草稿创作",shareData:t?.shareData});return a.handle=()=>new Promise((async(e,r)=>{let s=t?.dialog.open(DialogArticleDraft,{data:{article:t?.shareData?.article,person:t?.person,book:t?.book,createNewDraft:t?.shareData?.createNewDraft,outlineJson:t?.shareData?.articleOutline||t?.shareData?.article?.get("outlineJson"),writingOptions:t?.shareData?.writingOptions||t?.shareData?.article?.get("writingOptions"),docList:t?.shareData?.docList||t?.shareData?.article?.get("docList")||t?.shareData?.documentList?.map((t=>t.toPointer())),documentList:t?.shareData?.documentList},height:"90vh",maxHeight:"90vh",width:"90vw",maxWidth:"90vw"});s?.afterClosed().subscribe((async r=>{if(r){let s=localStorage.getItem("company");s&&(t?.shareData?.article?.set("company",{__type:"Pointer",className:"Company",objectId:s}),await(t?.shareData?.article?.save())),r?.html&&(t?.shareData?.article?.set("content",r?.html),await(t?.shareData?.article?.save())),r?.contentArray&&(t?.shareData?.article?.set("contentArray",r?.contentArray),await(t?.shareData?.article?.save())),a.logList.push("已确认写作大纲"),a.error="",a.progress=1,e(!0)}else a.error="未保存大纲,请重试",a.restartButtonShow=!0,e(!1)}))})),a}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2tzL3Rhc2stYXJ0aWNsZS1kcmFmdC1jcmVhdGUubWpz`
|
|
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/tasks/task-article-outline-edit.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{AgentTaskStep}from"../../../core";import{DialogArticleOutline}from"../fm-article-outline/fm-article-outline.component";export function TaskArticleOutlineEdit(e){let t=new AgentTaskStep({title:"编辑修订写作大纲",shareData:e?.shareData});return t.handle=()=>new Promise((async(a,r)=>{let i=e?.dialog.open(DialogArticleOutline,{data:{article:e?.shareData?.article,person:e?.person,book:e?.book},height:"90vh",maxHeight:"90vh",width:"80vw",maxWidth:"80vw"});i?.afterClosed().subscribe((async r=>{r?("string"==typeof r&&(e?.shareData?.article?.set("outline",r),await(e?.shareData?.article?.save())),"object"==typeof r&&(e?.shareData?.article?.set("outlineJson",r),await(e?.shareData?.article?.save())),t.logList.push("已确认写作大纲"),t.error="",t.progress=1,a(!0)):(t.error="未保存大纲,请重试",t.restartButtonShow=!0,a(!1))}))})),t}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2tzL3Rhc2stYXJ0aWNsZS1vdXRsaW5lLWVkaXQubWpz`
|
|
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/tasks/task-article-outline.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{AgentTaskStep}from"../../../core";import{AgentPrompt}from"../../../core";const agentPrompt=new AgentPrompt;import{PromptInsertionDocumentList,PromptInsertionRoleList}from"../prompt/prompt-insertion-article";const PromptTplArticleOutlineCode="article-outline-json-tpl";export function TaskArticleOutline(t){let e=t?.shareData?.writingOptions,r=new AgentTaskStep({title:"推理生成文章大纲",shareData:t?.shareData});return r.handle=()=>new Promise((s=>{r.progress=.01,setTimeout((async()=>{let o=await PromptInsertionRoleList(t?.shareData?.documentList,t?.shareData?.storyList),i=await PromptInsertionDocumentList(t?.shareData?.documentList,t?.shareData?.storyList,t.personServ),n=await agentPrompt.getFormatTpl("article-outline-json-tpl",{name:t?.person?.get("name"),writingStyle:e?.writingStyle||"不限",wordCount:e?.wordCount||2e3,roleList:"",docsRowList:""});i&&(n+=i),o&&(n+=o);let a=agentPrompt.getTokens(n);t.shareData.articleOutlinePrompt=n,t.shareData.articleOutlinePromptTokens=a,r.logList.push(`提示词tokens:${a}个`);let l=t?.shareData?.article.get("outlineJson");if(saveArticleOutline(t?.shareData?.article,l),l?.title)return r.logList.push(`已推理tokens:${JSON.stringify(l)?.length}个`),r.progress=1,void s(!0);agentPrompt.jsonCompletion(n).subscribe((async e=>{r.logList[0]=`已推理tokens:${e?.content?.length}个`,e?.complete&&(e.content&&(l=agentPrompt.extractAndParseJson(e?.content),saveArticleOutline(t?.shareData?.article,l),t.shareData.article.set("outlineJson",l),t.shareData.article=await t.shareData.article.save()),r.progress=1,s(!0))}))}),1500)})),r}function saveArticleOutline(t,e){e?.title&&t?.set("title",e?.title),e?.desc&&t?.set("desc",e?.desc),e?.keywords&&t?.set("keywords",e?.keywords)}function getOutlineJsonFromMarkdown(t,e){let r={},s=[];return function reduceArray(t){t.forEach((t=>{if("object"==typeof t&&reduceArray(t),"string"==typeof t){if(t?.indexOf("题目:")>-1){let e=t?.split(":")?.[1]?.trim();r.title=e}if(t?.indexOf("中心思想:")>-1){let e=t?.split(":")?.[1]?.trim();r.desc=e}if(t?.indexOf("关键字:")>-1){let e=t?.split(":")?.[1]?.trim(),s=e?.split(",");r.keywords=s?.map((t=>t.trim()))}if(t?.indexOf("文档ID:")>-1){let e=t?.split(":")?.[1]?.trim();e&&s.push({__type:"Pointer",className:"Document",objectId:e})}}}))}(agentPrompt.extractMarkdownToMultiArray(e)),r?.title&&t?.set("title",r?.title),r?.desc&&t?.set("desc",r?.desc),r?.keywords&&t?.set("keywords",r?.keywords),r?.docList?.length&&t?.set("docList",s),r}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2tzL3Rhc2stYXJ0aWNsZS1vdXRsaW5lLm1qcw==`
|
|
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/tasks/task-article-preview.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{DialogArticlePreview,FmArticlePreviewComponent}from"../fm-article-preview/fm-article-preview.component";export async function TaskArticlePreview(e){if(e?.modal){(await(e?.modal.create({component:FmArticlePreviewComponent,cssClass:"preview-article-modal",componentProps:{article:e?.article,onBreakPointSet:()=>{}},breakpoints:[1],initialBreakpoint:1}))).present()}e?.dialog}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2tzL3Rhc2stYXJ0aWNsZS1wcmV2aWV3Lm1qcw==`
|
|
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/tasks/task-article-writing-options.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{AgentTaskStep}from"../../../core";import{FmArticleWriteOptionsComponent}from"../fm-article-write-options/fm-article-write-options.component";export function TaskArticleWritingOptions(t){let e=new AgentTaskStep({title:"设定写作参数详情",shareData:t?.shareData});return e.handle=()=>new Promise((async(o,r)=>{let a=2500;t?.editOnly||t?.shareData.documentList.forEach((t=>{let e=t?.get("pageContent")||"";a+=e?.length}));let i={writingStyle:"文章体裁",wordCount:"篇幅字数"},n=t?.shareData?.writingOptions||{};n.wordCountDocument=a,console.log(t?.shareData);let s=t?.dialog.open(FmArticleWriteOptionsComponent,{data:{writingOptions:n,person:t?.person,book:t?.book},height:"75vh",maxHeight:"75vh",disableClose:!0});s?.afterClosed().subscribe((async r=>{r?(e.logList.push("已选择写作参数:"),Object.keys(r).forEach((t=>{i[t]&&e.logList.push(`${i[t]}: ${r[t]}`)})),t.shareData.writingOptions=r,console.log(t.shareData,r),t.shareData.article.set("writingOptions",r),t.shareData.article=await t.shareData.article.save(),e.error="",e.progress=1,o(!0)):(e.error="未选择参数,请重新选择",e.restartButtonShow=!0,o(!1))}))})),e}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2tzL3Rhc2stYXJ0aWNsZS13cml0aW5nLW9wdGlvbnMubWpz`
|
|
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/tasks/task-document-select.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{AgentTaskStep}from"../../../core";import{DialogPersonStorySelect}from"../../../person";export function TaskDocumentSelect(e){let t=new AgentTaskStep({title:"选择角色知识文档",shareData:e?.shareData});return t.handle=()=>new Promise((async(o,r)=>{let s=e?.dialog.open(DialogPersonStorySelect,{data:{article:e?.shareData?.article,person:e?.person,book:e?.book},height:"90vh",maxHeight:"90vh",width:"95vw",maxWidth:"95vw"});s?.afterClosed().subscribe((async r=>{console.log("已选择知识文档",r),r?.storyList||r?.documentList?(t.message=`已选择知识文档,共${r?.storyList?.length||0}条`,e.shareData.storyList=r?.storyList,e.shareData.documentList=r?.documentList,t.error="",t.progress=1,o(!0)):(t.error="未选择知识文档",t.restartButtonShow=!0,t.cancelAll=!0,o(!1))}))})),t}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL3Rhc2tzL3Rhc2stZG9jdW1lbnQtc2VsZWN0Lm1qcw==`
|
|
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-text-quill/fm-text-quill.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Component}from"@angular/core";import{ViewChild,Input,Output,EventEmitter,ElementRef,ChangeDetectorRef}from"@angular/core";import Quill from"quill";import hljs from"highlight.js";import*as i0 from"@angular/core";export class FmTextQuillComponent{constructor(e){this.cdRef=e,this.readOnly=!1,this.content="",this.theme="bubble",this.toolbar=[[{header:[1,2,3,4,!1]}],["bold","italic","underline"],[{list:"bullet"}],[{align:[]}],["code-block"]],this.onAIClick=new EventEmitter,this.contentChanged=!1,this.onContentChange=new EventEmitter,this.selectText="",this.optimizeText="",this.isOptimizing=!1,this.onSelectChange=new EventEmitter}ngOnInit(){setTimeout((()=>{this.initQuillEditor()}),100)}initQuillEditor(){this.oldContent=void 0;let e=this.editorComp?.nativeElement;this.quill=new Quill(e,{readOnly:this.readOnly,modules:{syntax:{hljs:hljs},toolbar:this.toolbar,history:{delay:2e3,maxStack:500,userOnly:!0}},theme:this.theme}),this.quill.on("selection-change",((e,t,o)=>{if(e)if(0==e.length);else{let t=this.quill?.getText(e.index,e.length);this.selectRange=e,this.selectText=t||"",this.onSelectChange.emit({name:"select",quill:this.quill,range:this.selectRange,text:this.selectText}),this.cdRef.detectChanges()}})),this.quill.root.innerHTML=this.content||"",this.oldContent||setTimeout((()=>{this.oldContent=this.quill?.root?.innerHTML}),2e3),this.quill.on("text-change",(()=>{this.content=this.quill?.root?.innerHTML||"",this.oldContent&&this.content&&(this.contentChanged=this.content!=this.oldContent,this.onContentChange.emit(this.content))}));let t=this.quill.getModule("toolbar"),o=document.createElement("span");o.className="ql-formats";let n=document.createElement("button");n.className="ql-ai-optimize",n.innerHTML="AI",n.onclick=()=>{this.onAIClick.emit({name:"AI",quill:this.quill,range:this.selectRange,text:this.selectText})},o.appendChild(n),t.container.appendChild(o);let l=document.createElement("style");l.innerText=".ql-bubble .ql-editor .ql-code-block-container .ql-ui{color:black!important;}",t.container.appendChild(l)}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmTextQuillComponent,deps:[{token:i0.ChangeDetectorRef}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:FmTextQuillComponent,isStandalone:!0,selector:"fm-text-quill",inputs:{readOnly:"readOnly",content:"content",theme:"theme",toolbar:"toolbar"},outputs:{onAIClick:"onAIClick",onContentChange:"onContentChange",onSelectChange:"onSelectChange"},viewQueries:[{propertyName:"editorComp",first:!0,predicate:["editorComp"],descendants:!0}],ngImport:i0,template:'\x3c!-- 高亮区域 语言选择黑色字体 --\x3e\n<style>.ql-bubble .ql-editor .ql-code-block-container .ql-ui{color:black!important;}</style>\n<div class="editor-container" #editorComp id="editor"></div>',styles:[":host-context(body.dark) ::ng-deep .ql-snow .ql-stroke{stroke:#fff!important}:host-context(body.dark) ::ng-deep .ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{color:#fff}:host-context(body.dark) ::ng-deep .ql-snow h1,:host-context(body.dark) ::ng-deep .ql-snow h2,:host-context(body.dark) ::ng-deep .ql-snow h3,:host-context(body.dark) ::ng-deep .ql-snow h4,:host-context(body.dark) ::ng-deep .ql-snow h5,:host-context(body.dark) ::ng-deep .ql-snow h6{color:#fff}.editor-container{height:auto}.editor-container .ql-editor{padding:0!important}.ql-editor{padding:0 2px!important}::ng-deep .ql-container.ql-snow{border:none}::ng-deep .ql-toolbar.ql-snow{border:none;border-radius:10px}.ql-toolbar.ql-snow{border:none!important}\n",".ql-bubble .ql-editor .ql-code-block-container .ql-ui{color:black!important;}"]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmTextQuillComponent,decorators:[{type:Component,args:[{selector:"fm-text-quill",standalone:!0,imports:[],template:'\x3c!-- 高亮区域 语言选择黑色字体 --\x3e\n<style>.ql-bubble .ql-editor .ql-code-block-container .ql-ui{color:black!important;}</style>\n<div class="editor-container" #editorComp id="editor"></div>',styles:[":host-context(body.dark) ::ng-deep .ql-snow .ql-stroke{stroke:#fff!important}:host-context(body.dark) ::ng-deep .ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{color:#fff}:host-context(body.dark) ::ng-deep .ql-snow h1,:host-context(body.dark) ::ng-deep .ql-snow h2,:host-context(body.dark) ::ng-deep .ql-snow h3,:host-context(body.dark) ::ng-deep .ql-snow h4,:host-context(body.dark) ::ng-deep .ql-snow h5,:host-context(body.dark) ::ng-deep .ql-snow h6{color:#fff}.editor-container{height:auto}.editor-container .ql-editor{padding:0!important}.ql-editor{padding:0 2px!important}::ng-deep .ql-container.ql-snow{border:none}::ng-deep .ql-toolbar.ql-snow{border:none;border-radius:10px}.ql-toolbar.ql-snow{border:none!important}\n",".ql-bubble .ql-editor .ql-code-block-container .ql-ui{color:black!important;}"]}]}],ctorParameters:()=>[{type:i0.ChangeDetectorRef}],propDecorators:{editorComp:[{type:ViewChild,args:["editorComp"]}],readOnly:[{type:Input}],content:[{type:Input}],theme:[{type:Input}],toolbar:[{type:Input}],onAIClick:[{type:Output}],onContentChange:[{type:Output}],onSelectChange:[{type:Output}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLXRleHQtcXVpbGwvZm0tdGV4dC1xdWlsbC5jb21wb25lbnQubWpz`
|
|
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/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./fm-text-quill/fm-text-quill.component";export*from"./fm-article-editor/fm-article-editor.component";export*from"./fm-article-editor/article.service";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2luZGV4Lm1qcw==`
|
|
10
|
+
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
* 保留所有权利 All Rights Reserved.
|
|
6
6
|
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/public-api.mjs
|
|
7
7
|
*/
|
|
8
|
-
export*from"./lib/aigc";export*from"./lib/map";export*from"./lib/storage";export*from"./lib/platform";export*from"./lib/social";export*from"./lib/video";export*from"./lib/nova-cloud";export*from"./lib/user";
|
|
8
|
+
export*from"./lib/core";export*from"./lib/aigc";export*from"./lib/map";export*from"./lib/storage";export*from"./lib/platform";export*from"./lib/social";export*from"./lib/video";export*from"./lib/person";export*from"./lib/text";export*from"./lib/icon";export*from"./lib/nova-cloud";export*from"./lib/user";
|
|
9
9
|
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL3B1YmxpYy1hcGkubWpz`
|
|
10
10
|
|