@brightsideoy/kama 1.0.0-alpha.16 → 1.0.0-alpha.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,9 +2,12 @@ id: categories
2
2
  label: Category
3
3
  hierarchical: true
4
4
  fields:
5
+ label:
6
+ type: text
7
+ label: Label
8
+ required: true
5
9
  slug:
6
- label: Slug
7
- linkedTo: "key"
10
+ linkedTo: "label"
8
11
  description:
9
12
  type: textarea
10
13
  label: Category Description
@@ -2,9 +2,12 @@ id: tags
2
2
  label: Tag
3
3
  hierarchical: false
4
4
  fields:
5
+ label:
6
+ type: text
7
+ label: Label
8
+ required: true
5
9
  slug:
6
- label: Slug
7
- linkedTo: "key"
10
+ linkedTo: "label"
8
11
  iconName:
9
12
  label: Icon
10
13
  type: icon
@@ -1 +1 @@
1
- import{$ as e,A as t,D as n,F as r,G as i,J as a,K as o,L as s,T as c,Z as l,_ as u,a as d,b as f,bt as ee,d as p,h as m,n as h,st as g,t as _,v,w as y,wt as b,x,y as S,z as C}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{n as te,t as ne}from"./link-Bs_SUS0O.js";import{t as re}from"./layers-D0DLWjff.js";import{t as ie}from"./save-C8e-QRkP.js";import{A as w,N as ae,P as oe,T as se,Y as ce,a as T,at as le,i as E,j as ue,l as de,m as D,nt as fe,o as O,r as k}from"./index-CHczMewv.js";var pe=h(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]);t(),g(),a(),d();var me={class:`asset-editor-wrapper canvas`},A={class:`entity-header`},j={class:`top-row`},M={class:`node-info`},N={class:`dynamic-title-group`},P={class:`inline-title-input`},F={key:0},I={key:1},L={class:`meta-row`},R={key:0,class:`slug-badge`},z={class:`actions-group`},he={class:`btn-text`},ge={class:`editor-body`},_e={key:0,class:`loading-state`},ve={key:1,class:`asset-content-scroll`},ye={class:`main-preview-section`},be={key:1,class:`doc-preview`},xe={class:`preview-footer`},Se=[`href`],Ce={class:`data-column`},we={class:`data-header`},Te={class:`data-content`},Ee={class:`form-group`},De={class:`form-group`},Oe={class:`form-group`},ke={class:`usage-and-crops-section`},Ae={class:`usage-section-container`},je={class:`gallery-header-row`},Me={key:0,class:`usage-empty standalone-empty`},Ne={key:1,class:`list-container`},Pe={class:`node-title`},Fe={class:`meta-stack`},Ie={class:`node-field`},Le={key:0,class:`crop-showcase`},Re={class:`crop-name`},ze={key:0,class:`usage-section-container`,style:{"margin-top":`40px`}},Be={class:`gallery-header-row`},Ve={class:`list-container`},He={class:`meta-stack`},Ue={class:`node-field`},We={key:0,class:`crop-showcase`},Ge={class:`crop-item`},Ke={class:`crop-name`},qe=[`onClick`],B=_(n({__name:`AssetEditor`,props:{assetId:{}},setup(t){let n=t,{activeView:a,nodeSchemas:d}=fe(),{confirmDiscard:h}=le(),{navigateToNodeById:g}=ce(),_=l(null),B=l(!0),V=l(!1),H=l({filename:``,title:``,alt:``}),U=l({filename:``,title:``,alt:``}),W=l(!1),G=l(null),K=l(null),Je=()=>{if(W.value){W.value=!1;return}G.value&&(K.value=G.value.getBoundingClientRect()),W.value=!0},Ye=u(()=>{let e=[{key:`copy-url`,label:`Copy Public URL`,icon:oe},{key:`open-tab`,label:`Open in New Tab`,icon:w}];return _.value&&_.value.connectedNodes?.length>0&&(e.push({key:`div-nodes`,label:``,divider:!0}),e.push({key:`show-nodes`,label:`Connected Nodes (${_.value.connectedNodes.length})`,icon:ne})),e.push({key:`div-1`,label:``,divider:!0},{key:`delete`,label:`Delete Asset`,icon:D}),e}),Xe=async e=>{W.value=!1,_.value&&(e===`copy-url`&&_.value.url?await navigator.clipboard.writeText(_.value.url):e===`open-tab`&&_.value.url?window.open(_.value.url,`_blank`):e===`delete`?await h(`Are you sure you want to delete "${_.value.filename||`this asset`}"?`,`Delete Asset?`,`Delete`,`Cancel`)&&await Ze():e===`show-nodes`&&Y())},Ze=async()=>{try{(await fetch(`/api/admin/assets/${n.assetId}`,{method:`DELETE`})).ok&&(window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),a.value={type:`dashboard`})}catch{}},Qe=u(()=>H.value.filename!==U.value.filename||H.value.title!==U.value.title||H.value.alt!==U.value.alt),q=async()=>{B.value=!0;try{let e=await fetch(`/api/admin/assets/${n.assetId}/details`);if(e.ok){let t=await e.json();_.value=t;let n={filename:t.filename||``,title:t.title||``,alt:t.alt||``};H.value={...n},U.value={...n}}}catch{}finally{B.value=!1}},$e=async()=>{V.value=!0;try{(await fetch(`/api/admin/assets/${n.assetId}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(H.value)})).ok&&(U.value={...H.value},window.dispatchEvent(new CustomEvent(`cms-assets-updated`)))}catch{}finally{V.value=!1}},J=async e=>{let t=`Permanently delete orphaned crop "${_.value?.variants?.find(t=>String(t.id)===String(e))?.filename||`variant`}"?`;if(await h(t,`Delete Crop`,`Delete`,`Cancel`))try{(await fetch(`/api/admin/assets/purge/${e}`,{method:`DELETE`})).ok&&(_.value?.variants&&(_.value.variants=_.value.variants.filter(t=>String(t.id)!==String(e))),window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),await q())}catch{}},et=async()=>{let e=$.value;if(e.length===0)return;let t=`Are you sure you want to permanently delete all ${e.length} orphaned crops?`;if(await h(t,`Purge All Orphaned Crops`,`Purge All`,`Cancel`))try{for(let t of e)await fetch(`/api/admin/assets/purge/${t.id}`,{method:`DELETE`});window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),await q()}catch(e){console.error(`Failed to purge crops`,e)}},tt=e=>{a.value={type:`node`},g(String(e)),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},Y=()=>{sessionStorage.setItem(`cms-vault-asset-filter`,n.assetId),window.dispatchEvent(new CustomEvent(`cms-filter-vault-by-asset`,{detail:n.assetId})),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},X=u(()=>_.value&&(_.value.mimeType?.startsWith(`image/`)||/\.(jpg|jpeg|png|webp|gif|svg)$/i.test(_.value.filename))),Z=e=>{if(!e)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]},nt=(e,t)=>{if(!t||t===`Original`||t===`Unknown Crop`)return t||`Original Image`;try{let n=d.value[e];if(!n)return t;let r=null,i=e=>{if(!(!e||r))for(let n of Object.values(e))n.crop&&t===`standard`&&n.crop.label&&(r=n.crop.label),n.crops&&n.crops[t]&&n.crops[t].label&&(r=n.crops[t].label)};return i(n.fields),n.tabs&&Object.values(n.tabs).forEach(e=>i(e.fields)),r||t}catch{return t}},Q=u(()=>{if(!_.value||!_.value.connectedNodes)return[];let e=new Map;for(let t of _.value.connectedNodes){let n=String(t.id),r=t.contentType||t.nodeType,i=t.fieldKey?.split(`.`)[0]||`Content Area`,a=t.fieldKey?.match(/^blocks\[(\d+)\]/);a&&(i=`Block ${parseInt(a[1],10)+1}`);let o=String(t.assetId)!==String(_.value.id),s=null;if(o){let e=_.value.variants?.find(e=>String(e.id)===String(t.assetId));if(e){let n=`Unknown Crop`,i=t.fieldKey?.match(/\.variants\.([^.]+)/);if(i)n=i[1];else{let t=e.filename?.match(/^(.+?)_ast_/);t&&(n=t[1])}s={id:e.id,url:e.url,label:nt(r,n)}}}else s={id:_.value.id,url:_.value.url,label:`Original Image`};if(!e.has(n))e.set(n,{id:t.id,title:t.title,nodeType:r,fieldKeys:new Set([i]),usedAssets:s?[s]:[]});else{let t=e.get(n);t.fieldKeys.add(i),s&&!t.usedAssets.some(e=>e.id===s.id)&&t.usedAssets.push(s)}}return Array.from(e.values()).map(e=>({...e,fieldKey:Array.from(e.fieldKeys).join(`, `)}))}),$=u(()=>{if(!_.value||!_.value.variants)return[];let e=new Set(_.value.connectedNodes?.map(e=>String(e.assetId))||[]);return _.value.variants.filter(t=>!e.has(String(t.id)))}),rt=e=>{let t=e?.match(/^(.+?)_ast_/);return t?t[1]:`Unknown Crop`};return r(()=>q()),(t,n)=>(s(),x(`div`,me,[v(`header`,A,[v(`div`,j,[v(`div`,M,[v(`div`,N,[v(`span`,P,[_.value?(s(),x(`span`,F,b(_.value.filename),1)):(s(),x(`span`,I,`Loading Asset...`))])]),v(`div`,L,[_.value?(s(),x(`span`,R,b(Z(_.value.sizeBytes))+` • `+b(_.value.mimeType),1)):f(``,!0)])]),v(`div`,z,[_.value?(s(),x(`div`,{key:0,class:`context-wrapper`,ref_key:`contextTriggerRef`,ref:G},[c(T,{variant:`secondary`,title:`More Options`,onClick:Je,disabled:V.value,class:`transparent-btn icon-only-btn`},{default:i(()=>[c(e(ue),{size:16})]),_:1},8,[`disabled`]),c(de,{show:W.value,items:Ye.value,"anchor-rect":K.value,onSelect:Xe,onClose:n[0]||=e=>W.value=!1},null,8,[`show`,`items`,`anchor-rect`])],512)):f(``,!0),c(T,{variant:`primary`,class:`save-btn`,disabled:V.value||!Qe.value,onClick:$e},{default:i(()=>[c(e(ie),{size:14,class:`save-icon`}),v(`span`,he,b(V.value?`Saving...`:`Save Metadata`),1)]),_:1},8,[`disabled`])])])]),v(`div`,ge,[B.value?(s(),x(`div`,_e,`Loading asset details...`)):_.value?(s(),x(`div`,ve,[v(`div`,ye,[v(`div`,{class:ee([`preview-container`,{"is-doc":!X.value}])},[X.value?(s(),S(O,{key:0,url:_.value.url,alt:_.value.alt||_.value.filename,width:1200,quality:85,class:`main-preview-wrapper`},null,8,[`url`,`alt`])):(s(),x(`div`,be,[c(e(se),{size:64}),n[4]||=v(`span`,null,`Preview not available for this file type`,-1)]))],2),v(`div`,xe,[v(`span`,null,`Original Upload: `+b(new Date(_.value.createdAt).toLocaleString()),1),v(`a`,{href:_.value.url,target:`_blank`,class:`ext-link`},[n[5]||=y(`Open original file `,-1),c(e(w),{size:12})],8,Se)])]),v(`div`,Ce,[v(`div`,we,[v(`h3`,null,[c(e(te),{size:14,class:`inline-icon`}),n[6]||=y(` Metadata `,-1)])]),v(`div`,Te,[v(`div`,Ee,[n[7]||=v(`label`,null,`Filename`,-1),o(v(`input`,{"onUpdate:modelValue":n[1]||=e=>H.value.filename=e,type:`text`,class:`cms-input`},null,512),[[p,H.value.filename]]),n[8]||=v(`span`,{class:`help-text`},`Changing this does not break the permanent CDN link.`,-1)]),v(`div`,De,[n[9]||=v(`label`,null,`Title (Internal/SEO)`,-1),o(v(`input`,{"onUpdate:modelValue":n[2]||=e=>H.value.title=e,type:`text`,class:`cms-input`},null,512),[[p,H.value.title]])]),v(`div`,Oe,[n[10]||=v(`label`,null,`Alt Text (Accessibility)`,-1),o(v(`textarea`,{"onUpdate:modelValue":n[3]||=e=>H.value.alt=e,class:`cms-input cms-textarea`},null,512),[[p,H.value.alt]])])])]),v(`div`,ke,[v(`div`,Ae,[v(`div`,je,[v(`h3`,null,[c(e(re),{size:16,class:`inline-icon`}),n[11]||=y(` Node Usage `,-1)]),Q.value.length>0?(s(),x(`button`,{key:0,class:`action-btn outline`,onClick:Y,title:`Show these nodes in the left Vault pane`},[c(e(pe),{size:13}),n[12]||=y(` Vault Filter `,-1)])):f(``,!0)]),Q.value.length===0?(s(),x(`div`,Me,[...n[13]||=[v(`span`,{class:`status-dot warning`},null,-1),v(`span`,null,`Asset is not currently used on any nodes.`,-1)]])):(s(),x(`div`,Ne,[(s(!0),x(m,null,C(Q.value,e=>(s(),S(E,{key:e.id,clickable:``,onClick:t=>tt(e.id)},{title:i(()=>[n[14]||=v(`span`,{class:`status-dot success`},null,-1),v(`span`,Pe,b(e.title||`Untitled`),1),c(k,{variant:`type`},{default:i(()=>[y(b(e.nodeType||`page`),1)]),_:2},1024)]),meta:i(()=>[v(`div`,Fe,[v(`span`,Ie,`Used in field: `+b(e.fieldKey),1),X.value?(s(),x(`div`,Le,[(s(!0),x(m,null,C(e.usedAssets,e=>(s(),x(`div`,{key:e.id,class:`crop-item`},[c(O,{url:e.url,alt:e.label,width:200,quality:75,class:`crop-img-fixed-height`},null,8,[`url`,`alt`]),v(`span`,Re,b(e.label),1)]))),128))])):f(``,!0)])]),_:2},1032,[`onClick`]))),128))]))]),$.value.length>0?(s(),x(`div`,ze,[v(`div`,Be,[v(`h3`,null,[c(e(ae),{size:16,class:`inline-icon`}),y(` Orphaned Crops (`+b($.value.length)+`) `,1)]),v(`button`,{class:`action-btn outline text-danger`,onClick:et},[c(e(D),{size:13}),n[15]||=y(` Purge All `,-1)])]),n[18]||=v(`p`,{class:`gallery-desc`},`These crops were generated previously but are no longer attached to any nodes. You can safely delete them to save storage space.`,-1),v(`div`,Ve,[(s(!0),x(m,null,C($.value,t=>(s(),S(E,{key:t.id},{title:i(()=>[n[16]||=v(`span`,{class:`node-title`},`Orphaned Crop`,-1),c(k,{variant:`type`},{default:i(()=>[y(b(Z(t.sizeBytes)),1)]),_:2},1024)]),meta:i(()=>[v(`div`,He,[v(`span`,Ue,`Generated: `+b(new Date(t.createdAt).toLocaleDateString()),1),X.value?(s(),x(`div`,We,[v(`div`,Ge,[c(O,{url:t.url,alt:t.filename,width:200,quality:75,class:`crop-img-fixed-height`},null,8,[`url`,`alt`]),v(`span`,Ke,b(rt(t.filename)),1)])])):f(``,!0)])]),actions:i(()=>[v(`button`,{class:`action-btn outline text-danger`,style:{border:`none`},onClick:e=>J(t.id)},[c(e(D),{size:13}),n[17]||=y(` Purge `,-1)],8,qe)]),_:2},1024))),128))])])):f(``,!0)])])):f(``,!0)])]))}}),[[`__scopeId`,`data-v-cd1f3a28`]]);export{B as default};
1
+ import{$ as e,A as t,D as n,F as r,G as i,J as a,K as o,L as s,T as c,Z as l,_ as u,a as d,b as f,bt as ee,d as p,h as m,n as h,st as g,t as _,v,w as y,wt as b,x,y as S,z as C}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{n as te,t as ne}from"./link-Bs_SUS0O.js";import{t as re}from"./layers-D0DLWjff.js";import{t as ie}from"./save-C8e-QRkP.js";import{A as w,N as ae,P as oe,T as se,Y as ce,a as T,at as le,i as E,j as ue,l as de,m as D,nt as fe,o as O,r as k}from"./index-BpOAL4tE.js";var pe=h(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]);t(),g(),a(),d();var me={class:`asset-editor-wrapper canvas`},A={class:`entity-header`},j={class:`top-row`},M={class:`node-info`},N={class:`dynamic-title-group`},P={class:`inline-title-input`},F={key:0},I={key:1},L={class:`meta-row`},R={key:0,class:`slug-badge`},z={class:`actions-group`},he={class:`btn-text`},ge={class:`editor-body`},_e={key:0,class:`loading-state`},ve={key:1,class:`asset-content-scroll`},ye={class:`main-preview-section`},be={key:1,class:`doc-preview`},xe={class:`preview-footer`},Se=[`href`],Ce={class:`data-column`},we={class:`data-header`},Te={class:`data-content`},Ee={class:`form-group`},De={class:`form-group`},Oe={class:`form-group`},ke={class:`usage-and-crops-section`},Ae={class:`usage-section-container`},je={class:`gallery-header-row`},Me={key:0,class:`usage-empty standalone-empty`},Ne={key:1,class:`list-container`},Pe={class:`node-title`},Fe={class:`meta-stack`},Ie={class:`node-field`},Le={key:0,class:`crop-showcase`},Re={class:`crop-name`},ze={key:0,class:`usage-section-container`,style:{"margin-top":`40px`}},Be={class:`gallery-header-row`},Ve={class:`list-container`},He={class:`meta-stack`},Ue={class:`node-field`},We={key:0,class:`crop-showcase`},Ge={class:`crop-item`},Ke={class:`crop-name`},qe=[`onClick`],B=_(n({__name:`AssetEditor`,props:{assetId:{}},setup(t){let n=t,{activeView:a,nodeSchemas:d}=fe(),{confirmDiscard:h}=le(),{navigateToNodeById:g}=ce(),_=l(null),B=l(!0),V=l(!1),H=l({filename:``,title:``,alt:``}),U=l({filename:``,title:``,alt:``}),W=l(!1),G=l(null),K=l(null),Je=()=>{if(W.value){W.value=!1;return}G.value&&(K.value=G.value.getBoundingClientRect()),W.value=!0},Ye=u(()=>{let e=[{key:`copy-url`,label:`Copy Public URL`,icon:oe},{key:`open-tab`,label:`Open in New Tab`,icon:w}];return _.value&&_.value.connectedNodes?.length>0&&(e.push({key:`div-nodes`,label:``,divider:!0}),e.push({key:`show-nodes`,label:`Connected Nodes (${_.value.connectedNodes.length})`,icon:ne})),e.push({key:`div-1`,label:``,divider:!0},{key:`delete`,label:`Delete Asset`,icon:D}),e}),Xe=async e=>{W.value=!1,_.value&&(e===`copy-url`&&_.value.url?await navigator.clipboard.writeText(_.value.url):e===`open-tab`&&_.value.url?window.open(_.value.url,`_blank`):e===`delete`?await h(`Are you sure you want to delete "${_.value.filename||`this asset`}"?`,`Delete Asset?`,`Delete`,`Cancel`)&&await Ze():e===`show-nodes`&&Y())},Ze=async()=>{try{(await fetch(`/api/admin/assets/${n.assetId}`,{method:`DELETE`})).ok&&(window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),a.value={type:`dashboard`})}catch{}},Qe=u(()=>H.value.filename!==U.value.filename||H.value.title!==U.value.title||H.value.alt!==U.value.alt),q=async()=>{B.value=!0;try{let e=await fetch(`/api/admin/assets/${n.assetId}/details`);if(e.ok){let t=await e.json();_.value=t;let n={filename:t.filename||``,title:t.title||``,alt:t.alt||``};H.value={...n},U.value={...n}}}catch{}finally{B.value=!1}},$e=async()=>{V.value=!0;try{(await fetch(`/api/admin/assets/${n.assetId}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(H.value)})).ok&&(U.value={...H.value},window.dispatchEvent(new CustomEvent(`cms-assets-updated`)))}catch{}finally{V.value=!1}},J=async e=>{let t=`Permanently delete orphaned crop "${_.value?.variants?.find(t=>String(t.id)===String(e))?.filename||`variant`}"?`;if(await h(t,`Delete Crop`,`Delete`,`Cancel`))try{(await fetch(`/api/admin/assets/purge/${e}`,{method:`DELETE`})).ok&&(_.value?.variants&&(_.value.variants=_.value.variants.filter(t=>String(t.id)!==String(e))),window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),await q())}catch{}},et=async()=>{let e=$.value;if(e.length===0)return;let t=`Are you sure you want to permanently delete all ${e.length} orphaned crops?`;if(await h(t,`Purge All Orphaned Crops`,`Purge All`,`Cancel`))try{for(let t of e)await fetch(`/api/admin/assets/purge/${t.id}`,{method:`DELETE`});window.dispatchEvent(new CustomEvent(`cms-assets-updated`)),await q()}catch(e){console.error(`Failed to purge crops`,e)}},tt=e=>{a.value={type:`node`},g(String(e)),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},Y=()=>{sessionStorage.setItem(`cms-vault-asset-filter`,n.assetId),window.dispatchEvent(new CustomEvent(`cms-filter-vault-by-asset`,{detail:n.assetId})),window.dispatchEvent(new CustomEvent(`cms-switch-sidebar-tab`,{detail:`vault`}))},X=u(()=>_.value&&(_.value.mimeType?.startsWith(`image/`)||/\.(jpg|jpeg|png|webp|gif|svg)$/i.test(_.value.filename))),Z=e=>{if(!e)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]},nt=(e,t)=>{if(!t||t===`Original`||t===`Unknown Crop`)return t||`Original Image`;try{let n=d.value[e];if(!n)return t;let r=null,i=e=>{if(!(!e||r))for(let n of Object.values(e))n.crop&&t===`standard`&&n.crop.label&&(r=n.crop.label),n.crops&&n.crops[t]&&n.crops[t].label&&(r=n.crops[t].label)};return i(n.fields),n.tabs&&Object.values(n.tabs).forEach(e=>i(e.fields)),r||t}catch{return t}},Q=u(()=>{if(!_.value||!_.value.connectedNodes)return[];let e=new Map;for(let t of _.value.connectedNodes){let n=String(t.id),r=t.contentType||t.nodeType,i=t.fieldKey?.split(`.`)[0]||`Content Area`,a=t.fieldKey?.match(/^blocks\[(\d+)\]/);a&&(i=`Block ${parseInt(a[1],10)+1}`);let o=String(t.assetId)!==String(_.value.id),s=null;if(o){let e=_.value.variants?.find(e=>String(e.id)===String(t.assetId));if(e){let n=`Unknown Crop`,i=t.fieldKey?.match(/\.variants\.([^.]+)/);if(i)n=i[1];else{let t=e.filename?.match(/^(.+?)_ast_/);t&&(n=t[1])}s={id:e.id,url:e.url,label:nt(r,n)}}}else s={id:_.value.id,url:_.value.url,label:`Original Image`};if(!e.has(n))e.set(n,{id:t.id,title:t.title,nodeType:r,fieldKeys:new Set([i]),usedAssets:s?[s]:[]});else{let t=e.get(n);t.fieldKeys.add(i),s&&!t.usedAssets.some(e=>e.id===s.id)&&t.usedAssets.push(s)}}return Array.from(e.values()).map(e=>({...e,fieldKey:Array.from(e.fieldKeys).join(`, `)}))}),$=u(()=>{if(!_.value||!_.value.variants)return[];let e=new Set(_.value.connectedNodes?.map(e=>String(e.assetId))||[]);return _.value.variants.filter(t=>!e.has(String(t.id)))}),rt=e=>{let t=e?.match(/^(.+?)_ast_/);return t?t[1]:`Unknown Crop`};return r(()=>q()),(t,n)=>(s(),x(`div`,me,[v(`header`,A,[v(`div`,j,[v(`div`,M,[v(`div`,N,[v(`span`,P,[_.value?(s(),x(`span`,F,b(_.value.filename),1)):(s(),x(`span`,I,`Loading Asset...`))])]),v(`div`,L,[_.value?(s(),x(`span`,R,b(Z(_.value.sizeBytes))+` • `+b(_.value.mimeType),1)):f(``,!0)])]),v(`div`,z,[_.value?(s(),x(`div`,{key:0,class:`context-wrapper`,ref_key:`contextTriggerRef`,ref:G},[c(T,{variant:`secondary`,title:`More Options`,onClick:Je,disabled:V.value,class:`transparent-btn icon-only-btn`},{default:i(()=>[c(e(ue),{size:16})]),_:1},8,[`disabled`]),c(de,{show:W.value,items:Ye.value,"anchor-rect":K.value,onSelect:Xe,onClose:n[0]||=e=>W.value=!1},null,8,[`show`,`items`,`anchor-rect`])],512)):f(``,!0),c(T,{variant:`primary`,class:`save-btn`,disabled:V.value||!Qe.value,onClick:$e},{default:i(()=>[c(e(ie),{size:14,class:`save-icon`}),v(`span`,he,b(V.value?`Saving...`:`Save Metadata`),1)]),_:1},8,[`disabled`])])])]),v(`div`,ge,[B.value?(s(),x(`div`,_e,`Loading asset details...`)):_.value?(s(),x(`div`,ve,[v(`div`,ye,[v(`div`,{class:ee([`preview-container`,{"is-doc":!X.value}])},[X.value?(s(),S(O,{key:0,url:_.value.url,alt:_.value.alt||_.value.filename,width:1200,quality:85,class:`main-preview-wrapper`},null,8,[`url`,`alt`])):(s(),x(`div`,be,[c(e(se),{size:64}),n[4]||=v(`span`,null,`Preview not available for this file type`,-1)]))],2),v(`div`,xe,[v(`span`,null,`Original Upload: `+b(new Date(_.value.createdAt).toLocaleString()),1),v(`a`,{href:_.value.url,target:`_blank`,class:`ext-link`},[n[5]||=y(`Open original file `,-1),c(e(w),{size:12})],8,Se)])]),v(`div`,Ce,[v(`div`,we,[v(`h3`,null,[c(e(te),{size:14,class:`inline-icon`}),n[6]||=y(` Metadata `,-1)])]),v(`div`,Te,[v(`div`,Ee,[n[7]||=v(`label`,null,`Filename`,-1),o(v(`input`,{"onUpdate:modelValue":n[1]||=e=>H.value.filename=e,type:`text`,class:`cms-input`},null,512),[[p,H.value.filename]]),n[8]||=v(`span`,{class:`help-text`},`Changing this does not break the permanent CDN link.`,-1)]),v(`div`,De,[n[9]||=v(`label`,null,`Title (Internal/SEO)`,-1),o(v(`input`,{"onUpdate:modelValue":n[2]||=e=>H.value.title=e,type:`text`,class:`cms-input`},null,512),[[p,H.value.title]])]),v(`div`,Oe,[n[10]||=v(`label`,null,`Alt Text (Accessibility)`,-1),o(v(`textarea`,{"onUpdate:modelValue":n[3]||=e=>H.value.alt=e,class:`cms-input cms-textarea`},null,512),[[p,H.value.alt]])])])]),v(`div`,ke,[v(`div`,Ae,[v(`div`,je,[v(`h3`,null,[c(e(re),{size:16,class:`inline-icon`}),n[11]||=y(` Node Usage `,-1)]),Q.value.length>0?(s(),x(`button`,{key:0,class:`action-btn outline`,onClick:Y,title:`Show these nodes in the left Vault pane`},[c(e(pe),{size:13}),n[12]||=y(` Vault Filter `,-1)])):f(``,!0)]),Q.value.length===0?(s(),x(`div`,Me,[...n[13]||=[v(`span`,{class:`status-dot warning`},null,-1),v(`span`,null,`Asset is not currently used on any nodes.`,-1)]])):(s(),x(`div`,Ne,[(s(!0),x(m,null,C(Q.value,e=>(s(),S(E,{key:e.id,clickable:``,onClick:t=>tt(e.id)},{title:i(()=>[n[14]||=v(`span`,{class:`status-dot success`},null,-1),v(`span`,Pe,b(e.title||`Untitled`),1),c(k,{variant:`type`},{default:i(()=>[y(b(e.nodeType||`page`),1)]),_:2},1024)]),meta:i(()=>[v(`div`,Fe,[v(`span`,Ie,`Used in field: `+b(e.fieldKey),1),X.value?(s(),x(`div`,Le,[(s(!0),x(m,null,C(e.usedAssets,e=>(s(),x(`div`,{key:e.id,class:`crop-item`},[c(O,{url:e.url,alt:e.label,width:200,quality:75,class:`crop-img-fixed-height`},null,8,[`url`,`alt`]),v(`span`,Re,b(e.label),1)]))),128))])):f(``,!0)])]),_:2},1032,[`onClick`]))),128))]))]),$.value.length>0?(s(),x(`div`,ze,[v(`div`,Be,[v(`h3`,null,[c(e(ae),{size:16,class:`inline-icon`}),y(` Orphaned Crops (`+b($.value.length)+`) `,1)]),v(`button`,{class:`action-btn outline text-danger`,onClick:et},[c(e(D),{size:13}),n[15]||=y(` Purge All `,-1)])]),n[18]||=v(`p`,{class:`gallery-desc`},`These crops were generated previously but are no longer attached to any nodes. You can safely delete them to save storage space.`,-1),v(`div`,Ve,[(s(!0),x(m,null,C($.value,t=>(s(),S(E,{key:t.id},{title:i(()=>[n[16]||=v(`span`,{class:`node-title`},`Orphaned Crop`,-1),c(k,{variant:`type`},{default:i(()=>[y(b(Z(t.sizeBytes)),1)]),_:2},1024)]),meta:i(()=>[v(`div`,He,[v(`span`,Ue,`Generated: `+b(new Date(t.createdAt).toLocaleDateString()),1),X.value?(s(),x(`div`,We,[v(`div`,Ge,[c(O,{url:t.url,alt:t.filename,width:200,quality:75,class:`crop-img-fixed-height`},null,8,[`url`,`alt`]),v(`span`,Ke,b(rt(t.filename)),1)])])):f(``,!0)])]),actions:i(()=>[v(`button`,{class:`action-btn outline text-danger`,style:{border:`none`},onClick:e=>J(t.id)},[c(e(D),{size:13}),n[17]||=y(` Purge `,-1)],8,qe)]),_:2},1024))),128))])])):f(``,!0)])])):f(``,!0)])]))}}),[[`__scopeId`,`data-v-cd1f3a28`]]);export{B as default};
@@ -1 +1 @@
1
- import{$ as e,A as t,D as n,J as r,L as i,T as a,t as o,v as s,w as c,x as l}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as u}from"./layers-D0DLWjff.js";import{C as d,G as f,M as p,U as m,X as h,Y as g,w as _,y as v}from"./index-CHczMewv.js";t(),r();var y={class:`help-canvas`},b={class:`help-container`},x={class:`steps-grid`},S={class:`step-card`},C={class:`card-header`},w={class:`card-icon channel-icon`},T={class:`step-card`},E={class:`card-header`},D={class:`card-icon tree-icon`},O={class:`step-card`},k={class:`card-header`},A={class:`card-icon vault-icon`},j={class:`architecture-guide`},M={class:`guide-header`},N={class:`guide-columns`},P={class:`guide-col-arrow`},F={class:`guide-col-arrow`},I={class:`guide-col-arrow`},L=o(n({__name:`CmsHelp`,setup(t){let{handleAddNewChannel:n}=f(),{handleAddNewTree:r}=h(),{handleAddNewNode:o}=g();return(t,f)=>(i(),l(`main`,y,[s(`div`,b,[f[17]||=s(`header`,{class:`help-header`},[s(`h1`,null,`KAMA`),s(`p`,null,`Build modular content in the Vault, organize it into Navigation Trees, and expose it to your channels via API.`)],-1),s(`div`,x,[s(`div`,S,[s(`div`,C,[s(`div`,w,[a(e(d),{size:20})]),f[3]||=s(`div`,{class:`step-badge`},`Step 1`,-1)]),f[5]||=s(`div`,{class:`card-content`},[s(`h3`,null,`Channels`),s(`p`,null,`Delivery targets that consume your headless API.`)],-1),s(`button`,{class:`card-action-btn`,onClick:f[0]||=(...t)=>e(n)&&e(n)(...t)},[a(e(v),{size:16}),f[4]||=c(` Create Channel `,-1)])]),s(`div`,T,[s(`div`,E,[s(`div`,D,[a(e(_),{size:20})]),f[6]||=s(`div`,{class:`step-badge`},`Step 2`,-1)]),f[8]||=s(`div`,{class:`card-content`},[s(`h3`,null,`Trees`),s(`p`,null,`Decoupled structural hierarchies and navigation menus.`)],-1),s(`button`,{class:`card-action-btn`,onClick:f[1]||=(...t)=>e(r)&&e(r)(...t)},[a(e(v),{size:16}),f[7]||=c(` Create Tree `,-1)])]),s(`div`,O,[s(`div`,k,[s(`div`,A,[a(e(p),{size:20})]),f[9]||=s(`div`,{class:`step-badge`},`Step 3`,-1)]),f[11]||=s(`div`,{class:`card-content`},[s(`h3`,null,`Vault`),s(`p`,null,`Flat, headless content store for reusable content items.`)],-1),s(`button`,{class:`card-action-btn`,onClick:f[2]||=t=>e(o)()},[a(e(v),{size:16}),f[10]||=c(` Create Content `,-1)])])]),s(`section`,j,[s(`div`,M,[a(e(u),{size:18,class:`guide-icon`}),f[12]||=s(`h4`,null,`Architecture Flow`,-1)]),s(`div`,N,[f[13]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`1. Content Vault`),s(`p`,null,`Raw content entities existing independently of routing.`)],-1),s(`div`,P,[a(e(m),{size:16})]),f[14]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`2. Navigation Trees`),s(`p`,null,`Decoupled structures mapping content items to URL hierarchies.`)],-1),s(`div`,F,[a(e(m),{size:16})]),f[15]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`3. Channels`),s(`p`,null,`Delivery targets binding trees and languages to specific contexts.`)],-1),s(`div`,I,[a(e(m),{size:16})]),f[16]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`4. Headless API`),s(`p`,null,`Endpoints serving structured JSON to your frontends.`)],-1)])])])]))}}),[[`__scopeId`,`data-v-c739c397`]]);export{L as default};
1
+ import{$ as e,A as t,D as n,J as r,L as i,T as a,t as o,v as s,w as c,x as l}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as u}from"./layers-D0DLWjff.js";import{C as d,G as f,M as p,U as m,X as h,Y as g,w as _,y as v}from"./index-BpOAL4tE.js";t(),r();var y={class:`help-canvas`},b={class:`help-container`},x={class:`steps-grid`},S={class:`step-card`},C={class:`card-header`},w={class:`card-icon channel-icon`},T={class:`step-card`},E={class:`card-header`},D={class:`card-icon tree-icon`},O={class:`step-card`},k={class:`card-header`},A={class:`card-icon vault-icon`},j={class:`architecture-guide`},M={class:`guide-header`},N={class:`guide-columns`},P={class:`guide-col-arrow`},F={class:`guide-col-arrow`},I={class:`guide-col-arrow`},L=o(n({__name:`CmsHelp`,setup(t){let{handleAddNewChannel:n}=f(),{handleAddNewTree:r}=h(),{handleAddNewNode:o}=g();return(t,f)=>(i(),l(`main`,y,[s(`div`,b,[f[17]||=s(`header`,{class:`help-header`},[s(`h1`,null,`KAMA`),s(`p`,null,`Build modular content in the Vault, organize it into Navigation Trees, and expose it to your channels via API.`)],-1),s(`div`,x,[s(`div`,S,[s(`div`,C,[s(`div`,w,[a(e(d),{size:20})]),f[3]||=s(`div`,{class:`step-badge`},`Step 1`,-1)]),f[5]||=s(`div`,{class:`card-content`},[s(`h3`,null,`Channels`),s(`p`,null,`Delivery targets that consume your headless API.`)],-1),s(`button`,{class:`card-action-btn`,onClick:f[0]||=(...t)=>e(n)&&e(n)(...t)},[a(e(v),{size:16}),f[4]||=c(` Create Channel `,-1)])]),s(`div`,T,[s(`div`,E,[s(`div`,D,[a(e(_),{size:20})]),f[6]||=s(`div`,{class:`step-badge`},`Step 2`,-1)]),f[8]||=s(`div`,{class:`card-content`},[s(`h3`,null,`Trees`),s(`p`,null,`Decoupled structural hierarchies and navigation menus.`)],-1),s(`button`,{class:`card-action-btn`,onClick:f[1]||=(...t)=>e(r)&&e(r)(...t)},[a(e(v),{size:16}),f[7]||=c(` Create Tree `,-1)])]),s(`div`,O,[s(`div`,k,[s(`div`,A,[a(e(p),{size:20})]),f[9]||=s(`div`,{class:`step-badge`},`Step 3`,-1)]),f[11]||=s(`div`,{class:`card-content`},[s(`h3`,null,`Vault`),s(`p`,null,`Flat, headless content store for reusable content items.`)],-1),s(`button`,{class:`card-action-btn`,onClick:f[2]||=t=>e(o)()},[a(e(v),{size:16}),f[10]||=c(` Create Content `,-1)])])]),s(`section`,j,[s(`div`,M,[a(e(u),{size:18,class:`guide-icon`}),f[12]||=s(`h4`,null,`Architecture Flow`,-1)]),s(`div`,N,[f[13]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`1. Content Vault`),s(`p`,null,`Raw content entities existing independently of routing.`)],-1),s(`div`,P,[a(e(m),{size:16})]),f[14]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`2. Navigation Trees`),s(`p`,null,`Decoupled structures mapping content items to URL hierarchies.`)],-1),s(`div`,F,[a(e(m),{size:16})]),f[15]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`3. Channels`),s(`p`,null,`Delivery targets binding trees and languages to specific contexts.`)],-1),s(`div`,I,[a(e(m),{size:16})]),f[16]||=s(`div`,{class:`guide-col`},[s(`strong`,null,`4. Headless API`),s(`p`,null,`Endpoints serving structured JSON to your frontends.`)],-1)])])])]))}}),[[`__scopeId`,`data-v-c739c397`]]);export{L as default};
@@ -1,3 +1,3 @@
1
- import{$ as e,A as t,D as n,F as r,G as i,J as a,L as o,T as s,Z as c,_ as l,a as u,b as d,h as f,m as p,st as m,t as h,v as g,w as _,wt as v,x as y,y as b,z as x}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as ee}from"./history-XvWNE5zO.js";import{C as te,I as ne,L as S,Y as re,a as C,g as w,i as T,nt as ie,r as E,rt as D,tt as O,w as ae,x as k}from"./index-CHczMewv.js";t(),a(),m(),u();var oe={class:`publisher-canvas full-width`},se={class:`publisher-container full-width`},ce={class:`publisher-header`},le={class:`header-actions`},ue={key:0,class:`empty-publisher-state`},de={key:1,class:`empty-publisher-state`},fe={key:2,class:`channel-groups-list`},pe={class:`group-header`},A={class:`group-title`},j=[`checked`,`indeterminate`,`onChange`],M={class:`count-badge`},N={class:`nodes-table`},P=[`checked`,`onChange`],F={class:`node-title`},I={key:3,class:`history-section`},L={class:`history-header`},R={class:`history-card`},z={class:`node-title`},B={class:`history-time`},V=h(n({__name:`CmsPublisher`,setup(t){let n=ie(),{loadNodeContent:a}=re(),u=c(!1),m=c(new Set),h=c(null),V=c(!1),H=c([]),U=c([]),W=c(new Set),me=async()=>{if(n.hasLoadedStats.value){H.value=n.vaultStats.value?.pendingNodes||[],U.value=n.vaultStats.value?.recentActivity||[];return}u.value=!0;try{let e=await fetch(`/api/cms/stats`);if(e.ok){let t=await e.json();n.vaultStats.value=t,n.hasLoadedStats.value=!0,H.value=t.pendingNodes||[],U.value=t.recentActivity||[]}}catch{}finally{u.value=!1}},G=l(()=>{let e=new Map;if(H.value.forEach(t=>{let r=String(n.activeNode.value?.id)===String(t.id),i=O(t),a=r&&n.hasUnpublishedChanges.value||i.hasUnpublishedChanges;e.set(String(t.id),{...t,evalState:{...i,hasUnpublishedChanges:a}})}),n.activeNode.value?.id){let t=String(n.activeNode.value.id),r=O(n.activeNode.value),i=n.hasUnpublishedChanges.value||r.hasUnpublishedChanges;(r.isDraft||r.isUnpublishedDraft||i)&&(e.has(t)||e.set(t,{...n.activeNode.value,evalState:{...r,hasUnpublishedChanges:i}}))}return Array.from(e.values())}),he=l(()=>{let e=new Map,t=`Unassigned / Vault Only`;return e.set(t,{channelName:t,nodes:[]}),G.value.forEach(n=>{let r=n.channelNames||[];r.length===0?e.get(t).nodes.push(n):r.forEach(t=>{e.has(t)||e.set(t,{channelName:t,nodes:[]}),e.get(t).nodes.push(n)})}),Array.from(e.values()).filter(e=>e.nodes.length>0)}),K=e=>W.value.has(e),ge=e=>{let t=new Set(W.value);t.has(e)?t.delete(e):t.add(e),W.value=t},q=e=>e.filter(e=>W.value.has(e.id)).length,J=e=>e.length>0&&e.every(e=>W.value.has(e.id)),_e=e=>q(e)>0&&q(e)<e.length,Y=e=>{let t=new Set(W.value),n=J(e);e.forEach(e=>{n?t.delete(e.id):t.add(e.id)}),W.value=t},X=l(()=>W.value.size),Z=e=>{a({id:e.id,title:e.title,slug:e.slug,nodeType:e.contentType||e.nodeType,channelId:e.channelId||``,language:e.language||`en`,children:[]})},Q=e=>{U.value=[{id:e.id,title:e.title||`Untitled Document`,slug:e.slug,contentType:e.contentType||e.nodeType||`page`,updatedAt:new Date().toISOString()},...U.value.filter(t=>String(t.id)!==String(e.id))].slice(0,10)},ve=async e=>{m.value.add(e);try{let t=G.value.find(t=>String(t.id)===String(e));if((await D.publishNode(e)).ok){n.updateNodeInState(e,{status:`published`,hasUnpublishedChanges:!1}),H.value=H.value.filter(t=>String(t.id)!==String(e)),String(n.activeNode.value?.id)===String(e)&&(n.activeNode.value.status=`published`,n.activeNode.value.hasUnpublishedChanges=!1);let r=new Set(W.value);r.delete(e),W.value=r,t&&Q(t),n.invalidateStats(),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`cms-node-updated`))}}finally{m.value.delete(e)}},$=async e=>{if(e.length===0)return;let t=e.map(e=>e.id);t.forEach(e=>m.value.add(e));try{let e=await D.publishNodesBatch(t);if(e.ok){let t=(await e.json()).publishedIds||[];for(let e of t)n.updateNodeInState(e,{status:`published`,hasUnpublishedChanges:!1}),String(n.activeNode.value?.id)===String(e)&&(n.activeNode.value.status=`published`,n.activeNode.value.hasUnpublishedChanges=!1);G.value.filter(e=>t.includes(e.id)).forEach(e=>Q(e)),H.value=H.value.filter(e=>!t.includes(e.id));let r=new Set(W.value);t.forEach(e=>r.delete(e)),W.value=r,n.invalidateStats(),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`cms-node-updated`))}}finally{t.forEach(e=>m.value.delete(e))}},ye=async(e,t)=>{h.value=e;let n=q(t)>0?t.filter(e=>W.value.has(e.id)):t;await $(n),h.value=null},be=async()=>{V.value=!0;let e=X.value>0?G.value.filter(e=>W.value.has(e.id)):G.value;await $(e),V.value=!1},xe=e=>{if(!e)return``;try{return new Date(e).toLocaleString([],{dateStyle:`medium`,timeStyle:`short`})}catch{return e}};return r(()=>me()),(t,n)=>(o(),y(`main`,oe,[g(`div`,se,[g(`header`,ce,[n[2]||=g(`div`,{class:`header-title-group`},[g(`h1`,null,`Publishing Center`),g(`p`,null,`Review and release pending drafts or bulk-publish updates across your distribution channels.`)],-1),g(`div`,le,[G.value.length>0?(o(),b(C,{key:0,variant:`primary`,class:`publish-all-btn`,disabled:V.value||m.value.size>0,onClick:be},{default:i(()=>[V.value?(o(),b(e(k),{key:0,size:16,class:`spin`})):(o(),b(e(w),{key:1,size:16})),g(`span`,null,v(X.value>0?`Publish Selected (${X.value})`:`Publish All
1
+ import{$ as e,A as t,D as n,F as r,G as i,J as a,L as o,T as s,Z as c,_ as l,a as u,b as d,h as f,m as p,st as m,t as h,v as g,w as _,wt as v,x as y,y as b,z as x}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as ee}from"./history-XvWNE5zO.js";import{C as te,I as ne,L as S,Y as re,a as C,g as w,i as T,nt as ie,r as E,rt as D,tt as O,w as ae,x as k}from"./index-BpOAL4tE.js";t(),a(),m(),u();var oe={class:`publisher-canvas full-width`},se={class:`publisher-container full-width`},ce={class:`publisher-header`},le={class:`header-actions`},ue={key:0,class:`empty-publisher-state`},de={key:1,class:`empty-publisher-state`},fe={key:2,class:`channel-groups-list`},pe={class:`group-header`},A={class:`group-title`},j=[`checked`,`indeterminate`,`onChange`],M={class:`count-badge`},N={class:`nodes-table`},P=[`checked`,`onChange`],F={class:`node-title`},I={key:3,class:`history-section`},L={class:`history-header`},R={class:`history-card`},z={class:`node-title`},B={class:`history-time`},V=h(n({__name:`CmsPublisher`,setup(t){let n=ie(),{loadNodeContent:a}=re(),u=c(!1),m=c(new Set),h=c(null),V=c(!1),H=c([]),U=c([]),W=c(new Set),me=async()=>{if(n.hasLoadedStats.value){H.value=n.vaultStats.value?.pendingNodes||[],U.value=n.vaultStats.value?.recentActivity||[];return}u.value=!0;try{let e=await fetch(`/api/cms/stats`);if(e.ok){let t=await e.json();n.vaultStats.value=t,n.hasLoadedStats.value=!0,H.value=t.pendingNodes||[],U.value=t.recentActivity||[]}}catch{}finally{u.value=!1}},G=l(()=>{let e=new Map;if(H.value.forEach(t=>{let r=String(n.activeNode.value?.id)===String(t.id),i=O(t),a=r&&n.hasUnpublishedChanges.value||i.hasUnpublishedChanges;e.set(String(t.id),{...t,evalState:{...i,hasUnpublishedChanges:a}})}),n.activeNode.value?.id){let t=String(n.activeNode.value.id),r=O(n.activeNode.value),i=n.hasUnpublishedChanges.value||r.hasUnpublishedChanges;(r.isDraft||r.isUnpublishedDraft||i)&&(e.has(t)||e.set(t,{...n.activeNode.value,evalState:{...r,hasUnpublishedChanges:i}}))}return Array.from(e.values())}),he=l(()=>{let e=new Map,t=`Unassigned / Vault Only`;return e.set(t,{channelName:t,nodes:[]}),G.value.forEach(n=>{let r=n.channelNames||[];r.length===0?e.get(t).nodes.push(n):r.forEach(t=>{e.has(t)||e.set(t,{channelName:t,nodes:[]}),e.get(t).nodes.push(n)})}),Array.from(e.values()).filter(e=>e.nodes.length>0)}),K=e=>W.value.has(e),ge=e=>{let t=new Set(W.value);t.has(e)?t.delete(e):t.add(e),W.value=t},q=e=>e.filter(e=>W.value.has(e.id)).length,J=e=>e.length>0&&e.every(e=>W.value.has(e.id)),_e=e=>q(e)>0&&q(e)<e.length,Y=e=>{let t=new Set(W.value),n=J(e);e.forEach(e=>{n?t.delete(e.id):t.add(e.id)}),W.value=t},X=l(()=>W.value.size),Z=e=>{a({id:e.id,title:e.title,slug:e.slug,nodeType:e.contentType||e.nodeType,channelId:e.channelId||``,language:e.language||`en`,children:[]})},Q=e=>{U.value=[{id:e.id,title:e.title||`Untitled Document`,slug:e.slug,contentType:e.contentType||e.nodeType||`page`,updatedAt:new Date().toISOString()},...U.value.filter(t=>String(t.id)!==String(e.id))].slice(0,10)},ve=async e=>{m.value.add(e);try{let t=G.value.find(t=>String(t.id)===String(e));if((await D.publishNode(e)).ok){n.updateNodeInState(e,{status:`published`,hasUnpublishedChanges:!1}),H.value=H.value.filter(t=>String(t.id)!==String(e)),String(n.activeNode.value?.id)===String(e)&&(n.activeNode.value.status=`published`,n.activeNode.value.hasUnpublishedChanges=!1);let r=new Set(W.value);r.delete(e),W.value=r,t&&Q(t),n.invalidateStats(),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`cms-node-updated`))}}finally{m.value.delete(e)}},$=async e=>{if(e.length===0)return;let t=e.map(e=>e.id);t.forEach(e=>m.value.add(e));try{let e=await D.publishNodesBatch(t);if(e.ok){let t=(await e.json()).publishedIds||[];for(let e of t)n.updateNodeInState(e,{status:`published`,hasUnpublishedChanges:!1}),String(n.activeNode.value?.id)===String(e)&&(n.activeNode.value.status=`published`,n.activeNode.value.hasUnpublishedChanges=!1);G.value.filter(e=>t.includes(e.id)).forEach(e=>Q(e)),H.value=H.value.filter(e=>!t.includes(e.id));let r=new Set(W.value);t.forEach(e=>r.delete(e)),W.value=r,n.invalidateStats(),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`cms-node-updated`))}}finally{t.forEach(e=>m.value.delete(e))}},ye=async(e,t)=>{h.value=e;let n=q(t)>0?t.filter(e=>W.value.has(e.id)):t;await $(n),h.value=null},be=async()=>{V.value=!0;let e=X.value>0?G.value.filter(e=>W.value.has(e.id)):G.value;await $(e),V.value=!1},xe=e=>{if(!e)return``;try{return new Date(e).toLocaleString([],{dateStyle:`medium`,timeStyle:`short`})}catch{return e}};return r(()=>me()),(t,n)=>(o(),y(`main`,oe,[g(`div`,se,[g(`header`,ce,[n[2]||=g(`div`,{class:`header-title-group`},[g(`h1`,null,`Publishing Center`),g(`p`,null,`Review and release pending drafts or bulk-publish updates across your distribution channels.`)],-1),g(`div`,le,[G.value.length>0?(o(),b(C,{key:0,variant:`primary`,class:`publish-all-btn`,disabled:V.value||m.value.size>0,onClick:be},{default:i(()=>[V.value?(o(),b(e(k),{key:0,size:16,class:`spin`})):(o(),b(e(w),{key:1,size:16})),g(`span`,null,v(X.value>0?`Publish Selected (${X.value})`:`Publish All
2
2
  (${G.value.length})`),1)]),_:1},8,[`disabled`])):d(``,!0)])]),u.value&&G.value.length===0?(o(),y(`div`,ue,[s(e(k),{size:28,class:`spin empty-icon`}),n[3]||=g(`p`,null,`Gathering pending content updates...`,-1)])):G.value.length===0?(o(),y(`div`,de,[s(e(S),{size:36,class:`success-icon`}),n[4]||=g(`h3`,null,`All Content Published!`,-1),n[5]||=g(`p`,null,`No draft changes or pending revisions found. Your delivery channels are fully up to date.`,-1)])):(o(),y(`div`,fe,[(o(!0),y(f,null,x(he.value,t=>(o(),y(`section`,{key:t.channelName,class:`channel-group-card`},[g(`div`,pe,[g(`div`,A,[g(`label`,{class:`checkbox-container`,onClick:n[0]||=p(()=>{},[`stop`])},[g(`input`,{type:`checkbox`,checked:J(t.nodes),indeterminate:_e(t.nodes),onChange:e=>Y(t.nodes)},null,40,j),n[6]||=g(`span`,{class:`checkmark`},null,-1)]),s(e(te),{size:18,class:`channel-icon`}),g(`h2`,null,v(t.channelName),1),g(`span`,M,v(t.nodes.length)+` Pending`,1)]),s(C,{variant:`secondary`,size:`sm`,disabled:h.value===t.channelName||V.value,onClick:e=>ye(t.channelName,t.nodes)},{default:i(()=>[h.value===t.channelName?(o(),b(e(k),{key:0,size:14,class:`spin`})):(o(),b(e(w),{key:1,size:14})),g(`span`,null,v(q(t.nodes)>0?`Publish Selected
3
3
  (${q(t.nodes)})`:`Publish Channel Items`),1)]),_:2},1032,[`disabled`,`onClick`])]),g(`div`,N,[(o(!0),y(f,null,x(t.nodes,t=>(o(),b(T,{key:t.id,"is-selected":K(t.id),clickable:``,onClick:e=>Z(t)},{prefix:i(()=>[g(`label`,{class:`checkbox-container`,onClick:n[1]||=p(()=>{},[`stop`])},[g(`input`,{type:`checkbox`,checked:K(t.id),onChange:e=>ge(t.id)},null,40,P),n[7]||=g(`span`,{class:`checkmark`},null,-1)])]),title:i(()=>[g(`span`,F,v(t.title||`Untitled Draft`),1),s(E,{variant:`type`},{default:i(()=>[_(v(t.contentType||t.nodeType||`page`),1)]),_:2},1024)]),meta:i(()=>[s(E,{variant:`slug`},{default:i(()=>[_(`/`+v(t.slug),1)]),_:2},1024),(o(!0),y(f,null,x(t.treeNames,t=>(o(),b(E,{variant:`tree`,key:t},{default:i(()=>[s(e(ae),{size:11}),_(` `+v(t),1)]),_:2},1024))),128))]),actions:i(()=>[s(C,{variant:`secondary`,size:`sm`,class:`icon-only-btn`,title:`Publish Item`,disabled:m.value.has(t.id)||V.value,onClick:p(e=>ve(t.id),[`stop`])},{default:i(()=>[m.value.has(t.id)?(o(),b(e(k),{key:0,size:14,class:`spin`})):(o(),b(e(w),{key:1,size:14}))]),_:2},1032,[`disabled`,`onClick`])]),_:2},1032,[`is-selected`,`onClick`]))),128))])]))),128))])),U.value.length>0?(o(),y(`section`,I,[g(`div`,L,[s(e(ee),{size:18,class:`history-icon`}),n[8]||=g(`h2`,null,`Recently Published`,-1)]),g(`div`,R,[(o(!0),y(f,null,x(U.value,t=>(o(),b(T,{key:t.id,clickable:``,onClick:e=>Z(t)},{prefix:i(()=>[s(e(S),{size:16,class:`published-check`})]),title:i(()=>[g(`span`,z,v(t.title||`Untitled Document`),1),s(E,{variant:`type`},{default:i(()=>[_(v(t.contentType||t.nodeType||`page`),1)]),_:2},1024)]),meta:i(()=>[s(E,{variant:`slug`},{default:i(()=>[_(`/`+v(t.slug),1)]),_:2},1024)]),actions:i(()=>[g(`div`,B,[s(e(ne),{size:12}),g(`span`,null,v(xe(t.updatedAt)),1)])]),_:2},1032,[`onClick`]))),128))])])):d(``,!0)])]))}}),[[`__scopeId`,`data-v-e0e64ba6`]]);export{V as default};
@@ -1 +1 @@
1
- import{$ as e,A as t,D as n,G as r,J as i,K as a,L as o,T as s,Z as c,a as l,c as u,d,n as f,st as p,t as m,u as h,v as g,w as _,wt as v,x as y}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as ee}from"./save-C8e-QRkP.js";import{t as b}from"./smartphone-Wy6xQi_i.js";import{C as x,a as S,f as C,i as w}from"./index-CHczMewv.js";var T=f(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),E=f(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),D=f(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),O=f(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),k=f(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]);t(),i(),l(),p();var A={class:`user-center-canvas`},j={class:`user-center-container`},M={class:`settings-grid`},N={class:`settings-column`},P={class:`settings-card`},F={class:`card-header`},I={class:`header-title`},L={class:`card-body dynamic-form`},R={class:`form-row`},z={class:`form-group half-width`},B={class:`form-group half-width`},V={class:`form-group`},H={class:`form-group`},te={class:`form-actions`},U={class:`settings-card`},W={class:`card-header`},G={class:`header-title`},K={class:`card-body`},q={class:`setting-row`},J={class:`setting-info`},Y={class:`setting-row`},X={class:`setting-info`},Z={class:`setting-row toggle-row`},Q={class:`setting-info`},ne={class:`toggle-switch`},re={class:`settings-column`},ie={class:`settings-card`},ae={class:`card-header`},oe={class:`header-title`},se={class:`card-body`},ce={class:`security-block`},le={class:`block-info`},ue={class:`security-block`},de={class:`block-info`},fe={class:`settings-card`},pe={class:`card-header`},$={class:`header-title`},me={class:`card-body p-0`,style:{padding:`0`}},he={class:`session-icon-box current-device`},ge={class:`session-icon-box`},_e={class:`logout-btn`,title:`Revoke session`},ve={class:`form-actions`,style:{padding:`16px`}},ye=m(n({__name:`CmsUserCenter`,setup(t){let n=c({firstName:`Admin`,lastName:`User`,email:`admin@kama-cms.com`,role:`Administrator`}),i=c({theme:`system`,language:`en`,emailNotifications:!0}),l=c(!1),f=()=>{l.value=!0,setTimeout(()=>{l.value=!1},600)};return(t,c)=>(o(),y(`main`,A,[g(`div`,j,[c[31]||=g(`header`,{class:`view-header`},[g(`h1`,null,`User Center`),g(`p`,null,`Manage your personal profile, security settings, and global preferences.`)],-1),g(`div`,M,[g(`div`,N,[g(`section`,P,[g(`header`,F,[g(`div`,I,[s(e(C),{size:18,class:`section-icon`}),c[7]||=g(`h2`,null,`Profile Information`,-1)])]),g(`div`,L,[g(`div`,R,[g(`div`,z,[c[8]||=g(`div`,{class:`label-row`},[g(`label`,null,`First Name`)],-1),a(g(`input`,{type:`text`,"onUpdate:modelValue":c[0]||=e=>n.value.firstName=e},null,512),[[d,n.value.firstName]])]),g(`div`,B,[c[9]||=g(`div`,{class:`label-row`},[g(`label`,null,`Last Name`)],-1),a(g(`input`,{type:`text`,"onUpdate:modelValue":c[1]||=e=>n.value.lastName=e},null,512),[[d,n.value.lastName]])])]),g(`div`,V,[c[10]||=g(`div`,{class:`label-row`},[g(`label`,null,`Email Address`)],-1),a(g(`input`,{type:`email`,"onUpdate:modelValue":c[2]||=e=>n.value.email=e},null,512),[[d,n.value.email]])]),g(`div`,H,[c[11]||=g(`div`,{class:`label-row`},[g(`label`,null,`Role / Access Level`)],-1),a(g(`input`,{type:`text`,"onUpdate:modelValue":c[3]||=e=>n.value.role=e,disabled:``,class:`disabled-input`},null,512),[[d,n.value.role]])]),g(`div`,te,[s(S,{variant:`primary`,onClick:f,disabled:l.value},{default:r(()=>[s(e(ee),{size:14}),g(`span`,null,v(l.value?`Saving...`:`Save Profile`),1)]),_:1},8,[`disabled`])])])]),g(`section`,U,[g(`header`,W,[g(`div`,G,[s(e(T),{size:18,class:`section-icon`}),c[12]||=g(`h2`,null,`Preferences`,-1)])]),g(`div`,K,[g(`div`,q,[g(`div`,J,[s(e(O),{size:16,class:`setting-icon`}),c[13]||=g(`div`,null,[g(`strong`,null,`Interface Theme`),g(`p`,null,`Choose your preferred color mode.`)],-1)]),a(g(`select`,{class:`cms-select`,"onUpdate:modelValue":c[4]||=e=>i.value.theme=e},[...c[14]||=[g(`option`,{value:`light`},`Light`,-1),g(`option`,{value:`dark`},`Dark`,-1),g(`option`,{value:`system`},`System Default`,-1)]],512),[[h,i.value.theme]])]),g(`div`,Y,[g(`div`,X,[s(e(x),{size:16,class:`setting-icon`}),c[15]||=g(`div`,null,[g(`strong`,null,`Language`),g(`p`,null,`CMS interface language.`)],-1)]),a(g(`select`,{class:`cms-select`,"onUpdate:modelValue":c[5]||=e=>i.value.language=e},[...c[16]||=[g(`option`,{value:`en`},`English (US)`,-1),g(`option`,{value:`de`},`German`,-1),g(`option`,{value:`fr`},`French`,-1)]],512),[[h,i.value.language]])]),g(`div`,Z,[g(`div`,Q,[s(e(T),{size:16,class:`setting-icon`}),c[17]||=g(`div`,null,[g(`strong`,null,`Email Notifications`),g(`p`,null,`Receive alerts for workflow changes.`)],-1)]),g(`label`,ne,[a(g(`input`,{type:`checkbox`,"onUpdate:modelValue":c[6]||=e=>i.value.emailNotifications=e},null,512),[[u,i.value.emailNotifications]]),c[18]||=g(`span`,{class:`slider`},null,-1)])])])])]),g(`div`,re,[g(`section`,ie,[g(`header`,ae,[g(`div`,oe,[s(e(k),{size:18,class:`section-icon`}),c[19]||=g(`h2`,null,`Security`,-1)])]),g(`div`,se,[g(`div`,ce,[g(`div`,le,[s(e(E),{size:16}),c[20]||=g(`div`,null,[g(`strong`,null,`Password`),g(`p`,null,`Last changed 3 months ago.`)],-1)]),s(S,{variant:`secondary`,size:`sm`},{default:r(()=>[...c[21]||=[_(`Update`,-1)]]),_:1})]),g(`div`,ue,[g(`div`,de,[s(e(k),{size:16}),c[22]||=g(`div`,null,[g(`strong`,null,`Two-Factor Authentication`),g(`p`,null,`Add an extra layer of security.`)],-1)]),s(S,{variant:`secondary`,size:`sm`},{default:r(()=>[...c[23]||=[_(`Enable 2FA`,-1)]]),_:1})])])]),g(`section`,fe,[g(`header`,pe,[g(`div`,$,[s(e(b),{size:18,class:`section-icon`}),c[24]||=g(`h2`,null,`Active Sessions`,-1)])]),g(`div`,me,[s(w,{"is-selected":!0,style:{"border-radius":`0`}},{prefix:r(()=>[g(`div`,he,[s(e(x),{size:16})])]),title:r(()=>[...c[25]||=[g(`span`,{style:{"font-weight":`600`}},`Mac OS • Chrome`,-1)]]),meta:r(()=>[...c[26]||=[g(`span`,{style:{"font-size":`11.5px`,color:`var(--cms-color-text-muted)`}},`Current session • IP: 192.168.1.1`,-1)]]),actions:r(()=>[...c[27]||=[g(`span`,{class:`active-badge`},`Active Now`,-1)]]),_:1}),s(w,null,{prefix:r(()=>[g(`div`,ge,[s(e(b),{size:16})])]),title:r(()=>[...c[28]||=[g(`span`,{style:{"font-weight":`600`}},`iOS • Safari`,-1)]]),meta:r(()=>[...c[29]||=[g(`span`,{style:{"font-size":`11.5px`,color:`var(--cms-color-text-muted)`}},`Last seen 2 hours ago • IP: 10.0.0.45`,-1)]]),actions:r(()=>[g(`button`,_e,[s(e(D),{size:14})])]),_:1}),g(`div`,ve,[s(S,{variant:`danger-outline`,class:`full-width-btn`},{default:r(()=>[...c[30]||=[_(`Log out of all other devices `,-1)]]),_:1})])])])])])])]))}}),[[`__scopeId`,`data-v-8dc2f1d9`]]);export{ye as default};
1
+ import{$ as e,A as t,D as n,G as r,J as i,K as a,L as o,T as s,Z as c,a as l,c as u,d,n as f,st as p,t as m,u as h,v as g,w as _,wt as v,x as y}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as ee}from"./save-C8e-QRkP.js";import{t as b}from"./smartphone-Wy6xQi_i.js";import{C as x,a as S,f as C,i as w}from"./index-BpOAL4tE.js";var T=f(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),E=f(`key`,[[`path`,{d:`m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4`,key:`g0fldk`}],[`path`,{d:`m21 2-9.6 9.6`,key:`1j0ho8`}],[`circle`,{cx:`7.5`,cy:`15.5`,r:`5.5`,key:`yqb3hr`}]]),D=f(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),O=f(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),k=f(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]);t(),i(),l(),p();var A={class:`user-center-canvas`},j={class:`user-center-container`},M={class:`settings-grid`},N={class:`settings-column`},P={class:`settings-card`},F={class:`card-header`},I={class:`header-title`},L={class:`card-body dynamic-form`},R={class:`form-row`},z={class:`form-group half-width`},B={class:`form-group half-width`},V={class:`form-group`},H={class:`form-group`},te={class:`form-actions`},U={class:`settings-card`},W={class:`card-header`},G={class:`header-title`},K={class:`card-body`},q={class:`setting-row`},J={class:`setting-info`},Y={class:`setting-row`},X={class:`setting-info`},Z={class:`setting-row toggle-row`},Q={class:`setting-info`},ne={class:`toggle-switch`},re={class:`settings-column`},ie={class:`settings-card`},ae={class:`card-header`},oe={class:`header-title`},se={class:`card-body`},ce={class:`security-block`},le={class:`block-info`},ue={class:`security-block`},de={class:`block-info`},fe={class:`settings-card`},pe={class:`card-header`},$={class:`header-title`},me={class:`card-body p-0`,style:{padding:`0`}},he={class:`session-icon-box current-device`},ge={class:`session-icon-box`},_e={class:`logout-btn`,title:`Revoke session`},ve={class:`form-actions`,style:{padding:`16px`}},ye=m(n({__name:`CmsUserCenter`,setup(t){let n=c({firstName:`Admin`,lastName:`User`,email:`admin@kama-cms.com`,role:`Administrator`}),i=c({theme:`system`,language:`en`,emailNotifications:!0}),l=c(!1),f=()=>{l.value=!0,setTimeout(()=>{l.value=!1},600)};return(t,c)=>(o(),y(`main`,A,[g(`div`,j,[c[31]||=g(`header`,{class:`view-header`},[g(`h1`,null,`User Center`),g(`p`,null,`Manage your personal profile, security settings, and global preferences.`)],-1),g(`div`,M,[g(`div`,N,[g(`section`,P,[g(`header`,F,[g(`div`,I,[s(e(C),{size:18,class:`section-icon`}),c[7]||=g(`h2`,null,`Profile Information`,-1)])]),g(`div`,L,[g(`div`,R,[g(`div`,z,[c[8]||=g(`div`,{class:`label-row`},[g(`label`,null,`First Name`)],-1),a(g(`input`,{type:`text`,"onUpdate:modelValue":c[0]||=e=>n.value.firstName=e},null,512),[[d,n.value.firstName]])]),g(`div`,B,[c[9]||=g(`div`,{class:`label-row`},[g(`label`,null,`Last Name`)],-1),a(g(`input`,{type:`text`,"onUpdate:modelValue":c[1]||=e=>n.value.lastName=e},null,512),[[d,n.value.lastName]])])]),g(`div`,V,[c[10]||=g(`div`,{class:`label-row`},[g(`label`,null,`Email Address`)],-1),a(g(`input`,{type:`email`,"onUpdate:modelValue":c[2]||=e=>n.value.email=e},null,512),[[d,n.value.email]])]),g(`div`,H,[c[11]||=g(`div`,{class:`label-row`},[g(`label`,null,`Role / Access Level`)],-1),a(g(`input`,{type:`text`,"onUpdate:modelValue":c[3]||=e=>n.value.role=e,disabled:``,class:`disabled-input`},null,512),[[d,n.value.role]])]),g(`div`,te,[s(S,{variant:`primary`,onClick:f,disabled:l.value},{default:r(()=>[s(e(ee),{size:14}),g(`span`,null,v(l.value?`Saving...`:`Save Profile`),1)]),_:1},8,[`disabled`])])])]),g(`section`,U,[g(`header`,W,[g(`div`,G,[s(e(T),{size:18,class:`section-icon`}),c[12]||=g(`h2`,null,`Preferences`,-1)])]),g(`div`,K,[g(`div`,q,[g(`div`,J,[s(e(O),{size:16,class:`setting-icon`}),c[13]||=g(`div`,null,[g(`strong`,null,`Interface Theme`),g(`p`,null,`Choose your preferred color mode.`)],-1)]),a(g(`select`,{class:`cms-select`,"onUpdate:modelValue":c[4]||=e=>i.value.theme=e},[...c[14]||=[g(`option`,{value:`light`},`Light`,-1),g(`option`,{value:`dark`},`Dark`,-1),g(`option`,{value:`system`},`System Default`,-1)]],512),[[h,i.value.theme]])]),g(`div`,Y,[g(`div`,X,[s(e(x),{size:16,class:`setting-icon`}),c[15]||=g(`div`,null,[g(`strong`,null,`Language`),g(`p`,null,`CMS interface language.`)],-1)]),a(g(`select`,{class:`cms-select`,"onUpdate:modelValue":c[5]||=e=>i.value.language=e},[...c[16]||=[g(`option`,{value:`en`},`English (US)`,-1),g(`option`,{value:`de`},`German`,-1),g(`option`,{value:`fr`},`French`,-1)]],512),[[h,i.value.language]])]),g(`div`,Z,[g(`div`,Q,[s(e(T),{size:16,class:`setting-icon`}),c[17]||=g(`div`,null,[g(`strong`,null,`Email Notifications`),g(`p`,null,`Receive alerts for workflow changes.`)],-1)]),g(`label`,ne,[a(g(`input`,{type:`checkbox`,"onUpdate:modelValue":c[6]||=e=>i.value.emailNotifications=e},null,512),[[u,i.value.emailNotifications]]),c[18]||=g(`span`,{class:`slider`},null,-1)])])])])]),g(`div`,re,[g(`section`,ie,[g(`header`,ae,[g(`div`,oe,[s(e(k),{size:18,class:`section-icon`}),c[19]||=g(`h2`,null,`Security`,-1)])]),g(`div`,se,[g(`div`,ce,[g(`div`,le,[s(e(E),{size:16}),c[20]||=g(`div`,null,[g(`strong`,null,`Password`),g(`p`,null,`Last changed 3 months ago.`)],-1)]),s(S,{variant:`secondary`,size:`sm`},{default:r(()=>[...c[21]||=[_(`Update`,-1)]]),_:1})]),g(`div`,ue,[g(`div`,de,[s(e(k),{size:16}),c[22]||=g(`div`,null,[g(`strong`,null,`Two-Factor Authentication`),g(`p`,null,`Add an extra layer of security.`)],-1)]),s(S,{variant:`secondary`,size:`sm`},{default:r(()=>[...c[23]||=[_(`Enable 2FA`,-1)]]),_:1})])])]),g(`section`,fe,[g(`header`,pe,[g(`div`,$,[s(e(b),{size:18,class:`section-icon`}),c[24]||=g(`h2`,null,`Active Sessions`,-1)])]),g(`div`,me,[s(w,{"is-selected":!0,style:{"border-radius":`0`}},{prefix:r(()=>[g(`div`,he,[s(e(x),{size:16})])]),title:r(()=>[...c[25]||=[g(`span`,{style:{"font-weight":`600`}},`Mac OS • Chrome`,-1)]]),meta:r(()=>[...c[26]||=[g(`span`,{style:{"font-size":`11.5px`,color:`var(--cms-color-text-muted)`}},`Current session • IP: 192.168.1.1`,-1)]]),actions:r(()=>[...c[27]||=[g(`span`,{class:`active-badge`},`Active Now`,-1)]]),_:1}),s(w,null,{prefix:r(()=>[g(`div`,ge,[s(e(b),{size:16})])]),title:r(()=>[...c[28]||=[g(`span`,{style:{"font-weight":`600`}},`iOS • Safari`,-1)]]),meta:r(()=>[...c[29]||=[g(`span`,{style:{"font-size":`11.5px`,color:`var(--cms-color-text-muted)`}},`Last seen 2 hours ago • IP: 10.0.0.45`,-1)]]),actions:r(()=>[g(`button`,_e,[s(e(D),{size:14})])]),_:1}),g(`div`,ve,[s(S,{variant:`danger-outline`,class:`full-width-btn`},{default:r(()=>[...c[30]||=[_(`Log out of all other devices `,-1)]]),_:1})])])])])])])]))}}),[[`__scopeId`,`data-v-8dc2f1d9`]]);export{ye as default};
@@ -1 +1 @@
1
- import{$ as e,A as t,D as n,F as r,G as i,H as a,J as o,L as s,N as c,P as ee,T as l,U as u,Z as d,_ as f,b as p,bt as m,h,n as g,st as _,t as v,v as y,w as b,wt as x,x as S,xt as C,y as w}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as te}from"./history-XvWNE5zO.js";import{t as ne}from"./smartphone-Wy6xQi_i.js";import{$ as re,A as ie,B as ae,d as oe,l as se,nt as ce,u as T,v as le}from"./index-CHczMewv.js";import{n as ue}from"./NodeEditor-DaCIVPGT.js";var de=g(`file-braces`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),fe=g(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),pe=g(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),me=g(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]);t(),o(),_();var he={class:`split-preview-pane`},ge={class:`preview-toolbar`},_e={class:`segmented-control`},ve={class:`device-controls-group`},ye=[`title`],be={class:`trigger-label`},xe=[`title`],Se={class:`toolbar-right`},Ce=[`href`],we=[`href`],Te=[`src`,`title`],E=v(n({__name:`EditorSplitPreview`,props:{paneWidthPx:{}},emits:[`close`],setup(t,{emit:n}){let o=t,g=n,{activeNode:_,selectedChannelId:v,selectedLanguage:E,allChannels:D,activeSnapshotVersion:O,nodeSchemas:Ee}=ce(),k=d(null),A=d(null),j=T(`kama_preview_mode`,`draft`),M=T(`kama_preview_device`,`desktop`),N=T(`kama_preview_orientation`,`portrait`),P=T(`kama_preview_autofit`,!0),F=d({w:800,h:800}),I=d(Date.now()),L=d(``),R=async()=>{let e=_.value?.id;if(!e)return;let t=D.value.find(e=>String(e.id)===String(v.value)),n=!1;if(t)try{let r=t.channelRoot;!r&&t.dataJson&&(r=(typeof t.dataJson==`string`?JSON.parse(t.dataJson):t.dataJson)?.channelRoot),typeof r==`string`&&(r=JSON.parse(r));let i=r?.nodeId??r?.id;i&&String(i)===String(e)&&(n=!0)}catch{}if(n){L.value=`/`;return}try{let n=t?.id||v.value||``,r=await fetch(`/api/cms/nodes.json?id=${e}&channelId=${n}`);if(r.ok){let e=await r.json();if(e.node?.path){L.value=e.node.path;return}}}catch(e){console.error(`Failed to fetch live canonical route`,e)}let r=_.value?.slug||``;L.value=r===`index`?`/`:`/${r.replace(/^\/+|\/+$/g,``)}`};u(()=>_.value?.id,R,{immediate:!0});let z={desktop:{label:`Desktop (100% Fluid)`,width:null,height:null},desktop_4k:{label:`4K UHD (3840 × 2160)`,width:3840,height:2160},desktop_fhd:{label:`Full HD (1920 × 1080)`,width:1920,height:1080},macbook_air:{label:`MacBook Air (1440 × 900)`,width:1440,height:900},laptop_std:{label:`Laptop (1366 × 768)`,width:1366,height:768},ipad_pro:{label:`iPad Pro 12.9" (1024 × 1366)`,width:1024,height:1366},ipad_air:{label:`iPad Air / Mini (820 × 1180)`,width:820,height:1180},ipad_standard:{label:`iPad 10th Gen (810 × 1080)`,width:810,height:1080},iphone_15_pro_max:{label:`iPhone 15 Pro Max (430 × 932)`,width:430,height:932},iphone_15_pro:{label:`iPhone 15 Pro (393 × 852)`,width:393,height:852},iphone_se:{label:`iPhone SE (375 × 667)`,width:375,height:667},samsung_s23:{label:`Samsung Galaxy S23 (360 × 780)`,width:360,height:780}},B=f(()=>{let e=0;return Object.values(z).forEach(t=>{t.label.length>e&&(e=t.label.length)}),`${Math.ceil(e*7.2)+48}px`}),V=d(!1),H=d(null),U=d(null),De=f(()=>Object.entries(z).map(([e,t])=>({key:e,label:t.label,title:t.label,isActive:M.value===e}))),Oe=()=>{if(V.value){V.value=!1;return}H.value&&(U.value=H.value.getBoundingClientRect()),V.value=!0},ke=e=>{M.value=String(e),V.value=!1,X()},Ae=f(()=>z[M.value]?.label||`Select Device`),je=f(()=>{if(!_.value)return`Untitled`;let e=Ee.value?.[_.value.nodeType||``];return re(e,_.value)}),W=f(()=>{let e=D.value.find(e=>String(e.id)===String(v.value)),t=e?.baseUrl||e?.url||(typeof window<`u`?window.location.origin:``);if((t.includes(`localhost:8787`)||t.includes(`127.0.0.1:8787`))&&(t=t.replace(`8787`,`4321`)),t=t.replace(/\/$/,``),!_.value?.id)return t;let n=L.value;n.startsWith(`/`)||(n=`/${n}`);let r=n===`/`?``:n,i=E.value?`/${E.value}`:``,a=`${t}${i}${r}`,o=`_cb=${I.value}`;return O.value?`${a}?preview=true&revisionId=${O.value}&${o}`:`${a}?${j.value===`draft`?`preview=true&`:``}${o}`}),Me=f(()=>{if(!_.value)return`#`;let e=L.value;e.startsWith(`/`)||(e=`/${e}`);let t=e===`/`?``:e,n=E.value?`&lang=${E.value}`:``,r=O.value?`&revisionId=${O.value}`:``,i=j.value===`draft`||!!O.value;return`/api/v1/node${t}?channelId=${v.value}&preview=${i}${n}${r}`}),G=f(()=>M.value!==`desktop`),K=f(()=>{let e=z[M.value];if(!e||!e.width||!e.height)return{w:null,h:null};let t=N.value===`landscape`;return{w:t?e.height:e.width,h:t?e.width:e.height}}),q=f(()=>{let{w:e,h:t}=K.value;return!e||!t||e>t?`landscape`:`portrait`}),J=f(()=>{if(!G.value||!P.value)return 1;let{w:e,h:t}=K.value;if(!e||!t)return 1;let n=Math.max(100,F.value.w-48),r=Math.max(100,F.value.h-48),i=n/e,a=r/t;return Math.max(.15,Math.min(i,a))}),Y=()=>{if(A.value){let e=A.value.clientWidth,t=A.value.clientHeight;if(e>0&&t>0)F.value={w:e,h:t};else{let e=A.value.getBoundingClientRect();e.width>0&&e.height>0&&(F.value={w:e.width,h:e.height})}}},X=()=>{c(()=>{requestAnimationFrame(()=>{Y()})})},Z=()=>{N.value=N.value===`portrait`?`landscape`:`portrait`,X()},Ne=()=>{P.value=!P.value,X()},Pe=()=>{I.value=Date.now()},Fe=()=>{X()},Q=async()=>{let e=W.value;await R(),e===W.value&&k.value?.contentWindow&&k.value.contentWindow.postMessage({type:`kama-preview-update`,url:W.value},`*`)};u(O,e=>{e&&(j.value=`draft`)}),u(()=>o.paneWidthPx,()=>{Y()});let $=null;return r(()=>{typeof window<`u`&&window.addEventListener(`cms-node-updated`,Q),A.value&&(Y(),$=new ResizeObserver(()=>Y()),$.observe(A.value)),X()}),ee(()=>{typeof window<`u`&&window.removeEventListener(`cms-node-updated`,Q),$&&$.disconnect()}),(t,n)=>(s(),S(`div`,he,[y(`header`,ge,[y(`div`,_e,[e(O)?(s(),w(ue,{key:0,variant:`warning`,icon:e(te),title:`Viewing Historical Snapshot`},{default:i(()=>[b(` v`+x(e(O)),1)]),_:1},8,[`icon`])):(s(),S(h,{key:1},[y(`button`,{type:`button`,class:m([`segmented-btn text-btn`,{active:e(j)===`draft`}]),onClick:n[0]||=e=>j.value=`draft`},` Draft `,2),y(`button`,{type:`button`,class:m([`segmented-btn text-btn`,{active:e(j)===`live`}]),onClick:n[1]||=e=>j.value=`live`},` Public `,2)],64))]),y(`div`,ve,[G.value?(s(),S(`button`,{key:0,type:`button`,class:m([`icon-btn zoom-btn`,{active:e(P)}]),title:e(P)?`Auto-Fit Active (Click for 1:1 Real Size)`:`1:1 Real Size Active (Click to Auto-Fit)`,onClick:Ne},[(s(),w(a(e(P)?e(pe):e(fe)),{size:14}))],10,ye)):p(``,!0),y(`div`,{class:`device-menu-wrapper`,ref_key:`deviceTriggerRef`,ref:H,style:C({width:B.value})},[y(`button`,{type:`button`,class:`device-trigger-btn`,onClick:Oe},[l(e(me),{size:13,class:`trigger-icon`}),y(`span`,be,x(Ae.value),1),l(e(ae),{size:12,class:`chevron-icon`})]),l(se,{show:V.value,items:De.value,"anchor-rect":U.value,"min-width":B.value,onSelect:ke,onClose:n[2]||=e=>V.value=!1},null,8,[`show`,`items`,`anchor-rect`,`min-width`])],4),G.value?(s(),S(`button`,{key:1,type:`button`,class:`icon-btn orientation-btn`,title:`Switch to ${q.value===`portrait`?`Landscape`:`Portrait`}`,onClick:Z},[l(e(ne),{size:14,style:C({transform:q.value===`landscape`?`rotate(90deg)`:`rotate(0deg)`,transition:`transform 0.2s`})},null,8,[`style`])],8,xe)):p(``,!0)]),y(`div`,Se,[y(`button`,{type:`button`,class:`icon-btn`,title:`Refresh Preview`,onClick:Pe},[l(e(le),{size:13})]),y(`a`,{href:Me.value,target:`_blank`,class:`icon-btn`,title:`View JSON API Payload`},[l(e(de),{size:13})],8,Ce),y(`a`,{href:W.value,target:`_blank`,class:`icon-btn`,title:`Open Preview in New Tab`},[l(e(ie),{size:13})],8,we),y(`button`,{type:`button`,class:`icon-btn close-btn`,title:`Close Split View`,onClick:n[3]||=e=>g(`close`)},[l(e(oe),{size:14})])])]),y(`div`,{ref_key:`stageRef`,ref:A,class:m([`preview-stage`,{"is-fixed-frame":G.value}])},[y(`div`,{class:`device-frame-wrapper`,style:C(G.value&&K.value.w&&K.value.h?{width:`${K.value.w*J.value}px`,height:`${K.value.h*J.value}px`}:{width:`100%`,height:`100%`})},[y(`div`,{class:`device-frame`,style:C(G.value&&K.value.w&&K.value.h?{width:`${K.value.w}px`,height:`${K.value.h}px`,transform:`scale(${J.value})`,transformOrigin:`top left`}:{width:`100%`,height:`100%`})},[(s(),S(`iframe`,{key:W.value,ref_key:`previewIframeRef`,ref:k,src:W.value,class:`preview-iframe`,title:je.value,onLoad:Fe},null,40,Te))],4)],4)],2)]))}}),[[`__scopeId`,`data-v-f9dd6bd0`]]);export{E as default};
1
+ import{$ as e,A as t,D as n,F as r,G as i,H as a,J as o,L as s,N as c,P as ee,T as l,U as u,Z as d,_ as f,b as p,bt as m,h,n as g,st as _,t as v,v as y,w as b,wt as x,x as S,xt as C,y as w}from"./_plugin-vue_export-helper-CTn6xl4w.js";import{t as te}from"./history-XvWNE5zO.js";import{t as ne}from"./smartphone-Wy6xQi_i.js";import{$ as re,A as ie,B as ae,d as oe,l as se,nt as ce,u as T,v as le}from"./index-BpOAL4tE.js";import{n as ue}from"./NodeEditor-CZGnkwvf.js";var de=g(`file-braces`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1`,key:`1oajmo`}],[`path`,{d:`M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1`,key:`mpwhp6`}]]),fe=g(`maximize-2`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`m21 3-7 7`,key:`1l2asr`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M9 21H3v-6`,key:`wtvkvv`}]]),pe=g(`minimize-2`,[[`path`,{d:`m14 10 7-7`,key:`oa77jy`}],[`path`,{d:`M20 10h-6V4`,key:`mjg0md`}],[`path`,{d:`m3 21 7-7`,key:`tjx5ai`}],[`path`,{d:`M4 14h6v6`,key:`rmj7iw`}]]),me=g(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]);t(),o(),_();var he={class:`split-preview-pane`},ge={class:`preview-toolbar`},_e={class:`segmented-control`},ve={class:`device-controls-group`},ye=[`title`],be={class:`trigger-label`},xe=[`title`],Se={class:`toolbar-right`},Ce=[`href`],we=[`href`],Te=[`src`,`title`],E=v(n({__name:`EditorSplitPreview`,props:{paneWidthPx:{}},emits:[`close`],setup(t,{emit:n}){let o=t,g=n,{activeNode:_,selectedChannelId:v,selectedLanguage:E,allChannels:D,activeSnapshotVersion:O,nodeSchemas:Ee}=ce(),k=d(null),A=d(null),j=T(`kama_preview_mode`,`draft`),M=T(`kama_preview_device`,`desktop`),N=T(`kama_preview_orientation`,`portrait`),P=T(`kama_preview_autofit`,!0),F=d({w:800,h:800}),I=d(Date.now()),L=d(``),R=async()=>{let e=_.value?.id;if(!e)return;let t=D.value.find(e=>String(e.id)===String(v.value)),n=!1;if(t)try{let r=t.channelRoot;!r&&t.dataJson&&(r=(typeof t.dataJson==`string`?JSON.parse(t.dataJson):t.dataJson)?.channelRoot),typeof r==`string`&&(r=JSON.parse(r));let i=r?.nodeId??r?.id;i&&String(i)===String(e)&&(n=!0)}catch{}if(n){L.value=`/`;return}try{let n=t?.id||v.value||``,r=await fetch(`/api/cms/nodes.json?id=${e}&channelId=${n}`);if(r.ok){let e=await r.json();if(e.node?.path){L.value=e.node.path;return}}}catch(e){console.error(`Failed to fetch live canonical route`,e)}let r=_.value?.slug||``;L.value=r===`index`?`/`:`/${r.replace(/^\/+|\/+$/g,``)}`};u(()=>_.value?.id,R,{immediate:!0});let z={desktop:{label:`Desktop (100% Fluid)`,width:null,height:null},desktop_4k:{label:`4K UHD (3840 × 2160)`,width:3840,height:2160},desktop_fhd:{label:`Full HD (1920 × 1080)`,width:1920,height:1080},macbook_air:{label:`MacBook Air (1440 × 900)`,width:1440,height:900},laptop_std:{label:`Laptop (1366 × 768)`,width:1366,height:768},ipad_pro:{label:`iPad Pro 12.9" (1024 × 1366)`,width:1024,height:1366},ipad_air:{label:`iPad Air / Mini (820 × 1180)`,width:820,height:1180},ipad_standard:{label:`iPad 10th Gen (810 × 1080)`,width:810,height:1080},iphone_15_pro_max:{label:`iPhone 15 Pro Max (430 × 932)`,width:430,height:932},iphone_15_pro:{label:`iPhone 15 Pro (393 × 852)`,width:393,height:852},iphone_se:{label:`iPhone SE (375 × 667)`,width:375,height:667},samsung_s23:{label:`Samsung Galaxy S23 (360 × 780)`,width:360,height:780}},B=f(()=>{let e=0;return Object.values(z).forEach(t=>{t.label.length>e&&(e=t.label.length)}),`${Math.ceil(e*7.2)+48}px`}),V=d(!1),H=d(null),U=d(null),De=f(()=>Object.entries(z).map(([e,t])=>({key:e,label:t.label,title:t.label,isActive:M.value===e}))),Oe=()=>{if(V.value){V.value=!1;return}H.value&&(U.value=H.value.getBoundingClientRect()),V.value=!0},ke=e=>{M.value=String(e),V.value=!1,X()},Ae=f(()=>z[M.value]?.label||`Select Device`),je=f(()=>{if(!_.value)return`Untitled`;let e=Ee.value?.[_.value.nodeType||``];return re(e,_.value)}),W=f(()=>{let e=D.value.find(e=>String(e.id)===String(v.value)),t=e?.baseUrl||e?.url||(typeof window<`u`?window.location.origin:``);if((t.includes(`localhost:8787`)||t.includes(`127.0.0.1:8787`))&&(t=t.replace(`8787`,`4321`)),t=t.replace(/\/$/,``),!_.value?.id)return t;let n=L.value;n.startsWith(`/`)||(n=`/${n}`);let r=n===`/`?``:n,i=E.value?`/${E.value}`:``,a=`${t}${i}${r}`,o=`_cb=${I.value}`;return O.value?`${a}?preview=true&revisionId=${O.value}&${o}`:`${a}?${j.value===`draft`?`preview=true&`:``}${o}`}),Me=f(()=>{if(!_.value)return`#`;let e=L.value;e.startsWith(`/`)||(e=`/${e}`);let t=e===`/`?``:e,n=E.value?`&lang=${E.value}`:``,r=O.value?`&revisionId=${O.value}`:``,i=j.value===`draft`||!!O.value;return`/api/v1/node${t}?channelId=${v.value}&preview=${i}${n}${r}`}),G=f(()=>M.value!==`desktop`),K=f(()=>{let e=z[M.value];if(!e||!e.width||!e.height)return{w:null,h:null};let t=N.value===`landscape`;return{w:t?e.height:e.width,h:t?e.width:e.height}}),q=f(()=>{let{w:e,h:t}=K.value;return!e||!t||e>t?`landscape`:`portrait`}),J=f(()=>{if(!G.value||!P.value)return 1;let{w:e,h:t}=K.value;if(!e||!t)return 1;let n=Math.max(100,F.value.w-48),r=Math.max(100,F.value.h-48),i=n/e,a=r/t;return Math.max(.15,Math.min(i,a))}),Y=()=>{if(A.value){let e=A.value.clientWidth,t=A.value.clientHeight;if(e>0&&t>0)F.value={w:e,h:t};else{let e=A.value.getBoundingClientRect();e.width>0&&e.height>0&&(F.value={w:e.width,h:e.height})}}},X=()=>{c(()=>{requestAnimationFrame(()=>{Y()})})},Z=()=>{N.value=N.value===`portrait`?`landscape`:`portrait`,X()},Ne=()=>{P.value=!P.value,X()},Pe=()=>{I.value=Date.now()},Fe=()=>{X()},Q=async()=>{let e=W.value;await R(),e===W.value&&k.value?.contentWindow&&k.value.contentWindow.postMessage({type:`kama-preview-update`,url:W.value},`*`)};u(O,e=>{e&&(j.value=`draft`)}),u(()=>o.paneWidthPx,()=>{Y()});let $=null;return r(()=>{typeof window<`u`&&window.addEventListener(`cms-node-updated`,Q),A.value&&(Y(),$=new ResizeObserver(()=>Y()),$.observe(A.value)),X()}),ee(()=>{typeof window<`u`&&window.removeEventListener(`cms-node-updated`,Q),$&&$.disconnect()}),(t,n)=>(s(),S(`div`,he,[y(`header`,ge,[y(`div`,_e,[e(O)?(s(),w(ue,{key:0,variant:`warning`,icon:e(te),title:`Viewing Historical Snapshot`},{default:i(()=>[b(` v`+x(e(O)),1)]),_:1},8,[`icon`])):(s(),S(h,{key:1},[y(`button`,{type:`button`,class:m([`segmented-btn text-btn`,{active:e(j)===`draft`}]),onClick:n[0]||=e=>j.value=`draft`},` Draft `,2),y(`button`,{type:`button`,class:m([`segmented-btn text-btn`,{active:e(j)===`live`}]),onClick:n[1]||=e=>j.value=`live`},` Public `,2)],64))]),y(`div`,ve,[G.value?(s(),S(`button`,{key:0,type:`button`,class:m([`icon-btn zoom-btn`,{active:e(P)}]),title:e(P)?`Auto-Fit Active (Click for 1:1 Real Size)`:`1:1 Real Size Active (Click to Auto-Fit)`,onClick:Ne},[(s(),w(a(e(P)?e(pe):e(fe)),{size:14}))],10,ye)):p(``,!0),y(`div`,{class:`device-menu-wrapper`,ref_key:`deviceTriggerRef`,ref:H,style:C({width:B.value})},[y(`button`,{type:`button`,class:`device-trigger-btn`,onClick:Oe},[l(e(me),{size:13,class:`trigger-icon`}),y(`span`,be,x(Ae.value),1),l(e(ae),{size:12,class:`chevron-icon`})]),l(se,{show:V.value,items:De.value,"anchor-rect":U.value,"min-width":B.value,onSelect:ke,onClose:n[2]||=e=>V.value=!1},null,8,[`show`,`items`,`anchor-rect`,`min-width`])],4),G.value?(s(),S(`button`,{key:1,type:`button`,class:`icon-btn orientation-btn`,title:`Switch to ${q.value===`portrait`?`Landscape`:`Portrait`}`,onClick:Z},[l(e(ne),{size:14,style:C({transform:q.value===`landscape`?`rotate(90deg)`:`rotate(0deg)`,transition:`transform 0.2s`})},null,8,[`style`])],8,xe)):p(``,!0)]),y(`div`,Se,[y(`button`,{type:`button`,class:`icon-btn`,title:`Refresh Preview`,onClick:Pe},[l(e(le),{size:13})]),y(`a`,{href:Me.value,target:`_blank`,class:`icon-btn`,title:`View JSON API Payload`},[l(e(de),{size:13})],8,Ce),y(`a`,{href:W.value,target:`_blank`,class:`icon-btn`,title:`Open Preview in New Tab`},[l(e(ie),{size:13})],8,we),y(`button`,{type:`button`,class:`icon-btn close-btn`,title:`Close Split View`,onClick:n[3]||=e=>g(`close`)},[l(e(oe),{size:14})])])]),y(`div`,{ref_key:`stageRef`,ref:A,class:m([`preview-stage`,{"is-fixed-frame":G.value}])},[y(`div`,{class:`device-frame-wrapper`,style:C(G.value&&K.value.w&&K.value.h?{width:`${K.value.w*J.value}px`,height:`${K.value.h*J.value}px`}:{width:`100%`,height:`100%`})},[y(`div`,{class:`device-frame`,style:C(G.value&&K.value.w&&K.value.h?{width:`${K.value.w}px`,height:`${K.value.h}px`,transform:`scale(${J.value})`,transformOrigin:`top left`}:{width:`100%`,height:`100%`})},[(s(),S(`iframe`,{key:W.value,ref_key:`previewIframeRef`,ref:k,src:W.value,class:`preview-iframe`,title:je.value,onLoad:Fe},null,40,Te))],4)],4)],2)]))}}),[[`__scopeId`,`data-v-f9dd6bd0`]]);export{E as default};