codicent-app-sdk 0.3.111 → 0.3.112

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.
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlView.d.ts","sourceRoot":"","sources":["../../../src/components/HtmlView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAKhD,UAAU,aAAa;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACxB;AAgDD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwNrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"HtmlView.d.ts","sourceRoot":"","sources":["../../../src/components/HtmlView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,UAAU,aAAa;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACxB;AAgDD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8RrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./Footer.js"),require("./Page.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var r=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var i=require("../node_modules/@griffel/react/makeStyles.esm.js"),n=require("../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js"),o=require("../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js"),s=require("../node_modules/@fluentui/react-button/lib/components/Button/Button.js"),a=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js"),u=require("../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js"),l=require("../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js"),c=require("../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js"),d=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js"),m=require("../node_modules/@fluentui/tokens/lib/tokens.js"),h=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js");const p=i.makeStyles({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100},menuPopover:{backgroundColor:m.tokens.colorNeutralBackground1,boxShadow:m.tokens.shadow16}});exports.default=({html:i,onDismiss:m})=>{const g=t.useRef(null),j=t.useRef(null),[q,f]=t.useState(1),b=p(),{t:x}=r.default();return e.jsxs("div",{className:b.container,onTouchStart:e=>{if(2===e.touches.length){const t=e.touches[0],r=e.touches[1],i=Math.sqrt(Math.pow(r.clientX-t.clientX,2)+Math.pow(r.clientY-t.clientY,2));g.current?.setAttribute("data-initial-distance",i.toString()),g.current?.setAttribute("data-initial-scale",q.toString())}},onTouchMove:e=>{if(2===e.touches.length){const t=e.touches[0],r=e.touches[1],i=parseFloat(g.current?.getAttribute("data-initial-distance")||"0"),n=parseFloat(g.current?.getAttribute("data-initial-scale")||"1"),o=Math.sqrt(Math.pow(r.clientX-t.clientX,2)+Math.pow(r.clientY-t.clientY,2));if(i>0){const e=Math.min(Math.max(n*(o/i),.5),3);f(e),g.current&&(g.current.style.transform=`scale(${e})`),j.current&&(j.current.style.transform=`scale(${e})`)}}},onTouchEnd:()=>{g.current?.removeAttribute("data-initial-distance"),g.current?.removeAttribute("data-initial-scale")},children:[e.jsx("iframe",{ref:g,className:b.iframe,title:"html",srcDoc:i}),e.jsx("iframe",{ref:j,className:b.iframe2,title:"html",srcDoc:i})," ",e.jsxs(n.Menu,{children:[e.jsx(o.MenuTrigger,{children:e.jsx(s.Button,{icon:e.jsx(a.MoreHorizontal24Regular,{}),className:b.menuButton})}),e.jsx(u.MenuPopover,{className:b.menuPopover,children:e.jsxs(l.MenuList,{children:[e.jsx(c.MenuItem,{icon:e.jsx(h.DismissRegular,{}),onClick:m,children:x("Stäng")}),e.jsx(c.MenuItem,{icon:e.jsx(d.PrintRegular,{}),onClick:()=>{g.current&&g.current.contentWindow?.print()},children:x("Skriv ut")}),e.jsx(c.MenuItem,{icon:e.jsx(h.CopyRegular,{}),onClick:async()=>{if(j.current)try{const e=j.current,t=e.contentWindow,r=e.contentDocument||t?.document;if(!r||!t)return;r.querySelectorAll("canvas").forEach((e=>{const t=r.createElement("img");t.src=e.toDataURL("image/png"),t.style.cssText=window.getComputedStyle(e).cssText,t.width=e.width,t.height=e.height,e.parentNode?.insertBefore(t,e),e.parentNode?.removeChild(e)}));let i="";Array.from(r.styleSheets).forEach((e=>{try{Array.from(e.cssRules||[]).forEach((e=>{i+=e.cssText+"\n"}))}catch(e){console.warn("Could not access stylesheet",e)}}));r.body.querySelectorAll("*").forEach((e=>{const r=t.getComputedStyle(e);let i="";if(["fontFamily","fontSize","fontWeight","color","backgroundColor","margin","padding","border","textAlign","lineHeight","letterSpacing","display","width","height"].forEach((e=>{r[e]&&"initial"!==r[e]&&"none"!==r[e]&&"normal"!==r[e]&&(i+=`${String(e)}:${r[e]};`)})),i){const t=e.getAttribute("style")||"";e.setAttribute("style",t+i)}}));const n=r.createElement("style");n.textContent=i,r.head.appendChild(n);const o=r.documentElement.outerHTML,s=r.body.innerText,a=document.createElement("div");a.innerHTML=o;const u=window.location.href;if(a.querySelectorAll("img").forEach((e=>{!e.src||e.src.startsWith("http")||e.src.startsWith("data:")||(e.src=new URL(e.src,u).href)})),navigator.clipboard&&window.ClipboardItem){const e=new Blob([a.outerHTML],{type:"text/html"}),t=new Blob([s],{type:"text/plain"}),r=new ClipboardItem({"text/html":e,"text/plain":t});await navigator.clipboard.write([r])}else{const e=t.getSelection();if(e){e.removeAllRanges();const t=r.createRange();t.selectNodeContents(r.body),e.addRange(t),r.execCommand("copy"),e.removeAllRanges()}}}catch(e){console.error("Copy failed:",e),navigator.clipboard.writeText(i)}},children:x("Kopiera")})]})})]})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");require("../services/codicent.js"),require("./Markdown.js"),require("./Textarea.js"),require("./Button.js"),require("./CompoundButton.js"),require("./Spinner.js"),require("./TextHeader.js"),require("./TypingIndicator.js"),require("./Dialog.js"),require("./ChatInput.js"),require("./CombinedPlaceholderDialog.js"),require("./ChatMessage.js"),require("./Header.js"),require("../utils/MessageContent.js"),require("../node_modules/tinycolor2/esm/tinycolor.js"),require("../_virtual/index.js"),require("../config/index.js"),require("../utils/cacheManager.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js"),require("./FileThumbnail.js"),require("./MessageInput.js"),require("./UploadFile.js"),require("./SnapFooter.js"),require("./Profile.js"),require("./MessageItem.js"),require("./Content.js"),require("./AiInput.js"),require("./SearchBox.js"),require("./Footer.js"),require("./Page.js"),require("../pages/AppFrame.js"),require("../pages/Chat.js"),require("../pages/Compose.js"),require("../pages/Snap.js"),require("../pages/Search.js"),require("../pages/Login.js"),require("../pages/CrmPage.js"),require("../pages/CrmPagePersistent.js"),require("../pages/ImageView.js"),require("../pages/FormInvite.js"),require("../pages/FormAccept.js"),require("../pages/Sales.js"),require("../pages/Purchase.js");var r=require("../hooks/useLocalization.js");require("../hooks/useAppStyles.js");var n=require("../node_modules/@griffel/react/makeStyles.esm.js"),o=require("../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js"),i=require("../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js"),s=require("../node_modules/@fluentui/react-button/lib/components/Button/Button.js"),a=require("../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js"),u=require("../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js"),c=require("../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js"),l=require("../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js"),d=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js"),m=require("../node_modules/@fluentui/tokens/lib/tokens.js"),p=require("../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js");const h=n.makeStyles({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100},menuPopover:{backgroundColor:m.tokens.colorNeutralBackground1,boxShadow:m.tokens.shadow16}});exports.default=({html:n,onDismiss:m})=>{const g=t.useRef(null),j=t.useRef(null),[q,f]=t.useState(1),b=h(),{t:x}=r.default();t.useEffect((()=>{const e=e=>{try{const t=e.contentDocument||e.contentWindow?.document;if(!t)return;if(t.getElementById("print-color-preserve-styles"))return;const r=t.createElement("style");r.id="print-color-preserve-styles",r.textContent="\n @media print {\n /* Force browsers to preserve colors when printing */\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n \n /* Ensure backgrounds and colors are preserved */\n body, html {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n }\n ",t.head.appendChild(r)}catch(e){console.warn("Failed to inject print styles into iframe:",e)}},t=g.current,r=j.current;let n,o;return t&&(n=()=>e(t),t.addEventListener("load",n),"complete"===t.contentDocument?.readyState&&e(t)),r&&(o=()=>e(r),r.addEventListener("load",o),"complete"===r.contentDocument?.readyState&&e(r)),()=>{t&&n&&t.removeEventListener("load",n),r&&o&&r.removeEventListener("load",o)}}),[n]);return e.jsxs("div",{className:b.container,onTouchStart:e=>{if(2===e.touches.length){const t=e.touches[0],r=e.touches[1],n=Math.sqrt(Math.pow(r.clientX-t.clientX,2)+Math.pow(r.clientY-t.clientY,2));g.current?.setAttribute("data-initial-distance",n.toString()),g.current?.setAttribute("data-initial-scale",q.toString())}},onTouchMove:e=>{if(2===e.touches.length){const t=e.touches[0],r=e.touches[1],n=parseFloat(g.current?.getAttribute("data-initial-distance")||"0"),o=parseFloat(g.current?.getAttribute("data-initial-scale")||"1"),i=Math.sqrt(Math.pow(r.clientX-t.clientX,2)+Math.pow(r.clientY-t.clientY,2));if(n>0){const e=Math.min(Math.max(o*(i/n),.5),3);f(e),g.current&&(g.current.style.transform=`scale(${e})`),j.current&&(j.current.style.transform=`scale(${e})`)}}},onTouchEnd:()=>{g.current?.removeAttribute("data-initial-distance"),g.current?.removeAttribute("data-initial-scale")},children:[e.jsx("iframe",{ref:g,className:b.iframe,title:"html",srcDoc:n}),e.jsx("iframe",{ref:j,className:b.iframe2,title:"html",srcDoc:n})," ",e.jsxs(o.Menu,{children:[e.jsx(i.MenuTrigger,{children:e.jsx(s.Button,{icon:e.jsx(a.MoreHorizontal24Regular,{}),className:b.menuButton})}),e.jsx(u.MenuPopover,{className:b.menuPopover,children:e.jsxs(c.MenuList,{children:[e.jsx(l.MenuItem,{icon:e.jsx(p.DismissRegular,{}),onClick:m,children:x("Stäng")}),e.jsx(l.MenuItem,{icon:e.jsx(d.PrintRegular,{}),onClick:()=>{g.current&&g.current.contentWindow?.print()},children:x("Skriv ut")}),e.jsx(l.MenuItem,{icon:e.jsx(p.CopyRegular,{}),onClick:async()=>{if(j.current)try{const e=j.current,t=e.contentWindow,r=e.contentDocument||t?.document;if(!r||!t)return;r.querySelectorAll("canvas").forEach((e=>{const t=r.createElement("img");t.src=e.toDataURL("image/png"),t.style.cssText=window.getComputedStyle(e).cssText,t.width=e.width,t.height=e.height,e.parentNode?.insertBefore(t,e),e.parentNode?.removeChild(e)}));let n="";Array.from(r.styleSheets).forEach((e=>{try{Array.from(e.cssRules||[]).forEach((e=>{n+=e.cssText+"\n"}))}catch(e){console.warn("Could not access stylesheet",e)}}));r.body.querySelectorAll("*").forEach((e=>{const r=t.getComputedStyle(e);let n="";if(["fontFamily","fontSize","fontWeight","color","backgroundColor","margin","padding","border","textAlign","lineHeight","letterSpacing","display","width","height"].forEach((e=>{r[e]&&"initial"!==r[e]&&"none"!==r[e]&&"normal"!==r[e]&&(n+=`${String(e)}:${r[e]};`)})),n){const t=e.getAttribute("style")||"";e.setAttribute("style",t+n)}}));const o=r.createElement("style");o.textContent=n,r.head.appendChild(o);const i=r.documentElement.outerHTML,s=r.body.innerText,a=document.createElement("div");a.innerHTML=i;const u=window.location.href;if(a.querySelectorAll("img").forEach((e=>{!e.src||e.src.startsWith("http")||e.src.startsWith("data:")||(e.src=new URL(e.src,u).href)})),navigator.clipboard&&window.ClipboardItem){const e=new Blob([a.outerHTML],{type:"text/html"}),t=new Blob([s],{type:"text/plain"}),r=new ClipboardItem({"text/html":e,"text/plain":t});await navigator.clipboard.write([r])}else{const e=t.getSelection();if(e){e.removeAllRanges();const t=r.createRange();t.selectNodeContents(r.body),e.addRange(t),r.execCommand("copy"),e.removeAllRanges()}}}catch(e){console.error("Copy failed:",e),navigator.clipboard.writeText(n)}},children:x("Kopiera")})]})})]})]})};
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlView.d.ts","sourceRoot":"","sources":["../../../src/components/HtmlView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAKhD,UAAU,aAAa;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACxB;AAgDD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAwNrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"HtmlView.d.ts","sourceRoot":"","sources":["../../../src/components/HtmlView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAK3D,UAAU,aAAa;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,IAAI,CAAC;CACxB;AAgDD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8RrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +1 @@
1
- import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r}from"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import i from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Menu as s}from"../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js";import{MenuTrigger as a}from"../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js";import{Button as l}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MoreHorizontal24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";import{MenuPopover as m}from"../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js";import{MenuList as p}from"../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js";import{MenuItem as u}from"../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js";import{PrintRegular as d}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{tokens as h}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{DismissRegular as g,CopyRegular as f}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const j=n({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100},menuPopover:{backgroundColor:h.colorNeutralBackground1,boxShadow:h.shadow16}}),b=({html:n,onDismiss:h})=>{const b=o(null),w=o(null),[y,v]=r(1),C=j(),{t:M}=i();return t("div",{className:C.container,onTouchStart:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));b.current?.setAttribute("data-initial-distance",r.toString()),b.current?.setAttribute("data-initial-scale",y.toString())}},onTouchMove:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=parseFloat(b.current?.getAttribute("data-initial-distance")||"0"),i=parseFloat(b.current?.getAttribute("data-initial-scale")||"1"),n=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));if(r>0){const t=Math.min(Math.max(i*(n/r),.5),3);v(t),b.current&&(b.current.style.transform=`scale(${t})`),w.current&&(w.current.style.transform=`scale(${t})`)}}},onTouchEnd:()=>{b.current?.removeAttribute("data-initial-distance"),b.current?.removeAttribute("data-initial-scale")},children:[e("iframe",{ref:b,className:C.iframe,title:"html",srcDoc:n}),e("iframe",{ref:w,className:C.iframe2,title:"html",srcDoc:n})," ",t(s,{children:[e(a,{children:e(l,{icon:e(c,{}),className:C.menuButton})}),e(m,{className:C.menuPopover,children:t(p,{children:[e(u,{icon:e(g,{}),onClick:h,children:M("Stäng")}),e(u,{icon:e(d,{}),onClick:()=>{b.current&&b.current.contentWindow?.print()},children:M("Skriv ut")}),e(u,{icon:e(f,{}),onClick:async()=>{if(w.current)try{const t=w.current,e=t.contentWindow,o=t.contentDocument||e?.document;if(!o||!e)return;o.querySelectorAll("canvas").forEach((t=>{const e=o.createElement("img");e.src=t.toDataURL("image/png"),e.style.cssText=window.getComputedStyle(t).cssText,e.width=t.width,e.height=t.height,t.parentNode?.insertBefore(e,t),t.parentNode?.removeChild(t)}));let r="";Array.from(o.styleSheets).forEach((t=>{try{Array.from(t.cssRules||[]).forEach((t=>{r+=t.cssText+"\n"}))}catch(t){console.warn("Could not access stylesheet",t)}}));o.body.querySelectorAll("*").forEach((t=>{const o=e.getComputedStyle(t);let r="";if(["fontFamily","fontSize","fontWeight","color","backgroundColor","margin","padding","border","textAlign","lineHeight","letterSpacing","display","width","height"].forEach((t=>{o[t]&&"initial"!==o[t]&&"none"!==o[t]&&"normal"!==o[t]&&(r+=`${String(t)}:${o[t]};`)})),r){const e=t.getAttribute("style")||"";t.setAttribute("style",e+r)}}));const i=o.createElement("style");i.textContent=r,o.head.appendChild(i);const n=o.documentElement.outerHTML,s=o.body.innerText,a=document.createElement("div");a.innerHTML=n;const l=window.location.href;if(a.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,l).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([a.outerHTML],{type:"text/html"}),e=new Blob([s],{type:"text/plain"}),o=new ClipboardItem({"text/html":t,"text/plain":e});await navigator.clipboard.write([o])}else{const t=e.getSelection();if(t){t.removeAllRanges();const e=o.createRange();e.selectNodeContents(o.body),t.addRange(e),o.execCommand("copy"),t.removeAllRanges()}}}catch(t){console.error("Copy failed:",t),navigator.clipboard.writeText(n)}},children:M("Kopiera")})]})})]})]})};export{b as default};
1
+ import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r,useEffect as n}from"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./CompoundButton.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../utils/cacheManager.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/CrmPagePersistent.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../pages/Purchase.js";import i from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as s}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Menu as a}from"../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js";import{MenuTrigger as c}from"../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js";import{Button as l}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MoreHorizontal24Regular as m}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";import{MenuPopover as p}from"../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js";import{MenuList as u}from"../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js";import{MenuItem as d}from"../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js";import{PrintRegular as h}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{tokens as g}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{DismissRegular as f,CopyRegular as j}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const b=s({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100},menuPopover:{backgroundColor:g.colorNeutralBackground1,boxShadow:g.shadow16}}),w=({html:s,onDismiss:g})=>{const w=o(null),y=o(null),[v,x]=r(1),C=b(),{t:M}=i();n((()=>{const t=t=>{try{const e=t.contentDocument||t.contentWindow?.document;if(!e)return;if(e.getElementById("print-color-preserve-styles"))return;const o=e.createElement("style");o.id="print-color-preserve-styles",o.textContent="\n @media print {\n /* Force browsers to preserve colors when printing */\n * {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n \n /* Ensure backgrounds and colors are preserved */\n body, html {\n -webkit-print-color-adjust: exact !important;\n print-color-adjust: exact !important;\n color-adjust: exact !important;\n }\n }\n ",e.head.appendChild(o)}catch(t){console.warn("Failed to inject print styles into iframe:",t)}},e=w.current,o=y.current;let r,n;return e&&(r=()=>t(e),e.addEventListener("load",r),"complete"===e.contentDocument?.readyState&&t(e)),o&&(n=()=>t(o),o.addEventListener("load",n),"complete"===o.contentDocument?.readyState&&t(o)),()=>{e&&r&&e.removeEventListener("load",r),o&&n&&o.removeEventListener("load",n)}}),[s]);return t("div",{className:C.container,onTouchStart:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));w.current?.setAttribute("data-initial-distance",r.toString()),w.current?.setAttribute("data-initial-scale",v.toString())}},onTouchMove:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=parseFloat(w.current?.getAttribute("data-initial-distance")||"0"),n=parseFloat(w.current?.getAttribute("data-initial-scale")||"1"),i=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));if(r>0){const t=Math.min(Math.max(n*(i/r),.5),3);x(t),w.current&&(w.current.style.transform=`scale(${t})`),y.current&&(y.current.style.transform=`scale(${t})`)}}},onTouchEnd:()=>{w.current?.removeAttribute("data-initial-distance"),w.current?.removeAttribute("data-initial-scale")},children:[e("iframe",{ref:w,className:C.iframe,title:"html",srcDoc:s}),e("iframe",{ref:y,className:C.iframe2,title:"html",srcDoc:s})," ",t(a,{children:[e(c,{children:e(l,{icon:e(m,{}),className:C.menuButton})}),e(p,{className:C.menuPopover,children:t(u,{children:[e(d,{icon:e(f,{}),onClick:g,children:M("Stäng")}),e(d,{icon:e(h,{}),onClick:()=>{w.current&&w.current.contentWindow?.print()},children:M("Skriv ut")}),e(d,{icon:e(j,{}),onClick:async()=>{if(y.current)try{const t=y.current,e=t.contentWindow,o=t.contentDocument||e?.document;if(!o||!e)return;o.querySelectorAll("canvas").forEach((t=>{const e=o.createElement("img");e.src=t.toDataURL("image/png"),e.style.cssText=window.getComputedStyle(t).cssText,e.width=t.width,e.height=t.height,t.parentNode?.insertBefore(e,t),t.parentNode?.removeChild(t)}));let r="";Array.from(o.styleSheets).forEach((t=>{try{Array.from(t.cssRules||[]).forEach((t=>{r+=t.cssText+"\n"}))}catch(t){console.warn("Could not access stylesheet",t)}}));o.body.querySelectorAll("*").forEach((t=>{const o=e.getComputedStyle(t);let r="";if(["fontFamily","fontSize","fontWeight","color","backgroundColor","margin","padding","border","textAlign","lineHeight","letterSpacing","display","width","height"].forEach((t=>{o[t]&&"initial"!==o[t]&&"none"!==o[t]&&"normal"!==o[t]&&(r+=`${String(t)}:${o[t]};`)})),r){const e=t.getAttribute("style")||"";t.setAttribute("style",e+r)}}));const n=o.createElement("style");n.textContent=r,o.head.appendChild(n);const i=o.documentElement.outerHTML,s=o.body.innerText,a=document.createElement("div");a.innerHTML=i;const c=window.location.href;if(a.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,c).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([a.outerHTML],{type:"text/html"}),e=new Blob([s],{type:"text/plain"}),o=new ClipboardItem({"text/html":t,"text/plain":e});await navigator.clipboard.write([o])}else{const t=e.getSelection();if(t){t.removeAllRanges();const e=o.createRange();e.selectNodeContents(o.body),t.addRange(e),o.execCommand("copy"),t.removeAllRanges()}}}catch(t){console.error("Copy failed:",t),navigator.clipboard.writeText(s)}},children:M("Kopiera")})]})})]})]})};export{w as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codicent-app-sdk",
3
- "version": "0.3.111",
3
+ "version": "0.3.112",
4
4
  "description": "SDK for building AI-powered applications with Codicent",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.js",