{"version":3,"sources":["jsdelivr-header.js","/npm/pawajs@2.3.6/index.js"],"names":[],"mappings":"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","file":"/npm/pawajs@2.3.6/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/pawajs@2.3.6/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { track, trigger, createEffect, runWithEffect, deleteEffect } from './reactive.js'\r\nimport { PawaElement, PawaComment } from './pawaElement.js';\r\nimport {\r\n    If,\r\n    event,\r\n    unMountElement,\r\n    mountElement,\r\n    For,\r\n    States,\r\n    ref,\r\n    documentEvent,\r\n    Switch,\r\n    exitTransition,\r\n    After,\r\n    Every,\r\n    Key\r\n} from './power.js'\r\nimport { propsValidator, sanitizeTemplate, setPawaDevError, splitAndAdd, pawaWayRemover, checkKeywordsExistence } from './utils.js';\r\nimport PawaComponent from './pawaComponent.js';\r\nimport { getServerInstance, isServer } from './server.js'\r\nimport { templates } from './normal/template.js'\r\nimport { normal_component } from './normal/component.js';\r\nimport { resumer } from './resumer.js';\r\nlet ERROR_CALLER\r\nexport const setErrorCALLER = (callback) => {\r\n        ERROR_CALLER = callback\r\n    }\r\n    // in progress\r\nconst errorCaller = (message) => {\r\n\r\n}\r\nconst client = isServer() === false\r\nconst serverInstance = getServerInstance()\r\nconst createPawaDev = () => {\r\n    const dev = {\r\n        tool: false, errors: [], totalEffect: 0, errorState: null, components: new Set(),\r\n        renderCount: 0, performance: {renderTime: [], effectTime: [], componentTime: [], start: 0, end: 0},\r\n        _originalStyles: new Map(), listeners: new Set(),\r\n        highlightElement(el) { if(!(el instanceof HTMLElement))return; /* preserve full logic unchanged */ },\r\n        unhighlightElement(el) { /* preserve full logic unchanged */ },\r\n        subscribe(cb) { dev.listeners.add(cb); return () => dev.listeners.delete(cb); },\r\n        emit(type, data) { dev.listeners.forEach(cb => {try{cb({type,data})}catch(e){console.error(\"PawaDev listener error:\",e)}}); },\r\n        setError({el, msg, directives, stack, template, warn} = {}) { \r\n            const error = {el, msg, directives, stack, template, warn};\r\n            dev.errors.push(error);\r\n            dev.emit('error', error);\r\n        },\r\n        clearErrors() {\r\n            dev.errors = [];\r\n            dev.emit('clear', null);\r\n        },\r\n        getSnapshot() {\r\n            return {\r\n                renderCount: dev.renderCount,\r\n                totalEffect: dev.totalEffect,\r\n                performance: dev.performance,\r\n                errors: dev.errors,\r\n                componentCount: dev.components.size\r\n            };\r\n        },\r\n        logRender(c, t) { dev.renderCount++; /* preserve logging */ },\r\n        logEffect(e, t) { dev.totalEffect++; /* preserve */ },\r\n        logComponent(n, t) { /* preserve */ }\r\n    };\r\n    return dev;\r\n};\r\n\r\nconst pawaDevInstance = createPawaDev();\r\n\r\nif (typeof globalThis !== 'undefined') {\r\n    globalThis.__pawaDev = pawaDevInstance;\r\n} else if (typeof window !== 'undefined') {\r\n    window.__pawaDev = pawaDevInstance;\r\n} else if (typeof global !== 'undefined') {\r\n    global.__pawaDev = pawaDevInstance;\r\n}\r\n\r\nexport const customEventMap = new Map()\r\nconst compoBeforeCall = new Set()\r\nconst compoAfterCall = new Set()\r\nconst renderBeforePawa = new Set()\r\nconst renderAfterPawa = new Set()\r\nconst renderBeforeChild = new Set()\r\nconst startsWithSet = new Set()\r\nconst fullNamePlugin = new Set()\r\nconst externalPlugin = {}\r\nconst externalPluginMap = new Map()\r\nconst allowAsProp= new Set()\r\nlet pawaAttributes = new Set()\r\nlet primaryDirective = new Set()\r\n\r\nconst mapsPlugins = {\r\n    compoAfterCall,\r\n    compoBeforeCall,\r\n    renderAfterPawa,\r\n    renderBeforePawa,\r\n    renderBeforeChild,\r\n    startsWithSet,\r\n    fullNamePlugin,\r\n    externalPlugin,\r\n    externalPluginMap,\r\n    primaryDirective,\r\n    pawaAttributes,\r\n    allowAsProp\r\n}\r\nexport const pluginsMap = () => mapsPlugins\r\nexport const escapePawaAttribute = new Set()\r\nexport const dependentPawaAttribute = new Set()\r\n\r\nexport const removePlugin = (...pluginName) => {\r\n    pluginName.forEach(n => {\r\n        if (pawaAttributes.has(n)) {\r\n            pawaAttributes.delete(n)\r\n            delete externalPlugin[n]\r\n            if (externalPluginMap.has(n)) {\r\n                const extArray = externalPluginMap.get(n)\r\n                extArray.forEach(ex => {\r\n                    dependentPawaAttribute.delete(ex)\r\n                })\r\n            }\r\n        }\r\n\r\n    })\r\n}\r\nconst applyMode = (mode, callback) => {\r\n        if (mode === null || mode === undefined) {\r\n            callback()\r\n        } else if (mode === 'client' && client) {\r\n            callback()\r\n        } else if (mode === 'server' && !client) {\r\n            callback()\r\n        }\r\n    }\r\n    /**\r\n     * @typedef {{startsWith:string,mode:null |'client'|'server',dependency:Array<string>,\r\n     * allowAsProp:boolean,fullName:string,plugin:(el:HTMLElement | PawaElement,attr:object)=>void}} AttriPlugin\r\n     */\r\n    /**\r\n     * @typedef {{\r\n     * attribute?:{register:Array<AttriPlugin>},\r\n     * component?:{\r\n     * beforeCall?:(stateContext:PawaComponent,app:object)=>void,\r\n     * afterCall?:(stateContext:PawaComponent,el:HTMLElement)=>void\r\n     * },\r\n     * renderSystem?:{\r\n     *  beforePawa?:(el:HTMLElement,context:object)=>void,\r\n     *  afterPawa?:(el:PawaElement)=>void,\r\n     *  beforeChildRender?:(el:PawaElement)=>void\r\n     * }\r\n     * }} PluginObject\r\n     */\r\n    /**\r\n     * @param {Array<()=>PluginObject>} func\r\n     */\r\nexport const PluginSystem = (...func) => {\r\n\r\n\r\nfunc.forEach(fn => {\r\n    if (typeof fn !== 'function') { console.warn('plugin must be a function that returns the plugin objects'); return }\r\n    const getPlugin = fn()\r\n    if (getPlugin?.attribute) {\r\n        getPlugin.attribute.register.forEach(attrPlugins => {\r\n            if (attrPlugins.fullName && attrPlugins.startsWith) { console.warn('Either Plugins FullName or startsWith. you are not required to use two of does plugin registers at this same entry.'); return }\r\n            const extPluginArray = []\r\n            if (attrPlugins?.dependency?.length) {\r\n                attrPlugins.dependency.forEach(dp => {\r\n                    if (dependentPawaAttribute.has(dp)) __pawaDev.setError({ msg: `${dp} is already used - from pawa plugin it might cause some issues`, warn: true })\r\n                    dependentPawaAttribute.add(dp); extPluginArray.push(dp)\r\n                })\r\n            }\r\n\r\n            const name = attrPlugins.fullName || attrPlugins.startsWith, set = attrPlugins.fullName ? fullNamePlugin : startsWithSet\r\n            if (pawaAttributes.has(name)) { console.warn(`attribute plugin already exist ${name}`); return }\r\n            if (attrPlugins?.allowAsProp) {\r\n                allowAsProp.add(name)\r\n            }\r\n            applyMode(attrPlugins?.mode, () => {\r\n                pawaAttributes.add(name); set.add(name); externalPlugin[name] = attrPlugins.plugin\r\n                if (extPluginArray.length) externalPluginMap.set(name, extPluginArray)\r\n            })\r\n        })\r\n    }\r\n    if (getPlugin?.component) {\r\n        if (getPlugin.component?.beforeCall) compoBeforeCall.add(getPlugin.component.beforeCall)\r\n        if (getPlugin.component?.afterCall) compoAfterCall.add(getPlugin.component.afterCall)\r\n    }\r\n})\r\n}\r\n\r\nexport const keepContext = (context) => {\r\n    if (!client) return\r\n    stateContext = context\r\n    formerStateContext = stateContext\r\n\r\n}\r\nexport const components = new Map()\r\nexport const lazyComponents=new Map()\r\n    /**\r\n     * @type {PawaComponent}\r\n     */\r\n\r\n    let stateContext = {\r\n    _hasRun: false,\r\n    _formerContext: null,\r\n    _insert: {},\r\n    _resume: false,\r\n    _suspense:'',\r\n    _hook: {\r\n        effect: [],\r\n        isMount: [],\r\n        isUnMount: []\r\n    },\r\n    _stateMap: new Map,\r\n    component: null,\r\n    _transportContext: {},\r\n    _reactiveProps: {},\r\n    _template: '',\r\n    _serializedData:{},\r\n    _static: [],\r\n    _id:\"\",\r\n    hmr:false\r\n}\r\n\r\nexport const getCurrentContext = () => {\r\n    return stateContext\r\n}\r\n\r\nlet formerStateContext = null\r\nlet pawaContext = {}\r\n\r\nexport const setPawaAttributes = (...attr) => {\r\n    attr.forEach((att) => {\r\n        if (pawaAttributes.has(att)) {\r\n            throw Error(`${att} already exits`)\r\n            return\r\n        }\r\n        pawaAttributes.add(att)\r\n    })\r\n}\r\nconst setPrimaryAttibute = (...name) => {\r\n    name.forEach(att => {\r\n        primaryDirective.add(att)\r\n    })\r\n}\r\n\r\nexport const getPrimaryDirectives=()=>primaryDirective\r\n\r\nsetPrimaryAttibute('if', 'else-if', 'for-each', 'else','switch','case','s-default','key')\r\nsetPawaAttributes('if', 'else-if', 'for-each', 'else', 'mount',\r\n    'unmount', 'forKey', 'state-', 'on-', 'out-','key','switch','case','s-default')\r\nexport const getDependentAttribute = () => dependentPawaAttribute\r\nexport const getPawaAttributes = () => {\r\n    return pawaAttributes\r\n}\r\nlet laziler\r\nexport const lazyComponentElement=new Map()\r\nexport const addLazyComponentElement=(element,func)=>{\r\n    const tagName=splitAndAdd(element.tagName)\r\n    if (lazyComponentElement.has(tagName)) {\r\n        lazyComponentElement.get(tagName).push({element:element,func})\r\n    }else{\r\n        lazyComponentElement.set(tagName, [{element:element,func}])\r\n    }\r\n}\r\n/**\r\n * \r\n * @param  {...()=>string|null} component \r\n * Function registrar for pawajs component\r\n */\r\nexport const RegisterComponent = (...args) => {\r\n    // Handle new signature from plugin: RegisterComponent('Name1', Func1, 'Name2', Func2, ...)\r\n\r\n    if (typeof args[0] === 'string') {\r\n        for (let i = 0; i < args.length; i += 2) {\r\n            const name = args[i];\r\n            const component = args[i + 1];\r\n            if (typeof name === 'string' && typeof component === 'function') {\r\n                // if (components.has(name.toUpperCase())) continue;\r\n                if (!isServer() && lazyComponents.has(name.toUpperCase())) {\r\n                    lazyComponents.delete(name.toLocaleUpperCase())\r\n                }\r\n                components.set(name.toUpperCase(), component);\r\n            } else {\r\n                console.warn('Mismatched arguments for RegisterComponent. Expected pairs of (string, function).');\r\n                break;\r\n            }\r\n        }\r\n        return;\r\n    }\r\n    // Handle old signature for dev mode: RegisterComponent(ComponentFunc1, ComponentFunc2, ...)\r\n    args.forEach((component) => {\r\n        if (typeof component === 'function' && component.name) {\r\n            // if (components.has(component.name.toUpperCase())) return;\r\n            components.set(component.name.toUpperCase(), component);\r\n        } else {\r\n            console.warn('Component registration failed: Component must be a named function. This might happen in production builds without the pawajs Vite plugin.');\r\n        }\r\n    });\r\n}\r\n/**\r\n * Shared helper to trigger the dynamic import and hydration of a lazy component.\r\n * @param {string} tagName \r\n */\r\nexport const triggerLazyLoad = (tagName) => {\r\n    const lazyData = lazyComponents.get(tagName);\r\n    if (!lazyData) return;\r\n\r\n    lazyData.component().then(res => {\r\n        const compoFunc = res[lazyData.name];\r\n        if (!compoFunc) return;\r\n\r\n        components.set(tagName, compoFunc);\r\n        lazyComponents.delete(tagName);\r\n\r\n        const instances = lazyComponentElement.get(tagName) || [];\r\n        while (instances.length > 0) {\r\n            const { element: el, func } = instances.shift();\r\n            if (el) {\r\n                queueMicrotask(() => {\r\n                    el.style.opacity = \"\";\r\n                    if (el._component) {\r\n                        el._component.component = compoFunc;\r\n                        el._component.validPropRule = compoFunc?.validateProps || {}\r\n                    }\r\n\r\n                    keepContext(el._stateContext);\r\n                    el._stateContext._hasRun = false;\r\n                    func();\r\n                    el._stateContext._hasRun = true;\r\n                });\r\n            }\r\n        }\r\n        lazyComponentElement.delete(tagName);\r\n    }).catch(err => console.error(`Lazy load failed for ${tagName}:`, err));\r\n};\r\n\r\nexport const createIntersectionObserver = (element, observeBy) => {\r\n    const observer = new IntersectionObserver(entries => {\r\n        entries.forEach(entry => {\r\n            if (entry.isIntersecting) {\r\n                triggerLazyLoad(splitAndAdd(element.tagName));\r\n                observer.disconnect();\r\n            }\r\n        });\r\n    }, { rootMargin: '100px' }); \r\n\r\n    observer.observe(observeBy || element);\r\n    return observer;\r\n}\r\nRegisterComponent.lazy=(...args)=>{\r\n        for (let i = 0; i < args.length; i += 2) {\r\n            const name = args[i];\r\n            const componentFunc = args[i + 1];\r\n\r\n            if (typeof componentFunc !== 'function') {\r\n                console.warn('Mismatched arguments for RegisterComponent. Expected pairs of (string|string[], function).');\r\n                break;\r\n            }\r\n\r\n            const processName =(compName) => {\r\n                if (__pawaDev.tool && isServer()) {\r\n                    components.delete(compName.toUpperCase())\r\n                }\r\n                if (components.has(compName.toUpperCase()) || lazyComponents.has(compName.toUpperCase()) && !__pawaDev.tool) return;\r\n                if (typeof compName === 'string') {\r\n                     lazyComponents.set(compName.toUpperCase(), { name: compName, component: componentFunc });\r\n                }\r\n            };\r\n\r\n            if (Array.isArray(name)) {\r\n                for (const compName of name) {\r\n                    processName(compName);\r\n                }\r\n            } else if (typeof name === 'string') {\r\n                 processName(name);\r\n            } else {\r\n                console.warn('Mismatched arguments for RegisterComponent. Expected pairs of (string|string[], function).');\r\n                break;\r\n            }\r\n        }\r\n        \r\n    \r\n}\r\n\r\n/**\r\n * \r\n * @param {()=>()=>any} callback \r\n * A function that runs based on the deps and the returns are for unMounted hook \r\n * ( from Array,Number,null deps) while deps(object) are for the main reactive effect\r\n * @param {Array|null|object|number} deps \r\n * Array - for state dependency.\r\n * \r\n * object- for any state used inside of the callback but under the use of element or component. this is read-only state not for state updating\r\n * \r\n * Number - before mount hook.\r\n * \r\n * null- for Mount hook \r\n * @returns {void}\r\n */export const runEffect = (callback, deps) => {\r\n    if (client) {\r\n        if (stateContext._hasRun) {\r\n            return\r\n        }\r\n\r\n        // Detect if inside a component\r\n        // stateContext._name is set in setStateContext\r\n        // default stub has no _name\r\n        const insideComponent = !!stateContext._name || \r\n                                !!stateContext.component\r\n\r\n        if (stateContext) {\r\n            if (!stateContext._hook) stateContext._hook = {}\r\n            if (!stateContext._hook.isMount) stateContext._hook.isMount = []\r\n            if (!stateContext._hook.beforeMount) stateContext._hook.beforeMount = []\r\n            if (!stateContext._hook.reactiveEffect) stateContext._hook.reactiveEffect = []\r\n            if (!stateContext._hook.effect) stateContext._hook.effect = []\r\n\r\n            if (deps === undefined || deps === null) {\r\n                if (insideComponent) {\r\n                    // Inside component — register for later\r\n                    stateContext._hook.isMount.push(callback)\r\n                } else {\r\n                    // Outside component — execute immediately\r\n                    // after current execution context via microtask\r\n                    Promise.resolve().then(() => {\r\n                        const cleanup = callback()\r\n                        if (typeof cleanup === 'function') {\r\n                            // Register global cleanup on page unload\r\n                            window.addEventListener('beforeunload', cleanup, { once: true })\r\n                        }\r\n                    })\r\n                }\r\n            } else if (typeof deps === 'object' && !Array.isArray(deps)) {\r\n                // readonly reactive effect — needs component context\r\n                // silently ignore outside component\r\n                if (insideComponent) {\r\n                    stateContext._hook.reactiveEffect.push({ deps, effect: callback })\r\n                }else{\r\n                    \r\n                    let terminateEffect=new Set()\r\n                    const mainFunction=callback()\r\n                    createEffect(()=>{\r\n                        const cleanUp=mainFunction?.()\r\n                        if (typeof cleanUp === 'function') {\r\n                            return cleanUp\r\n                        }\r\n                    },{\r\n                        _terminateEffects:terminateEffect\r\n                    },)\r\n                    if (terminateEffect.size > 0) {\r\n                        window.addEventListener('beforeunload',()=>{\r\n                            terminateEffect.forEach(fn =>{\r\n                                fn()\r\n                            })\r\n                        },deps?.update)\r\n                    }\r\n                }\r\n            } else if (Array.isArray(deps)) {\r\n                // watch — needs component context\r\n                // silently ignore outside component\r\n                if (insideComponent) {\r\n                    stateContext._hook.effect.push({ deps, effect: callback })\r\n                }else{\r\n                    //used pawajs stateWatch\r\n                    const cleanUp=stateWatch(callback,deps)\r\n                    window.addEventListener('beforeunload',cleanUp,{once:true})\r\n                }\r\n            } else if (typeof deps === 'number') {\r\n                if (insideComponent) {\r\n                    // Inside component — register for later\r\n                    stateContext._hook.beforeMount.push(callback)\r\n                } else {\r\n                    // Outside component — execute after deps ms\r\n                    setTimeout(() => {\r\n                        const cleanup = callback()\r\n                        if (typeof cleanup === 'function') {\r\n                            window.addEventListener('beforeunload', cleanup, { once: true })\r\n                        }\r\n                    }, deps)\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\n/**\r\n * to validate component for runtime rules\r\n * @param {object} props \r\n * @returns {object}\r\n */\r\nexport const useValidateComponent = (component, object) => {\r\n        if (typeof component === 'function') {\r\n            if (component.name) {\r\n                component.validateProps = object\r\n            }\r\n        }\r\n    }\r\n    /**\r\n     * @returns {{id:string,setValue:()=>void}}\r\n     * + Sets the context\r\n     */\r\nexport const setContext = () => {\r\n    if (client) {\r\n\r\n        const id = crypto.randomUUID()\r\n        const setValue = (val = {}) => {\r\n            if (stateContext._hasRun) {\r\n                return\r\n            }\r\n            if (!stateContext) {\r\n                console.warn('set Context value must be inside of a component')\r\n                return null\r\n            }\r\n            if (!stateContext._transportContext) {\r\n                stateContext._transportContext = {}\r\n            }\r\n            if (stateContext._transportContext[id]) {\r\n                delete stateContext._transportContext[id]\r\n            }\r\n            stateContext._transportContext[id] = val\r\n        }\r\n        return {\r\n            id,\r\n            setValue\r\n        }\r\n    } else {\r\n        return serverInstance.setContext?.()\r\n    }\r\n\r\n}\r\nexport const PawaCustomEvent=(eventName,handler)=>{\r\n    if (customEventMap.has(eventName) && !__pawaDev.tool)return\r\n    customEventMap.set(eventName, handler)\r\n}\r\n/**\r\n * Get parent Context\r\n * @param {object} context\r\n * @return {object}\r\n */\r\nexport const useContext = (context) => {\r\n    if (client) {\r\n        if (!stateContext) {\r\n            console.warn('getContext must be called inside of a component')\r\n            return\r\n        }\r\n        if (stateContext?._transportContext[context.id]) {\r\n            const contexts = stateContext._transportContext[context.id]\r\n            return contexts\r\n        } \r\n    } else {\r\n        return serverInstance.useContext?.(context)\r\n    }\r\n}\r\n\r\n/**\r\n * Get Current component context from the html (the component parent)\r\n * @returns {object}\r\n */\r\nexport const useInnerContext = () => {\r\n    if (client) {\r\n        if (!stateContext) {\r\n            console.warn('must be used inside component')\r\n            return\r\n        }\r\n        return stateContext._elementContext\r\n    } else {\r\n        return serverInstance.useInnerContext?.()\r\n    }\r\n}\r\nexport const accessChild = () => {\r\n        if (client) {\r\n            return\r\n        } else {\r\n            return serverInstance.accessChild?.()\r\n        }\r\n    }\r\n    /**@returns {()=>{getServerData:()=>any,setServerData:(data:object)=>void}} - let's component serialized data on server*/\r\nexport const useServer = () => {\r\n    if (client) {\r\n        if (stateContext && stateContext._hasRun === false) {\r\n            const component=stateContext._template\r\n             const data=stateContext._serializedData\r\n             /**\r\n              * Meant to ne used on server rendering\r\n              */\r\n             const setServerData=(data={})=>{\r\n                console.warn( `meant to be used on server-only at ${component}`)\r\n             }\r\n             /**\r\n              * Get serialized data from server during pawajs continuity\r\n              */\r\n             const getServerData=()=>data\r\n             return {setServerData,getServerData}\r\n        }else{\r\n            return {data:null}\r\n        }\r\n    } else {\r\n        return serverInstance.useServer?.()\r\n    }\r\n}\r\nexport const useAsync = () => {\r\n    if (client) {\r\n        if (stateContext._hasRun) return { $async: () => {} }\r\n        const storeContext = stateContext\r\n        return {\r\n            $async: (callback) => {\r\n                if (storeContext._hasRun) {\r\n                    storeContext._hasRun = false\r\n                    keepContext(storeContext)\r\n                }\r\n                const res = callback()\r\n                storeContext._hasRun = true\r\n                stateContext = null\r\n                return res\r\n            },\r\n            onSuspense:(html)=>{\r\n                storeContext._suspense=html\r\n            }\r\n        }\r\n    } else {\r\n        //sets server initialization to default\r\n        return serverInstance.useAsync?.()\r\n    }\r\n}\r\n//resume state during after ssr\r\nexport const isResume = () => {\r\n        if (client) {\r\n            return stateContext._resume\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\nexport const forwardProps=(props={})=>{\r\n    if (client) {\r\n        if (isResume())return\r\n        stateContext._restProps=Object.entries(props).length > 0 ? props : {bPAr:''}\r\n    }else{\r\n        return serverInstance.forwardProps?.(props)\r\n    }\r\n}\r\n    /**\r\n     * Insert into the html context in component\r\n     * @param {object} obj \r\n     * @returns void\r\n     */\r\nexport const useInsert = (obj = {}) => {\r\n    if (client) {\r\n        if (stateContext._hasRun) {\r\n            return\r\n        }\r\n        if (!stateContext._insert) {\r\n            stateContext._insert = {}\r\n        }\r\n        Object.assign(stateContext._insert, obj)\r\n    } else {\r\n        const res = serverInstance.useInsert(obj)\r\n    }\r\n}\r\nconst createDeepProxy = (target, callback) => {\r\n    // Skip proxies for DOM objects and native objects that don't work well with proxies\r\n    if (target instanceof FileList) return target\r\n    if (target instanceof File) return target\r\n    if (target instanceof Blob) return target\r\n    if (target instanceof FormData) return target\r\n    if (target instanceof Date) return target\r\n    if (target instanceof RegExp) return target\r\n    \r\n    // Also skip if it's already a proxy\r\n    if (target && target._isPawaProxy) return target\r\n    \r\n    // Also skip if it's a DOM element\r\n    if (target && target.nodeType && typeof target === 'object') return target\r\n    \r\n    return new Proxy(target, {\r\n        get(target, property) {\r\n            const value = target[property];\r\n            track(target, property);\r\n            // Only proxy plain objects/arrays and skip if already a proxy\r\n            if (typeof value === \"object\" && value !== null && !value._isPawaProxy) {\r\n                return createDeepProxy(value, callback);\r\n            }\r\n            return value;\r\n        },\r\n        set(target, property, value) {\r\n            target[property] = value;\r\n            trigger(target, property);\r\n            callback(target, property);\r\n            return true;\r\n        },\r\n    });\r\n};\r\nconst globalEffectMap = new Map();\r\n/**\r\n * @param {PawaComponent} context\r\n */\r\nexport const setStateContext = (context) => {\r\n    const map = new Map()\r\n        // const formerMap=formerStateContext \r\n    formerStateContext = stateContext\r\n    stateContext = context\r\n    if (stateContext._hasRun) {\r\n        return\r\n    }\r\n    stateContext._transportContext = {}\r\n    stateContext._static = []\r\n    stateContext._serializedData={}\r\n    stateContext._formerContext = formerStateContext\r\n    stateContext._reactiveProps = {}\r\n    stateContext._restProps={}\r\n    stateContext._template = ''\r\n    stateContext._resume = false\r\n    stateContext._suspense=''\r\n    stateContext._hmr=false\r\n    stateContext._hook={\r\n        beforeMount:[],\r\n        reactiveEffect:[],\r\n        effect:[],\r\n        isMount:[],\r\n        isUnMount:[],\r\n    }\r\n    Object.assign(stateContext._transportContext, formerStateContext._transportContext)\r\n    formerStateContext = stateContext\r\n    return stateContext\r\n}\r\n\r\nconst promiseCallback = (func, main) => {\r\n    const promise = func()\r\n    promise.then(res => {\r\n        main.value = res\r\n        main.failed = false\r\n        main.async = false\r\n    }).catch(error => {\r\n        main.async = false\r\n        main.failed = true\r\n    })\r\n}\r\n\r\n/**\r\n * @param {FunctionConstructor|number|string|null} initialValue\r\n * Any Function(can be return Promise or string or number) or string,number, null.\r\n * @param {string|null}section\r\n * A string for identifing or creating the localStorage(string) or compute value (array)\r\n * @returns {{value:any,id:string,async?:boolean,failed?:boolean,retry?:()=>void}}\r\n * notice the async, failed and retry works when Promised is pas into initialValue Function.\r\n * \r\n * id is not meant to be touched its pawajs way of tracking state  \r\n */\r\nexport const $state = (initialValue, section = null) => {\r\n    if (!client) {\r\n        return serverInstance.$state?.(initialValue)\r\n    }\r\n    \r\n    const id = crypto.randomUUID()\r\n    const states = {\r\n        value: null,\r\n        id: id\r\n    }\r\n    let promise\r\n    if (initialValue instanceof Function) {\r\n        const result = initialValue()\r\n        if (result instanceof Promise) {\r\n            promise = result\r\n            states.async = true\r\n            states.failed = false\r\n        } else {\r\n            states.value = result\r\n        }\r\n    } else {\r\n        states.value = initialValue\r\n    }\r\n    if (typeof section === 'string') {\r\n\r\n        try {\r\n            if (localStorage.getItem(section)) {\r\n                const stored = JSON.parse(sanitizeTemplate(localStorage.getItem(section)))\r\n                states.value = stored.value\r\n\r\n            } else {\r\n                localStorage.setItem(section, JSON.stringify(states))\r\n            }\r\n        } catch (e) {\r\n            console.warn('error while trying to use localStorage')\r\n        }\r\n    }\r\n    if (stateContext._stateMap) {\r\n        if (!stateContext._stateMap.has(id)) {\r\n            stateContext._stateMap.set(id, initialValue)\r\n        }\r\n    }\r\n    let timeOut\r\n    const main = createDeepProxy(states, (target, property) => {\r\n        if (typeof section === 'string') {\r\n            if (timeOut) {\r\n                clearTimeout(timeOut)\r\n            }\r\n            timeOut = setTimeout(() => {\r\n                localStorage.setItem(section, JSON.stringify(states))\r\n            }, 50)\r\n        }\r\n    });\r\n    if (Array.isArray(section)) {\r\n        if (stateContext._hasRun === false && typeof initialValue === 'function') {\r\n            const cleanup=stateWatch(()=>{\r\n                main.value=initialValue()\r\n            },section)\r\n            stateContext._hook.isUnMount.push(cleanup)\r\n        }else{\r\n            console.error('state compute must be inside a component and initialValue must be a function')\r\n        }\r\n    }\r\n    if (promise instanceof Promise) {\r\n\r\n        promise.then(res => {\r\n            main.value = res\r\n            main.failed = false\r\n            main.async = false\r\n        }).catch(error => {\r\n            main.async = false\r\n            main.failed = true\r\n        })\r\n\r\n        const asyncObject = {\r\n            retry: () => {\r\n                promiseCallback(initialValue, main)\r\n            }\r\n        }\r\n        Object.assign(main, asyncObject)\r\n        return main\r\n    } else {\r\n        return main\r\n    }\r\n\r\n}\r\n\r\nconst watchCallbacks = new Map();\r\nconst stateWatch = (callback, dependencies) => {\r\n    if (!callback) {\r\n        console.warn('stateWatch: Callback function is required');\r\n        return;\r\n    }\r\n    const dep = new Set();\r\n\r\n    const runner = () => {\r\n        if (!watchCallbacks.has(callback)) {\r\n            watchCallbacks.set(callback, true);\r\n            Promise.resolve().then(() => {\r\n                if (effect.cleanup) {\r\n                    effect.cleanup();\r\n                }\r\n\r\n                const result = runWithEffect(runner, callback);\r\n                if (typeof result === 'function') {\r\n                    effect.cleanup = result;\r\n                }\r\n                watchCallbacks.delete(callback);\r\n            });\r\n        }\r\n    };\r\n    runner._id = crypto.randomUUID();\r\n\r\n    const effect = {\r\n        callback: runner,\r\n        deps: dep,\r\n        cleanup: null,\r\n    };\r\n\r\n    // Initial run with auto-tracking for explicit dependencies and the main callback\r\n    if (dependencies) {\r\n        dependencies.forEach(d => {\r\n            if (typeof d === 'function') {\r\n                runWithEffect(runner, d);\r\n            } else if (d && d.id) {\r\n                dep.add(d.id);\r\n                runWithEffect(runner, () => d.value);\r\n            }\r\n        });\r\n    }\r\n\r\n    const result = runWithEffect(runner, callback);\r\n    if (typeof result === 'function') {\r\n        effect.cleanup = result;\r\n    }\r\n\r\n    return () => {\r\n        if (effect.cleanup) {\r\n            effect.cleanup();\r\n        }\r\n        watchCallbacks.delete(callback);\r\n        deleteEffect.add(runner._id);\r\n    };\r\n};\r\n\r\nexport const restoreContext = (state_context) => {\r\n        stateContext = state_context._formerContext\r\n    }\r\nexport const HmrComponentMap=new Map()\r\nconst renderedComponentsRusumed=new Set()\r\nexport const globalRerender=(el,formercontext,context={},oldStateContext)=>{\r\n    if(!window?.hmr)return\r\n    let element\r\n    if (typeof el === 'string') {\r\n        const dom =document.createDocumentFragment()\r\n        dom.innerHTML=el\r\n        element=dom.firstElementChild\r\n    }else element=el\r\n    formerStateContext=formercontext\r\n    normal_component(element,formercontext,setStateContext,mapsPlugins,formercontext,pawaContext,stateWatch,context,oldStateContext)\r\n}\r\n    /**\r\n     * \r\n     * @param {PawaElement|HTMLElement} el \r\n     * @returns null\r\n     */\r\nconst component = (el, resume = false, attr, notRender, stopResume) => {\r\n    if (el._running || (resume && renderedComponentsRusumed.has(attr.value))) {\r\n        return\r\n    }\r\n    el._running = true\r\n    \r\n    if (!resume) {\r\n        if (el._lazy) {\r\n            // passes the normal component to lazy handler\r\n            el.style.opacity=0\r\n            addLazyComponentElement(el,()=>normal_component(el, stateContext, setStateContext, mapsPlugins, formerStateContext, pawaContext, stateWatch))\r\n            return\r\n        }else{\r\n            normal_component(el, stateContext, setStateContext, mapsPlugins, formerStateContext, pawaContext, stateWatch)\r\n        }\r\n    } else {\r\n        stopResume.stop = true\r\n        let name=''\r\n        let comment\r\n        let endComment\r\n        const children = []\r\n        let serialized\r\n        let id\r\n        const getComment = (node) => {\r\n            if (node.previousSibling.nodeType === 8) {\r\n                const c = node.previousSibling.data.split('+')\r\n                if (c[1] === attr.value) {\r\n                    comment = node.previousSibling\r\n                    name = c[2]\r\n                    serialized = c[3]\r\n                    id = c[1]\r\n                } else {\r\n                    getComment(node.previousSibling)\r\n                }\r\n\r\n            } else {\r\n                getComment(node.previousSibling)\r\n            }\r\n        }\r\n        const getEndComment = (comment) => {\r\n            if(endComment) return;\r\n            const isComment = comment.nextSibling\r\n            if (comment.nextSibling.nodeType === 8) {\r\n                if (isComment.data.split('+')[1] === id) {\r\n                    endComment = isComment\r\n                    return\r\n                } else {\r\n                    getEndComment(isComment)\r\n                }\r\n            } else if (isComment.nodeType === 1) {\r\n                if( !isComment.hasAttribute('p:store')){\r\n                    isComment.setAttribute('by',id)\r\n                    children.push(isComment)\r\n                }\r\n                getEndComment(isComment)\r\n            } else {\r\n                getEndComment(isComment)\r\n            }\r\n        }\r\n        try {\r\n            getComment(el)\r\n            getEndComment(comment)\r\n        } catch (error) {\r\n            // el has no previous Sibling\r\n        }\r\n        el.removeAttribute(attr.name)\r\n        let numberComponentChildren \r\n        if(notRender.index === 0){\r\n            numberComponentChildren =children.length \r\n        }else{\r\n            numberComponentChildren = notRender.index + children.length -1\r\n        }\r\n        notRender.notRender = numberComponentChildren\r\n        renderedComponentsRusumed.add(attr.value)\r\n        \r\n        if (lazyComponents.has(name.toUpperCase())) {   \r\n            const trackElement=document.createElement(name)\r\n            trackElement._stateContext=el._stateContext \r\n            addLazyComponentElement(trackElement,()=>resumer.resume_component?.(el, attr, setStateContext, mapsPlugins, formerStateContext, pawaContext, stateWatch, { comment, endComment, name, serialized, id, children }))     \r\n              if (lazyComponentElement.has(name.toUpperCase())) {\r\n                triggerLazyLoad(trackElement.tagName)\r\n              }\r\n            }else{\r\n                resumer.resume_component?.(el, attr, setStateContext, mapsPlugins, formerStateContext, pawaContext, stateWatch, { comment, endComment, name, serialized, id, children })\r\n            }\r\n    }\r\n}\r\n\r\n/**\r\n * @param {PawaElement | HTMLElement} el\r\n */\r\nconst mainAttribute = (el, exp) => {\r\n    const attrMap = new Map();\r\n    if (el._running) return\r\n\r\n    // Check if attribute starts with @ (shorthand for reactive attributes)\r\n    const isAtAttr = exp.name.startsWith('@');\r\n    const targetName = isAtAttr ? exp.name.slice(1) : exp.name;\r\n\r\n    if (el._hasForOrIf()) {\r\n        return\r\n    }\r\n    if (el._componentName) {\r\n        return\r\n    }\r\n\r\n    if (isAtAttr) {\r\n        el.removeAttribute(exp.name);\r\n    }\r\n\r\n    attrMap.set(exp.name, exp.value);\r\n    el._preRenderAvoid.push(targetName)\r\n    const booleanAttributes = new Set(['checked', 'selected', 'disabled', 'readonly', 'required', 'multiple']);\r\n    el._mainAttribute[targetName] = exp.value\r\n    el._checkStatic()\r\n    let enter=false\r\n    const context=el._context\r\n    const evaluate = () => {\r\n\r\n        try {\r\n            // Always use original value from map for evaluation\r\n            let value = attrMap.get(exp.name);\r\n            let isBoolean\r\n            const regex = /@{([^}]*)}/g;\r\n\r\n            const hasExpression = regex.test(value);\r\n            regex.lastIndex = 0;\r\n\r\n            value = value.replace(regex, (match, expression) => {\r\n                if (checkKeywordsExistence(el._staticContext, expression)) {\r\n                    return ''\r\n                } else {\r\n                    const result = el.safeEval(context, expression, `error at attribute ${exp.name}`, true)\r\n                    isBoolean = result\r\n                    if (typeof result !== 'boolean') {\r\n                        return result ?? ''\r\n                    }else{\r\n                        return result ? 'true' : 'false'\r\n                    }\r\n                }\r\n            });\r\n\r\n            if (booleanAttributes.has(targetName)) {\r\n                const boolValue = hasExpression ? !!isBoolean : value.toLowerCase() !== 'false';\r\n                const propName = targetName === 'readonly' ? 'readOnly' : targetName;\r\n\r\n                if (propName in el) {\r\n                    el[propName] = boolValue;\r\n                }\r\n\r\n                if (boolValue) {\r\n                    el.setAttribute(targetName, value);\r\n                } else {\r\n                    el.removeAttribute(targetName);\r\n                }\r\n            } else if (targetName === 'value' && 'value' in el) {\r\n                el.value = value;\r\n                el.setAttribute(targetName, value);\r\n            } else {\r\n                if ((targetName === 'class' || targetName === 'style') && enter) {\r\n                    requestAnimationFrame(()=>{\r\n                        el.setAttribute(targetName, value);\r\n                    })\r\n                    enter=true\r\n                }else{\r\n                    el.setAttribute(targetName, value);\r\n                    // Toggle enter to true after initial set so subsequent reactive updates use requestAnimationFrame\r\n                    if (targetName === 'class' || targetName === 'style') enter = true;\r\n                }\r\n            }\r\n        } catch (error) {\r\n            console.warn(`failed at attribute ${exp.name}`, el)\r\n            __pawaDev.setError({ \r\n                    el:el, \r\n                    msg:`from  ${exp.name} ${exp.value}`, \r\n                    directives:exp.name, \r\n                    stack:error.stack, \r\n                    template:el?._template, \r\n                 })\r\n        }\r\n    };\r\n    createEffect(() => {\r\n        evaluate();\r\n    });\r\n};\r\n\r\nconst textContentHandler = (el, isName) => {\r\n    if (el._hasForOrIf() || el._componentName) {\r\n        return\r\n    }\r\n    if (el._running) {\r\n        return\r\n    }\r\n    const nodesMap = new Map();\r\n\r\n    // Get all text nodes and store their original content\r\n    const textNodes = Array.from(el.childNodes).filter(node => node.nodeType === Node.TEXT_NODE);\r\n    textNodes.forEach(node => {\r\n        nodesMap.set(node, node.nodeValue);\r\n    });\r\n    el._checkStatic()\r\n    const context=el._context\r\n    const evaluate = () => {\r\n        \r\n        try {\r\n            textNodes.forEach(textNode => {\r\n                // Always use original content from map for evaluation\r\n                let value = nodesMap.get(textNode);\r\n                const regex = /@{([^}]*)}/g;\r\n\r\n                value = value.replace(regex, (match, expression) => {\r\n                    if (checkKeywordsExistence(el._staticContext, expression)) {\r\n                        return ''\r\n                    } else {\r\n                        if(expression === '')return value\r\n                        el._textContent[expression] = value\r\n                        const res = el.safeEval(context, expression, 'textContent', true)\r\n                        return String(res ?? '');\r\n                    }\r\n                });\r\n                if(el.tagName === 'TEXTAREA'){\r\n                    el.value=value\r\n                }else{\r\n                    textNode.nodeValue = value;\r\n                }\r\n\r\n            });\r\n        } catch (error) {\r\n            // console.warn(`error at ${el} textcontent`)\r\n            setPawaDevError({\r\n                message: `error at TextContent ${error.message}`,\r\n                error: error,\r\n                template: el._template\r\n            })\r\n        }\r\n    };\r\n\r\n    createEffect(() => {\r\n        evaluate();\r\n    }, el);\r\n};\r\n\r\nconst template = (el,notRender, attr) => {\r\n    if (el._running) {\r\n        return\r\n    }\r\n    el._running = true\r\n    templates(el,notRender)\r\n}\r\n\r\nconst directives = {\r\n    if: If,\r\n    'for-each': For,\r\n    else:(el)=>{el._running =true},\r\n    case:(el)=>{el._running =true},\r\n    \"s-default\":(el)=>{el._running =true},\r\n    'else-if':(el)=>{el._running =true},\r\n    mount: mountElement,\r\n    unmount: unMountElement,\r\n    ref: ref,\r\n    switch:Switch,\r\n    key:Key,\r\n    'is-exit':exitTransition,\r\n}\r\nexport const useRef = () => {\r\n    return { value: null }\r\n}\r\nexport const render = (el, contexts = {}, notRender, isName) => {\r\n    const stopResume = { stop: false }\r\n    if (el.tagName === 'SCRIPT') {\r\n        return false\r\n    }\r\n     if (el.tagName === 'TITLE') {\r\n        document.title = (el.textContent || '').trim()\r\n        el.remove()\r\n    return\r\n  }\r\n    const context = {\r\n        ...contexts\r\n    }\r\n\r\n    for (const fn of renderBeforePawa) {\r\n        try {\r\n            fn(el, context)\r\n        } catch (error) {\r\n            __pawaDev.setError({ el: el, msg: error.message })\r\n            console.error(error.message)\r\n        }\r\n    }\r\n    PawaElement.Element(el, context)\r\n    el._staticContext = stateContext?._static\r\n    el._stateContext=stateContext\r\n    for (const fn of renderAfterPawa) {\r\n        try {\r\n            fn(el)\r\n        } catch (error) {\r\n            __pawaDev.setError({ el: el, msg: error.message })\r\n            console.error(error.message)\r\n        }\r\n    }\r\n\r\n    \r\n    let startAttribute = false\r\n    const startObject = {}\r\n        //get startsWith plugin\r\n    if (!el._avoidPawaRender) {\r\n\r\n        startsWithSet.forEach(starts => {\r\n\r\n            el._attributes.forEach(attr => {\r\n                let attrName=attr.name.replace(/^-+/, '');\r\n    attrName=attrName.trim()\r\n                if (attrName.startsWith(starts)) {\r\n                    startAttribute = true\r\n                    startObject[attrName] = starts\r\n                }\r\n            })\r\n        })\r\n        const number = { notRender: null }\r\n        const isAcomponent=el._componentName?true:false\r\n        \r\n        el._attributes.forEach(attr => {\r\n            let attrName=attr.name.replace(/^-+/, '');\r\n            attrName=attrName.trim()\r\n            if (stopResume.stop || el._hasRun) return\r\n            if (directives[attrName]) {\r\n                directives[attrName](el, attr, stateContext)\r\n            } else if (attrName.startsWith('on-') && !isAcomponent) {\r\n                event(el, attr, stateContext)\r\n            } else if ((attr.value.includes('@{') || attrName.startsWith('@')) && !attrName.startsWith('c-at-')) {\r\n                mainAttribute(el, attr, isName)\r\n            } else if (attrName.startsWith('state-')) {\r\n                States(el, attr, getCurrentContext())\r\n            } else if (attrName.startsWith('out-') && !isAcomponent) {\r\n                documentEvent(el, attr)\r\n            } else if (attrName.startsWith('after-[') && attrName.endsWith(']') && !isAcomponent) {\r\n                After(el, attr)\r\n            } \r\n             else if (attrName.startsWith('every-[') && attrName.endsWith(']') && !isAcomponent) {\r\n                Every(el, attr)\r\n            } \r\n            else if (attrName.startsWith('c-c-')) {\r\n                stopResume.stop = true\r\n            \r\n                \r\n                component(el, true, attr, notRender, stopResume)// component continuity\r\n            } else if (attrName.startsWith('c-at-')) {\r\n                resumer.resume_attribute?.(el, attr, notRender) //attribute continuity\r\n            } else if (attrName.startsWith('c-$-')) {\r\n                resumer.resume_state?.(el, attr, notRender) //state continuity\r\n            } else if (attrName.startsWith('c-t')) {//text continuity\r\n                resumer.resume_text(el, attr, isName)\r\n            } else if (attrName.startsWith('c-if-')) {\r\n                directives['if'](el, attr, stateContext, true, notRender, stopResume) \r\n            } else if (attrName === 'c-for') {\r\n                directives['for-each'](el, attr, stateContext, true, notRender, stopResume)\r\n            }else if (attrName.startsWith('c-key-')) {\r\n                directives['key'](el, attr, stateContext, true, notRender, stopResume)\r\n            }  \r\n            else if (attrName.startsWith('c-sw-')) {\r\n                directives['switch'](el, attr, stateContext, true, notRender, stopResume)// switch continuity\r\n            } else if (fullNamePlugin.has(attrName)) {\r\n                if (externalPlugin[attrName]) {\r\n                    if (el._componentName && !attrName.startsWith('c-'))return\r\n                    const plugin = externalPlugin[attrName]\r\n                    try {\r\n                        if (typeof plugin !== 'function') {\r\n                            console.warn(`${attrName} plugin must be a function`)\r\n                            return\r\n                        }\r\n                        plugin(el, attr, stateContext, notRender, stopResume)\r\n                    } catch (error) {\r\n                        console.warn(error.message, error.stack)\r\n                    }\r\n                }\r\n            } else if (startAttribute) {\r\n                const name = startObject[attrName]\r\n                if (externalPlugin[name]) {\r\n                    if (el._componentName && !attrName.startsWith('c-'))return\r\n                    const plugin = externalPlugin[name]\r\n                    try {\r\n                        if (typeof plugin !== 'function') {\r\n                            console.warn(`${name} plugin must be a function`)\r\n                            return\r\n                        }\r\n                        plugin(el, attr, stateContext, notRender, stopResume)\r\n                    } catch (error) {\r\n                        console.warn(error.message, error.stack)\r\n                    }\r\n                }\r\n            }\r\n\r\n\r\n        })\r\n    }\r\n\r\n    if (stopResume.stop) return\r\n    if (Array.from(el.childNodes).some(node =>\r\n            node.nodeType === Node.TEXT_NODE && node.nodeValue.includes('@{')\r\n        ) && !el._avoidPawaRender) {\r\n        textContentHandler(el, isName)\r\n    }\r\n    if (el._componentName && !el._avoidPawaRender) {\r\n        component(el)\r\n        return\r\n    }\r\n    if (el._elementType === 'template' && !el._avoidPawaRender) {\r\n        template(el,notRender)\r\n        return\r\n    }\r\n\r\n    if (el._out === false || el._running === false || el._componentOrTemplate !== true) {\r\n\r\n        if (el._running) {\r\n            return true\r\n        }\r\n        for (const fn of renderBeforeChild) {\r\n            try {\r\n                fn(el)\r\n            } catch (error) {\r\n                __pawaDev.setError({ el: el, msg: error.message })\r\n                console.error(error.message)\r\n            }\r\n        }\r\n        const number = { notRender: null, index: null }\r\n        let isIndex=0\r\n        Array.from(el.children).forEach((child, index) => {\r\n             if (child.hasAttribute('p:store')) {\r\n            return\r\n          }\r\n            number.index = isIndex\r\n            isIndex++\r\n            if (number.notRender !== null && isIndex <= number.notRender) return\r\n            if (child.hasAttribute('by'))return\r\n            render(child, context, number, isName)\r\n        })\r\n        el._callMount()\r\n        if (el.hasAttribute('p:c') && !el.hasAttribute('p-async')) {\r\n           el._clearContext()\r\n        el.removeAttribute('p:c')\r\n       }\r\n}\r\n}\r\n// added streaming awareness\r\nif (typeof window !== 'undefined') {\r\n        window.__pawaStream=(element,context,statecontext)=>{\r\n            let appContext\r\n            if(!window?.__pawaHasStarted){\r\n                if(window?.__startClient === null )return\r\n                window?.__startClient()\r\n                \r\n                window.__startClient=null\r\n                window.__pawaHasStarted=true\r\n                return\r\n            }\r\n            if(statecontext === undefined){\r\n                appContext=stateContext\r\n            }else{\r\n                appContext=statecontext\r\n            }\r\n            keepContext(appContext)\r\n            appContext._hasRun=false\r\n            render(element,context,{index:0,notRender:null})\r\n            appContext._hasRun=true\r\n        }\r\n    \r\n}\r\nexport const pawaStartApp = (app, context = {}) => {\r\n    if (app?.tagName && app.hasAttribute('pawa-app') === false) {\r\n        app.setAttribute('pawa-app', '')\r\n        render(app, context)\r\n    }\r\n}\r\n\r\n/**\r\n * Tagged template function for syntax highlighting and future tooling support.\r\n * Usage: return html`<div>...</div>`\r\n */\r\nexport const html = (strings, ...values) => {\r\n    if (strings.length === 1) return strings[0];\r\n    let result = \"\";\r\n    for (let i = 0; i < strings.length; i++) {\r\n        result += strings[i];\r\n        if (i < values.length) {\r\n            result += values[i];\r\n        }\r\n    }\r\n    return result;\r\n}\r\n\r\nconst Pawa = {\r\n    useInsert,\r\n    useContext,\r\n    useValidateComponent,\r\n    setPawaAttributes,\r\n    setContext,\r\n    $state,\r\n    pawaStartApp,\r\n    useAsync,\r\n    forwardProps,\r\n    useInnerContext,\r\n    RegisterComponent,\r\n    runEffect,\r\n    html,\r\n    accessChild,\r\n    PawaCustomEvent\r\n}\r\n\r\nexport default Pawa"]}