1import{a as $e,b as Q,c as ee,d as Je,e as We,f as it}from"./chunk-HHNRM3OD.js";import{a as He,b as nt}from"./chunk-YAD6CWV6.js";import{a as De,b as et}from"./chunk-ZEONSQ4A.js";import{a as Re,c as Qe}from"./chunk-5PW3IXDN.js";import{a as Fe,b as tt}from"./chunk-RWULMYT5.js";import{Cb as Pe,Db as Oe,Eb as Me}from"./chunk-ZIVP25TJ.js";import{A as Ve,C as Ue,c as ke,k as Ne,p as Le,v as Ae,w as ze,x as Be}from"./chunk-TT2QA5N2.js";import"./chunk-6MOVM5NX.js";import{f as xe,h as Ce,i as be,m as Ee,n as Ie}from"./chunk-REXD3XXG.js";import{i as ve,j as Ze}from"./chunk-XZTRQ27X.js";import{b as Te,c as Se,e as we,f as ye}from"./chunk-OVGYRFXU.js";import{v as z,z as Ke}from"./chunk-MZWCCPRN.js";import{C as oe,Ca as Ye,Cc as V,Dc as U,Ec as F,Ic as Z,Jc as ge,Nb as k,Ob as N,Oc as h,P as Xe,Pb as de,Pc as v,Qb as K,Qc as _e,Rb as J,Sb as W,Tb as m,Ub as l,Vb as s,Wb as I,Xa as se,Yc as he,Z as L,ab as Y,bc as M,d as ne,da as g,ea as _,fc as f,gb as r,hc as c,ia as re,kb as P,lb as O,lc as ce,mc as pe,n as X,nc as me,pa as w,rc as ue,sa as ae,sc as G,tc as A,td as fe,ub as le,wc as C,xc as y,yc as T}from"./chunk-JXIB5BED.js";import{a as D,b as B,e as Ge,k as j}from"./chunk-J6LPXIX4.js";function ct(a,u){a&1&&(I(0,"lucide-icon",21),C(1),h(2,"translate")),a&2&&(m("size",13),r(),T(" ",v(2,2,"PROJECTS_BUILDER.EDITOR.SAVING")," "))}function pt(a,u){a&1&&(I(0,"lucide-icon",22),C(1),h(2,"translate")),a&2&&(m("size",13),r(),T(" ",v(2,2,"PROJECTS_BUILDER.EDITOR.SAVED")," "))}function mt(a,u){if(a&1&&(l(0,"div",16),C(1),s()),a&2){let e=c();r(),y(e.error())}}function ut(a,u){a&1&&(l(0,"div",17),I(1,"lucide-icon",21),s()),a&2&&(r(),m("size",24))}function gt(a,u){if(a&1){let e=M();l(0,"button",49),f("click",function(){let t=g(e).$implicit,n=c(2);return _(n.switchTemplate(t.id))}),I(1,"span",50),C(2),s()}if(a&2){let e=u.$implicit,i=c(2);G("--tpl-accent",e.accent),A("is-active",i.templateId()===e.id),r(2),T(" ",e.name," ")}}function _t(a,u){if(a&1&&(l(0,"option",31),C(1),s()),a&2){let e=u.$implicit;m("value",e),r(),y(e)}}function ht(a,u){a&1&&(I(0,"lucide-icon",21),C(1),h(2,"translate")),a&2&&(m("size",14),r(),T(" ",v(2,2,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AI_GENERATING")," "))}function ft(a,u){a&1&&(I(0,"lucide-icon",51),C(1),h(2,"translate")),a&2&&(m("size",14),r(),T(" ",v(2,2,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AI_GENERATE")," "))}function vt(a,u){if(a&1){let e=M();l(0,"label",32)(1,"span"),C(2),h(3,"translate"),s(),l(4,"input",60),F("ngModelChange",function(t){g(e);let n=c().$implicit;return U(n.subtitle,t)||(n.subtitle=t),_(t)}),f("ngModelChange",function(){g(e);let t=c(3);return _(t.queueSave())}),s(),P(),s()}if(a&2){let e=c().$implicit;r(2),y(v(3,2,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SLIDE_SUBTITLE")),r(2),V("ngModel",e.subtitle),O()}}function xt(a,u){if(a&1){let e=M();l(0,"label",32)(1,"span"),C(2),h(3,"translate"),s(),l(4,"input",60),F("ngModelChange",function(t){g(e);let n=c().$implicit;return U(n.number,t)||(n.number=t),_(t)}),f("ngModelChange",function(){g(e);let t=c(3);return _(t.queueSave())}),s(),P(),s(),l(5,"label",32)(6,"span"),C(7),h(8,"translate"),s(),l(9,"input",60),F("ngModelChange",function(t){g(e);let n=c().$implicit;return U(n.subtitle,t)||(n.subtitle=t),_(t)}),f("ngModelChange",function(){g(e);let t=c(3);return _(t.queueSave())}),s(),P(),s()}if(a&2){let e=c().$implicit;r(2),y(v(3,4,"PROJECTS_BUILDER.PRESENTATION_EDITOR.CHAPTER_NUMBER")),r(2),V("ngModel",e.number),O(),r(3),y(v(8,6,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SLIDE_SUBTITLE")),r(2),V("ngModel",e.subtitle),O()}}function Ct(a,u){if(a&1){let e=M();l(0,"label",32)(1,"span"),C(2),h(3,"translate"),s(),l(4,"textarea",64),h(5,"translate"),f("ngModelChange",function(t){g(e);let n=c().$index,o=c(2);return _(o.setAgendaItems(n,t))}),s(),P(),s()}if(a&2){let e=c().$implicit,i=c(2);r(2),y(v(3,3,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AGENDA_ITEMS")),r(2),m("ngModel",i.agendaItemsText(e))("placeholder",v(5,5,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AGENDA_ITEMS_HINT")),O()}}function bt(a,u){if(a&1){let e=M();l(0,"label",32)(1,"span"),C(2),h(3,"translate"),s(),l(4,"textarea",64),h(5,"translate"),f("ngModelChange",function(t){g(e);let n=c().$index,o=c(2);return _(o.setStatCards(n,t))}),s(),P(),s()}if(a&2){let e=c().$implicit,i=c(2);r(2),y(v(3,3,"PROJECTS_BUILDER.PRESENTATION_EDITOR.STAT_CARDS")),r(2),m("ngModel",i.statCardsText(e))("placeholder",v(5,5,"PROJECTS_BUILDER.PRESENTATION_EDITOR.STAT_CARDS_HINT")),O()}}function Et(a,u){if(a&1){let e=M();l(0,"label",32)(1,"span"),C(2),h(3,"translate"),s(),l(4,"textarea",65),f("ngModelChange",function(t){g(e);let n=c().$index,o=c(2);return _(o.setBullets(n,t))}),s(),P(),s()}if(a&2){let e=c().$implicit;r(2),y(v(3,2,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SLIDE_BULLETS")),r(2),m("ngModel",(e.bullets??Z(4,at)).join(` 2`)),O()}}function It(a,u){if(a&1){let e=M();l(0,"div",38)(1,"div",52)(2,"span",53),C(3),s(),l(4,"div",54)(5,"button",55),f("click",function(){let t=g(e).$index,n=c(2);return _(n.moveSlide(t,-1))}),I(6,"lucide-icon",56),s(),l(7,"button",55),f("click",function(){let t=g(e).$index,n=c(2);return _(n.moveSlide(t,1))}),I(8,"lucide-icon",57),s(),l(9,"button",58),f("click",function(){let t=g(e).$index,n=c(2);return _(n.removeSlide(t))}),I(10,"lucide-icon",59),s()()(),l(11,"label",32)(12,"span"),C(13),h(14,"translate"),s(),l(15,"input",60),F("ngModelChange",function(t){let n=g(e).$implicit;return U(n.title,t)||(n.title=t),_(t)}),f("ngModelChange",function(){g(e);let t=c(2);return _(t.queueSave())}),s(),P(),s(),k(16,vt,5,4,"label",32)(17,xt,10,8)(18,Ct,6,7,"label",32)(19,bt,6,7,"label",32)(20,Et,5,5,"label",32),l(21,"button",61),f("click",function(){g(e);let t=ue(26);return _(t.click())}),I(22,"lucide-icon",62),C(23),h(24,"translate"),s(),l(25,"input",63,1),f("change",function(t){let n=g(e).$index,o=c(2);return _(o.onImageSelected(n,t))}),s()()}if(a&2){let e=u.$implicit,i=u.$index,t=c(2);m("id","pv-slide-"+i),r(3),y(i+1),r(2),m("disabled",i===0),r(),m("size",13),r(),m("disabled",i===t.data.slides.length-1),r(),m("size",13),r(2),m("size",13),r(3),y(v(14,12,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SLIDE_TITLE")),r(2),V("ngModel",e.title),O(),r(),N(e.layout==="title"?16:e.layout==="chapter"?17:e.layout==="agenda"?18:e.layout==="stats"?19:20),r(6),m("size",13),r(),T(" ",v(24,14,"PROJECTS_BUILDER.PRESENTATION_EDITOR.ADD_IMAGE")," ")}}function Tt(a,u){if(a&1){let e=M();l(0,"div",18)(1,"div",23)(2,"div",24)(3,"h3",25),C(4),h(5,"translate"),s(),l(6,"div",26),J(7,gt,3,5,"button",27,lt),s(),l(9,"label",28)(10,"span"),C(11),h(12,"translate"),s(),l(13,"select",29),f("ngModelChange",function(t){g(e);let n=c();return _(n.setDocFont(t))}
2),l(14,"option",30),C(15),h(16,"translate"),s(),J(17,_t,2,2,"option",31,K),s(),P(),s()(),l(19,"div",24)(20,"h3",25),C(21),h(22,"translate"),s(),l(23,"label",32)(24,"span"),C(25),h(26,"translate"),s(),l(27,"input",33),h(28,"translate"),F("ngModelChange",function(t){g(e);let n=c();return U(n.aiTopic,t)||(n.aiTopic=t),_(t)}),s(),P(),s(),l(29,"button",34),f("click",function(){g(e);let t=c();return _(t.generateWithAi())}),k(30,ht,3,4)(31,ft,3,4),s()(),l(32,"div",24)(33,"div",35)(34,"h3",25),C(35),h(36,"translate"),s(),l(37,"button",36),f("click",function(){g(e);let t=c();return _(t.addSlide())}),I(38,"lucide-icon",37),C(39),h(40,"translate"),s()(),J(41,It,27,16,"div",38,de),s()(),l(43,"div",39)(44,"div",40)(45,"span",41),C(46),h(47,"translate"),s(),l(48,"div",42)(49,"button",43),f("click",function(){g(e);let t=c();return _(t.zoomOut())}),I(50,"lucide-icon",44),s(),l(51,"span"),C(52),s(),l(53,"button",43),f("click",function(){g(e);let t=c();return _(t.zoomIn())}),I(54,"lucide-icon",37),s()()(),l(55,"div",45),C(56),h(57,"translate"),s(),l(58,"div",46)(59,"div",47,0),f("input",function(t){g(e);let n=c();return _(n.onPreviewInput(t))})("blur",function(t){g(e);let n=c();return _(n.onPreviewBlur(t))})("focusout",function(t){g(e);let n=c();return _(n.onPreviewBlur(t))})("keydown",function(t){g(e);let n=c();return _(n.onPreviewKeydown(t))})("pointerdown",function(t){g(e);let n=c();return _(n.onHandlePointerDown(t))})("click",function(t){g(e);let n=c();return _(n.onPreviewClick(t))}),I(61,"div",48),s()()()()}if(a&2){let e=c();r(4),y(v(5,24,"PROJECTS_BUILDER.EDITOR.TEMPLATE")),r(3),W(e.templateList),r(4),y(v(12,26,"PROJECTS_BUILDER.PRESENTATION_EDITOR.DOC_FONT")),r(2),m("ngModel",e.data.fontFamily??""),O(),r(2),T(" ",v(16,28,"PROJECTS_BUILDER.PRESENTATION_EDITOR.DOC_FONT_DEFAULT")," "),r(2),W(e.fontList),r(4),T(" ",v(22,30,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AI_TITLE")," "),r(4),y(v(26,32,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AI_TOPIC_LABEL")),r(2),V("ngModel",e.aiTopic),m("placeholder",v(28,34,"PROJECTS_BUILDER.PRESENTATION_EDITOR.AI_TOPIC_PLACEHOLDER"))("disabled",e.aiGenerating()),O(),r(2),m("disabled",!e.aiTopic.trim()||e.aiGenerating()),r(),N(e.aiGenerating()?30:31),r(5),T(" ",v(36,36,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SLIDES")," "),r(3),m("size",13),r(),T(" ",v(40,38,"PROJECTS_BUILDER.PRESENTATION_EDITOR.ADD_SLIDE")," "),r(2),W(e.data.slides),r(5),T(" ",v(47,40,"PROJECTS_BUILDER.EDITOR.PREVIEW")," "),r(4),m("size",13),r(2),T("",(e.zoom()*100).toFixed(0),"%"),r(2),m("size",13),r(2),T(" ",v(57,42,"PROJECTS_BUILDER.PRESENTATION_EDITOR.PREVIEW_EDIT_HINT")," "),r(3),G("transform","scale("+e.zoom()+")")("height",e.storyboardHeight()*e.zoom()+24,"px"),r(2),m("innerHTML",e.storyboardHtml(),se)}}function St(a,u){if(a&1&&(l(0,"option",31),C(1),s()),a&2){let e=u.$implicit;m("value",e),r(),y(e)}}function wt(a,u){if(a&1){let e=M();l(0,"div",66)(1,"select",67),f("ngModelChange",function(t){g(e);let n=c();return _(n.setFont(t))}),J(2,St,2,2,"option",31,K),s(),P(),l(4,"input",68),f("change",function(t){g(e);let n=c();return _(n.setSize(t.target.valueAsNumber))}),s(),l(5,"input",69),h(6,"translate"),f("ngModelChange",function(t){g(e);let n=c();return _(n.setColor(t))}),s(),P(),I(7,"span",70),l(8,"button",71),h(9,"translate"),f("mousedown",function(t){g(e);let n=c();return _(n.applyFormat("bold",t))}),I(10,"lucide-icon",72),s(),l(11,"button",71),h(12,"translate"),f("mousedown",function(t){g(e);let n=c();return _(n.applyFormat("italic",t))}),I(13,"lucide-icon",73),s(),l(14,"button",71),h(15,"translate"),f("mousedown",function(t){g(e);let n=c();return _(n.applyFormat("underline",t))}),I(16,"lucide-icon",74),s(),I(17,"span",70),l(18,"button",71),h(19,"translate"),f("mousedown",function(t){g(e);let n=c();return _(n.setAlign("left",t))}),I(20,"lucide-icon",75),s(),l(21,"button",71),h(22,"translate"),f("mousedown",function(t){g(e);let n=c();return _(n.setAlign("center",t))}),I(23,"lucide-icon",76),s(),l(24,"button",71),h(25,"translate"),f("mousedown",function(t){g(e);let n=c();return _(n.setAlign("right",t))}),I(26,"lucide-icon",77),s()()}if(a&2){let e=u,i=c();G("left",e.x,"px")("top",e.y,"px"),r(),m("ngModel",e.font),O(),r(),W(i.fontList),r(2),m("value",e.size),r(),m("ngModel",e.color)("title",v(6,32,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_COLOR")),O(),r(3),A("is-active",e.bold),m("title",v(9,34,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_BOLD")),r(2),m("size",14),r(),A("is-active",e.italic),m("title",v(12,36,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_ITALIC")),r(2),m("size",14),r(),A("is-active",e.underline),m("title",v(15,38,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_UNDERLINE")),r(2),m("size",14),r(2),A("is-active",e.align==="left"),m("title",v(19,40,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_ALIGN_LEFT")),r(2),m("size",14),r(),A("is-active",e.align==="center"),m("title",v(22,42,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_ALIGN_CENTER")),r(2),m("size",14),r(),A("is-active",e.align==="right"),m("title",v(25,44,"PROJECTS_BUILDER.PRESENTATION_EDITOR.RT_ALIGN_RIGHT")),r(2),m("size",14)}}function yt(a,u){if(a&1){let e=M();l(0,"div",78),f("click",function(){g(e);let t=c();return _(t.cancelTemplateSwitch())}),l(1,"div",79),f("click",function(t){return t.stopPropagation()}),l(2,"h3",80),C(3),h(4,"translate"),s(),l(5,"p",81),C(6),h(7,"translate"),s(),l(8,"div",82)(9,"button",83),f("click",function(){g(e);let t=c();return _(t.cancelTemplateSwitch())}),C(10),h(11,"translate"),s(),l(12,"button",84),f("click",function(){g(e);let t=c();return _(t.confirmTemplateSwitch())}),C(13),h(14,"translate"),s()()()()}a&2&&(r(3),T(" ",v(4,4,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SWITCH_TEMPLATE_TITLE")," "),r(3),T(" ",_e(7,6,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SWITCH_TEMPLATE_BODY",ge(13,st,u.name))," "),r(4),T(" ",v(11,9,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SWITCH_TEMPLATE_KEEP")," "),r(3),T(" ",v(14,11,"PROJECTS_BUILDER.PRESENTATION_EDITOR.SWITCH_TEMPLATE_REPLACE")," "))}function Pt(a,u){if(a&1){let e=M();l(0,"button",88),f("click",function(){let t=g(e).$implicit,n=c(2);return _(n.pickIcon(t.key))}),I(1,"lucide-icon",89),s()}if(a&2){let e=u.$implicit;m("title",e.key),r(),m("name",e.lucideName)("size",20)}}function Ot(a,u){if(a&1){let e=M();l(0,"div",78),f("click",function(){g(e);let t=c();return _(t.closeIconPicker())}),l(1,"div",85),f("click",function(t){return t.stopPropagation()}),l(2,"h3",80),C(3),h(4,"translate"),s(),l(5,"div",86),J(6,Pt,2,3,"button",87,dt),s(),l(8,"div",82)(9,"button",83),f("click",function(){g(e);let t=c();return _(t.closeIconPicker())}),C(10),h(11,"translate"),s()()()()}if(a&2){let e=c();r(3),T(" ",v(4,2,"PROJECTS_BUILDER.PRESENTATION_EDITOR.ICON_PICKER_TIT
2LE")," "),r(3),W(e.iconPickerList),r(4),T(" ",v(11,4,"PROJECTS_BUILDER.PRESENTATION_EDITOR.ICON_PICKER_CANCEL")," ")}}function qe(a){let u=(a||"").replace(/^["']|["']$/g,"").split(",")[0].trim();return ie.find(i=>i.toLowerCase()===u.toLowerCase())||ie[0]}function Rt(a,u){return a.bold===u.bold&&a.italic===u.italic&&a.underline===u.underline&&a.color===u.color&&a.font===u.font&&a.size===u.size}function Dt(a){let u=[];for(let e of a){let i=u[u.length-1];i&&Rt(i,e)?i.text+=e.text:u.push(D({},e))}return u}function te(a){let u=a.match(/\d+/g);return!u||u.length<3?a.startsWith("#")?a:"#000000":"#"+u.slice(0,3).map(e=>Math.max(0,Math.min(255,Number(e))).toString(16).padStart(2,"0")).join("")}var ot,rt,at,st,lt,dt,Mt,je,ie,ni,kt=Ge(()=>{fe();Ke();Ue();Ie();Ze();ye();Me();Xe();Ye();nt();et();Qe();tt();it();fe();Ie();Ue();Me();ye();ot=["previewScale"],rt=()=>["projects"],at=()=>[],st=a=>({name:a}),lt=(a,u)=>u.id,dt=(a,u)=>u.key;Mt=["Calibri","Arial","Georgia","Verdana","Times New Roman","Courier New","Trebuchet MS"],je=["Inter","Roboto","Open Sans","Lato","Montserrat","Poppins","Raleway","Nunito","Oswald","Playfair Display","Merriweather","PT Serif"],ie=[...Mt,...je];ni=(()=>{class a{projectService=L(He);route=L(xe);router=L(Ce);translate=L(Te);platformId=L(ae);doc=L(re);sanitizer=L(ve);docId=0;title="";data={slides:[]};aiTopic="";templateList=Object.values(Q);templateId=w("presentation-minimal-1");loading=w(!0);saving=w(!1);savedOnce=w(!1);exporting=w(!1);aiGenerating=w(!1);error=w(null);zoom=w(z(this.platformId)&&window.innerWidth<640?.4:1);currentTemplate=he(()=>ee(this.templateId()));storyboardHtml=w("");storyboardHeight=w(554);selectedImage=w(null);history=[];historyIndex=-1;lastCheckpointAt=0;static HISTORY_COALESCE_MS=800;static HISTORY_MAX=50;canUndo=w(!1);canRedo=w(!1);snapshotNow(){return JSON.stringify({data:this.data,title:this.title,templateId:this.templateId()})}updateUndoRedoFlags(){this.canUndo.set(this.historyIndex>0),this.canRedo.set(this.historyIndex<this.history.length-1)}initHistory(){this.history=[this.snapshotNow()],this.historyIndex=0,this.lastCheckpointAt=Date.now(),this.updateUndoRedoFlags()}checkpoint(){let e=Date.now();if(this.history.length>0&&e-this.lastCheckpointAt<a.HISTORY_COALESCE_MS){this.history[this.historyIndex]=this.snapshotNow();return}this.lastCheckpointAt=e,this.history=this.history.slice(0,this.historyIndex+1),this.history.push(this.snapshotNow()),this.historyIndex=this.history.length-1,this.history.length>a.HISTORY_MAX&&(this.history.shift(),this.historyIndex--),this.updateUndoRedoFlags()}restoreSnapshot(e){let i=JSON.parse(e);this.data=i.data,this.title=i.title,this.templateId.set(i.templateId),this.selectedImage.set(null),this.refreshStoryboard(),this.save$.next()}undo(){this.historyIndex<=0||(this.historyIndex--,this.restoreSnapshot(this.history[this.historyIndex]),this.updateUndoRedoFlags())}redo(){this.historyIndex>=this.history.length-1||(this.historyIndex++,this.restoreSnapshot(this.history[this.historyIndex]),this.updateUndoRedoFlags())}onGlobalKeydown(e){if(!z(this.platformId)||!(e.metaKey||e.ctrlKey))return;let t=e.key.toLowerCase();t!=="z"&&t!=="y"||this.doc.activeElement?.hasAttribute("contenteditable")||(t==="z"&&!e.shiftKey?(e.preventDefault(),this.undo()):(t==="z"&&e.shiftKey||t==="y")&&(e.preventDefault(),this.redo()))}refreshStoryboard(){let e=this.currentTemplate(),i=`<style>${e.css}</style>${e.render(this.data,{editable:!0})}`;this.storyboardHtml.set(this.sanitizer.bypassSecurityTrustHtml(i));let t=this.data.slides.length||1;this.storyboardHeight.set(t*554),this.refocusSelectedImage()}refocusSelectedImage(){let e=this.selectedImage();!e||!z(this.platformId)||setTimeout(()=>{if(this.selectedImage()!==e)return;this.previewScaleRef?.nativeElement?.querySelector(`.pptv-slide[data-slide="${e.slideIndex}"] .pptv-img-block[data-image-id="${e.imageId}"]`)?.focus({preventScroll:!0})},0)}save$=new ne;subs=[];previewScaleRef;fontList=ie;toolbarState=w(null);fieldOf(e){let i=e.closest("[data-slide]"),t=e.getAttribute("data-field");if(!i||!t)return null;
2let n=Number(i.getAttribute("data-slide"));return Number.isNaN(n)?null:{slideIndex:n,field:t}}onPreviewInput(e){let i=e.target;i.hasAttribute("contenteditable")&&this.commitFieldFromDom(i)}commitFieldFromDom(e,i="debounced"){let t=this.fieldOf(e);if(!t)return;let n=this.data.slides[t.slideIndex];if(!n)return;let o=e.textContent??"",d=this.parseRichText(e);if(t.field==="title")n.title=o,n.titleRuns=d;else if(t.field==="subtitle")n.subtitle=o,n.subtitleRuns=d;else if(t.field.startsWith("bullet-")){let p=Number(t.field.slice(7));n.bullets??=[],n.bullets[p]=o,n.bulletsRuns??=[],n.bulletsRuns[p]=d}else if(t.field==="number")n.number=o;else if(t.field.startsWith("agenda-label-")){let p=Number(t.field.slice(13));n.agendaItems?.[p]&&(n.agendaItems[p].label=o)}else if(t.field.startsWith("stats-value-")){let p=Number(t.field.slice(12));n.statCards?.[p]&&(n.statCards[p].value=o)}else if(t.field.startsWith("stats-label-")){let p=Number(t.field.slice(12));n.statCards?.[p]&&(n.statCards[p].label=o)}else return;i==="debounced"&&this.queueSaveFromPreview()}onPreviewBlur(e){let i=e.target;if(!i.hasAttribute("contenteditable")||e.relatedTarget?.closest(".pv-rt-toolbar"))return;let n=this.fieldOf(i);if(!n)return;let o=this.data.slides[n.slideIndex];if(o){if(n.field==="title")o.title=(o.title??"").trim();else if(n.field==="subtitle")o.subtitle=(o.subtitle??"").trim();else if(n.field==="number")o.number=(o.number??"").trim();else if(n.field.startsWith("bullet-")){let d=Number(n.field.slice(7));o.bullets?.[d]!==void 0&&(o.bullets[d]=o.bullets[d].trim())}else if(n.field.startsWith("agenda-label-")){let d=Number(n.field.slice(13));o.agendaItems?.[d]&&(o.agendaItems[d].label=o.agendaItems[d].label.trim())}else if(n.field.startsWith("stats-value-")){let d=Number(n.field.slice(12));o.statCards?.[d]&&(o.statCards[d].value=o.statCards[d].value.trim())}else if(n.field.startsWith("stats-label-")){let d=Number(n.field.slice(12));o.statCards?.[d]&&(o.statCards[d].label=o.statCards[d].label.trim())}this.refreshStoryboard()}}onPreviewKeydown(e){let i=e.target,t=i.closest?.(".pptv-img-block");if(t){this.handleImageKeydown(t,e);return}e.key!=="Enter"||!i.hasAttribute("contenteditable")||(e.preventDefault(),i.blur())}handleImageKeydown(e,i){let t=this.imageLocOf(e);if(!t)return;let n=this.findImage(t.slideIndex,t.imageId);if(!n)return;if(i.key==="Delete"||i.key==="Backspace"){i.preventDefault();let d=this.data.slides[t.slideIndex];d?.images&&(d.images=d.images.filter(p=>p.id!==t.imageId)),this.selectedImage.set(null),this.queueSave();return}let o=i.shiftKey?10:1;if(i.key==="ArrowLeft")n.x-=o;else if(i.key==="ArrowRight")n.x+=o;else if(i.key==="ArrowUp")n.y-=o;else if(i.key==="ArrowDown")n.y+=o;else return;i.preventDefault(),e.style.left=`${n.x}px`,e.style.top=`${n.y}px`,this.queueSaveFromPreview()}onSelectionChange(){if(!z(this.platformId)||this.doc.activeElement?.closest(".pv-rt-toolbar"))return;let e=window.getSelection();if(!e||e.rangeCount===0||e.isCollapsed){this.toolbarState.set(null);return}let i=e.anchorNode,t=i?.nodeType===Node.TEXT_NODE?i.parentElement:i,n=this.previewScaleRef?.nativeElement,o=t?.closest("[contenteditable]");if(!o||!n?.contains(o)){this.toolbarState.set(null);return}let d=this.fieldOf(o);if(!d){this.toolbarState.set(null);return}let p=d.field.startsWith("bullet-");if(!(d.field==="title"||d.field==="subtitle"||p)){this.toolbarState.set(null);return}let b=e.getRangeAt(0),E=b.getBoundingClientRect();if(E.width===0&&E.height===0){this.toolbarState.set(null);return}let S=this.data.slides[d.slideIndex],R=p?"bulletsAlign":d.field==="title"?"titleAlign":"subtitleAlign",$=p?"bulletsSize":d.field==="title"?"titleSize":"subtitleSize",H=d.field==="title"?this.currentSlide(d.slideIndex)?.layout==="title"?56:32:d.field==="subtitle"?26:24,q=this.inlineStyleAt(t,o);this.toolbarState.set({x:E.left+E.width/2,y:E.top,slideIndex:d.slideIndex,field:d.field,el:o,savedRange:b.cloneRange(),bold:document.queryCommandState("bold"),italic:document.queryCommandState("italic"),underline:document.queryCommandState("underline"),color:q.color??te(document.queryCommandValue("foreColor")||"#000000"),font:q.font?qe(q.font):qe(document.queryCommandValue("fontName")),size:q.size??S[$]??H,align:S[R]||"left"})}currentSlide(e){return this.data.slides[e]}inlineStyleAt(e,i){let t={},n=e;for(;n&&n!==i.parentElement;){if(t.size===void 0&&n.style?.fontSize){let o=parseFloat(n.style.fontSize);Number.isNaN(o)||(t.size=Math.round(o))}
2if(t.font===void 0&&n.style?.fontFamily&&(t.font=n.style.fontFamily.replace(/['"]/g,"").split(",")[0].trim()),t.color===void 0&&n.style?.color&&(t.color=te(n.style.color)),n.tagName?.toLowerCase()==="font"&&(t.font===void 0&&n.getAttribute("face")&&(t.font=n.getAttribute("face")??void 0),t.color===void 0&&n.getAttribute("color")&&(t.color=n.getAttribute("color")??void 0)),n===i)break;n=n.parentElement}return t}restoreSelection(){let e=this.toolbarState();if(!e)return;e.el.focus({preventScroll:!0});let i=window.getSelection();i&&(i.removeAllRanges(),i.addRange(e.savedRange))}commitToolbarChange(){let e=this.toolbarState();if(!e)return;this.commitFieldFromDom(e.el);let i=window.getSelection();if(i&&i.rangeCount>0){let t=i.getRangeAt(0);if(e.el.contains(t.commonAncestorContainer)){let n=t.cloneRange();this.toolbarState.update(o=>o&&B(D({},o),{savedRange:n}))}}}applyFormat(e,i){i.preventDefault(),document.execCommand(e),this.commitToolbarChange(),this.toolbarState.update(t=>t&&B(D({},t),{bold:document.queryCommandState("bold"),italic:document.queryCommandState("italic"),underline:document.queryCommandState("underline")}))}setFont(e){this.restoreSelection(),document.execCommand("fontName",!1,e),this.commitToolbarChange(),this.toolbarState.update(i=>i&&B(D({},i),{font:e}))}setSize(e){let i=this.toolbarState();i&&(this.restoreSelection(),document.execCommand("fontSize",!1,"7"),i.el.querySelectorAll('font[size="7"]').forEach(t=>{let n=t;n.removeAttribute("size"),n.style.fontSize=`${e}px`}),this.commitToolbarChange(),this.toolbarState.update(t=>t&&B(D({},t),{size:e})))}setColor(e){this.restoreSelection(),document.execCommand("foreColor",!1,e),this.commitToolbarChange(),this.toolbarState.update(i=>i&&B(D({},i),{color:e}))}setAlign(e,i){i.preventDefault();let t=this.toolbarState();if(!t)return;let n=this.data.slides[t.slideIndex],o=t.field.startsWith("bullet-"),d=o?"bulletsAlign":t.field==="title"?"titleAlign":"subtitleAlign";n[d]=e;let p=o?t.el.closest(".pptv-list"):t.el;p&&(p.style.textAlign=e),this.toolbarState.update(x=>x&&B(D({},x),{align:e})),this.queueSave()}parseRichText(e){let i=[],t=(n,o)=>
2{if(n.nodeType===Node.TEXT_NODE){let E=n.textContent??"";E&&i.push(D({text:E},o));return}if(n.nodeType!==Node.ELEMENT_NODE)return;let d=n,p=d.tagName.toLowerCase(),x=D({},o);(p==="b"||p==="strong")&&(x.bold=!0),(p==="i"||p==="em")&&(x.italic=!0),p==="u"&&(x.underline=!0);let b=d.style;if((b.fontWeight==="bold"||Number(b.fontWeight)>=600)&&(x.bold=!0),b.fontStyle==="italic"&&(x.italic=!0),(b.textDecorationLine?.includes("underline")||b.textDecoration?.includes("underline"))&&(x.underline=!0),b.color&&(x.color=te(b.color)),b.fontFamily&&(x.font=b.fontFamily.replace(/['"]/g,"").split(",")[0].trim()),b.fontSize){let E=parseFloat(b.fontSize);Number.isNaN(E)||(x.size=Math.round(E))}if(p==="font"){let E=d.getAttribute("face");E&&(x.font=E);let S=d.getAttribute("color");S&&(x.color=S)}d.childNodes.forEach(E=>t(E,x))};return e.childNodes.forEach(n=>t(n,{})),Dt(i)}static SIZE_DEFAULTS={titleSize:56,subtitleSize:26,bulletsSize:24};static SIZE_BOUNDS={titleSize:[20,120],subtitleSize:[12,64],bulletsSize:[12,48]};activeDrag=null;onHandlePointerDown(e){let i=e.target;i.classList.contains("pptv-resize-handle")?this.fieldOf(i)?.field.startsWith("icon-size-")?this.startIconResizeDrag(i,e):this.startResizeDrag(i,e):i.classList.contains("pptv-move-handle")?this.fieldOf(i)?.field.startsWith("icon-offset-")?this.startIconMoveDrag(i,e):this.startMoveDrag(i,e):i.classList.contains("pptv-img-move")?this.startImageMoveDrag(i,e):i.classList.contains("pptv-img-resize")?this.startImageResizeDrag(i,e):!i.closest(".pptv-img-block")&&this.selectedImage()&&this.selectedImage.set(null)}onPreviewClick(e){let i=e.target;if(i.classList.contains("pptv-img-del")){let n=this.imageLocOf(i);if(!n)return;let o=this.data.slides[n.slideIndex];if(!o?.images)return;o.images=o.images.filter(d=>d.id!==n.imageId),this.selectedImage()?.slideIndex===n.slideIndex&&this.selectedImage()?.imageId===n.imageId&&this.selectedImage.set(null),this.queueSave();return}if(i.classList.contains("pptv-icon-del")){let n=this.iconCardOf(i,"icon-del-");if(!n)return;let o=this.data.slides[n.slideIndex]?.statCards?.[n.cardIndex];o&&(o.icon=""),this.queueSave();return}if(i.getAttribute("data-field")?.startsWith("icon-pick-")){let n=this.iconCardOf(i,"icon-pick-");n&&this.iconPickerTarget.set(n)}}endDrag(){this.activeDrag&&(window.removeEventListener("pointermove",this.activeDrag.onMove),window.removeEventListener("pointerup",this.activeDrag.onUp),this.activeDrag=null,this.queueSave())}startResizeDrag(e,i){i.preventDefault();let t=this.fieldOf(e);if(!t)return;let n=t.field,o=this.data.slides[t.slideIndex],d=o[n]??a.SIZE_DEFAULTS[n]??24,p=i.clientY,x=e.parentElement?.querySelector(".pptv-target")??null,b=E=>{let S=(E.clientY-p)/this.zoom(),[R,$]=a.SIZE_BOUNDS[n],H=Math.round(Math.max(R,Math.min($,d+S)));x&&(x.style.fontSize=`${H}px`),o[n]=H};this.activeDrag={onMove:b,onUp:()=>this.endDrag()},window.addEventListener("pointermove",b),window.addEventListener("pointerup",this.activeDrag.onUp,{once:!0})}startMoveDrag(e,i){i.preventDefault();let t=this.fieldOf(e);if(!t)return;let n=t.field,o=this.data.slides[t.slideIndex],d=o[n]??{x:0,y:0},p=i.clientX,x=i.clientY,b=e.parentElement,E=S=>{let R=Math.round(d.x+(S.clientX-p)/this.zoom()),$=Math.round(d.y+(S.clientY-x)/this.zoom());b&&(b.style.transform=`translate(${R}px, ${$}px)`),o[n]={x:R,y:$}};this.activeDrag={onMove:E,onUp:()=>this.endDrag()},window.addEventListener("pointermove",E),window.addEventListener("pointerup",this.activeDrag.onUp,{once:!0})}static ICON_SIZE_MIN=14;static ICON_SIZE_MAX=80;iconCardOf(e,i){let t=this.fieldOf(e);if(!t||!t.field.startsWith(i))return null;let n=Number(t.field.slice(i.length));return Number.isNaN(n)?null:{slideIndex:t.slideIndex,cardIndex:n}}startIconMoveDrag(e,i){i.preventDefault();let t=this.iconCardOf(e,"icon-offset-");if(!t)return;let n=this.data.slides[t.slideIndex]?.statCards?.[t.cardIndex];if(!n)return;let o=n.iconOffset??{x:0,y:0},d=i.clientX,p=i.clientY,x=e.parentElement,b=E=>{let S=Math.round(o.x+(E.clientX-d)/this.zoom()),R=Math.round(o.y+(E.clientY-p)/this.zoom());x&&(x.style.transform=`translate(${S}px, ${R}px)`),n.iconOffset={x:S,y:R}};this.activeDrag={onMove:b,onUp:()=>
2this.endDrag()},window.addEventListener("pointermove",b),window.addEventListener("pointerup",this.activeDrag.onUp,{once:!0})}startIconResizeDrag(e,i){i.preventDefault();let t=this.iconCardOf(e,"icon-size-");if(!t)return;let n=this.data.slides[t.slideIndex]?.statCards?.[t.cardIndex];if(!n)return;let o=n.iconSize??28,d=i.clientY,p=e.parentElement?.querySelector(".pptv-stat-icon svg"),x=b=>{let E=(b.clientY-d)/this.zoom(),S=Math.round(Math.max(a.ICON_SIZE_MIN,Math.min(a.ICON_SIZE_MAX,o+E)));n.iconSize=S,p&&(p.setAttribute("width",String(S)),p.setAttribute("height",String(S)))};this.activeDrag={onMove:x,onUp:()=>this.endDrag()},window.addEventListener("pointermove",x),window.addEventListener("pointerup",this.activeDrag.onUp,{once:!0})}iconPickerTarget=w(null);iconPickerList=$e;pickIcon(e){let i=this.iconPickerTarget();if(!i)return;let t=this.data.slides[i.slideIndex]?.statCards?.[i.cardIndex];t&&(t.icon=e),this.iconPickerTarget.set(null),this.queueSave()}closeIconPicker(){this.iconPickerTarget.set(null)}imageLocOf(e){let i=e.closest("[data-slide]"),t=e.getAttribute("data-image-id");if(!i||!t)return null;let n=Number(i.getAttribute("data-slide"));return Number.isNaN(n)?null:{slideIndex:n,imageId:t}}findImage(e,i){return this.data.slides[e]?.images?.find(t=>t.id===i)}static IMG_MIN=40;static IMG_MAX=900;startImageMoveDrag(e,i){i.preventDefault();let t=this.imageLocOf(e);if(!t)return;let n=this.findImage(t.slideIndex,t.imageId);if(!n)return;let o=e.parentElement;this.selectedImage.set(t),o?.focus({preventScroll:!0});let d=i.clientX,p=i.clientY,x={x:n.x,y:n.y},b=E=>{n.x=Math.round(x.x+(E.clientX-d)/this.zoom()),n.y=Math.round(x.y+(E.clientY-p)/this.zoom()),o&&(o.style.left=`${n.x}px`,o.style.top=`${n.y}px`)};this.activeDrag={onMove:b,onUp:()=>this.endDrag()},window.addEventListener("pointermove",b),window.addEventListener("pointerup",this.activeDrag.onUp,{once:!0})}startImageResizeDrag(e,i){i.preventDefault();let t=this.imageLocOf(e);if(!t)return;let n=this.findImage(t.slideIndex,t.imageId);if(!n)return;let o=e.parentElement;this.selectedImage.set(t),o?.focus({preventScroll:!0});let d=i.clientX,p=n.width,x=n.height/n.width,b=E=>{let S=(E.clientX-d)/this.zoom(),R=Math.round(Math.max(a.IMG_MIN,Math.min(a.IMG_MAX,p+S)));n.width=R,n.height=Math.round(R*x),o&&(o.style.width=`${n.width}px`,o.style.height=`${n.height}px`)};this.activeDrag={onMove:b,onUp:()=>this.endDrag()},window.addEventListener("pointermove",b),window.addEventListener("pointerup",this.activeDrag.onUp,{once:!0})}fileToImageDataUri(e){return j(this,null,function*(){let t=yield createImageBitmap(e),n=Math.min(1,1e3/Math.max(t.width,t.height)),o=Math.max(1,Math.round(t.width*n)),d=Math.max(1,Math.round(t.height*n)),p=this.doc.createElement("canvas");p.width=o,p.height=d;let x=p.getContext("2d");if(!x)throw new Error("canvas unavailable");return x.drawImage(t,0,0,o,d),t.close?.(),{src:e.type==="image/png"?p.toDataURL("image/png"):p.toDataURL("image/jpeg",.85),naturalWidth:o,naturalHeight:d}})}onImageSelected(e,i){return j(this,null,function*(){let t=i.target,n=t.files?.[0];if(t.value="",!(!n||!z(this.platformId))){if(n.size>8*1024*1024){this.error.set(this.translate.instant("PROJECTS_BUILDER.ERROR.PHOTO_SIZE"));return}try{let{src:o,naturalWidth:d,naturalHeight:p}=yield this.fileToImageDataUri(n),x=Math.min(320,d),b=Math.round(x*(p/d)),E=this.data.slides[e];E.images??=[],E.images.push({id:`img-${Date.now()}-${Math.round(Math.random()*1e6)}`,src:o,x:Math.round((960-x)/2),y:Math.round((540-b)/2),width:x,height:b}),this.error.set(null),this.queueSave()}catch(o){this.error.set(this.translate.instant("PROJECTS_BUILDER.ERROR.PHOTO"))}}})}ngOnInit(){if(this.docId=Number(this.route.snapshot.paramMap.get("id")),!this.docId){let t=this.translate.currentLang||"en";this.router.navigate(["/",t,Re("projects",t)]);return}this.loadGoogleFonts();let e=this.projectService.get(this.docId).subscribe({next:t=>{if(this.title=t.title,this.templateId.set(t.template_id),t.content_data){let n=t.content_data;this.data={slides:Array.isArray(n.slides)?n.slides:[],fontFamily:n.fontFamily}}this.loading.set(!1),this.refreshStoryboard(),this.initHistory()},error:()=>{this.error.set(this.translate.instant("PROJECTS_BUILDER.ERROR.GENERIC")),this.loading.set(!1)}});this.subs.push(e);let i=this.save$.pipe(oe(900)).subscribe(()=>this.persist());this.subs.push(i)}googleFontsLinkEl=null;loadGoogleFonts(){if(!z(this.platformId))return;let e=je.map(t=>`family=${encodeURIComponent(t)}:wght@400;700`).join("&"),i=this.doc.createElement("link");i.rel="stylesheet",i.href=`https://fonts.googleapis.com/css2?${e}&display=swap`,this.doc.head.appendChild(i),this.googleFontsLinkEl=i}
2ngOnDestroy(){this.save$.complete(),this.subs.forEach(e=>e.unsubscribe()),this.activeDrag&&(window.removeEventListener("pointermove",this.activeDrag.onMove),window.removeEventListener("pointerup",this.activeDrag.onUp),this.activeDrag=null),this.googleFontsLinkEl?.remove()}setDocFont(e){this.data.fontFamily=e||void 0,this.queueSave()}queueSave(){this.loading()||(this.checkpoint(),this.refreshStoryboard(),this.save$.next())}queueSaveFromPreview(){this.loading()||(this.checkpoint(),this.save$.next())}persist(){this.saving.set(!0);let e=this.projectService.update(this.docId,{content_data:this.data,title:this.title,template_id:this.templateId()}).subscribe({next:()=>{this.saving.set(!1),this.savedOnce.set(!0)},error:()=>{this.saving.set(!1),this.error.set(this.translate.instant("PROJECTS_BUILDER.ERROR.SAVE"))}});this.subs.push(e)}templateSwitchTarget=w(null);switchTemplate(e){if(e!==this.templateId()){if(Je(e)){let i=ee(e);this.templateSwitchTarget.set({id:e,name:i.name});return}this.templateId.set(e),this.queueSave()}}confirmTemplateSwitch(){let e=this.templateSwitchTarget();if(!e)return;let i=We(e.id,t=>this.translate.instant(t));this.data.slides=i.slides,this.checkpoint(),this.templateId.set(e.id),this.queueSave(),this.templateSwitchTarget.set(null)}cancelTemplateSwitch(){let e=this.templateSwitchTarget();e&&(this.templateId.set(e.id),this.queueSave(),this.templateSwitchTarget.set(null))}addSlide(){this.data.slides.push({layout:"bullets",title:"",bullets:[]});let e=this.data.slides.length-1;this.queueSave(),this.scrollToSlide(e)}scrollToSlide(e){setTimeout(()=>{this.doc.getElementById(`pv-slide-${e}`)?.scrollIntoView({behavior:"smooth",block:"start"}),this.previewScaleRef?.nativeElement.querySelector(`[data-slide="${e}"]`)?.scrollIntoView({behavior:"smooth",block:"start"})},0)}removeSlide(e){this.data.slides.splice(e,1),this.queueSave()}moveSlide(e,i){let t=e+i;if(t<0||t>=this.data.slides.length)return;let[n]=this.data.slides.splice(e,1);this.data.slides.splice(t,0,n),this.queueSave()}setBullets(e,i){this.data.slides[e].bullets=i.split(` 3`).map(t=>t.trim()),this.queueSave()}agendaItemsText(e){return(e.agendaItems??[]).map(i=>`${i.number} ${i.label}`).join(` 4`)}setAgendaItems(e,i){this.data.slides[e].agendaItems=i.split(` 5`).map(t=>t.trim()).filter(Boolean).map(t=>{let n=t.match(/^(\S+)\s+(.*)$/);return n?{number:n[1],label:n[2]}:{number:"",label:t}}),this.queueSave()}statCardsText(e){return(e.statCards??[]).map(i=>`${i.icon}|${i.value}|${i.label}`).join(` 6`)}setStatCards(e,i){this.data.slides[e].statCards=i.split(` 7`).map(t=>t.trim()).filter(Boolean).map(t=>{let[n,o,d]=t.split("|").map(p=>(p??"").trim());return{icon:n||"sparkles",value:o||"",label:d||""}}),this.queueSave()}generateWithAi(){if(this.aiGenerating()||!this.aiTopic.trim())return;this.aiGenerating.set(!0),this.error.set(null);let e=this.translate.currentLang||"fr",i=this.projectService.generatePresentation(this.docId,this.aiTopic.trim(),6,e).subscribe({next:t=>{this.aiGenerating.set(!1);let n=t.slides;Array.isArray(n)&&n.length>0&&(this.data.slides=n,t.template_id&&Q[t.template_id]&&this.templateId.set(t.template_id),this.queueSave())},error:t=>{this.aiGenerating.set(!1),this.error.set(t.status===402?this.translate.instant("PROJECTS_BUILDER.ERROR.QUOTA"):this.translate.instant("PROJECTS_BUILDER.ERROR.AI"))}});this.subs.push(i)}zoomIn(){this.zoom.update(e=>Math.min(1.2,+(e+.1).toFixed(2)))}zoomOut(){this.zoom.update(e=>Math.max(.2,+(e-.1).toFixed(2)))}exportPptx(){return j(this,null,function*(){if(!(!z(this.platformId)||this.exporting())){this.exporting.set(!0),this.error.set(null);try{yield X(this.projectService.update(this.docId,{content_data:this.data,title:this.title,template_id:this.templateId()})),this.savedOnce.set(!0);let e=yield X(this.projectService.exportBlob(this.docId,"pptx","","")),i=URL.createObjectURL(e),t=this.doc.createElement("a");t.href=i,t.download=`${(this.title||"presentation").replace(/\s+/g,"_")}.pptx`,this.doc.body.appendChild(t),t.click(),this.doc.body.removeChild(t),URL.revokeObjectURL(i)}catch(e){this.error.set(this.translate.instant("PROJECTS_BUILDER.ERROR.EXPORT"))}finally{this.exporting.set(!1)}}})}static \u0275fac=function(i){return new(i||a)};static \u0275cmp=le({type:a,selectors:[["app-presentation-editor"]],viewQuery:function(i,t){if(i&1&&ce(ot,5),i&2){let n;pe(n=me())&&(t.previewScaleRef=n.first)}},hostBindings:function(i,t){i&1&&f("keydown",function(o){return t.onGlobalKeydown(o)},Y)("selectionchange",function(){return t.onSelectionChange()},Y)},decls:32,vars:30,consts:[["previewScale",""],["imgInput",""],[1,"pv-shell"],[1,"pv-topbar"],[1,"pv-back",3,"routerLink"],["name","ChevronLeft",3,"size"],["type","text",1,"pv-title-input",3,"ngModelChange","ngModel","placeholder"],[1,"pv-save-state"],[1,"pv-undo-group"],[1,"pv-btn","pv-btn--ghost","pv-btn--icon",3,"click","disabled","title"],["name","Undo2",3,"size"],["name","Redo2",3,"size"],[1,"pv-export-group"],[1,"pv-btn","pv-btn--primary",3,"click","disabled"],["name","Download",3,"size"],[1,"pv-privacy-row"],[1,"pv-alert"],[1,"pv-loading"],[1,"pv-layout"],[1,"pv-rt-toolbar",3,"left","top"],["role","dialog","aria-modal","true",1,"pv-confirm-overlay"],["name","RefreshCw",1,"pv-spin",3,"size"],["name","Check",3,"size"],[1,"pv-form"],[1,"pv-card"],[1,"pv-card-h"],[1,"pv-tpl-row"],[1,"pv-tpl",3,"is-active","--tpl-accent"],[1,"pv-field","pv-doc-font"],[3,"ngModelChange","ngModel"],["value",""],[3,"value"],[1,"pv-field"],["type","text",3,"ngModelChange","ngModel","placeholder","disabled"],[1,"pv-ai-generate",3,"click","disabled"],[1,"pv-card-head"],[1,"pv-add",3,"click"],["name","Plus",3,"size"],[1,"pv-sub",3,"id"],[1,"pv-preview-col"],[1,"pv-preview-bar"],[1,"pv-preview-label"],[1,"pv-zoom"],[3,"click"],["name","Minus",3,"size"],[1,"pv-preview-hint"],[1,"pv-preview-scroll"],[1,"pv-preview-scale",3,"input","blur","focusout","keydown","pointerdown","click"],[3,"innerHTML"],[1,"pv-tpl",3,"click"],[1,"pv-tpl-swatch"],["name","Sparkles",3,"size"],[1,"pv-sub-head"],[1,"pv-sub-n"],[1,"pv-sub-actions"],[1,"pv-move",3,"click","disabled"],["name","ChevronUp",3,"size"],["name","ChevronDown",3,"size"],[1,"pv-del",3,"click"],["name","Trash2",3,"size"],["type","text",3,"ngModelChange","ngModel"],[1,"pv-add","pv-add-img",3,"click"],["name","Image",3,"size"],["type","file","accept","image/png,image/jpeg,image/webp","hidden","",3,"change"],["rows","4",3,"ngModelChange","ngModel","placeholder"],["rows","3",3,"ngModelChange","ngModel"],[1,"pv-rt-toolbar"],[1,"pv-rt-select",3,"ngModelChange","ngModel"],["type","number","min","8","max","120",1,"pv-rt-size",3,"change","value"],["type","color",1,"pv-rt-color",3,"ngModelChange","ngModel","title"],[1,"pv-rt-sep"],["type","button",1,"pv-rt-btn",3,"mousedown","title"],["name","Bold",3,"size"],["name","Italic",3,"size"],["name","Underline",3,"size"],["name","AlignLeft",3,"size"],["name","AlignCenter",3,"size"],["name","AlignRight",3,"size"],["role","dialog","aria-modal","true",1,"pv-confirm-overlay",3,"click"],[1,"pv-confirm-card",3,"click"],[1,"pv-confirm-title"],[1,"pv-confirm-text"],[1,"pv-confirm-actions"],[1,"pv-confirm-btn","pv-confirm-btn--ghost",3,"click"],[1,"pv-confirm-btn","pv-confirm-btn--primary",3,"click"],[1,"pv-confirm-card","pv-icon-picker-card",3,"click"],[1,"pv-icon-picker-grid"],["type","button",1,"pv-icon-picker-btn",3,"title"],["type","button",1,"pv-icon-picker-btn",3,"click","title"],[3,"name","size"]],template:function(i,t){if(i&1&&(l(0,"div",2)(1,"div",3)(2,"a",4),h(3,"langLink"),I(4,"lucide-icon",5),l(5,"span"),C(6),h(7,"translate"),s()(),l(8,"input",6),h(9,"translate"),F("ngModelChange",function(o){return U(t.title,o)||(t.title=o),o}),f("ngModelChange",function(){return t.queueSave()}),s(),P(),l(10,"span",7),k(11,ct,3,4)(12,pt,3,4),s(),l(13,"div",8)(14,"button",9),h(15,"translate"),f("click",function(){return t.undo()}),I(16,"lucide-icon",10),s(),l(17,"button",9),h(18,"translate"),f("click",function(){return t.redo()}),I(19,"lucide-icon",11),s()(),l(20,"div",12)(21,"button",13),f("click",function(){return t.exportPptx()}),I(22,"lucide-icon",14),C(23," PPTX "),s()()(),l(24,"div",15),I(25,"app-privacy-badge"),s(),k(26,mt,2,1,"div",16),k(27,ut,2,1,"div",17)(28,Tt,62,44,"div",18),k(29,wt,27,46,"div",19),k(30,yt,15,15,"div",20),k(31,Ot,12,6,"div",20),s()),i&2){let n,o;r(2),m("routerLink",v(3,19,Z(29,rt))),r(2),m("size",16),r(2),y(v(7,21,"PROJECTS_BUILDER.EDITOR.BACK")),r(2),V("ngModel",t.title),m("placeholder",v(9,23,"PROJECTS_BUILDER.EDITOR.TITLE_PLACEHOLDER")),O(),r(3),N(t.saving()?11:t.savedOnce()?12:-1),r(3),m("disabled",!t.canUndo())("title",v(15,25,"PROJECTS_BUILDER.EDITOR.UNDO")),r(2),m("size",15),r(),m("disabled",!t.canRedo())("title",v(18,27,"PROJECTS_BUILDER.EDITOR.REDO")),r(2),m("size",15),r(2),m("disabled",t.exporting()),r(),m("size",14),r(4),N(t.error()?26:-1),r(),N(t.loading()?27:28),r(2),N((n=t.toolbarState())?29:-1,n),r(),N((o=t.templateSwitchTarget())?30:-1,o),r(),N(t.iconPickerTarget()?31:-1)}},dependencies:[we,Ee,be,Ve,ze,Be,ke,Ae,Ne,Le,Oe,Pe,Fe,Se,De],styles:['@charset "UTF-8";[_nghost-%COMP%]{--ig-text: #1f2937;--ig-muted: #6b7280;--ig-card-bg: #ffffff;--ig-border: rgba(0, 0, 0, .08);--ig-page-bg: #f1f3f7;display:block}[data-theme=dark][_nghost-%COMP%], [data-theme=dark] [_nghost-%COMP%]{--ig-text: #e5e7eb;--ig-muted: #9ca3af;--ig-card-bg: #1e2127;--ig-border: rgba(255, 255, 255, .09);--ig-page-bg: #15171c}.pv-shell[_ngcontent-%COMP%]{min-height:100vh;background:var(--ig-page-bg);padding:14px 18px 24px}.pv-topbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--ig-card-bg);border:1px solid var(--ig-border);border-radius:12px;padding:10px 14px;margin-bottom:14px}.pv-back[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;font-size:.84rem;color:var(--ig-muted);text-decoration:none;white-space:nowrap}.pv-back[_ngcontent-%COMP%]:hover{color:var(--primary, #3273dc)}.pv-title-input[_ngcontent-%COMP%]{flex:1;min-width:180px;border:1px solid var(--ig-border);background:var(--ig-alt-bg, rgba(127, 127, 127, .08));font-size:1rem;font-weight:700;color:var(--ig-text);padding:6px 9px;border-radius:8px;transition:border-color .15s,box-shadow .15s}.pv-title-input[_ngcontent-%COMP%]:hover{border-color:var(--primary, #3273dc)}.pv-title-input[_ngcontent-%COMP%]:focus{border-color:var(--primary, #3273dc);outline:none;background:var(--ig-card-bg);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary, #3273dc) 18%,transparent)}.pv-save-state[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;font-size:.75rem;color:var(--ig-muted);min-width:76px}.pv-export-group[_ngcontent-%COMP%], .pv-undo-group[_ngcontent-%COMP%]{display:flex;gap:7px}.pv-privacy-row[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;padding:6px 0 0}.pv-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;border-radius:8px;font-size:.8rem;font-weight:600;padding:7px 13px;
7cursor:pointer;border:1px solid transparent}.pv-btn[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.pv-btn--primary[_ngcontent-%COMP%]{background:var(--primary, #3273dc);color:#fff}.pv-btn--ghost[_ngcontent-%COMP%]{background:transparent;border-color:var(--ig-border);color:var(--ig-muted)}.pv-btn--ghost[_ngcontent-%COMP%]:hover:not(:disabled){color:var(--primary, #3273dc);border-color:var(--primary, #3273dc)}.pv-btn--icon[_ngcontent-%COMP%]{padding:7px 9px}@media(max-width:640px){.pv-title-input[_ngcontent-%COMP%]{flex-basis:100%}.pv-save-state[_ngcontent-%COMP%]{flex-basis:100%;min-width:0}.pv-export-group[_ngcontent-%COMP%]{width:100%}.pv-export-group[_ngcontent-%COMP%] .pv-btn[_ngcontent-%COMP%]{flex:1;justify-content:center}.pv-privacy-row[_ngcontent-%COMP%]{justify-content:center}}.pv-alert[_ngcontent-%COMP%]{background:#dc262614;border:1px solid rgba(220,38,38,.25);color:#b91c1c;border-radius:10px;padding:9px 13px;font-size:.84rem;margin-bottom:12px}.pv-loading[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:60px;color:var(--primary, #3273dc)}.pv-spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pv-spin 1s linear infinite}@keyframes _ngcontent-%COMP%_pv-spin{to{transform:rotate(360deg)}}.pv-layout[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(340px,1fr) minmax(420px,1.15fr);gap:16px;align-items:start}@media(max-width:1100px){.pv-layout[_ngcontent-%COMP%]{grid-template-columns:1fr}}.pv-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 110px);overflow-y:auto;padding-right:4px;min-width:0}@media(max-width:1100px){.pv-form[_ngcontent-%COMP%]{max-height:none;overflow:visible}}.pv-card[_ngcontent-%COMP%]{background:var(--ig-card-bg);border:1px solid var(--ig-border);border-radius:12px;padding:14px 16px;min-width:0}.pv-card-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}.pv-card-h[_ngcontent-%COMP%]{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ig-muted);margin:0 0 10px}.pv-card-head[_ngcontent-%COMP%] .pv-card-h[_ngcontent-%COMP%]{margin:0}.pv-field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px;margin-bottom:9px}.pv-field[_ngcontent-%COMP%]:last-child{margin-bottom:0}.pv-field[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.72rem;font-weight:600;color:var(--ig-muted)}.pv-card[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%], .pv-card[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:100%;border:1px solid var(--ig-border);background:transparent;border-radius:8px;padding:7px 10px;font-size:.85rem;color:var(--ig-text);font-family:inherit;resize:vertical}.pv-card[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]:focus, .pv-card[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--primary, #3273dc)}.pv-card[_ngcontent-%COMP%] input[type=text][_ngcontent-%COMP%]:disabled{opacity:.6}.pv-ai-generate[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;border:none;background:linear-gradient(135deg,var(--primary, #3273dc),#7c3aed);color:#fff;border-radius:8px;font-size:.82rem;font-weight:600;padding:9px 12px;cursor:pointer}.pv-ai-generate[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.pv-add[_ngcontent-%COMP%], .pv-del[_ngcontent-%COMP%], .pv-move[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--ig-border);background:transparent;border-radius:7px;font-size:.74rem;font-weight:600;padding:5px 9px;cursor:pointer;color:var(--ig-muted)}.pv-add[_ngcontent-%COMP%]:hover{color:var(--primary, #3273dc);border-color:var(--primary, #3273dc)}.pv-add-img[_ngcontent-%COMP%]{margin-top:9px}.pv-del[_ngcontent-%COMP%]{padding:5px 7px}.pv-del[_ngcontent-%COMP%]:hover{color:#dc2626;border-color:#dc2626}.pv-move[_ngcontent-%COMP%]{padding:5px 7px}.pv-move[_ngcontent-%COMP%]:hover:not(:disabled){color:var(--primary, #3273dc);border-color:var(--primary, #3273dc)}.pv-move[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.pv-sub-actions[_ngcontent-%COMP%]{display:flex;gap:5px}.pv-sub[_ngcontent-%COMP%]{border:1px dashed var(--ig-border);border-radius:10px;padding:11px;margin-bottom:10px}.pv-sub[_ngcontent-%COMP%]:last-child{margin-bottom:0}.pv-sub-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.pv-sub-n[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:color-mix(in srgb,var(--primary, #3273dc) 12%,transparent);color:var(--primary, #3273dc);font-size:.72rem;font-weight:700}.pv-tpl-row[_ngcontent-%COMP%]{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:640px){.pv-tpl-row[_ngcontent-%COMP%]{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;padding-bottom:4px}.pv-tpl[_ngcontent-%COMP%]{flex-shrink:0;scroll-snap-align:start}}.pv-tpl[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ig-border);background:transparent;border-radius:8px;padding:6px 11px;font-size:.8rem;font-weight:600;color:var(--ig-muted);cursor:pointer}.pv-tpl.is-active[_ngcontent-%COMP%]{border-color:var(--tpl-accent);color:var(--ig-text);background:color-mix(in srgb,var(--tpl-accent) 8%,transparent)}.pv-tpl-swatch[_ngcontent-%COMP%]{width:12px;height:12px;border-radius:3px;background:var(--tpl-accent)}.pv-doc-font[_ngcontent-%COMP%]{margin-top:12px}.pv-doc-font[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{width:100%;border:1px solid var(--ig-border);background:transparent;color:var(--ig-text);border-radius:8px;padding:7px 10px;font-size:.85rem}.pv-preview-col[_ngcontent-%COMP%]{position:sticky;top:14px;background:var(--ig-card-bg);border:1px solid var(--ig-border);border-radius:12px;overflow:hidden}
7.pv-preview-bar[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:8px 13px;border-bottom:1px solid var(--ig-border);font-size:.75rem;font-weight:600;color:var(--ig-muted);text-transform:uppercase;letter-spacing:.05em}.pv-preview-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.pv-zoom[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0}.pv-zoom[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--ig-border);background:transparent;border-radius:6px;color:var(--ig-muted);cursor:pointer}.pv-zoom[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{color:var(--primary, #3273dc)}.pv-preview-hint[_ngcontent-%COMP%]{padding:6px 13px;font-size:.72rem;color:var(--ig-muted);border-bottom:1px solid var(--ig-border);background:var(--ig-card-bg)}.pv-preview-scroll[_ngcontent-%COMP%]{max-height:calc(100vh - 160px);overflow:auto;background:#6b7280;padding:12px;display:flex;justify-content:center;align-items:flex-start}[data-theme=dark][_nghost-%COMP%] .pv-preview-scroll[_ngcontent-%COMP%], [data-theme=dark] [_nghost-%COMP%] .pv-preview-scroll[_ngcontent-%COMP%]{background:#0e1014}.pv-preview-scale[_ngcontent-%COMP%]{transform-origin:top center;width:960px;flex-shrink:0;position:relative}.pv-preview-scale[_ngcontent-%COMP%] .pptv-slide{box-shadow:0 4px 24px #00000047}.pv-preview-scale[_ngcontent-%COMP%] .pptv-slide:last-child{margin-bottom:0}.pv-rt-toolbar[_ngcontent-%COMP%]{position:fixed;transform:translate(-50%,calc(-100% - 10px));z-index:50;display:flex;align-items:center;gap:4px;background:var(--ig-card-bg);border:1px solid var(--ig-border);border-radius:10px;box-shadow:0 8px 24px #00000038;padding:5px 6px}.pv-rt-select[_ngcontent-%COMP%]{border:1px solid var(--ig-border);background:transparent;color:var(--ig-text);border-radius:6px;font-size:.78rem;padding:4px 5px;max-width:108px}.pv-rt-size[_ngcontent-%COMP%]{width:48px;border:1px solid var(--ig-border);background:transparent;color:var(--ig-text);border-radius:6px;font-size:.78rem;padding:4px 5px}.pv-rt-color[_ngcontent-%COMP%]{width:26px;height:26px;padding:0;border:1px solid var(--ig-border);border-radius:6px;background:none;cursor:pointer}.pv-rt-sep[_ngcontent-%COMP%]{width:1px;height:20px;background:var(--ig-border);margin:0 2px}.pv-rt-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid transparent;background:transparent;border-radius:6px;color:var(--ig-muted);cursor:pointer}.pv-rt-btn[_ngcontent-%COMP%]:hover{border-color:var(--ig-border)}.pv-rt-btn.is-active[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--primary, #3273dc) 15%,transparent);color:var(--primary, #3273dc)}.pv-confirm-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#0f11158c;display:flex;align-items:center;justify-content:center;padding:16px;z-index:1000}.pv-confirm-card[_ngcontent-%COMP%]{background:var(--ig-card-bg);border:1px solid var(--ig-border);border-radius:14px;box-shadow:0 20px 60px #00000047;padding:22px;max-width:420px;width:100%}.pv-confirm-title[_ngcontent-%COMP%]{margin:0 0 8px;font-size:1.05rem;font-weight:700;color:var(--ig-text)}.pv-confirm-text[_ngcontent-%COMP%]{margin:0 0 20px;font-size:.88rem;line-height:1.55;color:var(--ig-muted);white-space:pre-line}.pv-confirm-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.pv-confirm-btn[_ngcontent-%COMP%]{border:none;border-radius:8px;padding:9px 16px;font-size:.85rem;font-weight:600;cursor:pointer}.pv-confirm-btn--ghost[_ngcontent-%COMP%]{background:transparent;border:1px solid var(--ig-border);color:var(--ig-text)}.pv-confirm-btn--ghost[_ngcontent-%COMP%]:hover{background:color-mix(in srgb,var(--ig-text) 6%,transparent)}.pv-confirm-btn--primary[_ngcontent-%COMP%]{background:linear-gradient(135deg,var(--primary, #3273dc),#7c3aed);color:#fff}.pv-confirm-btn--primary[_ngcontent-%COMP%]:hover{opacity:.92}.pv-icon-picker-card[_ngcontent-%COMP%]{max-width:380px}.pv-icon-picker-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:18px;max-height:280px;overflow-y:auto}.pv-icon-picker-btn[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border:1px solid var(--ig-border);background:var(--ig-page-bg);border-radius:8px;color:var(--ig-text);cursor:pointer}.pv-icon-picker-btn[_ngcontent-%COMP%]:hover{border-color:var(--primary, #3273dc);color:var(--primary, #3273dc)}'],changeDetection:1})}return a})()});kt();export{ni as PresentationEditorComponent};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.