codicent-app-sdk 0.3.110 → 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.
- package/dist/cjs/components/HtmlView.d.ts.map +1 -1
- package/dist/cjs/components/HtmlView.js +1 -1
- package/dist/cjs/components/Markdown.d.ts.map +1 -1
- package/dist/cjs/components/Markdown.js +1 -1
- package/dist/esm/components/HtmlView.d.ts.map +1 -1
- package/dist/esm/components/HtmlView.js +1 -1
- package/dist/esm/components/Markdown.d.ts.map +1 -1
- package/dist/esm/components/Markdown.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HtmlView.d.ts","sourceRoot":"","sources":["../../../src/components/HtmlView.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
|
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":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown.tsx"],"names":[],"mappings":"AAkHA,QAAA,MAAM,QAAQ,gBAAiB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,4CAsEjD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("./MermaidChart.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("./MermaidChart.js"),t=require("react"),n=require("../node_modules/hast-util-sanitize/lib/schema.js"),a=require("../node_modules/@griffel/react/makeStyles.esm.js"),s=require("../node_modules/react-markdown/lib/index.js"),i=require("../node_modules/remark-gfm/lib/index.js"),o=require("../node_modules/rehype-raw/lib/index.js"),l=require("../node_modules/rehype-sanitize/lib/index.js");const d={...n.defaultSchema,tagNames:[...n.defaultSchema.tagNames||[],"iframe","small","br"],attributes:{...n.defaultSchema.attributes,iframe:["src","style","width","height","frameBorder","title","allow","allowFullScreen"],a:[...n.defaultSchema.attributes?.a||[],"target","rel","download"],p:[...n.defaultSchema.attributes?.p||[],"style"],div:[...n.defaultSchema.attributes?.div||[],"style"],small:["style"]},protocols:{...n.defaultSchema.protocols,src:["http","https"]}},c=a.makeStyles({markdownDiv:{"& ul":{paddingLeft:"8px",margin:"8px 0"},"& li":{marginLeft:"16px",marginBottom:"4px",marginTop:"4px"},"& a":{color:"inherit",textDecoration:"underline"}},htmlBlock:{width:"100%",minHeight:"100px",border:"none",backgroundColor:"transparent"}});class m extends t.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,r){console.error("Markdown rendering error:",e,r)}render(){return this.state.hasError?e.jsx("div",{style:{color:"red"},children:"ERROR: failed to render markdown content"}):this.props.children}}const h=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&/Macintosh/.test(navigator.userAgent)&&!/iPhone|iPad|iPod/.test(navigator.userAgent),u=({html:r,className:t})=>{const n=`\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <style>\n body { \n margin: 0; \n padding: 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n font-size: 14px;\n line-height: 1.5;\n }\n a { color: inherit; }\n </style>\n </head>\n <body>${r}</body>\n </html>\n `;return e.jsx("iframe",{srcDoc:n,className:t,sandbox:"allow-scripts allow-popups allow-popups-to-escape-sandbox",style:{width:"100%",minHeight:"100px",border:"none"},title:"HTML content"})};exports.default=({content:t})=>{const n=c();return e.jsx(m,{children:e.jsx("div",{className:n.markdownDiv,children:e.jsx(s.Markdown,{remarkPlugins:h?[]:[i.default],rehypePlugins:[o.default,[l.default,d]],components:{code({_node:t,inline:a,className:s,children:i,...o}){const l=/language-(\w+)/.exec(s||""),d=String(i).replace(/\n$/,"");return!a&&l&&"mermaid"===l[1]?e.jsx(r.default,{chart:d}):!a&&l&&"html"===l[1]?e.jsx(u,{html:d,className:n.htmlBlock}):e.jsx("code",{className:s,...o,children:i})},a:({href:r,children:t,...n})=>r?e.jsx("a",{href:r,rel:"noopener noreferrer",...n,children:t}):e.jsx(e.Fragment,{children:t}),...h&&{text:({children:r})=>{if("string"!=typeof r)return e.jsx(e.Fragment,{children:r});const t=/https?:\/\/[^\s<>[\]{}|\\^]+/g,n=r.split(t),a=r.match(t)||[];return 0===a.length?e.jsx(e.Fragment,{children:r}):e.jsx(e.Fragment,{children:n.map(((r,t)=>e.jsxs(e.Fragment,{children:[r,a[t]&&e.jsx("a",{href:a[t],rel:"noopener noreferrer",children:a[t]})]})))})}}},children:t})})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HtmlView.d.ts","sourceRoot":"","sources":["../../../src/components/HtmlView.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
|
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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown.tsx"],"names":[],"mappings":"AAkHA,QAAA,MAAM,QAAQ,gBAAiB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,4CAsEjD,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e,Fragment as r,jsxs as t}from"react/jsx-runtime";import n from"./MermaidChart.js";import{Component as o}from"react";import{defaultSchema as a}from"../node_modules/hast-util-sanitize/lib/schema.js";import{makeStyles as i}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Markdown as s}from"../node_modules/react-markdown/lib/index.js";import l from"../node_modules/remark-gfm/lib/index.js";import d from"../node_modules/rehype-raw/lib/index.js";import m from"../node_modules/rehype-sanitize/lib/index.js";const c={...a,tagNames:[...a.tagNames||[],"iframe","small","br"],attributes:{...a.attributes,iframe:["src","style","width","height","frameBorder","title","allow","allowFullScreen"],a:[...a.attributes?.a||[],"target","rel","download"],p:[...a.attributes?.p||[],"style"],div:[...a.attributes?.div||[],"style"],small:["style"]},protocols:{...a.protocols,src:["http","https"]}},h=i({markdownDiv:{"& ul":{paddingLeft:"8px",margin:"8px 0"},"& li":{marginLeft:"16px",marginBottom:"4px",marginTop:"4px"},"& a":{color:"inherit",textDecoration:"underline"}},htmlBlock:{width:"100%",minHeight:"100px",border:"none",backgroundColor:"transparent"}});class p extends o{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e,r){console.error("Markdown rendering error:",e,r)}render(){return this.state.hasError?e("div",{style:{color:"red"},children:"ERROR: failed to render markdown content"}):this.props.children}}const u=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&/Macintosh/.test(navigator.userAgent)&&!/iPhone|iPad|iPod/.test(navigator.userAgent),g=({html:r,className:t})=>e("iframe",{srcDoc:`\n <!DOCTYPE html>\n <html>\n <head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <style>\n body { \n margin: 0; \n padding: 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n font-size: 14px;\n line-height: 1.5;\n }\n a { color: inherit; }\n </style>\n </head>\n <body>${r}</body>\n </html>\n `,className:t,sandbox:"allow-scripts allow-popups allow-popups-to-escape-sandbox",style:{width:"100%",minHeight:"100px",border:"none"},title:"HTML content"}),f=({content:o})=>{const a=h();return e(p,{children:e("div",{className:a.markdownDiv,children:e(s,{remarkPlugins:u?[]:[l],rehypePlugins:[d,[m,c]],components:{code({_node:r,inline:t,className:o,children:i,...s}){const l=/language-(\w+)/.exec(o||""),d=String(i).replace(/\n$/,"");return!t&&l&&"mermaid"===l[1]?e(n,{chart:d}):!t&&l&&"html"===l[1]?e(g,{html:d,className:a.htmlBlock}):e("code",{className:o,...s,children:i})},a:({href:t,children:n,...o})=>t?e("a",{href:t,rel:"noopener noreferrer",...o,children:n}):e(r,{children:n}),...u&&{text:({children:n})=>{if("string"!=typeof n)return e(r,{children:n});const o=/https?:\/\/[^\s<>[\]{}|\\^]+/g,a=n.split(o),i=n.match(o)||[];return 0===i.length?e(r,{children:n}):e(r,{children:a.map(((n,o)=>t(r,{children:[n,i[o]&&e("a",{href:i[o],rel:"noopener noreferrer",children:i[o]})]})))})}}},children:o})})})};export{f as default};
|