1import{l as re,m as Oe,n as se,o as ue,p as ae,q as le,r as Ne,s as _e,t as ge,u as De}from"./chunk-JB3NKYKJ.js";import{a as Ie}from"./chunk-7KMCTPOU.js";import{d as fe}from"./chunk-LG3FJD7N.js";import{a as Ae}from"./chunk-AZOPAGDL.js";import{a as Se}from"./chunk-VHVFRYI7.js";import{f as he}from"./chunk-ZPFBMTCE.js";import{b as Me}from"./chunk-QKRCLPFM.js";import{a as oe}from"./chunk-KUZQDR7T.js";import{a as Te}from"./chunk-ZUKBH3P4.js";import{j as ne}from"./chunk-VIC4UICZ.js";import{Ab as B,Bc as me,Db as S,Dc as ke,Eb as L,Fb as l,Ka as q,Mb as G,Nb as W,Oa as r,Pb as ie,Qb as N,Rb as ye,Sb as d,T as H,Tb as y,Ub as K,X as ce,Y as O,Za as j,a as U,ac as Pe,b as de,ba as b,ca as w,cc as C,dc as x,f as Y,ga as xe,ha as be,ic as $,jb as T,jc as M,kb as f,mb as v,mc as R,na as u,nc as h,oa as A,oc as Z,pb as I,pc as Ee,qb as V,rb as D,sb as c,tb as m,ub as we,v as X,vb as _,wb as g,xb as z,zb as k}from"./chunk-2FM36RQV.js";var Ve=(()=>{class n{constructor(){this.storage=O(ne),this._enabled=u(this.readStored()),this.enabled=this._enabled.asReadonly()}static{this.STORAGE_KEY="prompt_enhance"}static{this.DEFAULT=!0}readStored(){let e=this.storage.get(n.STORAGE_KEY);return e==="true"?!0:e==="false"?!1:n.DEFAULT}setEnabled(e){e!==this._enabled()&&(this._enabled.set(e),this.storage.set(n.STORAGE_KEY,String(e)))}toggle(){this.setEnabled(!this._enabled())}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=H({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var ve=new me().set(he,"1"),Re=(()=>{class n{get base(){return`${this.env.api.apiUrl}/prompt`}constructor(e,t){this.http=e,this.env=t}motionBlueprint(e,t="en",i){let o=new me().set(Se,"1").set(he,"1");return X(this.http.post(`${this.base}/motion-blueprint`,{imageKey:e,language:t,modelKey:i?.modelKey??null,allowedAspectRatios:i?.allowedAspectRatios??null,allowedDurationSeconds:i?.allowedDurationSeconds??null},{headers:o}))}analyze(e){return X(this.http.post(`${this.env.api.apiUrl}/api/prompts/analyze`,e,{headers:ve}))}getControls(e,t){let i=new URLSearchParams;e&&i.set("intent",e),t&&i.set("provider",t);let o=i.toString();return X(this.http.get(`${this.env.api.apiUrl}
1/api/prompts/controls${o?"?"+o:""}`,{headers:ve}))}getPresets(e,t){let i=new URLSearchParams;e&&i.set("mode",e),t&&i.set("provider",t);let o=i.toString();return X(this.http.get(`${this.env.api.apiUrl}/api/prompts/presets${o?"?"+o:""}`,{headers:ve}))}static{this.\u0275fac=function(t){return new(t||n)(ce(ke),ce(Me))}}static{this.\u0275prov=H({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var ze=(()=>{class n{constructor(){this.storage=O(ne),this._open=u(this.readStored()),this.open=this._open.asReadonly()}static{this.STORAGE_KEY="composer_advanced_open"}static{this.DEFAULT=!1}readStored(){let e=this.storage.get(n.STORAGE_KEY);return e==="true"?!0:e==="false"?!1:n.DEFAULT}setOpen(e){e!==this._open()&&(this._open.set(e),this.storage.set(n.STORAGE_KEY,String(e)))}toggle(){this.setOpen(!this._open())}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275prov=H({token:n,factory:n.\u0275fac,providedIn:"root"})}}return n})();var Ge=["chip"],We=(n,s)=>s.key;function Qe(n,s){if(n&1){let e=k();_(0,"button",3,0),L("click",function(){let i=b(e).$implicit,o=l();return w(o.choose(i.key))})("keydown",function(i){let o=b(e).$index,a=l();return w(a.onKeydown(i,o))}),d(2),g()}if(n&2){let e=s.$implicit,t=s.$index,i=l();N("selected",e.key===i.selected()),T("aria-checked",e.key===i.selected())("tabindex",i.rovingIndex()===t?0:-1),r(2),K(" ",e.label," ")}}var Be=(()=>{class n{constructor(){this.options=h([]),this.selected=h(null),this.ariaLabel=h(""),this.select=R(),this.chips=Ee("chip"),this.focusedIndex=u(null),this.rovingIndex=()=>{let e=this.focusedIndex();if(e!==null)return e;let t=this.options().findIndex(i=>i.key===this.selected());return t>=0?t:0}}choose(e){this.select.emit(e)}onKeydown(e,t){let i=this.options().length;if(!i)return;let o=t;switch(e.key){case"ArrowRight":case"ArrowDown":o=(t+1)%i;break;case"ArrowLeft":case"ArrowUp":o=(t-1+i)%i;break;case"Home":o=0;break;case"End":o=i-1;break;case"Enter":case" ":e.preventDefault(),this.choose(this.options()[t].key);return;default:return}e.preventDefault(),this.focusedIndex.set(o),this.chips()[o]?.nativeElement.focus()}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=j({type:n,selectors:[["app-chip-group"]],viewQuery:function(t,i){t&1&&G(i.chips,Ge,5),t&2&&W()},inputs:{options:[1,"options"],selected:[1,"selected"],ariaLabel:[1,"ariaLabel"]},outputs:{select:"select"},decls:3,vars:1,consts:[["chip",""],["role","radiogroup",1,"chip-row"],["type","button","role","radio",1,"chip",3,"selected"],["type","button","role","radio",1,"chip",3,"click","keydown"]],template:function(t,i){t&1&&(_(0,"div",1),I(1,Qe,3,5,"button",2,We),g()),t&2&&(T("aria-label",i.ariaLabel()),r(),V(i.options()))},styles:["[_nghost-%COMP%]{display:contents}.chip-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border:1.5px solid var(--d-border);border-radius:999px;background:color-mix(in oklch,var(--d-card) 60%,transparent);color:var(--d-fg);font-family:inherit;font-size:.72rem;font-weight:600;line-height:1.2;cursor:pointer;white-space:nowrap;transition:background .15s ease,border-color .2s ease,color .15s ease,box-shadow .15s ease}.chip[_ngcontent-%COMP%]:hover{border-color:color-mix(in oklch,var(--d-primary) 45%,var(--d-border));background:color-mix(in oklch,var(--d-primary) 8%,transparent)}.chip[_ngcontent-%COMP%]:focus-visible{outline:none;border-color:var(--d-primary);box-shadow:0 0 0 2px color-mix(in oklch,var(--d-primary) 30%,transparent)}.chip.selected[_ngcontent-%COMP%]{border-color:transparent;background:var(--d-grad);color:var(--d-primary-fg)}"],changeDetection:0})}}return n})();var Ye=["editor"],Fe=(n,s)=>s.id,Xe=(n,s)=>s.n;function Ze(n,s){if(n&1&&z(0,"img",10),n&2){let e=l().$implicit;B("src",e.previewUrl,q)}}function Je(n,s){if(n&1&&(_(0,"span",11),d(1),g()),n&2){let e=l().$implicit;r(),y(e.kind==="video"?"movie":"graphic_eq")}}function et(n,s){if(n&1){let e=k();_(0,"li",9),L("mouseenter",function(){let i=b(e).$index,o=l(3);return w(o.activeIndex.set(i))})("mousedown",function(i){let o=b(e).$implicit,a=l(3);return i.preventDefault(),w(a.selectMention({type:"asset",asset:o}))}),_(1,"span"),f(2,Ze,1,1,"img",10)(3,Je,2,1,"span",11),g(),_(4,"span",12),d(5),g(),_(6,"span",13),d(7),C(8,"t"),g()()}if(n&2){let e=s.$implicit,t=s.$index,i=l(3);N("active",t===i.activeIndex()),T("aria-selected",t===i.activeIndex()),r(),ye(Pe("pc-popover-thumb pc-chip--",e.kind)),r(),v(e.kind==="image"?2:3),r(3),y(e.label),r(2),y(x(8,9,"composer.kind_"+e.kind))}}
1function tt(n,s){if(n&1&&(_(0,"li",7),d(1),C(2,"t"),g(),I(3,et,9,11,"li",8,Fe)),n&2){let e=l(2);r(),y(x(2,1,"composer.uploads_group")),r(2),V(e.assetCandidates())}}function it(n,s){if(n&1&&z(0,"img",10),n&2){let e=l().$implicit;B("src",e.thumb,q)}}function nt(n,s){n&1&&(_(0,"span",11),d(1,"image"),g())}function ot(n,s){if(n&1){let e=k();_(0,"li",14),L("mouseenter",function(i){let o=b(e),a=o.$implicit,p=o.$index,P=l(3);return w(P.onUploadRowHover(a,p,i))})("mouseleave",function(){b(e);let i=l(3);return w(i.hideElementPreview())})("mousedown",function(i){let o=b(e).$implicit,a=l(3);return i.preventDefault(),w(a.selectMention({type:"upload",n:o.n,label:o.label,thumb:o.thumb}))}),_(1,"span",15),f(2,it,1,1,"img",10)(3,nt,2,0,"span",11),g(),_(4,"span",12),d(5),g(),_(6,"span",13),d(7),g()()}if(n&2){let e=s.$implicit,t=s.$index,i=l(3);N("active",i.assetCandidates().length+t===i.activeIndex()),T("aria-selected",i.assetCandidates().length+t===i.activeIndex()),r(2),v(e.thumb?2:3),r(3),y(e.label),r(2),K("@image",e.n)}}function rt(n,s){if(n&1&&(_(0,"li",7),d(1),C(2,"t"),g(),I(3,ot,8,6,"li",8,Xe)),n&2){let e=l(2);r(),y(x(2,1,"elements.uploads_label")),r(2),V(e.uploadCandidates())}}function st(n,s){if(n&1&&z(0,"img",10),n&2){let e=l().$implicit;B("src",e.thumbnailUrl,q)}}function at(n,s){n&1&&(_(0,"span",11),d(1,"interests"),g())}function lt(n,s){if(n&1){let e=k();_(0,"li",14),L("mouseenter",function(i){let o=b(e),a=o.$implicit,p=o.$index,P=l(3);return w(P.onElementRowHover(a,p,i))})("mouseleave",function(){b(e);let i=l(3);return w(i.hideElementPreview())})("mousedown",function(i){let o=b(e).$implicit,a=l(3);return i.preventDefault(),w(a.selectMention({type:"element",element:o}))}),_(1,"span",15),f(2,st,1,1,"img",10)(3,at,2,0,"span",11),g(),_(4,"span",12),d(5),g(),_(6,"span",13),d(7),C(8,"t"),g()()}if(n&2){let e=s.$implicit,t=s.$index,i=l(3);N("active",i.assetCandidates().length+i.uploadCandidates().length+t===i.activeIndex()),T("aria-selected",i.assetCandidates().length+i.uploadCandidates().length+t===i.activeIndex()),r(2),v(e.thumbnailUrl?2:3),r(3),y(e.name),r(2),y(x(8,6,"composer.mention_element_tag"))}}function pt(n,s){if(n&1&&(_(0,"li",7),d(1),C(2,"t"),g(),I(3,lt,9,8,"li",8,Fe)),n&2){let e=l(2);r(),y(x(2,1,"composer.elements_group")),r(2),V(e.elementCandidates())}}function dt(n,s){if(n&1&&(_(0,"ul",6),C(1,"t"),f(2,tt,5,3),f(3,rt,5,3),f(4,pt,5,3),g()),n&2){let e=s,t=l();ie("top",e.top,"px")("left",e.left,"px"),T("aria-label",x(1,8,"composer.ref_picker_aria")),r(2),v(t.assetCandidates().length?2:-1),r(),v(t.uploadCandidates().length?3:-1),r(),v(t.elementCandidates().length?4:-1)}}function ct(n,s){n&1&&(_(0,"div",17)(1,"span",11),d(2,"link_off"),g(),_(3,"span"),d(4),C(5,"t"),g()()),n&2&&(r(4),y(x(5,1,"composer.ref_missing")))}function mt(n,s){if(n&1&&z(0,"img",18),n&2){let e=l();B("src",e.previewUrl,q)("alt",e.name)}}function ht(n,s){if(n&1&&z(0,"video",19),n&2){let e=l();B("src",e.previewUrl,q)}}function ut(n,s){if(n&1&&(_(0,"div",20)(1,"span",22),d(2,"graphic_eq"),g(),z(3,"audio",23),g()),n&2){let e=l();r(3),B("src",e.previewUrl)}}function _t(n,s){if(n&1&&(f(0,mt,1,2,"img",18)(1,ht,1,1,"video",19)(2,ut,4,1,"div",20),_(3,"span",21),d(4),g()),n&2){let e,t=s;v((e=t.kind)==="image"?0:e==="video"?1:e==="audio"?2:-1),r(4),y(t.label)}}function gt(n,s){if(n&1){let e=k();_(0,"div",16),C(1,"t"),L("pointerenter",function(){b(e);let i=l();return w(i.keepPreview())})("pointerleave",function(){b(e);let i=l();return w(i.scheduleHidePreview())}),f(2,ct,6,3,"div",17)(3,_t,5,2),g()}if(n&2){let e,t=s;ie("top",t.top,"px")("left",t.left,"px"),N("pc-preview--missing",t.missing),T("aria-label",t.missing?x(1,8,"composer.ref_missing"):t.label),r(2),v(t.missing?2:(e=t.asset)?3:-1,e)}}function ft(n,s){if(n&1&&(_(0,"div",24),z(1,"img",25),_(2,"span",26),d(3),g()()),n&2){let e=s;ie("top",e.top,"px")("left",e.left,"px"),T("aria-label",e.name),r(),B("src",e.thumb,q)("alt",e.name),r(2),y(e.name)}}var F=8,vt=280,Ct=232,Le=220,$e=220,pe=(()=>{class n{get editor(){return this.editorRef().nativeElement}showElementPreview(e,t){if(!e?.thumb){this.elementPreview.set(null);return}let i=t?.getBoundingClientRect?.();if(!i){this.elementPreview.set(null);return}let o=this.clampToViewport(i.top,i.right+8,Le,$e);this.elementPreview.set({name:e.name,thumb:e.thumb,top:o.top,left
1:o.left})}onElementRowHover(e,t,i){this.activeIndex.set(this.assetCandidates().length+this.uploadCandidates().length+t),this.showElementPreview({name:e.name,thumb:e.thumbnailUrl},i.currentTarget)}onUploadRowHover(e,t,i){this.activeIndex.set(this.assetCandidates().length+t),this.showElementPreview({name:e.label,thumb:e.thumb},i.currentTarget)}hideElementPreview(){this.elementPreview.set(null)}onFocus(){this.focused.set(!0),this.isEmpty()&&this.placeCaretAtStart()}markEngaged(){this.userEngaged.set(!0)}onBlur(){this.focused.set(!1),this.userEngaged.set(!1),this.retokenizeRestored()}placeCaretAtStart(){let e=this.doc.getSelection?.();if(e)try{let t=this.doc.createRange();t.selectNodeContents(this.editor),t.collapse(!0),e.removeAllRanges(),e.addRange(t)}catch(t){}}constructor(){this.assets=h([]),this.elements=h([]),this.showAssetMentions=h(!0),this.uploadTokens=h([]),this.placeholder=h(""),this.invalid=h(!1),this.promptChange=R(),this.mentionsChange=R(),this.editorRef=Z.required("editor"),this.doc=O(xe),this.triggerActive=u(!1),this.query=u(""),this.activeIndex=u(0),this.popoverPos=u(null),this.assetCandidates=M(()=>this.showAssetMentions()?De(this.assets(),this.query()):[]),this.elementNames=M(()=>this.elements().map(e=>e.name)),this.uploadCandidates=M(()=>{let e=this.query().trim().toLowerCase();return this.uploadTokens().map((t,i)=>({n:i+1,label:t.label,thumb:t.thumb})).filter(t=>!e||t.label.toLowerCase().includes(e)||`image${t.n}`.includes(e))}),this.elementCandidates=M(()=>{let e=this.query().trim().toLowerCase(),t=this.elements();return e?t.filter(i=>i.name.toLowerCase().includes(e)):[...t]}),this.candidates=M(()=>[...this.assetCandidates().map(e=>({type:"asset",asset:e})),...this.uploadCandidates().map(e=>({type:"upload",n:e.n,label:e.label,thumb:e.thumb})),...this.elementCandidates().map(e=>({type:"element",element:e}))]),this.preview=u(null),this.previewTimer=null,this.elementPreview=u(null),this.isEmpty=u(!0),this.focused=u(!1),this.userEngaged=u(!1),this.viewReady=u(!1),A(()=>{let e=this.candidates().length;this.activeIndex()>=e&&this.activeIndex.set(Math.max(0,e-1))}),A(()=>{this.query(),this.elements(),this.uploadTokens(),this.hideElementPreview()}),A(()=>{this.assets(),this.elements(),this.uploadTokens(),this.viewReady()&&($(()=>this.focused()&&this.userEngaged())||$(()=>this.retokenizeRestored()))})}ngAfterViewInit(){this.viewReady.set(!0)}onInput(){this.emit(),this.refreshTrigger()}onPointerDown(){this.markEngaged()}onKeydown(e){this.markEngaged();let t=e.target?.closest?.(".pc-chip");if(t&&(e.key==="Enter"||e.key===" "||e.key==="Spacebar")){e.preventDefault(),this.togglePreviewChip(t);return}if(!this.triggerActive()||!this.candidates().length){e.key==="Escape"&&this.closePopover();return}switch(e.key){case"ArrowDown":e.preventDefault(),this.activeIndex.set((this.activeIndex()+1)%this.candidates().length);break;case"ArrowUp":e.preventDefault(),this.activeIndex.set((this.activeIndex()-1+this.candidates().length)%this.candidates().length);break;case"Enter":case"Tab":e.preventDefault(),this.selectMention(this.candidates()[this.activeIndex()]);break;case"Escape":e.preventDefault(),this.closePopover();break}}focus(){this.editor.focus()}onPaste(e){e.preventDefault(),this.insertPlainText(e.clipboardData?.getData("text/plain")??"")}onDrop(e){e.preventDefault(),this.insertPlainText(e.dataTransfer?.getData("text/plain")??"",e)}insertPlainText(e,t){if(!e)return;let i=this.currentEditorRange();if(t){let p=bt(this.doc,t.clientX,t.clientY);p&&this.editor.contains(p.startContainer)&&(i=p)}i||(i=this.doc.createRange(),i.selectNodeContents(this.editor),i.collapse(!1));let o=this.doc.createDocumentFragment();for(let p of _e(e.replace(/\r/g,""),this.assets(),this.elementNames(),this.uploadTokens().length))p.asset?o.appendChild(se(this.doc,p.asset)):p.missing?o.appendChild(ue(this.doc,p.missing.label,p.missing.kind)):p.element?o.appendChild(ae(this.doc,p.element.name)):p.upload?o.appendChild(le(this.doc,p.upload.n,p.upload.text)):p.text&&p.text.split(` 2`).forEach((P,E)=>{E>0&&o.appendChild(this.doc.createElement("br")),P&&o.appendChild(this.doc.createTextNode(P))});let a=o.lastChild;try{i.deleteContents(),i.insertNode(o),a&&this.placeCaretAfter(a)}catch(p){this.editor.append(o)}
2this.emit(),this.refreshTrigger()}currentEditorRange(){let e=this.doc.getSelection?.(),t=e&&e.rangeCount?e.getRangeAt(0):null;return t&&this.editor.contains(t.startContainer)?t:null}refreshTrigger(){let e=this.doc.getSelection?.();if(!e||e.rangeCount===0||!this.editor.contains(e.anchorNode)){this.closePopover();return}let t=e.anchorNode;if(!t||t.nodeType!==Node.TEXT_NODE){this.closePopover();return}let i=(t.textContent??"").slice(0,e.anchorOffset),o=ge(i);if(!o.active){this.closePopover();return}this.query.set(o.query),this.triggerActive.set(!0),this.updatePopoverPos()}updatePopoverPos(){let e=this.doc.getSelection?.();if(!e||e.rangeCount===0){this.popoverPos.set(null);return}try{let t=e.getRangeAt(0).getBoundingClientRect();this.popoverPos.set(this.clampToViewport(t.bottom+6,t.left,vt,Ct))}catch(t){this.popoverPos.set({top:0,left:0})}}clampToViewport(e,t,i,o){let a=this.doc.defaultView,p=a?.innerWidth??i+2*F,P=a?.innerHeight??o+2*F,E=Math.min(i,p-2*F),Q=Math.min(o,P-2*F);return{left:Math.max(F,Math.min(t,p-E-F)),top:Math.max(F,Math.min(e,P-Q-F))}}closePopover(){this.triggerActive.set(!1),this.query.set(""),this.activeIndex.set(0),this.popoverPos.set(null),this.hideElementPreview()}selectCandidate(e){e&&this.insertAtTrigger(t=>[se(t,e)])}selectMention(e){e&&(e.type==="asset"?this.selectCandidate(e.asset):e.type==="upload"?this.insertUploadToken(e.n):this.insertElement(e.element))}insertUploadToken(e){this.insertAtTrigger(t=>[le(t,e)])}insertElement(e){this.insertAtTrigger(t=>[ae(t,e.name)])}insertAtTrigger(e){let t=this.doc.getSelection?.(),i=t&&t.rangeCount?t.getRangeAt(0):null,o=i&&this.editor.contains(i.startContainer),a=e(this.doc),p=this.doc.createTextNode("\xA0");if(o&&i.startContainer.nodeType===Node.TEXT_NODE){let P=i.startContainer,E=i.startOffset,Q=(P.textContent??"").slice(0,E),te=ge(Q),qe=te.active?te.atIndex:E,Ke=(P.textContent??"").slice(0,qe),He=(P.textContent??"").slice(E);P.textContent=Ke;let je=this.doc.createTextNode(He);P.after(...a,p,je),this.placeCaretAfter(p)}else this.editor.append(...a,p),this.placeCaretAfter(p);this.closePopover(),this.emit()}setPrompt(e){this.closePopover(),this.preview.set(null),this.editor.replaceChildren(this.buildPromptFragment(e)),this.placeCaretAtEnd(),this.emit()}buildPromptFragment(e){let t=this.doc.createDocumentFragment();for(let i of _e(e,this.assets(),this.elementNames(),this.uploadTokens().length))i.asset?t.append(se(this.doc,i.asset)):i.missing?t.append(ue(this.doc,i.missing.label,i.missing.kind)):i.element?t.append(ae(this.doc,i.element.name)):i.upload?t.append(le(this.doc,i.upload.n,i.upload.text)):i.text&&t.append(this.doc.createTextNode(i.text));return t}retokenizeRestored(){let e=re(this.editor);e.includes("@")&&(this.hideElementPreview(),this.editor.replaceChildren(this.buildPromptFragment(e)),this.focused()&&this.placeCaretAtStart())}placeCaretAtEnd(){let e=this.doc.getSelection?.();if(e)try{let t=this.doc.createRange();t.selectNodeContents(this.editor),t.collapse(!1),e.removeAllRanges(),e.addRange(t)}
2catch(t){}}removeAssetChips(e){this.editor.querySelectorAll(`[data-asset-id="${xt(e)}"]`).forEach(i=>Ne(i)),this.preview()?.asset?.id===e&&this.preview.set(null),this.emit()}removeElementMentions(e){let t=this.editor.querySelectorAll(".pc-emention"),i=!1;t.forEach(o=>{o.dataset.uploadN!=null||o.dataset.ementionName!==e||(this.removeSpanWithTrailingSpace(o),i=!0)}),i&&(this.hideElementPreview(),this.emit())}removeSpanWithTrailingSpace(e){let t=e.nextSibling;t&&t.nodeType===Node.TEXT_NODE&&(t.textContent??"").startsWith(" ")&&(t.textContent=(t.textContent??"").slice(1)),e.remove()}stripAndRenumberUploadToken(e){let t=!1;this.editor.querySelectorAll(".pc-emention--upload").forEach(i=>{let o=Number(i.dataset.uploadN);o===e?(this.removeSpanWithTrailingSpace(i),t=!0):o>e&&(i.dataset.uploadN=String(o-1),i.textContent=`@image${o-1}`,t=!0)}),t&&(this.hideElementPreview(),this.emit())}dropUploadTokensAbove(e){let t=!1;this.editor.querySelectorAll(".pc-emention--upload").forEach(i=>{Number(i.dataset.uploadN)>e&&(this.removeSpanWithTrailingSpace(i),t=!0)}),t&&(this.hideElementPreview(),this.emit())}placeCaretAfter(e){let t=this.doc.getSelection?.();if(t)try{let i=this.doc.createRange();i.setStartAfter(e),i.collapse(!0),t.removeAllRanges(),t.addRange(i)}catch(i){}}emit(){this.isEmpty.set(re(this.editor).trim().length===0),this.promptChange.emit(re(this.editor)),this.mentionsChange.emit(Oe(this.editor))}static isMouse(e){return!e.pointerType||e.pointerType==="mouse"}onPointerOver(e){if(!n.isMouse(e))return;let t=e.target?.closest?.(".pc-emention");if(t){let o=t.dataset.uploadN;if(o!=null){let a=this.uploadTokens()[Number(o)-1];this.showElementPreview(a?{name:a.label,thumb:a.thumb}:null,t)}else{let a=this.elements().find(p=>p.name===t.dataset.ementionName);this.showElementPreview(a?{name:a.name,thumb:a.thumbnailUrl}:null,t)}return}let i=e.target?.closest?.(".pc-chip");i&&this.showPreviewFor(i)}onPointerOut(e){if(!n.isMouse(e))return;if(e.target?.closest?.(".pc-emention")){this.hideElementPreview();return}e.target?.closest?.(".pc-chip")&&this.scheduleHidePreview()}onEditorClick(e){let t=e.target?.closest?.(".pc-chip");t&&(e.preventDefault(),this.togglePreviewChip(t))}togglePreviewChip(e){let t=n.chipKey(e);if(this.preview()?.key===t){this.preview.set(null);return}this.showPreviewFor(e)}static chipKey(e){return e.dataset.assetId||e.dataset.label||""}keepPreview(){this.previewTimer&&(clearTimeout(this.previewTimer),this.previewTimer=null)}scheduleHidePreview(){this.keepPreview(),this.previewTimer=setTimeout(()=>this.preview.set(null),160)}showPreviewFor(e){let t=e.dataset.assetId,i=e.dataset.label??"",o=t?this.assets().find(E=>E.id===t)??null:null,a=e.dataset.missing==="true"||!o;this.keepPreview();let p=e.getBoundingClientRect(),P=this.clampToViewport(p.bottom+8,p.left,Le,$e);this.preview.set({key:n.chipKey(e),asset:o,label:i,missing:a,top:P.top,left:P.left})}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=j({type:n,selectors:[["app-composer-prompt-editor"]],viewQuery:function(t,i){t&1&&G(i.editorRef,Ye,5),t&2&&W()},inputs:{assets:[1,"assets"],elements:[1,"elements"],showAssetMentions:[1,"showAssetMentions"],uploadTokens:[1,"uploadTokens"],placeholder:[1,"placeholder"],invalid:[1,"invalid"]},outputs:{promptChange:"promptChange",mentionsChange:"mentionsChange"},decls:6,vars:9,consts:[["editor",""],[1,"pc-editor-wrap"],["contenteditable","true","role","textbox","aria-multiline","true",1,"prompt-input","pc-editor",3,"focus","blur","pointerdown","input","keydown","paste","drop","click","pointerover","pointerout"],["role","listbox",1,"pc-popover",3,"top","left"],["role","dialog",1,"pc-preview",3,"pc-preview--missing","top","left"],["role","tooltip",1,"pc-epreview",3,"top","left"],["role","listbox",1,"pc-popover"],["role","presentation",1,"pc-popover-group"],["role","option",1,"pc-popover-item",3,"active"],["role","option",1,"pc-popover-item",3,"mouseenter","mousedown"],["alt","",1,"pc-popover-img",3,"src"],["aria-hidden","true",1,"material-symbols-rounded"],[1,"pc-popover-label"],[1,"pc-popover-kind"],["role","option",1,"pc-popover-item",3,"mouseenter","mouseleave","mousedown"],[1,"pc-popover-thumb","pc-popover-thumb--element"],["role","dialog",1,"pc-preview",3,"pointerenter","pointerleave"],["role","alert",1,"pc-preview-missing"],[1,"pc-preview-media",3,"src","alt"],["controls","","muted","","preload","metadata",1,"pc-preview-media",3,"src"],[1,"pc-preview-audio-wrap"],[1,"pc-preview-label"],["aria-hidden","true",1,"material-symbols-rounded","pc-preview-audio-icon"],["controls","",1,"pc-preview-audio",3,"src"],["role","tooltip",1,"pc-epreview"],[1,"pc-epreview-img",3,"src","alt"],[1,"pc-epreview-label"]],template:function(t,i){if(t&1&&(_(0,"div",1)(1,"div",2,0),L("focus",function(){return i.onFocus()})("blur",function(){return i.onBlur()})("pointerdown",function(){return i.onPointerDown()})("input",function(){return i.onInput()})("keydown",function(a){return i.onKeydown(a)})("paste",function(a){return i.onPaste(a)})("drop",function(a){return i.onDrop(a)})("click",function(a){return i.onEditorClick(a)})("pointerover",function(a){return i.onPointerOver(a)})("pointerout",function(a){return i.onPointerOut(a)}),g(),f(3,dt,5,10,"ul",3),f(4,gt,4,10,"div",4),f(5,ft,4,8,"div",5),g()),t&2){let o,a,p;r(),N("pc-editor--empty",i.isEmpty()&&!i.focused())("invalid",i.invalid()),T("aria-label",i.placeholder())("data-placeholder",i.placeholder()),r(2),v((o=i.triggerActive()&&i.candidates().length&&i.popoverPos())?3:-1,o),r(),v((a=i.preview())?4:-1,a),r(),v((p=i.elementPreview())?5:-1,p)}},dependencies:[oe],styles:[`.pc-editor-wrap{position:relative}.pc-editor{min-height:124px;max-height:280px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;line-height:1.7;cursor:text}.pc-editor:focus{outline:none}
2.pc-editor.invalid{border-color:#f87171}.pc-editor.invalid:focus{border-color:#ef4444}.pc-editor--empty:before{content:attr(data-placeholder);color:#c0c5d0;pointer-events:none}html.dark .pc-editor--empty:before{color:var(--d-muted-fg)}.pc-chip{font-weight:600;vertical-align:baseline;cursor:pointer;border-radius:2px;animation:fadeIn .15s ease}.pc-chip:focus-visible{outline:2px solid var(--d-primary);outline-offset:1px}.pc-chip--present{color:var(--d-primary)}html.dark .pc-chip--present{color:var(--d-primary-soft)}.pc-chip--missing{color:#ef4444}.pc-emention{font-weight:600;vertical-align:baseline;color:var(--d-accent);cursor:default;border-radius:2px;animation:fadeIn .15s ease}html.dark .pc-emention{color:color-mix(in oklch,var(--d-accent) 70%,white)}.pc-popover-thumb.pc-chip--image{background:color-mix(in oklch,var(--d-primary) 16%,transparent);color:var(--d-primary)}.pc-popover-thumb.pc-chip--video{background:color-mix(in oklch,var(--d-accent) 16%,transparent);color:var(--d-accent)}.pc-popover-thumb.pc-chip--audio{background:color-mix(in oklch,var(--d-primary-soft) 20%,transparent);color:color-mix(in oklch,var(--d-primary-soft) 82%,black)}html.dark .pc-popover-thumb.pc-chip--image{color:var(--d-primary-soft)}html.dark .pc-popover-thumb.pc-chip--video{color:color-mix(in oklch,var(--d-accent) 70%,white)}html.dark .pc-popover-thumb.pc-chip--audio{color:var(--d-primary-soft)}.pc-popover{position:fixed;z-index:600;
2min-width:200px;max-width:280px;max-height:232px;overflow-y:auto;margin:0;padding:4px;list-style:none;background:var(--d-popover);border:1px solid var(--d-border);border-radius:14px;box-shadow:0 8px 32px #0000001f;animation:fadeDown .15s ease}html.dark .pc-popover{box-shadow:0 8px 32px #0006}.pc-popover-group{padding:6px 8px 2px;font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--d-muted-fg);cursor:default}.pc-popover-group:not(:first-child){margin-top:2px}.pc-popover-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;cursor:pointer;font-size:.82rem;color:var(--d-fg)}.pc-popover-thumb--element{background:color-mix(in oklch,var(--d-accent) 16%,transparent);color:var(--d-accent)}.pc-popover-item.active,.pc-popover-item:hover{background:color-mix(in oklch,var(--d-primary) 12%,transparent)}.pc-popover-thumb{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;overflow:hidden;flex:none;font-size:16px}.pc-popover-img{width:100%;height:100%;object-fit:cover}.pc-popover-label{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pc-popover-kind{font-size:.68rem;color:var(--d-muted-fg);text-transform:capitalize}.pc-preview{position:fixed;z-index:600;width:220px;padding:8px;background:var(--d-popover);border:1px solid var(--d-border);border-radius:14px;box-shadow:0 8px 32px #0000001f;animation:fadeDown .15s ease}html.dark .pc-preview{box-shadow:0 8px 32px #0006}.pc-preview-media{width:100%;max-height:180px;object-fit:contain;border-radius:8px;display:block;background:#000}.pc-preview-audio-wrap{display:flex;flex-direction:column;align-items:center;gap:6px;padding:6px 0}.pc-preview-audio-icon{font-size:32px;color:var(--d-primary-soft)}.pc-preview-audio{width:100%}.pc-preview-label{display:block;margin-top:6px;font-size:.72rem;font-weight:600;color:var(--d-muted-fg);text-align:center}.pc-preview--missing{width:auto;max-width:240px}.pc-preview-missing{display:flex;align-items:center;gap:8px;padding:2px 2px 4px;font-size:.8rem;font-weight:600;color:#ef4444}.pc-preview-missing .material-symbols-rounded{font-size:20px}.pc-epreview{position:fixed;z-index:600;padding:6px;background:var(--d-popover);border:1px solid var(--d-border);border-radius:14px;box-shadow:0 8px 32px #0000001f;animation:fadeIn .15s ease}html.dark .pc-epreview{box-shadow:0 8px 32px #0006}.pc-epreview-img{display:block;width:160px;height:160px;object-fit:cover;border-radius:9px;background:var(--d-muted)}.pc-epreview-label{display:block;margin-top:6px;font-size:.72rem;font-weight:600;color:var(--d-muted-fg);text-align:center;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:768px){.pc-popover{max-width:calc(100vw - 48px)}.pc-preview{width:200px}}@media(prefers-reduced-motion:reduce){.pc-popover,.pc-preview{animation:fadeIn .15s ease}} 3`],encapsulation:2,changeDetection:0})}}return n})();function xt(n){return typeof CSS<"u"&&CSS.escape?CSS.escape(n):n.replace(/["\\\]]/g,"\\$&")}function bt(n,s,e){let t=n;try{if(typeof t.caretRangeFromPoint=="function")return t.caretRangeFromPoint(s,e);if(typeof t.caretPositionFromPoint=="function"){let i=t.caretPositionFromPoint(s,e);if(!i)return null;let o=n.createRange();return o.setStart(i.offsetNode,i.offset),o.collapse(!0),o}}catch(i){}return null}function Ce(n){let s=n?.status?.toUpperCase();return s==="BLOCK"||s==="BLOCKED"}var wt=["ta"],Ue=(n,s)=>s.controlKey;function yt(n,s){if(n&1&&(c(0,"span",4),d(1),C(2,"t"),m()),n&2){let e=l();r(),y(x(2,1,e.optionalHint()))}}function Pt(n,s){n&1&&(we(0,"app-spinner",6),C(1,"t")),n&2&&T("aria-label",x(1,1,"pil.analyzing"))}function Et(n,s){if(n&1){let e=k();c(0,"app-composer-prompt-editor",14),C(1,"t"),S("promptChange",function(i){b(e);let o=l();return w(o.onEditorInput(i))}),m()}if(n&2){let e=l();D("assets",e.richAssets())("elements",e.elements())("uploadTokens",e.uploadTokens())("showAssetMentions",e.showAssetMentions())("placeholder",x(1,6,e.placeholder()))("invalid",e.invalid())}}
3function kt(n,s){if(n&1){let e=k();c(0,"textarea",15,0),C(2,"t"),S("input",function(i){b(e);let o=l();return w(o.onType(i))}),m()}if(n&2){let e=l();N("accent-pink",e.accent()==="pink")("tall-mobile",e.tallMobile())("invalid",e.invalid()),D("placeholder",x(2,9,e.placeholder()))("rows",e.rows())("value",e.text())}}function Tt(n,s){if(n&1&&(c(0,"span",11),d(1),C(2,"t"),m()),n&2){let e=l();r(),y(x(2,1,e.errorKey()))}}function Mt(n,s){if(n&1&&(c(0,"div",12)(1,"span",8),d(2,"block"),m(),c(3,"span"),d(4),m()()),n&2){let e=l();r(4),y(e.policyReason())}}function St(n,s){if(n&1&&(c(0,"span",19),d(1),m()),n&2){let e=l(2);T("aria-label",e.advancedBadgeAria()),r(),y(e.advancedCount())}}function Ot(n,s){if(n&1){let e=k();c(0,"span",20)(1,"span",23),d(2),m(),c(3,"button",24),C(4,"t"),S("click",function(i){b(e);let o=l(2);return w(o.clearPreset(i))}),c(5,"span",8),d(6,"close"),m()()()}n&2&&(r(2),y(s),r(),T("aria-label",x(4,2,"composer.presets.clear_aria")))}function Nt(n,s){if(n&1){let e=k();c(0,"div",25)(1,"span",27),d(2),C(3,"t"),m(),c(4,"app-chip-group",28),C(5,"t"),S("select",function(i){b(e);let o=l(3);return w(o.onPresetPick(i))}),m()()}if(n&2){let e=l(3);r(2),y(x(3,4,"pil.presets")),r(2),D("options",e.presetOptions())("selected",e.selectedPreset())("ariaLabel",x(5,6,"pil.presets"))}}function Dt(n,s){if(n&1){let e=k();c(0,"div",29)(1,"span",8),d(2,"help"),m(),c(3,"span"),d(4),C(5,"t"),m()(),c(6,"app-chip-group",28),C(7,"t"),S("select",function(i){b(e);let o=l(4);return w(o.onIntentPick(i))}),m()}if(n&2){let e=l(4);r(4),y(x(5,4,"pil.not_sure")),r(2),D("options",e.intentOptions())("selected",null)("ariaLabel",x(7,6,"pil.type_aria"))}}function At(n,s){if(n&1){let e=k();c(0,"div",33)(1,"app-chip-group",28),C(2,"t"),S("select",function(i){b(e);let o=l(5);return w(o.onIntentPick(i))}),m()()}if(n&2){let e=l(5);r(),D("options",e.intentOptions())("selected",e.intent())("ariaLabel",x(2,3,"pil.type_aria"))}}function It(n,s){if(n&1){let e=k();c(0,"div",34)(1,"span",35),d(2),m(),c(3,"app-chip-group",28),S("select",function(i){let o=b(e).$implicit,a=l(5);return w(a.onControlPick(o,i))}),m()()}if(n&2){let e=s.$implicit,t=l(5);r(2),y(t.controlLabel(e)),r(),D("options",t.controlOptions(e))("selected",t.controlValue(e))("ariaLabel",t.controlLabel(e))}}function Vt(n,s){if(n&1){let e=k();c(0,"div",34)(1,"span",35),d(2),m(),c(3,"app-chip-group",28),S("select",function(i){let o=b(e).$implicit,a=l(7);return w(a.onControlPick(o,i))}),m()()}if(n&2){let e=s.$implicit,t=l(7);r(2),y(t.controlLabel(e)),r(),D("options",t.controlOptions(e))("selected",t.controlValue(e))("ariaLabel",t.controlLabel(e))}}function Rt(n,s){if(n&1&&(c(0,"div",33),I(1,Vt,4,4,"div",34,Ue),m()),n&2){let e=l(6);r(),V(e.extraControls())}}function zt(n,s){if(n&1){let e=k();c(0,"button",36),S("click",function(){b(e);let i=l(5);return w(i.toggleMore())}),c(1,"span",8),d(2,"expand_more"),m(),d(3),C(4,"t"),m(),f(5,Rt,3,0,"div",33)}if(n&2){let e=l(5);T("aria-expanded",e.moreOpen()),r(),N("open",e.moreOpen()),r(2),K(" ",x(4,5,"pil.more_options")," "),r(2),v(e.moreOpen()?5:-1)}}function Bt(n,s){if(n&1){let e=k();c(0,"div",30)(1,"span",31),d(2),m(),c(3,"button",32),S("click",function(){b(e);let i=l(4);return w(i.toggleIntentPicker())}),d(4),C(5,"t"),m()(),f(6,At,3,5,"div",33),I(7,It,4,4,"div",34,Ue),f(9,zt,6,7)}if(n&2){let e=l(4);r(2),y(e.looksLikeText()),r(),T("aria-expanded",e.intentPickerOpen()),r(),y(x(5,5,"pil.change")),r(2),v(e.intentPickerOpen()?6:-1),r(),V(e.coreControls()),r(2),v(e.extraControls().length?9:-1)}}function Lt(n,s){if(n&1&&(c(0,"div",26),f(1,Dt,8,8)(2,Bt,10,7),m()),n&2){let e=l(3);r(),v(e.notSure()?1:e.intent()?2:-1)}}function $t(n,s){if(n&1&&(c(0,"div",22),f(1,Nt,6,8,"div",25),f(2,Lt,3,1,"div",26),m()),n&2){let e=l(2);r(),v(e.presetOptions().length?1:-1),r(),v(!e.isBlocked()&&e.hasAdvancedControls()?2:-1)}}function Ft(n,s){if(n&1){let e=k();c(0,"div",13)(1,"div",16),S("click",function(){b(e);let i=l();return w(i.toggleAdvanced())}),c(2,"button",17),C(3,"t"),c(4,"span",18),d(5),C(6,"t"),m(),f(7,St,2,2,"span",19),m(),f(8,Ot,7,4,"span",20),c(9,"span",21),d(10,"expand_more"),m()(),f(11,$t,3,2,"div",22),m()}if(n&2){let e,t=l();r(2),D("title",x(3,8,"composer.advanced.tooltip")),T("aria-expanded",t.advancedOpen()),r(3),y(x(6,10,"composer.advanced.label")),r(2),v(t.advancedCount()?7:-1),r(),v((e=t.selectedPresetLabel())?8:-1,e),r(),N("open",t.advancedOpen()),r(2),v(t.advancedOpen()?11:-1)}}var Ut=600,qt=12,Kt=.7,Ht=.15,jt=.5,Gt=3,zi=(()=>{class n{constructor(){this.mode=h(""),this.provider=h(null),this.modelKey=h(null),this.assets=h([]),this.negativePrompt=h(null),this.prompt=h(""),this.passthrough=h(!1),this.showPresets=h(!1),this.richEditor=h(!1),this.richAssets=h([]),this.elements=h([]),this.showAssetMentions=h(!0),this.uploadTokens=h([]),this.label=h("common.prompt"),this.optionalHint=h(null),this.placeholder=h(""),this.rows=h(4),this.fill=h(!1),this.accent=h("blue"),this.tallMobile=h(!1),this.invalid=h(!1),this.errorKey=h(null),this.promptChange=R(),this.preparedRequest=R(),this.textareaReady=R(),this.promptSvc=O(Re),this.clipboard=O(Ae),this.enhancePref=O(Ve),this.advancedPref=O(ze),this.ts=O(Te),this.destroyRef=O(be),this.ta=Z("ta"),this.richEditorRef=Z(pe),this.seedingEditor=!1,this.text=u(""),this.analyzing=u(!1),this.analysis=u(null),this.intent=u(null),this.intentTouched=u(!1),this.lastConfidence=0,this.notSure=u(!1),this.availableControls=u([]),this.controlValues=u({}),this.advancedOverrides=u({}),this.presets=u([]),this.selectedPreset=u(null),this.seededControls=null,this.presetSeq=0,this.enhancementEnabled=this.enhancePref.enabled,this.intentPickerOpen=u(!1),this.moreOpen=u(!1),this.advancedOpen=this.advancedPref.open,this.serverBlock=u(null),this.analyzeTimer=null,this.seq=0,this.assetsInitialized=!1,this.intentOptions=M(()=>{let e=new Set(Wt[this.mode()]??[]),t=this.intent();t&&e.add(t);let i=this.analysis()?.intent;return i&&e.add(i),[...e].map(o=>({key:o,label:this.intentLabel(o)}))}),this.looksLikeText=M(()=>fe(this.ts.t("pil.looks_like"),{intent:this.intentLabel(this.intent())}
3)),this.coreControls=M(()=>this.availableControls().filter(e=>e.core===!0).slice(0,Gt)),this.extraControls=M(()=>{let e=new Set(this.coreControls());return this.availableControls().filter(t=>!e.has(t))}),this.hasAdvancedControls=M(()=>this.notSure()||this.intent()!=null),this.advancedCount=M(()=>{let e=new Set(this.availableControls().map(o=>o.controlKey)),t=this.controlValues(),i=this.advancedOverrides();return Object.keys(i).filter(o=>e.has(o)&&t[o]===i[o]).length}),this.advancedBadgeAria=M(()=>fe(this.ts.t("composer.advanced.badge_aria"),{count:this.advancedCount()})),this.presetOptions=M(()=>this.presets().map(e=>({key:e.key??"",label:this.presetLabel(e)})).filter(e=>e.key)),this.selectedPresetLabel=M(()=>{let e=this.selectedPreset();return e?this.presetOptions().find(t=>t.key===e)?.label??null:null}),this.isBlocked=M(()=>Ce(this.analysis()?.policy)||this.serverBlock()!==null),this.policyReason=M(()=>{let e=this.serverBlock()??this.analysis()?.policy?.category??null;if(!e)return this.ts.t("pil.policy_blocked");let t=`pil.policy_category.${e}`,i=this.ts.t(t);return i===t?this.ts.t("pil.policy_blocked"):i}),A(()=>{let e=this.prompt();$(()=>{e!==this.text()&&(this.richEditor()?this.seedEditor(e):this.text.set(e),this.resetAnalysisState())})}),A(()=>{if(this.assets(),!this.assetsInitialized){this.assetsInitialized=!0;return}$(()=>this.scheduleAnalyze())}),A(()=>{let e=this.showPresets()&&!this.passthrough(),t=this.mode(),i=this.provider();$(()=>{if(!e){this.presets.set([]);return}this.loadPresets(t,i)})}),A(()=>{let e={prompt:this.text(),intent:this.intent(),controls:this.controlValues(),enhancementEnabled:this.enhancementEnabled(),negativePrompt:this.negativePrompt()||null,blocked:this.isBlocked()};$(()=>this.preparedRequest.emit(e))}),this.destroyRef.onDestroy(()=>{this.analyzeTimer&&(clearTimeout(this.analyzeTimer),this.analyzeTimer=null)})}ngAfterViewInit(){if(this.richEditor()){this.text()&&this.seedEditor(this.text());return}let e=this.ta()?.nativeElement;e&&this.textareaReady.emit(e)}onType(e){this.applyUserText(e.target.value)}onEditorInput(e){if(this.seedingEditor){this.text.set(e);return}this.applyUserText(e)}applyUserText(e){this.text.set(e),this.serverBlock.set(null),this.selectedPreset.set(null),this.promptChange.emit(e),this.scheduleAnalyze()}seedEditor(e){let t=this.richEditorRef();if(t){this.seedingEditor=!0;try{t.setPrompt(e)}finally{this.seedingEditor=!1}this.text.set(e)}else this.text.set(e)}insertAssetMention(e){this.richEditorRef()?.selectCandidate(e)}removeAssetMention(e){this.richEditorRef()?.removeAssetChips(e)}removeElementMentions(e){this.richEditorRef()?.removeElementMentions(e)}stripAndRenumberUploadToken(e){this.richEditorRef()?.stripAndRenumberUploadToken(e)}dropUploadTokensAbove(e){this.richEditorRef()?.dropUploadTokensAbove(e)}clear(){this.text().trim()&&(this.richEditor()?this.seedEditor(""):this.text.set(""),this.serverBlock.set(null),this.promptChange.emit(""),this.scheduleAnalyze())}copyPrompt(){return Y(this,null,function*(){this.text().trim()&&(yield this.clipboard.copy(this.text()))})}shouldAnalyze(){return this.text().trim().length>=qt||this.assets().length>0}scheduleAnalyze(){if(this.analyzeTimer&&(clearTimeout(this.analyzeTimer),this.analyzeTimer=null),!this.shouldAnalyze()){this.seq++,this.resetAnalysisState(),this.analyzing.set(!1);return}this.analyzeTimer=setTimeout(()=>this.runAnalyze(),Ut)}analyzeNow(){this.analyzeTimer&&(clearTimeout(this.analyzeTimer),this.analyzeTimer=null),this.runAnalyze()}runAnalyze(){return Y(this,null,function*(){let e=++this.seq;this.analyzing.set(!0);let t=this.controlValues(),i={prompt:this.text(),imagePaths:this.assets().length?this.assets():null,intent:this.intent()??this.mode()??null,controls:Object.keys(t).length?t:null,modelKey:this.modelKey(),provider:this.provider(),negativePrompt:this.negativePrompt()||null};try{let o=yield this.promptSvc.analyze(i);if(e!==this.seq)return;this.applyAnalysis(o)}catch(o){if(e!==this.seq)return}finally{e===this.seq&&this.analyzing.set(!1)}})}applyAnalysis(e){this.analysis.set(e),Ce(e.policy)||this.serverBlock.set(null),!this.passthrough()&&(this.reconcileIntent(e),this.setControls(e.availableControls??[],e.resolvedControls??{}))}reconcileIntent(e){let t=e.intentConfidence??0,i=e.intent??null;if(this.intentTouched()){this.lastConfidence=t;return}if(t<jt){this.intent.set(null),this.notSure.set(!0),this.lastConfidence=t;return}this.notSure.set(!1);let o=this.intent(),a=o===null,p=t>=Kt&&t>=this.lastConfidence+Ht;i&&(a||i!==o&&p)&&this.intent.set(i),this.lastConfidence=t}setControls(e,t){let i=this.availableControls(),o=this.controlValues(),a=this.seededControls;this.seededControls=null;let p={};for(let P of e){let E=P.controlKey;if(!E)continue;let Q=i.some(te=>te.controlKey===E);a&&a[E]!=null?p[E]=a[E]:Q&&o[E]!=null?p[E]=o[E]:p[E]=t[E]??P.selectedOption??""}this.availableControls.set(e),this.controlValues.set(p)}resetAnalysisState(){this.analysis.set(null),this.availableControls.set([]),this.controlValues.set({}),this.advancedOverrides.set({}),this.intent.set(null),this.intentTouched.set(!1),this.notSure.set(!1),this.intentPickerOpen.set(!1),this.moreOpen.set(!1),this.selectedPreset.set(null),this.seededControls=null,this.lastConfidence=0}toggleIntentPicker(){this.intentPickerOpen.update(e=>!e)}onIntentPick(e){return Y(this,null,function*(){this.intent.set(e),this.intentTouched.set(!0),this.intentPickerOpen.set(!1),this.notSure.set(!1),this.serverBlock.set(null);try{let t=yield this.promptSvc.getControls(e,this.provider());this.setControls(t.controls??[],{})}catch(t){}this.analyzeNow()})}intentLabel(e){if(!e)return"";let t=this.ts.t(`pil.intent.${e}`);return t===`pil.intent.${e}`?ee(e):t}
3toggleAdvanced(){this.advancedPref.toggle(),this.advancedPref.open()||this.intentPickerOpen.set(!1)}controlLabel(e){let t=e.controlKey??"",i=`pil.control.${t}`,o=this.ts.t(i);return o===i?e.label??ee(t):o}controlOptions(e){let t=e.controlKey??"";return(e.options??[]).map(i=>{let o=i.optionKey??"",a=`pil.control.${t}.${o}`,p=this.ts.t(a),P=p===a?i.label??ee(o):p;return{key:o,label:P}}).filter(i=>i.key)}controlValue(e){return e.controlKey?this.controlValues()[e.controlKey]??null:null}onControlPick(e,t){let i=e.controlKey;if(i){if(this.controlValues()[i]===t){this.controlValues.update(o=>{let a=U({},o);return delete a[i],a}),this.advancedOverrides.update(o=>{let a=U({},o);return delete a[i],a}),this.intentTouched.set(!0);return}this.controlValues.update(o=>de(U({},o),{[i]:t})),this.advancedOverrides.update(o=>de(U({},o),{[i]:t})),this.intentTouched.set(!0),this.serverBlock.set(null),this.analyzeNow()}}loadPresets(e,t){return Y(this,null,function*(){let i=++this.presetSeq;try{let o=yield this.promptSvc.getPresets(e,t);if(i!==this.presetSeq)return;this.presets.set((o.presets??[]).filter(a=>!!a.key))}catch(o){if(i!==this.presetSeq)return;this.presets.set([])}})}clearPreset(e){e.stopPropagation(),this.selectedPreset.set(null),this.intent.set(null),this.intentTouched.set(!1),this.availableControls.set([]),this.controlValues.set({}),this.advancedOverrides.set({}),this.seededControls=null,this.serverBlock.set(null),this.analyzeNow()}presetLabel(e){let t=e.key??"";if(!e.label)return ee(t);let i=this.ts.t(e.label);return i===e.label?ee(t):i}onPresetPick(e){let t=this.presets().find(i=>i.key===e);t&&this.applyPreset(t)}applyLegacyTemplate(e){let t=this.presets().find(i=>i.legacyTemplateId===e);return t?(this.applyPreset(t),!0):!1}applyPreset(e){this.selectedPreset.set(e.key??null),this.serverBlock.set(null),this.intent.set(e.intent??null),this.intentTouched.set(!0),this.notSure.set(!1);let t=e.controls??{};this.controlValues.set(U({},t)),this.advancedOverrides.set({}),this.seededControls=Object.keys(t).length?U({},t):null;let i=e.promptStub??"";this.richEditor()?this.seedEditor(i):this.text.set(i),this.promptChange.emit(i),this.analyzeNow()}toggleMore(){this.moreOpen.update(e=>!e)}showServerPolicyBlock(e){this.serverBlock.set(e??"blocked")}static{this.\u0275fac=function(t){return new(t||n)}}static{this.\u0275cmp=j({type:n,selectors:[["app-prompt-composer"]],viewQuery:function(t,i){t&1&&G(i.ta,wt,5)(i.richEditorRef,pe,5),t&2&&W(2)},inputs:{mode:[1,"mode"],provider:[1,"provider"],modelKey:[1,"modelKey"],assets:[1,"assets"],negativePrompt:[1,"negativePrompt"],prompt:[1,"prompt"],passthrough:[1,"passthrough"],showPresets:[1,"showPresets"],richEditor:[1,"richEditor"],richAssets:[1,"richAssets"],elements:[1,"elements"],showAssetMentions:[1,"showAssetMentions"],uploadTokens:[1,"uploadTokens"],label:[1,"label"],optionalHint:[1,"optionalHint"],placeholder:[1,"placeholder"],rows:[1,"rows"],fill:[1,"fill"],accent:[1,"accent"],tallMobile:[1,"tallMobile"],invalid:[1,"invalid"],errorKey:[1,"errorKey"]},outputs:{promptChange:"promptChange",preparedRequest:"preparedRequest",textareaReady:"textareaReady"},decls:21,vars:19,consts:[["ta",""],[1,"composer"],[1,"prompt-header"],[1,"field-label"],[1,"optional-hint"],[1,"prompt-actions"],["size","small",1,"analyze-spinner"],["type","button",1,"btn-prompt-icon",3,"click","disabled","title"],[1,"material-symbols-rounded"],[3,"assets","elements","uploadTokens","showAssetMentions","placeholder","invalid"],[1,"prompt-input",3,"accent-pink","tall-mobile","invalid","placeholder","rows","value"],[1,"field-error"],["role","alert","aria-live","polite",1,"pil-policy"],[1,"pil-panel"],[3,"promptChange","assets","elements","uploadTokens","showAssetMentions","placeholder","invalid"],[1,"prompt-input",3,"input","placeholder","rows","value"],[1,"pil-disclosure-row","pil-advanced-head",3,"click"],["type","button","aria-controls","pil-advanced-body",1,"pil-disclosure-head",3,"title"],[1,"pil-disclosure-title"],[1,"pil-advanced-badge"],[1,"pil-preset-chip"],["aria-hidden","true",1,"material-symbols-rounded","chev"],["id","pil-advanced-body",1,"pil-reveal","pil-advanced-body"],[1,"pil-preset-chip-name"],["type","button",1,"pil-preset-clear",3,"click"],[1,"pil-section"],[1,"pil-section","pil-control
3s-section"],[1,"pil-section-label"],[3,"select","options","selected","ariaLabel"],["aria-live","polite",1,"pil-intent-hint"],[1,"pil-intent"],[1,"pil-intent-text"],["type","button",1,"pil-link",3,"click"],[1,"pil-reveal"],[1,"pil-control"],[1,"pil-control-label"],["type","button",1,"pil-more",3,"click"]],template:function(t,i){t&1&&(c(0,"div",1)(1,"div",2)(2,"span",3),d(3),C(4,"t"),f(5,yt,3,3,"span",4),m(),c(6,"div",5),f(7,Pt,2,3,"app-spinner",6),c(8,"button",7),C(9,"t"),S("click",function(){return i.clear()}),c(10,"span",8),d(11,"close"),m()(),c(12,"button",7),C(13,"t"),S("click",function(){return i.copyPrompt()}),c(14,"span",8),d(15,"content_copy"),m()()()(),f(16,Et,2,8,"app-composer-prompt-editor",9)(17,kt,3,11,"textarea",10),f(18,Tt,3,3,"span",11),f(19,Mt,5,1,"div",12),f(20,Ft,12,12,"div",13),m()),t&2&&(N("fill",i.fill()),r(3),K(" ",x(4,13,i.label())),r(2),v(i.optionalHint()?5:-1),r(2),v(i.analyzing()?7:-1),r(),D("disabled",!i.text().trim())("title",x(9,15,"common.clear")),r(4),D("disabled",!i.text().trim())("title",x(13,17,"common.copy")),r(4),v(i.richEditor()?16:17),r(2),v(i.invalid()&&i.errorKey()?18:-1),r(),v(i.isBlocked()?19:-1),r(),v(!i.passthrough()&&(i.presetOptions().length||!i.isBlocked()&&i.hasAdvancedControls())?20:-1))},dependencies:[Ie,Be,pe,oe],styles:["[_nghost-%COMP%]{display:block;min-width:0;max-width:100%}.composer[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.composer.fill[_ngcontent-%COMP%]{flex:1}.prompt-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:8px}.prompt-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px}.optional-hint[_ngcontent-%COMP%]{font-size:.68rem;font-weight:400;color:var(--d-muted-fg);margin-left:4px}.analyze-spinner[_ngcontent-%COMP%]{display:inline-flex}.prompt-input[_ngcontent-%COMP%]{min-height:90px}.composer.fill[_ngcontent-%COMP%] .prompt-input[_ngcontent-%COMP%]{flex:1}@media(max-width:768px){.prompt-input.tall-mobile[_ngcontent-%COMP%]{min-height:200px}}.prompt-input.accent-pink[_ngcontent-%COMP%]:focus{border-color:color-mix(in oklch,var(--d-primary) 60%,transparent);box-shadow:0 0 0 2px color-mix(in oklch,var(--d-primary) 22%,transparent)}html.dark[_ngcontent-%COMP%] .prompt-input.accent-pink[_ngcontent-%COMP%]{background:#1e1b2e;border-color:#2d2a40;color:#e2e8f0}html.dark[_ngcontent-%COMP%] .prompt-input.accent-pink[_ngcontent-%COMP%]:focus{background:#1e1b2e}html.light[_ngcontent-%COMP%] .prompt-input.accent-pink[_ngcontent-%COMP%]{background:var(--d-card);border-color:var(--d-border);color:var(--d-fg)}html.light[_ngcontent-%COMP%] .prompt-input.accent-pink[_ngcontent-%COMP%]:focus{background:var(--d-card)}.pil-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.pil-section-label[_ngcontent-%COMP%]{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--d-muted-fg)}.pil-controls-section[_ngcontent-%COMP%]{animation:fadeUp .15s ease}.pil-disclosure-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;cursor:pointer;min-width:0}.pil-disclosure-row[_ngcontent-%COMP%] .pil-disclosure-head[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0}.pil-preset-chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:2px;flex:0 1 auto;min-width:0;max-width:45%;padding:2px 2px 2px 9px;border-radius:999px;font-size:.68rem;font-weight:600;background:color-mix(in oklch,var(--d-primary) 14%,transparent);color:var(--d-fg);animation:fadeUp .18s ease}.pil-preset-chip-name[_ngcontent-%COMP%]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pil-preset-clear[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0;padding:0;border:none;border-radius:999px;cursor:pointer;background:none;color:var(--d-muted-fg);transition:background .15s ease,color .15s ease,transform .12s cubic-bezier(.22,1,.36,1)}.pil-preset-clear[_ngcontent-%COMP%]:hover{background:color-mix(in oklch,var(--d-primary) 20%,transparent);color:var(--d-fg)}.pil-preset-clear[_ngcontent-%COMP%]:active{transform:scale(.9)}.pil-preset-clear[_ngcontent-%COMP%]:focus-visible{outline:none;color:var(--d-fg);box-shadow:0 0 0 2px color-mix(in oklch,var(--d-primary) 30%,transparent)}.pil-preset-clear[_ngcontent-%COMP%] .material-symbols-rounded[_ngcontent-%COMP%]{font-size:15px}@media(prefers-reduced-motion:reduce){.pil-preset-chip[_ngcontent-%COMP%]{animation:none!important}.pil-preset-clear[_ngcontent-%COMP%]:active{transform:none!important}}.pil-panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px;min-width:0;animation:fadeIn .18s ease}.pil-intent[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pil-intent-text[_ngcontent-%COMP%]{font-size:.82rem;font-weight:600;color:var(--d-fg)}.pil-intent-hint[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:.8rem;font-weight:600;color:var(--d-muted-fg)}.pil-intent-hint[_ngcontent-%COMP%] .material-symbols-rounded[_ngcontent-%COMP%]{font-size:18px}.pil-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:2px 4px;
3cursor:pointer;font-family:inherit;font-size:.75rem;font-weight:700;color:var(--d-primary-bright);border-radius:6px;transition:color .15s ease,background .15s ease,box-shadow .15s ease}.pil-link[_ngcontent-%COMP%]:hover{background:color-mix(in oklch,var(--d-primary) 10%,transparent)}.pil-link[_ngcontent-%COMP%]:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in oklch,var(--d-primary) 30%,transparent)}.pil-link[_ngcontent-%COMP%] .material-symbols-rounded[_ngcontent-%COMP%]{font-size:16px}.pil-reveal[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px;animation:fadeUp .15s ease}.pil-control[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:5px}.pil-control-label[_ngcontent-%COMP%]{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--d-muted-fg)}.pil-more[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;padding:5px 12px;border:1.5px solid var(--d-border);border-radius:999px;background:color-mix(in oklch,var(--d-card) 60%,transparent);color:var(--d-fg);font-family:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .2s ease,box-shadow .15s ease}.pil-more[_ngcontent-%COMP%]:hover{border-color:color-mix(in oklch,var(--d-primary) 45%,var(--d-border))}.pil-more[_ngcontent-%COMP%]:focus-visible{outline:none;border-color:var(--d-primary);box-shadow:0 0 0 2px color-mix(in oklch,var(--d-primary) 30%,transparent)}.pil-more[_ngcontent-%COMP%] .material-symbols-rounded[_ngcontent-%COMP%]{font-size:18px;transition:transform .2s ease}.pil-more[_ngcontent-%COMP%] .material-symbols-rounded.open[_ngcontent-%COMP%]{transform:rotate(180deg)}.pil-disclosure-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;background:none;border:none;padding:0;cursor:pointer;font-family:inherit;color:var(--d-fg);text-align:left;border-radius:8px;transition:box-shadow .15s ease}.pil-disclosure-head[_ngcontent-%COMP%]:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in oklch,var(--d-primary) 30%,transparent)}.pil-disclosure-head[_ngcontent-%COMP%]:focus-visible .pil-disclosure-title[_ngcontent-%COMP%]{text-decoration:underline}.pil-disclosure-row[_ngcontent-%COMP%]{border-radius:8px;transition:background .15s ease}.pil-disclosure-row[_ngcontent-%COMP%]:hover{background:color-mix(in oklch,var(--d-primary) 6%,transparent)}.pil-disclosure-title[_ngcontent-%COMP%]{font-size:.78rem;font-weight:400;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pil-disclosure-row[_ngcontent-%COMP%] > .chev[_ngcontent-%COMP%]{font-size:18px;color:var(--d-muted-fg);transition:transform .2s ease}.pil-disclosure-row[_ngcontent-%COMP%] > .chev.open[_ngcontent-%COMP%]{transform:rotate(180deg)}.pil-advanced-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;font-size:.66rem;font-weight:700;line-height:1;background:var(--d-grad);color:var(--d-primary-fg)}.pil-policy[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;font-size:.8rem;font-weight:600;line-height:1.4;color:#ef4444;background:color-mix(in oklch,#ef4444 10%,transparent);border:1px solid color-mix(in oklch,#ef4444 40%,transparent);animation:fadeIn .18s ease}.pil-policy[_ngcontent-%COMP%] .material-symbols-rounded[_ngcontent-%COMP%]{font-size:20px;flex-shrink:0}"],changeDetection:0})}}return n})();function ee(n){return n.replace(/[_-]+/g," ").replace(/\b\w/g,s=>s.toUpperCase())}var Wt={text_to_video:["cinematic","animation","realistic","product","explainer","social"],image_to_video:["cinematic","animation","realistic","product","social"],ai_image:["photorealistic","illustration","product","logo","anime","concept"],video_to_video:["restyle","animation","realistic","cinematic"],music:["song","instrumental","jingle","ambient","soundtrack"]};export{Ve as a,zi as b};
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.