UNPKG

@open-editor/client

Version:

internal utils shared across @open-editor packages

4 lines 72 kB
"use strict";var __knownSymbol=(name,symbol)=>(symbol=Symbol[name])?symbol:Symbol.for("Symbol."+name),__typeError=msg=>{throw TypeError(msg)};var __await=function(promise,isYieldStar){this[0]=promise,this[1]=isYieldStar};var __yieldStar=value=>{var obj=value[__knownSymbol("asyncIterator")],isAwait=!1,method,it={};return obj==null?(obj=value[__knownSymbol("iterator")](),method=k=>it[k]=x=>obj[k](x)):(obj=obj.call(value),method=k=>it[k]=v=>{if(isAwait){if(isAwait=!1,k==="throw")throw v;return v}return isAwait=!0,{done:!1,value:new __await(new Promise(resolve=>{var x=obj[k](v);x instanceof Object||__typeError("Object expected"),resolve(x)}),1)}}),it[__knownSymbol("iterator")]=()=>it,method("next"),"throw"in obj?method("throw"):it.throw=x=>{throw x},"return"in obj&&method("return"),it};var shared=require("@open-editor/shared"),outmatch=require("outmatch");const HTML_INSPECTOR_ELEMENT="open-editor-inspector",HTML_INSPECTOR_ELEMENT_TAG_NAME="OPEN-EDITOR-INSPECTOR",IS_CLIENT=typeof window!="undefined",IS_FIREFOX=IS_CLIENT&&/firefox/i.test(navigator.userAgent),CURRENT_INSPECT_ID=Math.random().toString(16).substring(2,10),ENABLE_INSPECTOR_EVENT="enableinspector",EXIT_INSPECTOR_EVENT="exitinspector",OPEN_EDITOR_EVENT="openeditor",INSPECTOR_ACTIVE_CROSS_IFRAME="oe:INSPECTOR_ACTIVE_CROSS_IFRAME",INSPECTOR_ENABLE_CROSS_IFRAME="oe:INSPECTOR_ENABLE_CROSS_IFRAME",INSPECTOR_EXIT_CROSS_IFRAME="oe:INSPECTOR_EXIT_CROSS_IFRAME",CODE_SOURCE_CROSS_IFRAME="oe:CODE_SOURCE_CROSS_IFRAME",BOX_MODEL_CROSS_IFRAME="oe:BOX_MODEL_CROSS_IFRAME",TREE_OPEN_CROSS_IFRAME="oe:TREE_OPEN_CROSS_IFRAME",TREE_CLOSE_CROSS_IFRAME="oe:TREE_CLOSE_CROSS_IFRAME",OPEN_EDITOR_CROSS_IFRAME="oe:OPEN_EDITOR_CROSS_IFRAME",OPEN_EDITOR_START_CROSS_IFRAME="oe:OPEN_EDITOR_START_CROSS_IFRAME",OPEN_EDITOR_END_CROSS_IFRAME="oe:OPEN_EDITOR_END_CROSS_IFRAME",OPEN_EDITOR_ERROR_CROSS_IFRAME="oe:OPEN_EDITOR_ERROR_CROSS_IFRAME";var __getOwnPropSymbols$7=Object.getOwnPropertySymbols,__hasOwnProp$7=Object.prototype.hasOwnProperty,__propIsEnum$7=Object.prototype.propertyIsEnumerable,__objRest$1=(source,exclude)=>{var target={};for(var prop in source)__hasOwnProp$7.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(source!=null&&__getOwnPropSymbols$7)for(var prop of __getOwnPropSymbols$7(source))exclude.indexOf(prop)<0&&__propIsEnum$7.call(source,prop)&&(target[prop]=source[prop]);return target};function createCustomEventDispatcher(type,setupDispatcher){const targetMap=new WeakMap;function addEventListener(cb,opts){const _a=opts,{once,signal}=_a,addOpts=__objRest$1(_a,["once","signal"]),caches=targetMap.get(addOpts.target)||[];if(!caches.some(cache2=>isSameListener(cache2,cb,opts))){const remove=()=>{signal&&off("abort",remove,{target:signal}),removeEventListener(cb,opts)};signal&&on("abort",remove,{target:signal});const stop=setupDispatcher(e=>{if(once&&remove(),signal!=null&&signal.aborted)return;const evt=new PointerEvent(type,e);Object.defineProperty(evt,"target",{value:e.target,enumerable:!0}),cb(evt)},addOpts);targetMap.set(addOpts.target,[...caches,{cb,opts,stop}])}}function removeEventListener(cb,opts){const caches=targetMap.get(opts.target)||[],index=caches.findIndex(cache2=>isSameListener(cache2,cb,opts));if(index!==-1){const[removed]=caches.splice(index,1);removed.stop(),targetMap.set(opts.target,caches)}}function isSameListener(cache2,cb,opts){return cache2.cb===cb&&cache2.opts.capture===opts.capture}return{addEventListener,removeEventListener}}var longpress=createCustomEventDispatcher("longpress",setupLongpressDispatcher);function setupLongpressDispatcher(listener,opts){const STOP_EVENTS=["pointermove","pointerup","pointercancel"],{wait=300}=opts;let waitTimer=null;function setup(){return on("pointerdown",start,opts),STOP_EVENTS.forEach(type=>on(type,stop,opts)),clean}function clean(){off("pointerdown",start,opts),STOP_EVENTS.forEach(type=>off(type,stop,opts)),stop()}function start(e){e.button===0&&e.buttons===1&&(waitTimer=window.setTimeout(()=>{var _a;(_a=navigator.vibrate)==null||_a.call(navigator,15),listener(e)},wait))}function stop(){waitTimer!=null&&(clearTimeout(waitTimer),waitTimer=null)}return setup()}var __defProp$5=Object.defineProperty,__defProps$4=Object.defineProperties,__getOwnPropDescs$4=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$6=Object.getOwnPropertySymbols,__hasOwnProp$6=Object.prototype.hasOwnProperty,__propIsEnum$6=Object.prototype.propertyIsEnumerable,__defNormalProp$5=(obj,key,value)=>key in obj?__defProp$5(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues$5=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp$6.call(b,prop)&&__defNormalProp$5(a,prop,b[prop]);if(__getOwnPropSymbols$6)for(var prop of __getOwnPropSymbols$6(b))__propIsEnum$6.call(b,prop)&&__defNormalProp$5(a,prop,b[prop]);return a},__spreadProps$4=(a,b)=>__defProps$4(a,__getOwnPropDescs$4(b)),quickexit=createCustomEventDispatcher("quickexit",setupQuickexitDispatcher);function setupQuickexitDispatcher(listener,opts){const EVENT_HANDLERS={keydown:{type:"keydown",target:window,validator:e=>e.code==="Escape"},rightclick:{type:"rightclick",target:opts.target,validator:e=>e.type==="rightclick"}};function setup(){return Object.values(EVENT_HANDLERS).forEach(({type,target})=>{on(type,trigger,__spreadProps$4(__spreadValues$5({},opts),{target}))}),clean}function clean(){Object.values(EVENT_HANDLERS).forEach(({type,target})=>{off(type,trigger,__spreadProps$4(__spreadValues$5({},opts),{target}))})}function trigger(e){const eventConfig=EVENT_HANDLERS[e.type];eventConfig!=null&&eventConfig.validator(e)&&(e.preventDefault(),listener(e))}return setup()}var rightclick=createCustomEventDispatcher("rightclick",setupRightclickDispatcher);function setupRightclickDispatcher(listener,opts){function setup(){return on("contextmenu",trigger,opts),clean}function clean(){off("contextmenu",trigger,opts)}function trigger(e){e.preventDefault(),(e.pointerType==="mouse"||e.pointerType==null)&&listener(e)}return setup()}function on(type,listener,options={}){switch(options.target||(options.target=window),type){case"longpress":longpress.addEventListener(listener,options);break;case"quickexit":quickexit.addEventListener(listener,options);break;case"rightclick":rightclick.addEventListener(listener,options);break;default:options.target.addEventListener(type,listener,options)}}function off(type,listener,options={}){switch(options.target||(options.target=window),type){case"longpress":longpress.removeEventListener(listener,options);break;case"quickexit":quickexit.removeEventListener(listener,options);break;case"rightclick":rightclick.removeEventListener(listener,options);break;default:options.target.removeEventListener(type,listener,options)}}function onDocumentReady(listener){IS_CLIENT&&(document.readyState==="loading"?on("DOMContentLoaded",listener,{once:!0}):listener())}function logError(msg,config={}){const{logLevel="log",errorType=Error,code}=config,errorMessage=errMsg(msg,code);if(logLevel==="throw"){const err=new errorType(errorMessage);if(typeof Error.captureStackTrace=="function")Error.captureStackTrace(err,logError);else if(err.stack){const cleanStack=err.stack.split(` `).filter((line,index)=>index===0||!line.includes("at logError")).join(` `);err.stack=cleanStack}throw err}const structuredLog={severity:"ERROR",message:errorMessage,timestamp:Date.now(),component:"client",stackTrace:(new Error().stack||"").split(` `).slice(2).map(line=>line.trim()),context:{userAgent:typeof navigator=="undefined"?"server-side":navigator.userAgent,environment:process.env.NODE_ENV||"development"}};console.error(structuredLog)}function errMsg(msg,errorCode="CLIENT_ERROR"){(typeof msg!="string"||!msg.trim())&&(msg="\u672A\u77E5\u9519\u8BEF\u53D1\u751F\uFF0C\u8BF7\u68C0\u67E5\u8F93\u5165\u53C2\u6570",errorCode="INVALID_INPUT");const timestamp=new Date().toISOString(),moduleTag="[@open-editor/client]",envInfo=typeof window=="undefined"?`Node/${process.version}`:`Browser/${navigator.userAgent.split(" ")[0]}`;return`${moduleTag}[${errorCode}] ${msg} (${timestamp}) [${envInfo}]`}var __defProp$4=Object.defineProperty,__defProps$3=Object.defineProperties,__getOwnPropDescs$3=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$5=Object.getOwnPropertySymbols,__hasOwnProp$5=Object.prototype.hasOwnProperty,__propIsEnum$5=Object.prototype.propertyIsEnumerable,__defNormalProp$4=(obj,key,value)=>key in obj?__defProp$4(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues$4=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp$5.call(b,prop)&&__defNormalProp$4(a,prop,b[prop]);if(__getOwnPropSymbols$5)for(var prop of __getOwnPropSymbols$5(b))__propIsEnum$5.call(b,prop)&&__defNormalProp$4(a,prop,b[prop]);return a},__spreadProps$3=(a,b)=>__defProps$3(a,__getOwnPropDescs$3(b));const DEFAULT_OPTIONS={displayToggle:!0,disableHoverCSS:!0,ignoreComponents:"/**/node_modules/**/*",once:!0,crossIframe:!0};let activeOptions;function setOptions(userOpts){var _a;activeOptions=__spreadProps$3(__spreadValues$4(__spreadValues$4({},DEFAULT_OPTIONS),userOpts),{ignoreComponents:(_a=userOpts.ignoreComponents)!=null?_a:DEFAULT_OPTIONS.ignoreComponents})}function getOptions(){return activeOptions||logError("\u914D\u7F6E\u9879\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 setOptions()",{logLevel:"throw",code:"CONFIG_NOT_INITIALIZED"}),activeOptions}function mitt(){const listeners=new Set;return{get isEmpty(){return listeners.size===0},on(handler){listeners.add(handler)},once(handler){const wrapOnceFn=(...args)=>{listeners.delete(wrapOnceFn),handler(...args)};listeners.add(wrapOnceFn)},off(handler){listeners.delete(handler)},clear(){listeners.clear()},emit(...args){new Set(listeners).forEach(fn=>fn(...args))}}}var __defProp$3=Object.defineProperty,__defProps$2=Object.defineProperties,__getOwnPropDescs$2=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$4=Object.getOwnPropertySymbols,__hasOwnProp$4=Object.prototype.hasOwnProperty,__propIsEnum$4=Object.prototype.propertyIsEnumerable,__defNormalProp$3=(obj,key,value)=>key in obj?__defProp$3(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues$3=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp$4.call(b,prop)&&__defNormalProp$3(a,prop,b[prop]);if(__getOwnPropSymbols$4)for(var prop of __getOwnPropSymbols$4(b))__propIsEnum$4.call(b,prop)&&__defNormalProp$3(a,prop,b[prop]);return a},__spreadProps$2=(a,b)=>__defProps$2(a,__getOwnPropDescs$2(b));function crossIframeBridge(opts={}){const{setup,emitMiddlewares=[]}=opts,bridge=mitt();let initialized=!1;return __spreadProps$2(__spreadValues$3({},bridge),{get isEmpty(){return bridge.isEmpty},setup(){const{crossIframe}=getOptions();crossIframe&&!initialized&&(initialized=!0,setup==null||setup())},emit(args,immediate){const normalizedArgs=Array.isArray(args)?args:[],{crossIframe}=getOptions(),middlewareStack=[()=>bridge.emit(...normalizedArgs)];crossIframe&&!immediate&&emitMiddlewares.length&&middlewareStack.unshift(...emitMiddlewares),function executeMiddlewareChain(){const currentMiddleware=middlewareStack.shift();currentMiddleware==null||currentMiddleware(normalizedArgs,executeMiddlewareChain)}()}})}const topWindow=IS_CLIENT?findTopWindow():void 0,isTopWindow=IS_CLIENT&&topWindow===window;function whenTopWindow(yes,no){isTopWindow?yes():no==null||no()}function findTopWindow(){let currentWindow=window;for(;currentWindow.frameElement;)currentWindow=currentWindow.parent;return currentWindow}function createMessage(type,args){return`@${type}${JSON.stringify(args)}`}function parseMessage(data){try{if(data.startsWith("@")&&data.includes("[")){const typeEnd=data.indexOf("[");return{type:data.substring(1,typeEnd),args:JSON.parse(data.substring(typeEnd))}}}catch(e){console.error("\u6D88\u606F\u89E3\u6790\u5931\u8D25",e)}return null}function onMessage(type,callback){on("message",({data})=>{if(shared.isStr(data)){const msg=parseMessage(data);(msg==null?void 0:msg.type)===type&&callback(msg.args)}})}function postMessage(type,args=[],target=window){target.postMessage(createMessage(type,args),"*")}function postMessageAll(type,args=[],crossOrigin=!1){Array.from(document.querySelectorAll("iframe")).map(iframe=>iframe.contentWindow).filter(Boolean).forEach(target=>{try{(crossOrigin||target.document)&&postMessage(type,args,target)}catch(e){crossOrigin&&postMessage(type,args,target)}})}const inspectorActiveBridge=crossIframeBridge({setup(){onMessage(INSPECTOR_ACTIVE_CROSS_IFRAME,args=>{postMessageAll(INSPECTOR_ACTIVE_CROSS_IFRAME,args),inspectorActiveBridge.emit(args,!0)})},emitMiddlewares:[args=>{postMessage(INSPECTOR_ACTIVE_CROSS_IFRAME,args,topWindow)}]});var __defProp$2=Object.defineProperty,__defProps$1=Object.defineProperties,__getOwnPropDescs$1=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$3=Object.getOwnPropertySymbols,__hasOwnProp$3=Object.prototype.hasOwnProperty,__propIsEnum$3=Object.prototype.propertyIsEnumerable,__defNormalProp$2=(obj,key,value)=>key in obj?__defProp$2(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues$2=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp$3.call(b,prop)&&__defNormalProp$2(a,prop,b[prop]);if(__getOwnPropSymbols$3)for(var prop of __getOwnPropSymbols$3(b))__propIsEnum$3.call(b,prop)&&__defNormalProp$2(a,prop,b[prop]);return a},__spreadProps$1=(a,b)=>__defProps$1(a,__getOwnPropDescs$1(b));const BASE_EVENT_OPTIONS={bubbles:!0,cancelable:!0,composed:!0};function dispatchEvent(type,detail){const options=__spreadProps$1(__spreadValues$2({},BASE_EVENT_OPTIONS),{detail}),customEvent=new CustomEvent(type,options);return window.dispatchEvent(customEvent)}const inspectorEnableBridge=crossIframeBridge({setup(){onMessage(INSPECTOR_ENABLE_CROSS_IFRAME,handleInspectorEnable);function handleInspectorEnable(args){whenTopWindow(()=>{dispatchEvent(ENABLE_INSPECTOR_EVENT)&&broadcastEnableMessage(args)},()=>broadcastEnableMessage(args))}function broadcastEnableMessage(args){postMessageAll(INSPECTOR_ENABLE_CROSS_IFRAME,args),inspectorEnableBridge.emit(args,!0)}},emitMiddlewares:[args=>{postMessage(INSPECTOR_ENABLE_CROSS_IFRAME,args,topWindow)}]}),inspectorExitBridge=crossIframeBridge({setup(){onMessage(INSPECTOR_EXIT_CROSS_IFRAME,handleExitEvent)},emitMiddlewares:[args=>{postMessage(INSPECTOR_EXIT_CROSS_IFRAME,args,topWindow)}]});function handleExitEvent(args){whenTopWindow(()=>executeInTopWindow(args),()=>executeInSubWindow(args))}function executeInTopWindow(args){dispatchEvent(EXIT_INSPECTOR_EVENT)&&broadcastExitEvent(args)}function executeInSubWindow(args){broadcastExitEvent(args)}function broadcastExitEvent(args){postMessageAll(INSPECTOR_EXIT_CROSS_IFRAME,args),inspectorExitBridge.emit(args,!0)}const openEditorBridge=crossIframeBridge({setup(){onMessage(OPEN_EDITOR_CROSS_IFRAME,args=>{openEditorBridge.emit(args,!0)})},emitMiddlewares:[(args,next)=>{whenTopWindow(next,()=>{postMessage(OPEN_EDITOR_CROSS_IFRAME,args,topWindow)})}]}),openEditorStartBridge=crossIframeBridge({setup(){onMessage(OPEN_EDITOR_START_CROSS_IFRAME,args=>{postMessageAll(OPEN_EDITOR_START_CROSS_IFRAME,args,!0),openEditorStartBridge.emit(args,!0)})},emitMiddlewares:[args=>{postMessage(OPEN_EDITOR_START_CROSS_IFRAME,args,topWindow)}]}),openEditorEndBridge=crossIframeBridge({setup(){onMessage(OPEN_EDITOR_END_CROSS_IFRAME,args=>{postMessageAll(OPEN_EDITOR_END_CROSS_IFRAME,args,!0),openEditorEndBridge.emit(args,!0)})},emitMiddlewares:[args=>{postMessage(OPEN_EDITOR_END_CROSS_IFRAME,args,topWindow)}]}),openEditorErrorBridge=crossIframeBridge({setup(){onMessage(OPEN_EDITOR_ERROR_CROSS_IFRAME,args=>{openEditorErrorBridge.emit(args,!0)})},emitMiddlewares:[(args,next)=>{whenTopWindow(next,()=>{postMessage(OPEN_EDITOR_ERROR_CROSS_IFRAME,args,topWindow)})}]});var __getOwnPropSymbols$2=Object.getOwnPropertySymbols,__hasOwnProp$2=Object.prototype.hasOwnProperty,__propIsEnum$2=Object.prototype.propertyIsEnumerable,__objRest=(source,exclude)=>{var target={};for(var prop in source)__hasOwnProp$2.call(source,prop)&&exclude.indexOf(prop)<0&&(target[prop]=source[prop]);if(source!=null&&__getOwnPropSymbols$2)for(var prop of __getOwnPropSymbols$2(source))exclude.indexOf(prop)<0&&__propIsEnum$2.call(source,prop)&&(target[prop]=source[prop]);return target};const FRAGMENT_TYPE=Symbol("INTERNAL_VIRTUAL_FRAGMENT"),JSX_MARK="__oe_jsx",SVG_NAMESPACE="http://www.w3.org/2000/svg",SVG_TAGS=new Set("svg,path,circle,rect,ellipse,line,polygon,polyline,text,tspan,textPath,g,defs,symbol,use,marker,linearGradient,radialGradient,pattern,stop,image,foreignObject,clipPath,mask,marker,animate,animateMotion,animateTransform,filter,feGaussianBlur,feColorMatrix,feComposite,a,view,radialGradient,mesh,hatch,mask,filter,feDropShadow".split(","));function jsx(type,props){const _a=props,{ref,className,style,children}=_a,attrs=__objRest(_a,["ref","className","style","children"]);if(typeof type=="function")return type(props);const element=type===FRAGMENT_TYPE?document.createDocumentFragment():createElement(type,{className,style});return type!==FRAGMENT_TYPE&&(applyAttributes(element,attrs),ref&&ref(element)),children!=null&&appendChildren(element,children),element}function createElement(tagName,{className,style}){const element=SVG_TAGS.has(tagName)?document.createElementNS(SVG_NAMESPACE,tagName):document.createElement(tagName);return element.setAttribute(JSX_MARK,""),className&&(element.className=className),style&&Object.assign(element.style,style),element}function applyAttributes(element,attrs){for(const[prop,value]of Object.entries(attrs))if(value!=null)if(/^on[A-Z]/.test(prop)){const eventType=prop.slice(2).toLowerCase();on(eventType,value,{target:element})}else element.setAttribute(prop,value)}function appendChildren(parent,childNodes){Array.isArray(childNodes)?childNodes.forEach(childNode=>appendChildren(parent,childNode)):childNodes instanceof Element||childNodes instanceof DocumentFragment?parent.appendChild(childNodes):childNodes!=null&&childNodes!==!1&&parent.appendChild(document.createTextNode(childNodes))}function applyAttrs(el,attrs){for(const[key,value]of Object.entries(attrs))value!=null?el.setAttribute(key,String(value)):el.removeAttribute(key)}function appendChild(el,...children){for(const child of children)el.appendChild(child)}function replaceChild(el,...children){for(;el.firstChild;)el.removeChild(el.firstChild);appendChild(el,...children)}function checkVisibility(el){if(!el.isConnected)return!1;let current=el;for(;current;){if(createStyleGetter(current)("display",!1)==="none")return!1;current=current.parentElement}return!0}const CssUtils={numberToPx(value){return`${value}px`},parseValue(value){return Number.parseFloat(value)||0},translate(x,y){return`translate(${CssUtils.numberToPx(x)}, ${CssUtils.numberToPx(y)})`}};function applyStyle(el,...styles){Object.assign(el.style,...styles)}function createStyleGetter(el){const computedStyle=window.getComputedStyle(el);return function(property,toNumber=!0){const value=computedStyle.getPropertyValue(property);return toNumber?CssUtils.parseValue(value):value}}function addClass(el,className){el.classList.add(...className.trim().split(/\s+/))}function removeClass(el,className){el.classList.remove(...className.trim().split(/\s+/))}const OVERLAY_EVENTS={BASE:["pointerdown","pointerup","pointerout"],EXTENDED:["pointermove"]};let overlayTeardown=null;const eventBlocker={activate(){if(overlayTeardown)return;const{once}=getOptions(),overlay=createOverlay(),eventTarget=once?overlay:window,eventController={add:()=>manageListeners(on,performTeardown,eventTarget),remove:()=>manageListeners(off,performTeardown,eventTarget)};function performTeardown(){overlayTeardown&&(eventController.remove(),overlay.remove(),overlayTeardown=null)}overlayTeardown=performTeardown,eventController.add(),appendChild(document.body,overlay)},deactivate(){overlayTeardown==null||overlayTeardown()}};function createOverlay(){return jsx("div",{className:"oe-event-blocker"})}function manageListeners(operation,callback,target){OVERLAY_EVENTS.BASE.forEach(event=>operation(event,callback,{target,capture:!0})),isTopWindow&&OVERLAY_EVENTS.EXTENDED.forEach(event=>operation(event,callback,{target,capture:!0}))}const cache=new WeakMap;function getCache(el){return cache.get(el)}function setCache(el,value){cache.set(el,value)}const DEFAULT_COMPONENT_NAME="AnonymousComponent",DEFAULT_COMPONENT_FILE="unknown";function normalizeMeta(meta){return{name:meta.name?shared.camelCase(meta.name):DEFAULT_COMPONENT_NAME,file:meta.file||DEFAULT_COMPONENT_FILE,line:meta.line||1,column:meta.column||1}}function ensureFileName(filePath){const{rootDir}=getOptions(),normalizedRoot=shared.normalizePath(rootDir),normalizedPath=shared.normalizePath(filePath);return normalizedPath.startsWith(normalizedRoot)?normalizedPath.replace(normalizedRoot,"").replace(/^\/+/g,"").replace(/\/{2,}/g,"/"):normalizedPath.replace(/\.\.\//g,"").replace(/\/+/g,"/")}const SYSTEM_BLACKLIST=/^(\/home\/runner|\/tmp\/build)/;function isValidFileName(filePath){if(!filePath)return!1;const normalized=shared.normalizePath(filePath);return!SYSTEM_BLACKLIST.test(normalized)&&applyProjectIgnoreRules(normalized)}const SAFE_CHAR_RE=/^[a-z0-9_\-./[\]]+$/i;function hasValidBrackets(path){return(path.match(/$$/g)||[]).length===(path.match(/$$/g)||[]).length&&!/$$[^\w-]+$$/.test(path)}let globMatcher=null;function applyProjectIgnoreRules(path){const{ignoreComponents}=getOptions();return!SAFE_CHAR_RE.test(path)||!hasValidBrackets(path)?!1:ignoreComponents?(globMatcher||(globMatcher=outmatch(ignoreComponents,{separator:"/",excludeDot:!1})),!globMatcher(path)):!0}var __defProp$1=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols$1=Object.getOwnPropertySymbols,__hasOwnProp$1=Object.prototype.hasOwnProperty,__propIsEnum$1=Object.prototype.propertyIsEnumerable,__defNormalProp$1=(obj,key,value)=>key in obj?__defProp$1(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues$1=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp$1.call(b,prop)&&__defNormalProp$1(a,prop,b[prop]);if(__getOwnPropSymbols$1)for(var prop of __getOwnPropSymbols$1(b))__propIsEnum$1.call(b,prop)&&__defNormalProp$1(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b));function createReactResolver(opts){const{isValid,getNext,getSource,getName}=opts;function reactResolver(currentNode,tree,deep){for(;currentNode;){const normalizedSource=normalizeSourceInfo(getSource(currentNode));let nextNode=getNext(currentNode);if(isValidFileName(normalizedSource==null?void 0:normalizedSource.fileName)&&(nextNode=getValidNextNode(nextNode),!nextNode||(addSourceMetadata(nextNode,normalizedSource,tree),!deep)))return;currentNode=nextNode}}function normalizeSourceInfo(source){return source&&__spreadProps(__spreadValues$1({},source),{fileName:ensureFileName(shared.normalizePath(source.fileName))})}function getValidNextNode(initialNode){let node=initialNode;for(;node&&!isValid(node);)node=getNext(node);return node}function addSourceMetadata(node,source,tree){tree.push(normalizeMeta({name:getName(node),file:source.fileName,line:source.lineNumber,column:source.columnNumber}))}return reactResolver}function resolveReact17({value:node},tree,deep){resolveForFiber(node,tree,deep)}let resolver$3;function resolveForFiber(fiber,tree,deep){initializeResolver$3(),resolver$3(fiber,tree,deep)}function initializeResolver$3(){resolver$3||(resolver$3=createReactResolver({isValid(owner){var _a;return!!(owner!=null&&owner._debugSource)&&(shared.isFn(owner.type)||shared.isFn((_a=owner.type)==null?void 0:_a.render))},getNext(fiber){return fiber==null?void 0:fiber._debugOwner},getSource(fiber){return fiber==null?void 0:fiber._debugSource},getName(owner){var _a;if(!owner)return;const component=shared.isFn(owner.type)?owner.type:(_a=owner.type)==null?void 0:_a.render;return(component==null?void 0:component.displayName)||(component==null?void 0:component.name)}}))}function resolveReact15({value:instanceOrFiber},tree,deep=!1){instanceOrFiber&&shared.hasOwn(instanceOrFiber,"_debugOwner")?resolveForFiber(instanceOrFiber,tree,deep):resolveForInstance(instanceOrFiber,tree,deep)}let resolver$2;function resolveForInstance(instance,tree,deep){initializeResolver$2(),resolver$2(instance,tree,deep)}function initializeResolver$2(){resolver$2||(resolver$2=createReactResolver({isValid(owner){var _a;const element=owner==null?void 0:owner._currentElement;return!!element&&(shared.isFn(element.type)||shared.isFn((_a=element.type)==null?void 0:_a.render))},getNext(instance){var _a;return(_a=instance==null?void 0:instance._currentElement)==null?void 0:_a._owner},getSource(instance){var _a;return(_a=instance==null?void 0:instance._currentElement)==null?void 0:_a._source},getName(owner){const element=owner==null?void 0:owner._currentElement;if(element){const component=shared.isFn(element.type)?element.type:element.type.render;return(component==null?void 0:component.displayName)||(component==null?void 0:component.name)}}}))}function createVueResolver(opts){const{isValid,getNext,getSource,getFile,getName}=opts;function vueResolver(debug,tree,deep){const processedFiles=new Set;let[currentInstance,currentSource]=resolveAnchorPoint(debug);for(;isValid(currentInstance);){const normalizedFile=normalizeSource(getFile(currentInstance));if(isValidFileName(normalizedFile)){const meta=currentSource?processSourceFile(currentInstance,normalizedFile,currentSource):processInstanceFile(currentInstance,normalizedFile);if(meta&&!processedFiles.has(meta.file)&&(processedFiles.add(meta.file),tree.push(meta),currentSource=normalizeSource(getSource(currentInstance))),!deep&&meta)return}currentInstance=getNext(currentInstance)}}function processSourceFile(instance,filePath,currentSource){var _a;const sourceMeta=parseSourcePath(currentSource),instanceMeta=parseSourcePath(filePath);return sourceMeta.file===instanceMeta.file?normalizeMeta({name:(_a=getName(instance))!=null?_a:extractFileName(sourceMeta.file),file:sourceMeta.file,line:sourceMeta.line,column:sourceMeta.column}):null}function processInstanceFile(instance,filePath){var _a;const instanceMeta=parseSourcePath(filePath);return normalizeMeta({name:(_a=getName(instance))!=null?_a:extractFileName(instanceMeta.file),file:instanceMeta.file,line:instanceMeta.line,column:instanceMeta.column})}function resolveAnchorPoint(debug){var _a;const sourceFromAttr=normalizeSource((_a=debug.el)==null?void 0:_a.getAttribute("__source"));return shared.isStr(sourceFromAttr)?[debug.value,sourceFromAttr]:[debug.value,normalizeSource(getSource(debug.value))]}function normalizeSource(source){if(source)return ensureFileName(shared.normalizePath(source))}function parseSourcePath(source){const[file,line,column]=source.split(/:(?=\d)/);return{file,line:Number(line),column:Number(column)}}function extractFileName(filePath){var _a;return(_a=filePath.match(/([^/]+)\.[^.]+$/))==null?void 0:_a[1]}return vueResolver}let resolver$1;function resolveVue3(debug,tree,deep){initializeResolver$1(),resolver$1(debug,tree,deep)}function initializeResolver$1(){resolver$1||(resolver$1=createVueResolver({isValid(node){return!!node&&!node.isDeactivated&&typeof node.type!="symbol"},getNext(node){return node.parent&&"__asyncLoader"in node.parent.type?node.parent.parent:node.parent},getSource(node){var _a,_b,_c,_d;let current=node;for(;current;){const rawSource=((_c=(_b=(_a=current==null?void 0:current.suspense)==null?void 0:_a.parent)==null?void 0:_b.props)==null?void 0:_c.__source)||((_d=current.props)==null?void 0:_d.__source);if(rawSource)return String(rawSource);current=current.parent&&"__isTeleport"in current.parent.type?current.parent.parent:current.parent}},getFile(node){return node.type.__file},getName(node){var _a,_b;const type=node.type;return type.__name||type.name||type.displayName||((_b=(_a=type.__file)==null?void 0:_a.match(/([^/]+)\.vue$/))==null?void 0:_b[1])}}))}let resolver;function resolveVue2(debug,tree,deep){var _a;const componentInstance=(_a=debug.value._vnode)==null?void 0:_a.componentInstance;componentInstance&&(debug.value=componentInstance),initializeResolver(),resolver(debug,tree,deep)}function initializeResolver(){resolver||(resolver=createVueResolver({isValid(node){return!!(node!=null&&node.$vnode)},getNext(node){return node.$parent},getSource(node){var _a;let current=node;for(;current;){const source=(_a=current.$props)==null?void 0:_a.__source;if(source)return source;current=current.$parent}},getFile(node){var _a;const ctor=getComponentConstructor(node);return ctor.__file||((_a=ctor.options)==null?void 0:_a.__file)},getName(node){return getComponentConstructor(node).options.name}}));function getComponentConstructor(node){return node.$vnode.componentOptions.Ctor}}const ELEMENT_VALIDATION_RULES={crossIframe:new Set([HTML_INSPECTOR_ELEMENT_TAG_NAME]),default:new Set([HTML_INSPECTOR_ELEMENT_TAG_NAME,void 0,"HTML"])};function checkValidElement(el){if(!(el!=null&&el.isConnected))return!1;const{crossIframe}=getOptions(),elementTag=el.tagName;return!(crossIframe?ELEMENT_VALIDATION_RULES.crossIframe:ELEMENT_VALIDATION_RULES.default).has(elementTag)}const REACT_FIBER_PREFIX="__reactFiber$",REACT_INSTANCE_PREFIX="__reactInternalInstance$",VUE3_COMPONENT_KEY="__vueParentComponent",VUE2_COMPONENT_KEY="__vue__";function resolveDebug(el){for(;checkValidElement(el);){const frameworkKey=detectFrameworkKey(el);if(frameworkKey){const debugValue=el[frameworkKey];if(debugValue)return{framework:frameworkKey.includes("react")?"react":"vue",el,key:frameworkKey,value:debugValue}}el=el.parentElement}}function detectFrameworkKey(el){return detectVue3(el)||detectVue2(el)||detectReact17(el)||detectReact15(el)}function detectVue3(el){return shared.hasOwn(el,VUE3_COMPONENT_KEY)?VUE3_COMPONENT_KEY:void 0}function detectVue2(el){return shared.hasOwn(el,VUE2_COMPONENT_KEY)?VUE2_COMPONENT_KEY:void 0}function detectReact17(el){return findFrameworkKey(el,REACT_FIBER_PREFIX)}function detectReact15(el){return findFrameworkKey(el,REACT_INSTANCE_PREFIX)}function findFrameworkKey(el,prefix){return Object.keys(el).find(key=>key.startsWith(prefix))}const FRAME_RESOLVERS={__reactFiber:resolveReact17,__reactInternal:resolveReact15,__vueParent:resolveVue3,__vue:resolveVue2};function resolveSource(el,deep){const source={id:CURRENT_INSPECT_ID,el:el.localName,meta:void 0,tree:[]};if(!deep){const cached=getCache(el);if(cached)return source.meta=cached.meta,source}const debugInfo=resolveDebug(el);if(debugInfo){const resolverKey=Object.keys(FRAME_RESOLVERS).find(key=>debugInfo.key.startsWith(key));resolverKey&&FRAME_RESOLVERS[resolverKey](debugInfo,source.tree,deep),source.meta=source.tree[0]}return deep||setCache(el,{meta:source.meta}),source}const treeOpenBridge=crossIframeBridge({setup(){onMessage(TREE_OPEN_CROSS_IFRAME,args=>{const isFromTopWindow=args[1]||(args[1]=isTopWindow);isFromTopWindow&&(postMessageAll(TREE_OPEN_CROSS_IFRAME,args),eventBlocker.activate()),treeOpenBridge.emit(args,isFromTopWindow)})},emitMiddlewares:[([source],next)=>{if(window.frameElement){const{tree}=resolveSource(window.frameElement,!0);source.tree.push(...tree)}next()},args=>{whenTopWindow(()=>postMessage(TREE_OPEN_CROSS_IFRAME,args,topWindow),()=>postMessage(TREE_OPEN_CROSS_IFRAME,args,window.parent))}]}),treeCloseBridge=crossIframeBridge({setup(){onMessage(TREE_CLOSE_CROSS_IFRAME,args=>{const isFromTopWindow=args[0]||(args[0]=isTopWindow);isFromTopWindow&&(postMessageAll(TREE_CLOSE_CROSS_IFRAME,args),eventBlocker.deactivate()),treeCloseBridge.emit(args,isFromTopWindow)})},emitMiddlewares:[args=>{postMessage(TREE_CLOSE_CROSS_IFRAME,args,topWindow)}]}),inspectorState={isEnable:!1,isActive:!1,isRendering:!1,isTreeOpen:!1,activeEl:null,prevActiveEl:null},codeSourceBridge=crossIframeBridge({setup(){onMessage(CODE_SOURCE_CROSS_IFRAME,args=>{inspectorState.isEnable&&codeSourceBridge.emit(args,!0)})},emitMiddlewares:[(args,next)=>{whenTopWindow(next,()=>{postMessage(CODE_SOURCE_CROSS_IFRAME,args,topWindow)})}]}),SUPPORT_ZOOM=IS_CLIENT&&"zoom"in document.documentElement.style;let NEED_COMPUTED;function getDOMRect(target){const rect=target.getBoundingClientRect();return NEED_COMPUTED!=null||(NEED_COMPUTED=checkComputedNeeded()),NEED_COMPUTED?computedDOMRect(target,rect):rect}function getCompositeZoom(target){let zoom=1;if(!SUPPORT_ZOOM)return zoom;let currentElement=target;for(;currentElement;){const zoomValue=createStyleGetter(currentElement)("zoom");if(zoom*=zoomValue||1,currentElement=currentElement.parentElement,(currentElement==null?void 0:currentElement.tagName)==="HTML")break}return zoom}function checkComputedNeeded(){const detectEl=jsx("div",{style:{position:"fixed",top:"-9999px",width:CssUtils.numberToPx(100),height:CssUtils.numberToPx(100),zoom:"2"}});appendChild(document.body,detectEl);try{const{width,height}=detectEl.getBoundingClientRect();return width===100||height===100}finally{detectEl.remove()}}function computedDOMRect(target,baseRect){const zoomRate=getCompositeZoom(target);if(zoomRate!==1){const{x,y,width,height}=baseRect,centerX=x+width/2,centerY=y+height/2,scaledWidth=width*zoomRate,scaledHeight=height*zoomRate,scaledX=centerX*zoomRate-scaledWidth/2,scaledY=centerY*zoomRate-scaledHeight/2;return new DOMRect(scaledX,scaledY,scaledWidth,scaledHeight)}return baseRect}const IS_BORDER_WITH_ZOOM=!IS_FIREFOX,EMPTY_BOX_EDGES={get top(){return 0},set top(_){},get right(){return 0},set right(_){},get bottom(){return 0},set bottom(_){},get left(){return 0},set left(_){}},EMPTY_BOX_METRICS={margin:EMPTY_BOX_EDGES,border:EMPTY_BOX_EDGES,padding:EMPTY_BOX_EDGES},EMPTY_BOX_MODEL=[EMPTY_BOX_EDGES,EMPTY_BOX_METRICS];function computedBoxModel(element){if(!checkValidElement(element)||!checkVisibility(element))return EMPTY_BOX_MODEL;const rect=getDOMRect(element),buildEdges=createEdgesBuilder(element),margin=buildEdges("margin"),border=buildEdges("border",IS_BORDER_WITH_ZOOM),padding=buildEdges("padding");return[{top:rect.top-margin.top,right:rect.right+margin.right,bottom:rect.bottom+margin.bottom,left:rect.left-margin.left},{margin,border,padding}]}function createEdgesBuilder(element){const baseStyleGetter=createStyleGetter(element),zoomFactor=getCompositeZoom(element);function getZoomedStyle(prop,useZoom){const baseValue=Math.max(baseStyleGetter(prop),0);return useZoom?baseValue*zoomFactor:baseValue}return(prefix,useZoom=!0)=>({top:getZoomedStyle(`${prefix}-top`,useZoom),right:getZoomedStyle(`${prefix}-right`,useZoom),bottom:getZoomedStyle(`${prefix}-bottom`,useZoom),left:getZoomedStyle(`${prefix}-left`,useZoom)})}const boxModelBridge=crossIframeBridge({setup(){onMessage(BOX_MODEL_CROSS_IFRAME,args=>{inspectorState.isEnable&&boxModelBridge.emit(args,isTopWindow)})},emitMiddlewares:[([rect],next)=>{if(window.frameElement){const[position,metrics]=computedBoxModel(window.frameElement);[position,...Object.values(metrics)].forEach(({top,left})=>{rect.top+=top,rect.right+=left,rect.bottom+=top,rect.left+=left})}next()},(args,next)=>{whenTopWindow(next,()=>{postMessage(BOX_MODEL_CROSS_IFRAME,args,window.parent)})}]});function setupBridge(){inspectorActiveBridge.setup(),inspectorEnableBridge.setup(),inspectorExitBridge.setup(),codeSourceBridge.setup(),boxModelBridge.setup(),treeOpenBridge.setup(),treeCloseBridge.setup(),openEditorBridge.setup(),openEditorStartBridge.setup(),openEditorEndBridge.setup(),openEditorErrorBridge.setup()}const NULL_CONTROLLER=Object.freeze({mount(){},unmount(){}});function createStyleController(css,target=document.body){if(!IS_CLIENT)return NULL_CONTROLLER;let styleNode=null;return{mount(){styleNode||(styleNode=jsx("style",{type:"text/css",children:css}),appendChild(target,styleNode))},unmount(){styleNode&&(styleNode.remove(),styleNode=null)}}}const overrideCSS="*{cursor:default!important;-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important;touch-action:none!important;-webkit-touch-callout:none!important;}",overrideStyle=createStyleController(overrideCSS),effectCSS=".oe-lock-screen{overflow:hidden!important;}.oe-loading *{cursor:wait!important;}.oe-event-blocker{position:fixed;inset:0;opacity:0;z-index:2147483647;}",effectStyle=createStyleController(effectCSS);var __async$3=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});function openEditor(meta){return __async$3(this,null,function*(){const editorURL=generateEditorURL(meta);if(dispatchEvent(OPEN_EDITOR_EVENT,editorURL)){if(!meta)return triggerEditorLaunchError([],"\u6587\u4EF6\u672A\u627E\u5230");try{openEditorStartBridge.emit();const response=yield fetch(editorURL);if(!response.ok)throw new Error(`HTTP \u9519\u8BEF\u72B6\u6001: ${response.status}`)}catch(error){const{file,line=1,column=1}=meta;return triggerEditorLaunchError(error,`${file}:${line}:${column} \u6253\u5F00\u5931\u8D25`)}finally{openEditorEndBridge.emit()}}})}function generateEditorURL(meta){const opts=getOptions(),{protocol,hostname,port}=window.location,{file="",line=1,column=1}=meta!=null?meta:{},editorURL=new URL(`${protocol}//${hostname}`);return editorURL.pathname=shared.ServerApis.OPEN_EDITOR,editorURL.port=opts.port||port,editorURL.searchParams.set("f",encodeURIComponent(file)),editorURL.searchParams.set("l",String(line)),editorURL.searchParams.set("c",String(column)),editorURL}function triggerEditorLaunchError(error,message){return logError(message),openEditorErrorBridge.emit([message]),Promise.reject(error)}const FORM_CONTROL_TAGS=new Set(["BUTTON","FIELDSET","INPUT","OPTGROUP","OPTION","SELECT","TEXTAREA"]);let clickedElement=null;function checkClickedElement(element){return element===clickedElement}function setupClickedElementAttrs(event){const targetElement=event.target;checkValidElement(targetElement)&&(swapElementAttributes(targetElement,{href:{original:"href",temp:"oe-href"},disabled:{original:"disabled",temp:"oe-disabled"}}),clickedElement=targetElement)}function cleanClickedElementAttrs(){clickedElement&&(swapElementAttributes(clickedElement,{href:{original:"oe-href",temp:"href"},disabled:{original:"oe-disabled",temp:"disabled"}}),clickedElement=null)}function swapElementAttributes(element,attributeMap){const{anchorElements,formControlElements}=findRelatedElements(element),{href,disabled}=attributeMap;anchorElements.forEach(anchor=>swapAttribute(anchor,href.original,href.temp)),formControlElements.forEach(control=>swapAttribute(control,disabled.original,disabled.temp))}function findRelatedElements(element){const anchorElements=[],formControlElements=[];for(;element;)element.tagName==="A"?anchorElements.push(element):FORM_CONTROL_TAGS.has(element.tagName)&&formControlElements.push(element),element=element.parentElement;return{anchorElements,formControlElements}}function swapAttribute(element,sourceAttr,targetAttr){const attributeValue=element.getAttribute(sourceAttr);attributeValue!=null&&applyAttrs(element,{[sourceAttr]:null,[targetAttr]:attributeValue})}const SILENT_EVENTS="mousedown,mouseenter,mouseleave,mousemove,mouseout,mouseover,mouseup,touchstart,touchend,touchcancel,touchmove,pointercancel,pointerdown,pointerenter,pointerleave,pointermove,pointerout,pointerover,pointerup,drag,dragend,dragenter,dragleave,dragover,dragstart,drop,focus,blur,reset,submit,input,change,select,dblclick".split(","),CLICK_ATTACHMENT_EVENTS=new Set(["touchstart","touchend"]),SHORTCUT_KEYS=new Set(["Enter","Space"]);function setupListeners(opts){const{once,crossIframe}=getOptions(),wrappedCallbacks={onActiveElement:wrapCallbackWithCleanup(opts.onActiveElement),onOpenTree:wrapCallbackWithCleanup(opts.onOpenTree),onOpenEditor:wrapCallbackWithCleanup(opts.onOpenEditor),onExitInspect:wrapCallbackWithCleanup(opts.onExitInspect)},coreHandlers=[{type:"click",handler:handleInspect,target:document},{type:"pointerdown",handler:setupClickedElementAttrs},{type:"pointermove",handler:handleActiveElement},{type:"pointerover",handler:handleEnterScreen},{type:"pointerout",handler:handleLeaveScreen},{type:"longpress",handler:handleInspect},{type:"quickexit",handler:wrappedCallbacks.onExitInspect},{type:"keydown",handler:handleKeyDown},{type:"keyup",handler:handleKeyUp}],eventController={register:()=>manageListeners2(on),unregister:()=>manageListeners2(off)};return eventController.register(),eventController.unregister;function manageListeners2(operation){SILENT_EVENTS.forEach(event=>operation(event,processSilentEvent,{capture:!0})),coreHandlers.forEach(({type,handler,target})=>operation(type,handler,{target,capture:!0}))}function handleActiveElement(e){if(!shouldProcessEvent())return;const targetEl=getValidElement(e);targetEl!==inspectorState.activeEl&&(inspectorState.activeEl=targetEl,wrappedCallbacks.onActiveElement(targetEl))}function getValidElement(e){const element=e.pointerType==="touch"?document.elementFromPoint(e.clientX,e.clientY):e.target;return checkValidElement(element)?element:null}function shouldProcessEvent(){return inspectorState.isEnable&&!inspectorState.isTreeOpen}function handleEnterScreen(e){e.pointerType==="touch"&&handleActiveElement(e)}function handleLeaveScreen(e){crossIframe&&!isTopWindow||e.pointerType==="mouse"&&!e.relatedTarget&&(inspectorState.activeEl=null,wrappedCallbacks.onActiveElement(null))}function handleKeyDown(e){!inspectorState.activeEl||!SHORTCUT_KEYS.has(e.code)||(overrideEventProperties(e,{type:()=>`key${e.code}`.toLowerCase(),target:()=>inspectorState.activeEl}),setupClickedElementAttrs(e),handleInspect(e))}function handleKeyUp(e){SHORTCUT_KEYS.has(e.code)&&cleanClickedElementAttrs()}function handleInspect(e){processSilentEvent(e);const targetEl=e.target;if(!checkClickedElement(targetEl))return;const finalEl=getFinalElement(targetEl);inspectorState.activeEl=null,once&&wrappedCallbacks.onExitInspect(),triggerOpenHandler(e,finalEl)}function getFinalElement(fallback){var _a;return(_a=inspectorState.activeEl)!=null&&_a.isConnected?inspectorState.activeEl:fallback}function triggerOpenHandler(e,el){e.metaKey||e.type==="longpress"?wrappedCallbacks.onOpenTree(el):wrappedCallbacks.onOpenEditor(el)}}function overrideEventProperties(e,properties){Object.entries(properties).forEach(([prop,getter])=>{Object.defineProperty(e,prop,{get:getter})})}function processSilentEvent(e){[e.target,e.relatedTarget].some(el=>checkValidElement(el))&&(!CLICK_ATTACHMENT_EVENTS.has(e.type)&&e.preventDefault(),e.stopPropagation())}function wrapCallbackWithCleanup(fn){return function(...args){return cleanClickedElementAttrs(),fn(...args)}}var __knownSymbol2=(name,symbol)=>(symbol=Symbol[name])?symbol:Symbol.for("Symbol."+name),__typeError2=msg=>{throw TypeError(msg)},__async$2=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())}),__await2=function(promise,isYieldStar){this[0]=promise,this[1]=isYieldStar},__yieldStar2=value=>{var obj=value[__knownSymbol2("asyncIterator")],isAwait=!1,method,it={};return obj==null?(obj=value[__knownSymbol2("iterator")](),method=k=>it[k]=x=>obj[k](x)):(obj=obj.call(value),method=k=>it[k]=v=>{if(isAwait){if(isAwait=!1,k==="throw")throw v;return v}return isAwait=!0,{done:!1,value:new __await2(new Promise(resolve=>{var x=obj[k](v);x instanceof Object||__typeError2("Object expected"),resolve(x)}),1)}}),it[__knownSymbol2("iterator")]=()=>it,method("next"),"throw"in obj?method("throw"):it.throw=x=>{throw x},"return"in obj&&method("return"),it};const HOVER_REGEXP={normal:/:hover/g,placeholder:/:oe-disable-hover/g},HOVER_REPLACEMENTS={normal:":hover",placeholder:":oe-disable-hover"},CSS_RULES_CHUNK_SIZE=200;let activeTaskId=0;function disableHoverCSS(){return updateHoverCSS(HOVER_REGEXP.normal,HOVER_REPLACEMENTS.placeholder)}function enableHoverCSS(){return updateHoverCSS(HOVER_REGEXP.placeholder,HOVER_REPLACEMENTS.normal)}function updateHoverCSS(pattern,replacement){return __async$2(this,null,function*(){const taskId=++activeTaskId,taskGenerator=createCSSTaskGenerator(pattern,replacement);yield executeTasksWithFrameScheduling(taskGenerator,()=>taskId!==activeTaskId)})}function*createCSSTaskGenerator(pattern,replacement){for(const styleSheet of Array.from(document.styleSheets)){const{ownerNode}=styleSheet;ownerNode instanceof HTMLLinkElement?yield*__yieldStar(__yieldStar2(generateTasksForLink(styleSheet,pattern,replacement))):ownerNode instanceof HTMLStyleElement&&ownerNode.textContent&&(yield()=>{ownerNode.textContent=ownerNode.textContent.replace(pattern,replacement)})}}function*generateTasksForLink(styleSheet,pattern,replacement){const rules=getSameOriginCSSRules(styleSheet),rulesSize=rules.length;let index=0;for(;index<rulesSize;){const endIndex=Math.min(index+CSS_RULES_CHUNK_SIZE,rulesSize);yield()=>{for(;index<endIndex;){const newRuleText=rules[index].cssText.replace(pattern,replacement);styleSheet.deleteRule(0),styleSheet.insertRule(newRuleText,rulesSize),index++}}}}function getSameOriginCSSRules(styleSheet){try{return new URL(styleSheet.href).origin===location.origin?Array.from(styleSheet.cssRules):[]}catch(e){return[]}}function executeTasksWithFrameScheduling(taskGenerator,shouldCancel){return __async$2(this,null,function*(){const frameTimeChecker=createFrameDurationChecker(16),scheduleNextFrame=window.requestAnimationFrame;let result=taskGenerator.next();scheduleNextFrame(function processTasks(){for(;!result.done;){if(shouldCancel())return;if(frameTimeChecker())return scheduleNextFrame(processTasks);result.value(),result=taskGenerator.next()}})})}function createFrameDurationChecker(maxFrameDuration){let lastFrameTime=performance.now();return()=>{const now=performance.now(),exceeded=now-lastFrameTime>maxFrameDuration;return exceeded&&(lastFrameTime=now),exceeded}}const cursorState={isOutsideViewport:!1,viewportX:0,viewportY:0};onDocumentReady(initCursorTracking);function getActiveElement(){if(!inspectorState.isActive||cursorState.isOutsideViewport)return null;const el=document.elementFromPoint(cursorState.viewportX,cursorState.viewportY);return checkValidElement(el)?el:null}function initCursorTracking(){on("mousemove",e=>{cursorState.viewportX=e.clientX,cursorState.viewportY=e.clientY,cursorState.isOutsideViewport=!1},{capture:!0}),on("mouseout",e=>{cursorState.isOutsideViewport=e.relatedTarget==null||e.relatedTarget===document.documentElement},{capture:!0})}function renderUI(){inspectorState.activeEl&&(codeSourceBridge.emit([resolveSource(inspectorState.activeEl)]),boxModelBridge.emit(computedBoxModel(inspectorState.activeEl)),inspectorState.isRendering||(inspectorState.isRendering=!0,requestAnimationFrame(renderNextFrame)))}function renderNextFrame(){if(!inspectorState.isRendering)return;const prevElement=inspectorState.prevActiveEl,currentElement=inspectorState.activeEl;handleElementState(prevElement,currentElement),boxModelBridge.emit(computedBoxModel(currentElement)),inspectorState.prevActiveEl=currentElement,requestAnimationFrame(renderNextFrame)}function handleElementState(prev,current){(current==null?void 0:current.isConnected)===!1&&(inspectorState.activeEl=null,current=null),prev!==current&&codeSourceBridge.emit(current?[resolveSource(current)]:[]),!current&&prev&&(inspectorState.isRendering=!1)}var __async$1=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});let cleanListeners=null;function inspectorEnable(){return __async$1(this,null,function*(){var _a;const{disableHoverCSS:isDisableHoverCSS}=getOptions();inspectorState.isEnable=!0,inspectorState.activeEl=getActiveElement(),requestAnimationFrame(renderUI),cleanListeners=setupListeners({onActiveElement:()=>renderUI(),onOpenTree:el=>treeOpenBridge.emit([resolveSource(el,!0)]),onOpenEditor:el=>openEditorBridge.emit([resolveSource(el).meta]),onExitInspect:()=>inspectorExitBridge.emit()}),isDisableHoverCSS&&(yield disableHoverCSS()),overrideStyle.mount(),(_a=document.activeElement)==null||_a.blur()})}function inspectorExit(){return __async$1(this,null,function*(){const{disableHoverCSS:isDisableHoverCSS}=getOptions();Object.assign(inspectorState,{isEnable:!1,isRendering:!1,activeEl:null}),cleanListeners&&(cleanListeners(),cleanListeners=null),isDisableHoverCSS&&(yield enableHoverCSS()),overrideStyle.unmount()})}const LOADING_CLASS="oe-loading";function setupInspector(){effectStyle.mount(),initPointerEvents(),initKeyboardEvents(),initBridgeListeners(),initEditorListeners()}function initPointerEvents(){const emitActive=()=>inspectorActiveBridge.emit([CURRENT_INSPECT_ID]);on("pointerdown",emitActive,{capture:!0}),on("pointermove",emitActive,{capture:!0})}function initKeyboardEvents(){on("keydown",e=>{shouldToggleInspector(e)&&toggleInspectorMode()},{capture:!0})}function shouldToggleInspector(e){return!inspectorState.isTreeOpen&&e.altKey&&e.metaKey&&e.code==="KeyO"}function toggleInspectorMode(){inspectorState.isEnable?inspectorExitBridge.emit():inspectorEnableBridge.emit()}function initBridgeListeners(){inspectorActiveBridge.on(handleActiveChange),inspectorEnableBridge.on(inspectorEnable),inspectorExitBridge.on(inspectorExit),treeOpenBridge.on(handleTreeOpen),treeCloseBridge.on(handleTreeClose)}function handleActiveChange(activeId){inspectorState.isActive=activeId===CURRENT_INSPECT_ID,!inspectorState.isActive&&inspectorState.isRendering&&(inspectorState.isRendering=!1,inspectorState.activeEl=null)}function handleTreeOpen(){inspectorState.isTreeOpen=!0,i