{"version":3,"file":"ExternalHTMLReader.BiOPwvEv.mjs","names":["useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/sMBnIeGrhZZvyMbAl71O/9GbcLA4qrq8QZZIegcAy/ExternalHTMLReader.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const CACHE_PREFIX=\"external-html-reader::\";function getCacheKey(fragmentUrl){return`${CACHE_PREFIX}${fragmentUrl}`;}function sanitizeAndResolveHtml(rawHtml,fragmentUrl){if(typeof window===\"undefined\")return\"\";const parser=new window.DOMParser;const parsed=parser.parseFromString(rawHtml,\"text/html\");const forbiddenSelectors=\"script, style, iframe, object, embed\";parsed.querySelectorAll(forbiddenSelectors).forEach(node=>node.remove());const allElements=parsed.querySelectorAll(\"*\");allElements.forEach(element=>{const attributes=Array.from(element.attributes);attributes.forEach(attribute=>{const name=attribute.name.toLowerCase();const value=attribute.value.trim();// Remove inline JavaScript event handlers.\nif(name.startsWith(\"on\")){element.removeAttribute(attribute.name);return;}if(name===\"href\"||name===\"src\"||name===\"xlink:href\"){// Remove JavaScript URLs.\nif(/^\\s*javascript:/i.test(value)){element.removeAttribute(attribute.name);return;}try{// Convert relative links and images into absolute URLs.\nconst resolved=new URL(value,fragmentUrl).toString();element.setAttribute(attribute.name,resolved);}catch(_error){// Preserve the original value if resolution fails.\n}}});});return parsed.body.innerHTML;}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function ExternalHTMLReader(props){const{fragmentUrl,pdfUrl,loadingText,errorText,refreshMinutes}=props;const isStatic=useIsStaticRenderer();const[content,setContent]=useState(\"\");const[isLoading,setIsLoading]=useState(true);const[isRefreshing,setIsRefreshing]=useState(false);const[error,setError]=useState(\"\");const refreshMs=useMemo(()=>Math.max(1,refreshMinutes)*60*1e3,[refreshMinutes]);const readCache=useCallback(()=>{if(typeof window===\"undefined\"||!fragmentUrl){return null;}try{const raw=window.sessionStorage.getItem(getCacheKey(fragmentUrl));if(!raw)return null;const parsed=JSON.parse(raw);if(typeof parsed?.html!==\"string\"||typeof parsed?.timestamp!==\"number\"){return null;}return parsed;}catch(_error){return null;}},[fragmentUrl]);const writeCache=useCallback(html=>{if(typeof window===\"undefined\"||!fragmentUrl){return;}try{const payload={html,timestamp:Date.now()};window.sessionStorage.setItem(getCacheKey(fragmentUrl),JSON.stringify(payload));}catch(_error){// Ignore storage quota and privacy-mode errors.\n}},[fragmentUrl]);const fetchAndSanitize=useCallback(async signal=>{/*\n             * Add a unique query parameter to prevent Chrome,\n             * GitHub Pages, and intermediary CDNs from returning\n             * an older cached response.\n             */const requestUrl=new URL(fragmentUrl,window.location.href);requestUrl.searchParams.set(\"_ehr_updated\",Date.now().toString());const response=await fetch(requestUrl.toString(),{method:\"GET\",credentials:\"omit\",cache:\"no-store\",signal});if(!response.ok){throw new Error(`Request failed with status ${response.status}`);}const htmlText=await response.text();/*\n             * Use the original fragment URL as the base for\n             * relative links, rather than the cache-busting URL.\n             */return sanitizeAndResolveHtml(htmlText,fragmentUrl);},[fragmentUrl]);useEffect(()=>{if(!fragmentUrl){startTransition(()=>{setContent(\"\");setIsLoading(false);setIsRefreshing(false);setError(errorText);});return;}if(typeof window===\"undefined\"||isStatic){startTransition(()=>{setContent(\"\");setIsLoading(false);setIsRefreshing(false);setError(\"\");});return;}let active=true;let requestInProgress=false;let controller=null;const cached=readCache();const hasCachedContent=Boolean(cached?.html);// Display the cached version immediately, if available.\nif(cached?.html){startTransition(()=>{setContent(cached.html);setError(\"\");setIsLoading(false);setIsRefreshing(false);});}else{startTransition(()=>{setContent(\"\");setError(\"\");setIsLoading(true);setIsRefreshing(false);});}const refreshContent=async showRefreshStatus=>{/*\n             * Avoid overlapping requests when a timer and a\n             * visibility event occur close together.\n             */if(!active||requestInProgress){return;}requestInProgress=true;controller=new AbortController;if(showRefreshStatus){startTransition(()=>{if(hasCachedContent){setIsRefreshing(true);}else{setIsLoading(true);}});}try{const safeHtml=await fetchAndSanitize(controller.signal);if(!active)return;writeCache(safeHtml);startTransition(()=>{setContent(safeHtml);setError(\"\");setIsLoading(false);setIsRefreshing(false);});}catch(fetchError){if(!active)return;if(fetchError instanceof DOMException&&fetchError.name===\"AbortError\"){return;}startTransition(()=>{/*\n                     * Keep displaying the last successful cached\n                     * version if an update request fails.\n                     */if(!hasCachedContent){setError(errorText);}setIsLoading(false);setIsRefreshing(false);});}finally{requestInProgress=false;controller=null;}};/*\n         * Always check for fresh content when the component loads,\n         * even when cached content is already available.\n         */void refreshContent(hasCachedContent);/*\n         * Continue checking while the page remains open.\n         */const refreshTimer=window.setInterval(()=>{void refreshContent(false);},refreshMs);/*\n         * Check immediately when the user returns to a restored or\n         * backgrounded Chrome tab.\n         */const handleVisibilityChange=()=>{if(document.visibilityState===\"visible\"){void refreshContent(false);}};document.addEventListener(\"visibilitychange\",handleVisibilityChange);return()=>{active=false;controller?.abort();window.clearInterval(refreshTimer);document.removeEventListener(\"visibilitychange\",handleVisibilityChange);};},[errorText,fetchAndSanitize,fragmentUrl,isStatic,readCache,refreshMs,writeCache]);const resolvedPdfUrl=useMemo(()=>{if(!pdfUrl?.trim())return\"\";try{const url=new URL(pdfUrl.trim(),typeof window!==\"undefined\"?window.location.href:undefined);return[\"https:\",\"http:\"].includes(url.protocol)?url.href:\"\";}catch(_error){return\"\";}},[pdfUrl]);const showErrorOnly=!isLoading&&Boolean(error)&&!content;return /*#__PURE__*/_jsxs(\"section\",{className:\"ehr-reader-shell\",style:{position:\"relative\",width:\"100%\",maxWidth:1150,margin:\"0 auto\",boxSizing:\"border-box\",background:\"#FFFFFF\",color:\"#2C3643\",padding:\"48px\"},role:\"region\",\"aria-live\":\"polite\",children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .ehr-content {\n                    color: #2C3643;\n                    line-height: 1.7;\n                    font-size: 18px;\n                    word-break: normal;\n                    overflow-wrap: anywhere;\n                }\n\n                .ehr-content h1,\n                .ehr-content h2,\n                .ehr-content h3,\n                .ehr-content h4,\n                .ehr-content h5,\n                .ehr-content h6 {\n                    color: #0D2A56;\n                    line-height: 1.25;\n                    margin-top: 1.4em;\n                    margin-bottom: 0.5em;\n                }\n\n                .ehr-content p,\n                .ehr-content ul,\n                .ehr-content ol,\n                .ehr-content blockquote {\n                    margin-top: 0.75em;\n                    margin-bottom: 0.75em;\n                }\n\n                .ehr-content a {\n                    color: #008080;\n                    text-decoration: underline;\n                    text-underline-offset: 2px;\n                }\n\n                .ehr-content img {\n                    max-width: 100%;\n                    height: auto;\n                }\n\n                .ehr-content table {\n                    width: 100%;\n                    border-collapse: collapse;\n                    display: block;\n                    overflow-x: auto;\n                    -webkit-overflow-scrolling: touch;\n                    white-space: nowrap;\n                }\n\n                .ehr-content th,\n                .ehr-content td {\n                    border: 1px solid #EEEEEE;\n                    padding: 8px 10px;\n                    text-align: left;\n                }\n\n                .ehr-content code,\n                .ehr-content pre {\n                    max-width: 100%;\n                    overflow-x: auto;\n                }\n\n                .ehr-status {\n                    color: #2C3643;\n                    font-size: 15px;\n                    line-height: 1.4;\n                    margin-bottom: 12px;\n                }\n\n                .ehr-pdf-actions {\n                    display: flex;\n                    flex-wrap: wrap;\n                    align-items: center;\n                    gap: 12px;\n                    margin-bottom: 24px;\n                    font-size: 15px;\n                    line-height: 1.4;\n                }\n\n                .ehr-pdf-actions a {\n                    color: #008080;\n                    text-decoration: underline;\n                    text-underline-offset: 2px;\n                }\n\n                .ehr-pdf-actions a:focus-visible {\n                    outline: 2px solid #008080;\n                    outline-offset: 4px;\n                }\n\n                /* MY STACK — desktop table */\n\n                .my-stack-mobile-cards {\n                    display: none;\n                }\n\n                .ehr-content .my-stack-desktop-table {\n                    display: table !important;\n                    width: 100% !important;\n                    inline-size: 100% !important;\n                    min-width: 0 !important;\n                    min-inline-size: 0 !important;\n                    max-width: 100% !important;\n                    max-inline-size: 100% !important;\n                    table-layout: fixed !important;\n                    box-sizing: border-box !important;\n                    white-space: normal !important;\n                    overflow: visible !important;\n                }\n\n                .ehr-content\n                    .my-stack-desktop-table\n                    .my-stack-function-column {\n                    width: 20% !important;\n                }\n\n                .ehr-content\n                    .my-stack-desktop-table\n                    .my-stack-item-column {\n                    width: 45% !important;\n                }\n\n                .ehr-content\n                    .my-stack-desktop-table\n                    .my-stack-schedule-column {\n                    width: 35% !important;\n                }\n\n                .ehr-content .my-stack-desktop-table th,\n                .ehr-content .my-stack-desktop-table td {\n                    width: auto !important;\n                    min-width: 0 !important;\n                    max-width: none !important;\n                    white-space: normal !important;\n                    overflow-wrap: anywhere !important;\n                    word-break: normal !important;\n                    box-sizing: border-box !important;\n                    vertical-align: top;\n                }\n\n                .ehr-content .my-stack-desktop-table th *,\n                .ehr-content .my-stack-desktop-table td * {\n                    min-width: 0 !important;\n                    max-width: 100% !important;\n                    white-space: normal !important;\n                    overflow-wrap: anywhere !important;\n                    word-break: normal !important;\n                }\n\n                .ehr-content .my-stack-desktop-table td,\n                .ehr-content .my-stack-desktop-table td p {\n                    line-height: 1.4;\n                }\n\n                .ehr-content .my-stack-desktop-table td p {\n                    margin: 0;\n                }\n\n                .ehr-content\n                    .my-stack-desktop-table\n                    .my-stack-function {\n                    vertical-align: middle;\n                }\n\n                /* MY STACK — mobile cards */\n\n                @media (max-width: 700px) {\n                    .ehr-reader-shell {\n                        padding: 24px !important;\n                    }\n\n                    .ehr-content .my-stack-desktop-table {\n                        display: none !important;\n                    }\n\n                    .ehr-content .my-stack-mobile-cards {\n                        display: grid !important;\n                        gap: 0.85rem;\n                        margin: 0.75rem 0 1.25rem;\n                    }\n\n                    .ehr-content .my-stack-category-card {\n                        border: 1px solid #d7d7d7;\n                        border-radius: 0.65rem;\n                        padding: 0.8rem 1rem;\n                        background: #fff;\n                        box-shadow:\n                            0 1px 3px rgba(0, 0, 0, 0.08);\n                        overflow-wrap: anywhere;\n                    }\n\n                    .ehr-content .my-stack-category-title {\n                        color: #0D2A56;\n                        font-size: 1.05rem;\n                        font-weight: 700;\n                        line-height: 1.3;\n                        margin-bottom: 0.35rem;\n                    }\n\n                    .ehr-content .my-stack-item {\n                        padding: 0.55rem 0;\n                        border-top: 1px solid #ececec;\n                    }\n\n                    .ehr-content\n                        .my-stack-category-title\n                        + .my-stack-item {\n                        border-top: 0;\n                    }\n\n                    .ehr-content .my-stack-item-main,\n                    .ehr-content .my-stack-item-detail {\n                        margin: 0;\n                        line-height: 1.4;\n                    }\n\n                    .ehr-content .my-stack-item-detail {\n                        margin-top: 0.1rem;\n                        color: #555;\n                    }\n                }\n            `}),resolvedPdfUrl?/*#__PURE__*/_jsx(\"div\",{className:\"ehr-pdf-actions\",children:/*#__PURE__*/_jsxs(\"span\",{children:[\"Open as\",\" \",/*#__PURE__*/_jsx(\"a\",{href:resolvedPdfUrl,target:\"_blank\",rel:\"noopener noreferrer\",children:\"PDF\"})]})}):null,isLoading&&!content?/*#__PURE__*/_jsx(\"p\",{className:\"ehr-status\",children:loadingText}):null,isRefreshing&&content?/*#__PURE__*/_jsx(\"p\",{className:\"ehr-status\",children:loadingText}):null,showErrorOnly?/*#__PURE__*/_jsx(\"div\",{role:\"status\",className:\"ehr-status\",children:/*#__PURE__*/_jsx(\"p\",{style:{margin:0},children:errorText})}):null,content?/*#__PURE__*/_jsx(\"article\",{className:\"ehr-content\",dangerouslySetInnerHTML:{__html:content}}):null]});}addPropertyControls(ExternalHTMLReader,{fragmentUrl:{type:ControlType.String,title:\"Fragment URL\",defaultValue:\"https://example.com/reading-fragment.html\"},pdfUrl:{type:ControlType.String,title:\"PDF URL\",defaultValue:\"\"},loadingText:{type:ControlType.String,title:\"Loading Text\",defaultValue:\"Loading document…\"},errorText:{type:ControlType.String,title:\"Error Text\",defaultValue:\"The HTML reading version is currently unavailable.\"},refreshMinutes:{type:ControlType.Number,title:\"Refresh (min)\",defaultValue:5,min:1,max:120,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ExternalHTMLReader\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ExternalHTMLReader.map"],"mappings":"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"}