{"version":3,"file":"element.cjs","sources":["../src/warn.ts","../src/api/lifecycle.ts","../src/runtime/queue.ts","../src/runtime/css.ts","../src/directives/bind.ts","../src/directives/conditional.ts","../src/directives/on.ts","../src/directives/show.ts","../src/directives/model.ts","../src/runtime/compiler.ts","../src/runtime/props.ts","../src/api/app.ts","../src/runtime/instance.ts","../src/runtime/component.ts","../src/api/defineComponent.ts","../src/api/inject.ts","../src/api/portal.ts","../src/api/watch.ts"],"sourcesContent":["import { isString } from '@vue/shared';\nimport { getCurrentInstance } from './runtime/instance';\nimport type { ComponentInstance } from './types';\n\n// Constants for stack trace\nconst INDENT_STEP = 2;\nconst INDENT = 4;\n\nclass KireiError extends Error {\n  constructor(message: string, context?: string) {\n    super();\n    this.message = formatMessage(message, context);\n    this.name = '[Kirei error]';\n  }\n}\n\n/**\n * Creates an iterator to walk the instance tree\n * @param instance - Instance to walk up from\n * @returns A generator to walk the instance tree upwards\n * @private\n */\nfunction *walkInstanceTree(instance: ComponentInstance): Generator<ComponentInstance> {\n  while (instance) {\n    yield instance;\n    instance = instance.parent;\n  }\n}\n\n/**\n * Formats element name from an instance\n * @param instance - Instance where stack trace should start\n * @param indent - Indenting of spaces before the message\n * @param recursiveCount - Amount of elements that are recursively called\n * @returns The element name as a formatted string\n * @private\n */\nfunction formatComponentName(instance: ComponentInstance, indent: number, recursiveCount?: number): string {\n  const { name, filename } = instance.options;\n  let res = `${indent ? ' '.repeat(INDENT + INDENT_STEP * indent) : '--> '}<${name}>`;\n\n  if (filename) {\n    res += ` at ${filename}`;\n  }\n\n  if (recursiveCount) {\n    res += `... (${recursiveCount} recursive calls)`;\n  }\n  return res;\n}\n\n/**\n * Creates a stack trace for error/warning messages\n * @param instance - Instance where stack trace should start\n * @returns Stack trace of the Kirei instance tree\n * @private\n */\nfunction createStackTrace(instance: ComponentInstance): string {\n  if (!instance.parent) {\n    return `\\n\\n(found in <${instance.options.name}>)`;\n  }\n\n  const tree = [];\n  let recursionCount = 0;\n\n  for (const node of walkInstanceTree(instance)) {\n    if (tree.length) {\n      const prev = tree[tree.length - 1];\n\n      if (prev.constructor === node.constructor) {\n        recursionCount++;\n        continue;\n      } else if (recursionCount) {\n        tree[tree.length - 1] = [prev, recursionCount];\n        recursionCount = 0;\n      }\n    }\n\n    tree.push(instance);\n  }\n\n  return `\\n\\nfound in:\\n\\n` + tree.map((res, idx) => {\n    return Array.isArray(res)\n      ? formatComponentName(res[0], idx, res[1])\n      : formatComponentName(res, idx);\n  }).join('\\n');\n}\n\n\n/**\n * Creates a new KireiError instance\n * @param message - Error message\n * @param level - Logging level\n * @param context - Function context, if any\n * @private\n */\nfunction formatMessage(message: string|Error, context?: string): string {\n  const instance = getCurrentInstance();\n\n  if (message instanceof Error) {\n    message = message.message;\n  }\n\n  if (isString(context)) {\n    if (message.endsWith('.')) {\n      message = message.slice(0, -1);\n    }\n\n    message += ` in #${context}.`;\n  }\n\n  if (instance) {\n    message += createStackTrace(instance);\n  }\n\n  return message;\n}\n\n/**\n * Throws an exception with a formatted message\n * @param message - Exception message\n * @param context - Optional context (instance name, function name)\n * @private\n */\nexport function exception(message: string|Error, context?: string): never {\n  if (message instanceof KireiError) {\n    throw message;\n  } else if (message instanceof Error) {\n    message = message.message;\n  }\n\n  throw new KireiError(message, context);\n}\n\n/**\n * Logs an error message in the console\n * @param message - Exception message\n * @param context - Optional context (instance name, function name)\n * @private\n */\nexport function error(message: string | Error, context?: string): void {\n  console.error(`[Kirei error]: ${formatMessage(message, context)}`);\n}\n\n/**\n * Logs a warning message in the console\n * @param message - Warning message\n * @param context - Optional context (instance name, function name)\n * @private\n */\nexport function warn(message: string | Error, context?: string): void {\n  console.warn(`[Kirei warn]: ${formatMessage(message, context)}`);\n}\n","import { isFunction } from '@vue/shared';\nimport { getCurrentInstance } from '../runtime/instance';\nimport { exception } from '../warn';\nconst HOOKS = new Set<string>();\n\n/**\n * An enumerator of the standard lifecycle hooks\n * @private\n */\nexport enum HookTypes {\n  BEFORE_MOUNT = 'beforeMount',\n  MOUNTED = 'mounted',\n  BEFORE_UPDATE = 'beforeUpdate',\n  UPDATED = 'updated',\n  BEFORE_UNMOUNT = 'beforeUnmount',\n  UNMOUNTED = 'unmounted',\n  ERROR_CAPTURED = 'errorCaptured',\n}\n\n/**\n * Creates a new hook to set on the active instance\n * @param hook - Hook name\n * @return The defined hook factory\n */\nexport function defineHook<T extends Function>(name: string): (hook: T) => void {\n  if (HOOKS.has(name)) {\n    exception('A lifecycle hook with that identifier already exists', `defineHook(${name})`);\n  }\n\n  // Keep track of what hook keys are used\n  HOOKS.add(name);\n  return (hook) => {\n    if (!isFunction(hook)) {\n      exception('Lifecycle hooks requires the parameter to be a function.', `${name}()`);\n    }\n\n    const instance = getCurrentInstance();\n    if (!instance) {\n      exception('Lifecycle hooks needs have a setup function in its call stack.', `${name}()`);\n    }\n\n    instance.injectHook(name, hook);\n  };\n}\n\n/** Registers a new hook it runs before instance is mounted */\nexport const onBeforeMount = defineHook(HookTypes.BEFORE_MOUNT);\n/** Registers a new hook it runs after instance is mounted */\nexport const onMount = defineHook(HookTypes.MOUNTED);\n/** Registers a new hook it runs before instance is updated */\nexport const onBeforeUpdate = defineHook(HookTypes.BEFORE_UPDATE);\n/** Registers a new hook it runs after instance is updated */\nexport const onUpdate = defineHook(HookTypes.UPDATED);\n/** Registers a new hook it runs before instance is unmounted */\nexport const onBeforeUnmount = defineHook(HookTypes.BEFORE_UNMOUNT);\n/** Registers a new hook it runs after instance is unmounted */\nexport const onUnmount = defineHook(HookTypes.UNMOUNTED);\n\n/** Registers a hook it runs when an error occurs in the component or any of it's children */\nexport const onErrorCaptured = defineHook(HookTypes.ERROR_CAPTURED);\n","import { isFunction } from '@vue/shared';\n\nlet queue: Function[] = [];\nconst tickPromise = Promise.resolve();\n\n/**\n * Clears queue stack, only intended for testing\n * @private\n */\nexport function clear(): void {\n  queue = [];\n}\n\n/**\n * Checks if queue has function in its stack, only intended for testing\n * @param fn - Function to check for\n * @returns If the queue contains the specified item\n * @private\n */\nexport function has(fn: Function): boolean {\n  return queue.includes(fn);\n}\n\n/**\n * Checks if queue has function in its stack, only intended for testing\n * @returns The amount of items in the queue\n * @private\n */\nexport function size(): number {\n  return queue.length;\n}\n\n/**\n * Flushes the queue, calling all the functions in the queue\n * @private\n */\nexport function flush(): void {\n  for (let i = 0; i < queue.length; i++) {\n    queue[i]();\n  }\n  clear();\n}\n\n/**\n * Wait for next flush of the queue, as a Promise or as a callback function\n * @param fn - Optional callback function\n */\nexport function nextTick(fn?: () => void): Promise<void> {\n  if (fn != null && !isFunction(fn)) {\n    throw new TypeError(`nextTick expected a function or undefined, got ${typeof fn}`);\n  }\n\n  return fn ? tickPromise.then(fn) : tickPromise;\n}\n\n/**\n * Pushes a function to the queue, if it doesn't already exist\n * @param fn - Function to enqueue\n * @private\n */\nexport function push(fn: () => void): void {\n  if (!isFunction(fn)) {\n    throw new TypeError(`Queue push expected a function, got ${typeof fn}`);\n  }\n\n  queue.length || nextTick(flush);\n  has(fn) || queue.push(fn);\n}\n","import { isUndefined } from '@kirei/shared';\nimport { warn } from '../warn';\n\n/**\n * StyleSheets to use with adoptStyleSheets\n */\nexport type StyleSheet = CSSResult | CSSStyleSheet;\n\n/**\n * Maps a stylesheet into a string of css rules\n * @private\n */\nfunction mapStyleSheetsToCssText(sheet: StyleSheet): string {\n  if (sheet instanceof CSSStyleSheet) {\n    // TODO: performance?\n    let cssText = '';\n    for (let i = 0; i < sheet.cssRules.length; i++) {\n      cssText += `${sheet.cssRules[i].cssText}\\n`;\n    }\n\n    return cssText;\n  } else if (sheet instanceof CSSResult) {\n    return sheet.toString();\n  } else if (__DEV__) {\n    warn(`Invlaid stylesheet, expected a css literal or a native CSSStyleSheet, got ${typeof sheet}`);\n  }\n}\n\n/**\n * Maps a Stylesheet into a native CSSStyleSheet\n * @private\n */\nasync function mapStyleSheetToCssStyleSheet(sheet: StyleSheet): Promise<CSSStyleSheet> {\n  if (sheet instanceof CSSStyleSheet) {\n    return sheet;\n  } else if (sheet instanceof CSSResult) {\n    return sheet.generate();\n  } else if (__DEV__) {\n    warn(`Invlaid stylesheet, expected a css literal or a native CSSStyleSheet, got ${typeof sheet}`);\n  }\n}\n\n/**\n* Applies adopted stylesheets if available or tries to shim,\n*   returns false if shim has to be done manually through a style tag.\n* if adopted stylesheets is supported in the browser, they will be loaded async\n* @param shadowRoot - Shadow root to apply styles to\n* @param tag - Tag of the parent of the shadow root\n* @param styles - Styles to apply\n* @returns If adopting is supported returns true\n* @private\n*/\nexport async function adoptStyleSheets(shadowRoot: ShadowRoot, tag: string, styles: StyleSheet[]): Promise<boolean> {\n  if (styles != null && styles.length) {\n    const { ShadyCSS } = window;\n\n    if (ShadyCSS?.nativeShadow === false) {\n      // styles can be a native CSSStyleSheet, we then need to map it\n      const cssTexts = styles.map(mapStyleSheetsToCssText)\n        .filter(sheet => sheet);\n\n      ShadyCSS.ScopingShim.prepareAdoptedCssText(cssTexts, tag);\n    } else if (CSSResult.supportsAdoptingStyleSheets) {\n      // Stylesheets are loaded async to support @import rules\n      const styleSheets = await Promise.all(styles.map(mapStyleSheetToCssStyleSheet));\n      shadowRoot.adoptedStyleSheets = styleSheets.filter(sheet => sheet);\n    } else {\n      return false; // notifies to shim manually using style elements\n    }\n  }\n\n  return true;\n}\n\n/**\n * Class to easily construct and cache style sheets, through template literals\n */\nexport class CSSResult {\n  /**\n   * Only used for testing, changing this could create problems\n   * @private\n   */\n  static supportsAdoptingStyleSheets =\n    'adoptedStyleSheets' in Document.prototype &&\n    'replace' in CSSStyleSheet.prototype;\n\n  /**\n   * Cached stylesheet, created by the generate() method\n   */\n  private styleSheet: CSSStyleSheet;\n\n  /**\n   * Raw CSS styles, as passed in to the template literal\n   */\n  readonly cssText: string;\n\n  /**\n   * Constructs a new CSSResult instance\n   * @param strings - Template strings glue\n   * @param values - Interpolated values\n   */\n  constructor(strings: TemplateStringsArray, values: readonly any[]) {\n    // TODO: values doesn't work with caching, look at css variable solution to be more versatile\n    this.cssText = values.reduce<string>((acc, value, idx) => {\n      return acc + String(value) + strings[idx + 1];\n    }, strings[0]);\n  }\n\n  /**\n   * Generates the constructible stylesheet, singleton cached\n   * @returns A promise that returns a stylesheet\n   */\n  async generate(): Promise<CSSStyleSheet> {\n    if (isUndefined(this.styleSheet)) {\n      if (CSSResult.supportsAdoptingStyleSheets) {\n        this.styleSheet = new CSSStyleSheet();\n\n        await this.styleSheet.replace(this.cssText);\n      } else {\n        this.styleSheet = null;\n      }\n    }\n\n    return this.styleSheet;\n  }\n\n  /**\n   * Gets the raw CSS styles as a string\n   * @returns A string with the CSS content\n   */\n  toString(): string {\n    return this.cssText;\n  }\n}\n\n/**\n  * Creates a new CSS result from a template literal\n  * @param strings - Template strings as a glue for the values\n  * @param values - Dynamic values to interpolate\n  * @returns An object that represents a CSS Stylesheet\n  */\nexport function css(strings: TemplateStringsArray, ...values: readonly any[]): CSSResult {\n  return new CSSResult(strings, values);\n}\n","import { isObject } from '@kirei/shared';\nimport type { TemplatePatcher } from '@kirei/html';\nimport { warn } from '../warn';\n\nexport function bind(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  let attributes: string[] = [];\n\n  return (pending) => {\n    if (!isObject(pending)) {\n      return warn('Directive requires the expression value to be an object', 'attrs (directive)');\n    }\n\n    const keys = Object.keys(pending);\n    const unique = new Set([ ...keys, ...attributes ]);\n\n    for (const key of unique) {\n      const value = pending[key];\n\n      value ? el.setAttribute(key, value) : el.removeAttribute(key);\n    }\n\n    attributes = keys;\n  };\n}\n","import { unref } from '@vue/reactivity';\nimport type { TemplatePatcher } from '@kirei/html';\n\nexport function conditionalUnless(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  const placeholder = document.createComment('');\n  let node: Element|Comment = el;\n\n  return (pending) => {\n    const value = unref(pending);\n    const newNode = value ? placeholder : el;\n\n    if (newNode !== node) {\n      node.parentNode?.replaceChild(newNode, node);\n      node = newNode;\n    }\n  };\n}\n\nexport function conditionalIf(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  const placeholder = document.createComment('');\n  let node: Element|Comment = el;\n\n  return (pending) => {\n    const value = unref(pending);\n    const newNode = value ? el : placeholder;\n\n    if (newNode !== node) {\n      node.parentNode?.replaceChild(newNode, node);\n      node = newNode;\n    }\n  };\n}\n\n","import type { TemplatePatcher } from '@kirei/html';\nimport { hyphenate, isFunction, isString } from '@vue/shared';\nimport { getComponentInstance } from '../runtime/instance';\nimport { warn } from '../warn';\n\ntype EventListener = (e: Event) => any;\n\nconst NOOP = () => {};\nconst KEYBOARD_EVENTS = [ 'keydown', 'keyup', 'keypress' ];\nconst KEYBOARD_MODS = [ 'ctrl', 'alt', 'shift', 'meta' ];\nconst KEYBOARD_ALIASES = {\n  'Enter': 'enter',\n  'Tab': 'tab',\n  'Delete': 'delete',\n  'Backspace': 'delete',\n  ' ': 'space',\n  'Spacebar': 'space',\n  'ArrowUp': 'up',\n  'ArrowDown': 'down',\n  'ArrowLeft': 'left',\n  'ArrowRight': 'right',\n};\n\nconst MOUSE_EVENTS = [ 'click', 'dblclick', 'mouseup', 'mousedown' ];\nconst MOUSE_KEYS = [ 'left', 'middle', 'right' ];\n\n// Checks if required meta keys was pressed\nfunction hasMeta(e: KeyboardEvent|MouseEvent, meta: string[]): boolean {\n  return !meta.length || meta.every(name => e[`${name}Key`]);\n}\n\n// Checks if mod exists and removes it if it does.\nfunction hasMod(modifiers: string[], mod: string): boolean {\n  const idx = modifiers.indexOf(mod);\n  return idx != -1 ? (modifiers.splice(idx, 1), true) : false;\n}\n\nfunction keyboardListener(listener: EventListener, modifiers: string[]): EventListener {\n  const meta = KEYBOARD_MODS.filter(mod => hasMod(modifiers, mod));\n\n  return (e: KeyboardEvent) => {\n    if (meta.length && !hasMeta(e, meta)) return;\n\n    const key = KEYBOARD_ALIASES[e.key] ?? hyphenate(e.key);\n    if (modifiers.length && !modifiers.includes(key)) return;\n    return listener(e);\n  };\n}\n\nfunction mouseListener(listener: EventListener, modifiers: string[]): EventListener {\n  const meta = KEYBOARD_MODS.filter(mod => hasMod(modifiers, mod));\n  const btn = MOUSE_KEYS.findIndex(mod => hasMod(modifiers, mod));\n\n  return (e: MouseEvent) => {\n    if (meta.length && !hasMeta(e, meta)) return;\n    if (btn != -1 && e.button != btn) return;\n    return listener(e);\n  };\n}\n\nfunction nativePatcher(el: HTMLElement, eventName: string, modifiers: string[]): TemplatePatcher {\n  const prevent = hasMod(modifiers, 'prevent');\n  const stop = hasMod(modifiers, 'stop');\n  const self = hasMod(modifiers, 'self');\n  const forceBind = prevent || stop;\n  const options: AddEventListenerOptions = {\n    capture: hasMod(modifiers, 'capture'),\n    once: hasMod(modifiers, 'once'),\n    passive: hasMod(modifiers, 'passive'),\n  };\n\n  let value: EventListener = NOOP;\n  let listener = (e: Event) => {\n    if (self && e.target !== el) return;\n    prevent && e.preventDefault();\n    stop && e.stopPropagation();\n\n    return value.call(null, e);\n  }\n\n  if (modifiers.length) {\n    if (KEYBOARD_EVENTS.includes(eventName)) {\n      listener = keyboardListener(listener, modifiers);\n    } else if (MOUSE_EVENTS.includes(eventName)) {\n      listener = mouseListener(listener, modifiers);\n    }\n  }\n\n  return (pending: EventListener = NOOP) => {\n    if (!isFunction(pending)) {\n      throw new TypeError('Kirei: Events can only be bound to functions');\n    }\n\n    if (value !== pending) {\n      if (value != NOOP && pending == NOOP && !forceBind) {\n        el.removeEventListener(eventName, listener, options);\n      } else if (value == NOOP && pending != NOOP || forceBind) {\n        el.addEventListener(eventName, listener, options);\n      }\n    }\n\n    value = pending;\n  };\n}\n\nexport function on(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  const instance = getComponentInstance(el);\n\n  // TODO: Maybe support multiple events in the future?\n  // Instance swallows event if defined in 'emits'. Otherwise bind to native handler.\n  if (instance) {\n    // Expected an argument as string\n    if (!isString(arg)) {\n      throw new TypeError('');\n    } else if (instance.options.emits[arg]) {\n      const once = modifiers.includes('once');\n      let value: Function;\n\n      return (pending: Function) => {\n        if (value === pending) return;\n\n        if (!isFunction(pending) || pending != null) {\n          warn(`v-on directive expected a function or a nullable value, got ${typeof pending}`);\n        }\n\n        if (!pending) {\n          instance.off(arg, value);\n        } else if (once) {\n          instance.once(arg, pending);\n        } else {\n          instance.on(arg, pending)\n        }\n\n        value = pending;\n      };\n    }\n  }\n\n  // Native event patcher\n  return nativePatcher(el, arg, modifiers);\n}\n","import { unref } from '@vue/reactivity';\nimport type { TemplatePatcher } from '@kirei/html';\n\nexport function show(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  let value = true;\n\n  return (pending) => {\n    const newValue = !!unref(pending);\n    if (newValue != value) {\n      el.style.display = newValue ? '' : 'none';\n    }\n\n    value = newValue;\n  };\n}\n","import { isString } from '@vue/shared';\nimport { isRef } from '@vue/reactivity';\nimport type { Ref } from '@vue/reactivity';\nimport type { TemplatePatcher } from '@kirei/html';\nimport { push } from '../runtime/queue';\nimport { getComponentInstance } from '../runtime/instance';\n\nconst DEFAULT_PROP = 'modelValue';\n\nfunction selectHandler(el: HTMLSelectElement): string | string[] {\n  const options = el.selectedOptions;\n  if (el.multiple) {\n    return !options.length ? [] : Array.from(options).map(o => o.value);\n  }\n\n  return options[0]?.value;\n}\n\nfunction selectCommit(el: HTMLSelectElement, value: unknown): void {\n  const { options } = el;\n\n  if (el.multiple) {\n    const values = value as string[];\n\n    for (let i = 0; i < options.length; i++) {\n      const o = options[i];\n      o.selected = values.includes(o.value);\n    }\n  } else {\n    for (let i = 0; i < options.length; i++) {\n      const o = options[i];\n      o.selected = value === o.value;\n    }\n  }\n}\n\nfunction radioCommit(el: HTMLInputElement, value: unknown): void {\n  el.checked = value === el.value;\n}\n\nfunction checkboxHandler(el: HTMLInputElement, ref: Ref): boolean | string | string[] {\n  const list = ref.value;\n  if (Array.isArray(list)) {\n    const idx = list.indexOf(el.value);\n\n    if (idx >= 0) {\n      list.splice(idx, 1);\n    } else {\n      list.push(el.value);\n    }\n\n    return list;\n  }\n\n  // TODO: dont return 'value' if not list\n  //return el.value || el.checked;\n  //return el.hasAttribute('value') ? el.value : el.checked;\n  return el.checked;\n}\nfunction checkboxCommit(el: HTMLInputElement, value: unknown): void {\n  /*let state = !!value;\n  if (el.hasAttribute('value')) {\n    state = Array.isArray(value) ? value.includes(el.value) : value === el.value;\n  }\n  el.checked = state;*/\n  // NOTE: see the handler for more info on why no value without list\n  el.checked = Array.isArray(value) ? value.includes(el.value) : !!value;\n}\n\nfunction castValue(value: unknown, trim: boolean, number: boolean): unknown {\n  // Cast value if set\n  if (isString(value)) {\n    if (trim) {\n      value = value.trim();\n    }\n\n    if (number) {\n      const num = parseFloat(value as string);\n\n      if (!isNaN(num)) {\n        value = num;\n      }\n    }\n  }\n\n  return value;\n}\n\nfunction nativeModel(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  const castNumber = modifiers.includes('number');\n  const trimValue = modifiers.includes('trim');\n\n  let ref: Ref;\n  let event: string;\n  let prop: string = arg;\n  let handler: (el: Element, ref: Ref) => any;\n  let commit: (el: Element, value: unknown) => void;\n\n  // Bind to default model, like form fields\n  const tag = el.tagName.toLowerCase();\n  const type = (el as HTMLInputElement).type;\n  const isInput = tag == 'input';\n\n  if (tag == 'select') {\n    event = 'change';\n    handler = selectHandler;\n    commit = selectCommit;\n  } else if (isInput && type == 'checkbox') {\n    event = 'change';\n    handler = checkboxHandler;\n    commit = checkboxCommit;\n  } else if (isInput && type == 'radio') {\n    event = 'change';\n    prop = 'value';\n    commit = radioCommit;\n  } else if (isInput || tag == 'textarea') {\n    // lazy modifier only for text input\n    event = modifiers.includes('lazy') ? 'change' : 'input';\n    prop = 'value';\n    commit = (el, value) => { el[prop] = value; };\n  } else {\n    throw new TypeError(`Model not supported for element '${tag}'.`);\n  }\n\n  function listener(e: Event) {\n    e.stopPropagation();\n    const value = handler ? handler(el, ref) : el[prop];\n\n    ref.value = castValue(value, trimValue, castNumber);\n  }\n\n  // Bind listener to event name\n  el.addEventListener(event, listener, false);\n\n  return (pending) => {\n    if (!isRef(pending)) {\n      throw new TypeError(`Model directive requires a ref as its value`);\n    }\n\n    // Synced select elements has to be committed on the nextTick.\n    // As dynamic content could have not loaded yet.\n    // TODO. applies to all elements, as syncing happening in queue now instead\n    ref = pending;\n\n    // required to trigger dep, has to be sync\n    const value = ref.value;\n    push(() => commit(el, value));\n  };\n}\n\n// directive format &[value.number.trim.lazy]=${ref}\nexport function model(el: HTMLElement, arg: string, modifiers: string[]): TemplatePatcher {\n  const instance = getComponentInstance(el);\n\n  // TODO: if instance, pass as prop (update:propName)\n  if (instance) {\n    const castNumber = modifiers.includes('number');\n    const trimValue = modifiers.includes('trim');\n    const prop = arg || DEFAULT_PROP;\n    let ref: Ref;\n\n    instance.on(`update:${prop}`, (value) => { ref.value = value; });\n\n    return (pending) => {\n      if (!isRef(pending)) {\n        throw new TypeError(`Model directive requires a ref as its value`);\n      }\n\n      // Synced select elements has to be committed on the nextTick.\n      // As dynamic content could have not loaded yet.\n      // TODO. applies to all elements, as syncing happening in queue now instead\n      ref = pending;\n      instance.props[prop] = castValue(ref.value, trimValue, castNumber);\n    };\n  } else if (arg === '') {\n    return nativeModel(el, arg, modifiers);\n  }\n\n  throw new TypeError(`Custom Model only supported for Kirei elements, got '${el.tagName.toLowerCase()}'.`);\n}\n","import { customize, defaultCompiler } from '@kirei/html';\nimport type { TemplateCompiler } from '@kirei/html';\nimport { unref, isRef } from '@vue/reactivity';\nimport { getCurrentInstance } from './instance';\nimport { HookTypes } from '../api/lifecycle';\nimport type { ComponentInstance } from '../types';\n\n// load directives\nimport { bind } from '../directives/bind';\nimport { conditionalUnless, conditionalIf } from '../directives/conditional';\nimport { on } from '../directives/on';\nimport { show } from '../directives/show';\nimport { model } from '../directives/model';\n\n/**\n * String of allowed characters to use as a directive alias\n */\nconst ALIAS_NAMES = '@#&$%*!?;=^¶§€';\n\n/**\n * Regex to validate a directive alias\n */\nconst ALIAS_REGEX = new RegExp(`^([${ALIAS_NAMES}])([a-z0-9-]*)((?:\\\\.[a-z0-9-]+)*)$`, 'i');\n\n/**\n * Regex to validate directive names\n */\nconst DIRECTIVE_REGEX = /^v-([a-z0-9-]+)(?:\\:([a-z0-9-]*))?((?:\\.[a-z0-9-]+)*)$/i;\n\n/**\n * Directive has a set of lifecycle hooks:\n */\nexport interface Directive<T = any> {\n  /**\n   * Called before bound element's parent component is mounted\n   * @param el - Target element of the directive\n   * @param binding - Directive binding\n   */\n  beforeMount?(el: HTMLElement, binding: DirectiveBinding<T>): void;\n  /**\n   * Called when bound element's parent component is mounted\n   * @param el - Target element of the directive\n   * @param binding - Directive binding\n   */\n  mounted?(el: HTMLElement, binding: DirectiveBinding<T>): void;\n  /**\n   * Called before the containing component's VNode is updated\n   * @param el - Target element of the directive\n   * @param binding - Directive binding\n   */\n  beforeUpdate?(el: HTMLElement, binding: DirectiveBinding<T>): void;\n  /**\n   * Called after the containing component's VNode and the VNodes of its children // have updated\n   * @param el - Target element of the directive\n   * @param binding - Directive binding\n   */\n  updated?(el: HTMLElement, binding: DirectiveBinding<T>): void;\n  /**\n   * Called before the bound element's parent component is unmounted\n   * @param el - Target element of the directive\n   * @param binding - Directive binding\n   */\n  beforeUnmount?(el: HTMLElement, binding: DirectiveBinding<T>): void;\n  /**\n   * Called when the bound element's parent component is unmounted\n   * @param el - Target element of the directive\n   * @param binding - Directive binding\n   */\n  unmounted?(el: HTMLElement, binding: DirectiveBinding<T>): void;\n}\n\nexport interface DirectiveBinding<T = any> {\n  instance: ComponentInstance;\n  value: T;\n  oldValue: T;\n  arg: string;\n  modifiers: string[];\n  dir: Directive<T>;\n}\n\n/**\n * Patcher to set refs value to the targeted element\n * @param el - Element to apply the patcher on\n */\nfunction refPatcher(el: Element) {\n  return (ref) => {\n    if (!isRef<Element>(ref)) {\n      throw new TypeError(`Ref directive requires a ref as its expression value`);\n    }\n\n    ref.value = el;\n  };\n}\n\n/**\n * Custom compiler for directives and to unpack reactives\n */\nexport const compiler: TemplateCompiler = {\n  attr(node, attr) {\n    if (attr === 'ref') {\n      return refPatcher(node);\n    }\n\n    // Directives starts with v-\n    const isAlias = ALIAS_NAMES.includes(attr[0]);\n    if (!isAlias && !attr.startsWith('v-')) {\n      // Use default patcher\n      const patch = defaultCompiler.attr(node, attr);\n      return (pending) => patch(unref(pending));\n    }\n\n    const match = attr.match(isAlias ? ALIAS_REGEX : DIRECTIVE_REGEX);\n    if (!match) {\n      throw new TypeError(`Invalid directive format '${attr}'.`);\n    }\n\n    // Internal patchers takes precedence\n    const name = match[1];\n    const el = node as HTMLElement;\n    const arg = match[2] ?? '';\n    const modifiers = match[3] ? match[3].slice(1).split('.') : [];\n    switch (name) {\n      case 'bind':\n        return bind(el, arg, modifiers);\n      case 'if':\n        return conditionalIf(el, arg, modifiers);\n      case 'unless':\n        return conditionalUnless(el, arg, modifiers);\n      case 'show':\n        return show(el, arg, modifiers);\n      case '@':\n      case 'on':\n        return on(el, arg, modifiers);\n      case '&':\n      case 'model':\n        return model(el, arg, modifiers);\n    }\n\n    // Look in element-scoped and global directives for a match\n    const instance = getCurrentInstance();\n    const dir = instance.directives?.[name];\n\n    if (!dir) {\n      throw new TypeError(`Directive ${name} not defined.`);\n    }\n\n    const binding: DirectiveBinding = {\n      instance, modifiers, dir, arg,\n      value: undefined,\n      oldValue: undefined,\n    };\n\n    // maybe oldValue is not properly set in beforeUpdate?\n    // mount called before directive is created?\n    for (const key of Object.values(HookTypes)) {\n      if (key in dir) {\n        instance.injectHook(key, dir[key].bind(null, el, binding));\n      }\n    }\n\n    // Memo the old value, update current value\n    return (pending) => {\n      binding.oldValue = binding.value;\n      binding.value = pending;\n    };\n  },\n  node(ref) {\n    const patch = defaultCompiler.node(ref)\n    return (pending) => patch(unref(pending));\n  },\n  text(node) {\n    const patch = defaultCompiler.text(node);\n    return (pending) => patch(unref(pending));\n  },\n};\n\nexport const { html, svg, render } = customize({ compiler });\n","import { mapObject, isObject, isUndefined } from '@kirei/shared';\nimport { isFunction } from '@vue/shared';\nimport { warn } from '../warn';\n\nimport type { Props, PropsData, NormalizedProps, NormalizedProp, PropInstance, PropConstructor } from '../types';\n\n/**\n * Normalizes a props model, making it more predictable\n * @param props Props to normalize\n * @returns Normalized props, a transformed version of the input\n * @private\n */\nexport function normalizeProps<T = Props>(props: T): NormalizedProps<T> {\n  for (const key of Object.keys(props)) {\n    const prop = props[key];\n    // @ts-ignore\n    let normal = prop as NormalizedProp;\n\n    if (isObject<PropInstance>(prop) && !Array.isArray(prop)) {\n      normal.type = prop.type as PropConstructor[];\n      normal.default = prop.default;\n      normal.validator = prop.validator ?? null;\n      normal.required = !!prop.required;\n    } else {\n      // @ts-ignore\n      normal = props[key] = {\n        type: prop as PropConstructor[],\n        validator: null,\n        required: false,\n      } as NormalizedProp;\n    }\n\n    if (normal.type) {\n      if (!Array.isArray(normal.type)) {\n        normal.type = [ normal.type ];\n      }\n      if (!normal.type?.every(isFunction)) {\n        throw new TypeError(`Type invalid in prop '${key}'!`);\n      }\n\n      // Enable casting if needed\n      const [ first ] = normal.type;\n      normal.cast = first === Boolean || first === Number;\n    } else {\n      normal.cast = false;\n    }\n  }\n\n  // @ts-ignore\n  return props as NormalizedProps<T>;\n}\n\n/**\n * Extracts the default values from a props model\n * @param props - Props model to extract defaults from\n * @returns Default prop values as an object\n * @private\n */\nexport function propDefaults<T extends NormalizedProps>(props: T): PropsData<T> {\n  return mapObject<T, string, PropsData<T>>((key, prop) => {\n    const { type, default: def } = prop;\n    if (isObject(def)) {\n      warn(`Prop defaults requires Objects to be returned by a factory function to avoid cross referencing across elements.`);\n    }\n\n    // Validate props default value (if defined)\n    let value: unknown;\n    if (!isUndefined(def)) {\n      value = isFunction(def) ? def() : def;\n      try {\n        // Validate default value\n        validateProp(prop, key, value);\n      } catch (ex) {\n        throw new TypeError(`Default prop value invalid for prop \"${key}\", type \"${typeof value}\" unexpected.`);\n      }\n    } else if (type != null && type[0] === Boolean) {\n      value = false;\n    }\n\n    return [ key, value as string ];\n  }, props);\n}\n\n/**\n * Validates a prop against a value, casts value if needed\n * @param props - Normalized prop model to validate from\n * @param key - Attribute key\n * @param value - Value to validate\n * @returns The value of the validated property, if cast was true might not be the same\n * @private\n */\nexport function validateProp<T extends NormalizedProp, V = T extends NormalizedProp<infer I> ? I : any>(prop: T, key: string, value: any): V {\n  // Validate prop\n  const { type, required, validator, cast } = prop;\n\n  // Type checking\n  if (type != null) {\n    if (value != null && !type.some(t => Object.getPrototypeOf(value) == t.prototype)) {\n      throw new Error(`Type error in prop '${key}'.`);\n    }\n  }\n\n  if (required && isUndefined(value)) {\n    throw new Error(`Value required in prop '${key}'.`);\n  }\n\n  if (validator && !validator(value)) {\n    throw new Error(`Validation error in prop '${key}'.`);\n  }\n\n  // Different parsing based on first type\n  if (cast) {\n    switch (type[0]) {\n      case Boolean:\n        // If primary type boolean, null or undefined is false, '' is true\n        const str = String(value);\n        if (value == null || str === 'false') {\n          // @ts-ignore\n          return false as V;\n        } else if (str === '' || str === 'true') {\n          // @ts-ignore\n          return true;\n        }\n        break;\n\n      case Number:\n        // If number as first type, try parse value as number\n        let n = Number(value);\n        if (!isNaN(n)) {\n          // @ts-ignore\n          return n;\n        }\n    }\n  }\n\n  return value;\n}\n","import type { Directive } from '../runtime/compiler';\nimport type { InjectionKey } from './inject';\nimport type { ComponentInstance } from '../types';\nimport { hyphenate, isFunction } from '@vue/shared';\nimport { warn } from '../warn';\n\ntype PluginInstallFunction = (app: App, ...args: any[]) => any;\n\nexport type Plugin =\n  | PluginInstallFunction & { install?: PluginInstallFunction }\n  | { install: PluginInstallFunction };\n\nexport interface App {\n  container: ComponentInstance|null;\n  context: AppContext;\n  version: string;\n  config: AppConfig;\n  use(plugin: Plugin, ...options: any[]): this;\n  directive(name: string): Directive;\n  directive(name: string, directive: Directive): this;\n  provide<T>(key: InjectionKey<T> | string, value: T): this;\n}\n\nexport interface AppConfig {\n  performance: boolean;\n  errorHandler?(\n    err: unknown,\n    instance: ComponentInstance | null,\n    info: string\n  ): void;\n  warnHandler?(\n    msg: string,\n    instance: ComponentInstance | null,\n    trace: string\n  ): void;\n}\n\nexport interface AppContext {\n  app: App;\n  config: AppConfig;\n  directives: Record<string, Directive>;\n  provides: Record<string | symbol, unknown>;\n  /**\n   * HMR only?\n   * @internal\n   */\n  reload?(): void;\n}\n\nexport const applications = new Map<string, App>();\n\nexport function createApp(root: string): App {\n  const installedPlugins = new Set();\n  const context: AppContext = {\n    app: null,\n    config: {\n      performance: false,\n      errorHandler: null,\n      warnHandler: null,\n    },\n    directives: {},\n    provides: Object.create(null)\n  };\n\n  // if instance has no parentNode, check for entry in app\n  const app: App = (context.app = {\n    container: null,\n    version: __VERSION__,\n    context,\n\n    get config() {\n      return context.config;\n    },\n\n    use(plugin, ...args) {\n      if (!installedPlugins.has(plugin)) {\n        // Cyclomatic complexity is high here\n        if (plugin && isFunction(plugin.install)) {\n          installedPlugins.add(plugin);\n\n          if (isFunction(plugin)) {\n            plugin(app, ...args);\n          } else if (isFunction(plugin.install)) {\n            plugin.install(app, ...args);\n          } else if (__DEV__) {\n            warn(`A plugin must either be a function or an object with an 'install' function.`);\n          }\n\n          installedPlugins.add(plugin);\n        }\n      } else if (__DEV__) {\n        warn(`Plugin has already been applied to target app.`);\n      }\n\n      return app;\n    },\n\n    directive(name: string, directive?: Directive) {\n      if (__DEV__) {\n        //validateDirectiveName(name);\n      }\n\n      name = hyphenate(name);\n\n      if (!directive) {\n        return context.directives[name] as any;\n      }\n\n      if (__DEV__ && context.directives[name]) {\n        warn(`Directive '${name}' has already been registered in target app.`);\n      }\n\n      context.directives[name] = directive;\n      return app;\n    },\n\n    provide(key, value) {\n      if (__DEV__ && (key as string | symbol) in context.provides) {\n        warn(`App already provides property with key '${String(key)}'. It will be overwritten with the new value.`);\n      }\n\n      // TypeScript doesn't allow symbols as index type\n      // https://github.com/Microsoft/TypeScript/issues/24587\n      context.provides[key as string] = value;\n\n      return app;\n    },\n  });\n\n  applications.set(root, app);\n  return app;\n}\n","import { effect, pauseTracking, resetTracking, shallowReadonly, shallowReactive } from '@vue/reactivity';\nimport { hyphenate, isFunction, isPromise } from '@vue/shared';\nimport { exception, warn } from '../warn';\nimport { HookTypes } from '../api/lifecycle';\nimport * as Queue from './queue';\nimport { adoptStyleSheets } from './css';\nimport { render } from './compiler';\nimport { propDefaults } from './props';\nimport { applications } from '../api/app';\n\nimport type { InjectionKey } from '../api/inject';\nimport type { Directive } from './compiler';\nimport type {\n  IComponent,\n  ComponentInstance,\n  NormalizedComponentOptions,\n  SetupContext,\n  SetupResult,\n} from '../types';\n\nconst instanceStack: ComponentInstance[] = [];\nconst instances = new WeakMap<Element, ComponentInstance>();\n\n/**\n * Gets the current active component instance, or null if there is no active instance\n * @returns The current active component instance or null if there isn't any\n */\nexport function getCurrentInstance(): ComponentInstance|null {\n  return instanceStack.length ? instanceStack[instanceStack.length - 1] : null;\n}\n\n/**\n * Sets the current active instance to the stack, if instance is null the last element is popped\n * @param instance - Component instance to push to the stack\n */\nexport function setCurrentInstance(instance: ComponentInstance | null): void {\n  if (instance == null) {\n    instanceStack.pop();\n  } else {\n    instanceStack.push(instance);\n  }\n}\n\n/**\n* Gets an instance from its element\n* @param el - Component to get instance for\n* @returns The requested instance, or null if not found\n*/\nexport function getComponentInstance(el: Element): ComponentInstance|null {\n  return instances.get(el);\n}\n\n/**\n * Creates a component instance to bind to a Kirei Element\n * @param el - element to attach component instance to\n * @param options - component options to configure the instance\n */\nexport function createComponentInstance(el: IComponent, options: NormalizedComponentOptions): ComponentInstance {\n  const { ShadyCSS, ShadowRoot } = window;\n  let shimAdoptedStyleSheets = false;\n  const parent = getCurrentInstance();\n  const instanceEffect = effect(update, { lazy: true, scheduler: Queue.push });\n\n  // props immutable due to how WebComponents load props\n  // TODO: create workaround for this\n  const props = shallowReactive(options.props ? propDefaults(options.props) : {});\n\n  // mutable\n  let mounted = false;\n  let suspensible = false;\n  let setupResult: Promise<SetupResult> | SetupResult = null;\n  let shadowRoot: ShadowRoot = null;\n  let provides: Record<string | symbol, unknown> = parent?.provides ?? Object.create(null);\n  let directives: Record<string, Directive> = null;\n  let emitted: Record<string, boolean> = null;\n  let events: Record<string, Function> = null;\n  let hooks: Record<string, Set<Function>> = null;\n\n  // Assign used to have root reference itself\n  // TODO: writable values should be getters\n  const instance: ComponentInstance = Object.create(null);\n  instances.set(el, Object.defineProperties(instance, {\n    // immutable\n    el: { value: el },\n    effect: { value: instanceEffect },\n    root: { value: (parent?.root ?? instance) },\n    parent: { value: parent },\n    props: { value: props },\n\n    // internally mutable\n    setupResult: { get: () => setupResult },\n    shadowRoot: { get: () => shadowRoot },\n    provides: { get: () => provides },\n    directives: { get: () => directives },\n    emitted: { get: () => emitted },\n    events: { get: () => events },\n    mounted: { get: () => mounted, },\n    suspensible: { get: () => suspensible },\n    hooks: { get: () => hooks },\n\n    // externally mutable (for hmr-api)\n    options: { get: () => options, set: (value) => (options = value) },\n\n    // immutable actions\n    on: { value: on },\n    once: { value: once },\n    off: { value: off },\n    emit: { value: emit },\n    setup: { value: setup },\n    provide: { value: provide },\n    reflowStyles: { value: reflowStyles },\n    mount: { value: mount },\n    unmount: { value: unmount },\n    runHooks: { value: runHooks },\n    injectHook: { value: injectHook },\n    update: { value: update },\n  }));\n\n  function on(event: string, listener: Function): void {\n    if (!events) {\n      events = {};\n    }\n    events[event] = listener;\n  }\n\n  function once(event: string, listener: Function): void {\n    if (!emitted) {\n      emitted = {};\n    }\n\n    if (emitted[event] != null) {\n      emitted[event] = false;\n    }\n\n    on(event, listener);\n  }\n\n  function off(event: string, listener?: Function): void {\n    const res = events?.[event];\n\n    if (res && (listener == null || res === listener)) {\n      events[event] = null;\n    }\n  }\n\n  function emit(event: string, ...args: any[]): void {\n    const handler = events?.[event];\n    if (!handler) {\n      return;\n    }\n\n    if (__DEV__ && !event.startsWith('update:')) {\n      const name = hyphenate(event);\n      const validator = options.emits[name];\n\n      if (isFunction(validator)) {\n        if (!validator(...args)) {\n          warn(`Component emitted event \"${name}\" but it is not declared in the emits option.`);\n        }\n      } else if (validator !== null) {\n        // invalid value\n        warn(`Invalid event arguments: event validation failed for event \"${name}\".`);\n      }\n    }\n\n    // emitted (if once handler will be false or true)\n    //   if they have been called or not\n    if (emitted) {\n      if (emitted[event] === true) {\n        return;\n      } else if (emitted[event] === false) {\n        emitted[event] = true;\n      }\n    }\n\n    handler.call(null, ...args);\n  }\n\n  function setup(): void {\n    directives = Object.create(null);\n    hooks = Object.create(null);\n    events = options.emits ? Object.create(null) : null;\n\n    // Inherit provides from parent or app context\n    provides = parent ? parent.provides : Object.create(null);\n\n    // clear hooks\n\n    // TODO: this really needs a refactor\n    const app = applications.get(instance.root.el.id);\n    if (app) {\n      if (instance.root == instance) {\n        app.container = instance;\n        provides = Object.create(app.context.provides);\n      }\n\n      directives = Object.create(app.context.directives);\n    }\n\n    // Inject global hooks to instance\n    if (options.hooks) {\n      Object.keys(options.hooks).forEach(key => {\n        hooks[key] = new Set(options.hooks[key]);\n      });\n    }\n\n    if (options.directives) {\n      Object.keys(options.directives).forEach(key => {\n        directives[key] = options.directives[key];\n      });\n    }\n\n    try {\n      const { setup } = options;\n      setCurrentInstance(instance);\n\n      let setupProps: Record<string, unknown>;\n      let setupContext: SetupContext;\n\n      // No need for props or ctx if not in the arguments of the setup method\n      if (setup.length >= 1) {\n        // Create setup context\n        if (setup.length >= 2) {\n          setupContext = {\n            get attrs() { return options.attrs; },\n            get el() { return el; },\n            get emit() { return emit; },\n          };\n        }\n\n        // Create a custom Proxy for the props\n        // TODO: if production use shallowReactive instead\n        setupProps = __DEV__ ? shallowReadonly(props) : shallowReactive(props);\n      }\n\n      // Run setup function to gather reactive data\n      // Pause tracking while calling setup function\n      pauseTracking();\n\n      // Result might be async, expose promise to the outside?\n      const res = setup.call(null, setupProps, setupContext);\n      if (isFunction(res)) {\n        setupResult = res;\n      } else if (res != null) {\n        throw new TypeError('Setup function must return a TemplateFactory');\n      }\n    } catch (ex) {\n      exception(ex, 'setup()');\n    } finally {\n      resetTracking();\n      setCurrentInstance(null);\n    }\n  }\n\n  function provide<T>(key: InjectionKey<T>|string, value: T): void {\n    if (parent?.provides === provides) {\n      provides = Object.create(parent.provides);\n    }\n\n    provides[key as string] = value;\n  }\n\n  async function reflowStyles(mount?: boolean): Promise<void> {\n    const { tag, styles } = options;\n\n    if (styles?.length) {\n      // styleSubtree on updates, as per ShadyCSS documentation\n      if (mount) {\n        ShadyCSS?.styleElement(el);\n      } else {\n        ShadyCSS?.styleSubtree(el);\n      }\n\n      if (ShadowRoot && shadowRoot instanceof ShadowRoot) {\n        const res = await adoptStyleSheets(shadowRoot, tag, styles);\n        shimAdoptedStyleSheets = !res;\n      }\n    }\n  }\n\n  function mount(): void {\n    // Collect props from attributes and props\n    // if the setup function returns a promise, wait for it before mounting.\n    setup();\n\n    // Only run shady shims on first mount\n    if (!shadowRoot) {\n      shadowRoot = el.attachShadow({ mode: 'open' });\n      reflowStyles(true);\n    }\n\n    instanceEffect();\n    mounted = true;\n  }\n\n  function unmount(): void {\n    runHooks(HookTypes.BEFORE_UNMOUNT);\n    mounted = false;\n    Queue.push(() => runHooks(HookTypes.UNMOUNTED));\n  }\n\n  function runHooks(hook: string, ...args: any[]): void {\n    // TODO: Ditch args for config to do something on every run (for errorCaptured)\n    // Errorcaptured is special, should be on another function or have a if statement for it\n    const _hooks = hooks[hook];\n\n    if (_hooks?.size) {\n      pauseTracking();\n      _hooks.forEach(hook => hook.apply(instance, args));\n      resetTracking();\n    }\n  }\n\n  function injectHook(name: string, hook: Function): void {\n    if (!hooks[name]) {\n      hooks[name] = new Set();\n    }\n    hooks[name].add(hook);\n  }\n\n  function update(): void {\n    if (setupResult == null || isPromise(setupResult)) {\n      // Only update template if it is set or not a promise\n      // If a promise then it could be resolved later by suspense\n      return;\n    }\n\n    runHooks(mounted ? HookTypes.BEFORE_UPDATE : HookTypes.BEFORE_MOUNT);\n\n    try {\n      setCurrentInstance(instance);\n\n      // Only render if setupResult is non-nullable\n      const template = setupResult();\n\n      if (template != null) {\n        render(template, shadowRoot, { scopeName: options.tag });\n      } else if (__DEV__) {\n        // TODO: Don't warn if intentional? Somehow add an escape hatch for this\n        warn('Nullable returned from setup, this could be intential when using Portal or Suspense', '#update()');\n      }\n    } catch (ex) {\n      exception(ex);\n    } finally {\n      setCurrentInstance(null);\n    }\n\n    // Adopted stylesheets not supported, shim with style element\n    if (shimAdoptedStyleSheets) {\n      const style = document.createElement('style');\n      style.textContent = options.styles.join('\\n');\n\n      shadowRoot.insertBefore(style, shadowRoot.firstChild);\n      shimAdoptedStyleSheets = false;\n    }\n\n    // Run update hook\n    runHooks(mounted ? HookTypes.UPDATED : HookTypes.MOUNTED);\n  }\n\n  return instance;\n}\n","import { trigger, reactive } from '@vue/reactivity';\nimport { mapObject, isObject } from '@kirei/shared';\nimport { hyphenate } from '@vue/shared';\nimport { setCurrentInstance, createComponentInstance, getComponentInstance } from './instance';\nimport { exception } from '../warn';\nimport { validateProp, normalizeProps } from './props';\nimport { nextTick } from './queue';\nimport type { TriggerOpTypes } from '@vue/reactivity';\nimport type { IComponent, ComponentOptions, NormalizedComponentOptions } from '../types';\n\n/**\n * Normalizes the raw options object to a more predictable format\n * @param options - Raw element options\n * @returns The normalized options\n * @private\n */\nexport function normalizeOptions(options: ComponentOptions): NormalizedComponentOptions {\n  const { styles, emits, directives } = options;\n  const props = options.props ? normalizeProps(options.props) : {};\n\n  // Reuse same object to avoid unnecessary GC\n  const normalized = options as NormalizedComponentOptions;\n  normalized.props = props;\n  normalized.setup = options.setup ?? null;\n  normalized.tag = hyphenate(options.name);\n  normalized.attrs = mapObject((key) => [hyphenate(key), key], props);\n  normalized.attributes = Object.keys(normalized.attrs);\n\n  if (styles != null) {\n    normalized.styles = Array.isArray(styles) ? [...new Set(styles)] : [styles];\n  }\n\n  if (directives != null) {\n    normalized.directives = mapObject((key, value) => [hyphenate(key), value], directives);\n  }\n\n  if (Array.isArray(emits)) {\n    normalized.emits = mapObject((key) => [key, null], emits);\n  } else {\n    normalized.emits = isObject(emits) ? emits : {};\n  }\n\n  return normalized;\n}\n\n/**\n * Element to use custom elements functionality, as it required a class\n */\nexport class Component extends HTMLElement implements IComponent {\n  /**\n   * Options for this element, used for creating Kirei instances\n   */\n  static options: NormalizedComponentOptions;\n\n  /**\n   * Returns the tagName of the element\n   * @static\n   */\n  static get is(): string {\n    return this.options.tag;\n  }\n\n  /**\n   * The attributes to observe changes for\n   * @static\n   */\n  static get observedAttributes(): string[] {\n    return this.options.attributes;\n  }\n\n  /**\n   * Constructs a new Component\n   */\n  constructor() {\n    super();\n    const { options } = this.constructor as typeof Component;\n    const instance = createComponentInstance(this, options);\n    const { props } = instance;\n\n    // Set props on the element\n    // Set props as getters/setters on element\n    // props should be a readonly reactive object\n    for (const key of Object.keys(options.props)) {\n      // If prop already exists, then we throw error\n      if (this.hasOwnProperty(key)) {\n        exception(`Prop ${key} is reserved, please use another.`);\n      }\n\n      Object.defineProperty(this, key, {\n        get: () => props[key],\n        set(newValue) {\n          if (newValue !== props[key]) {\n            try {\n              // Trigger an update on the element\n              setCurrentInstance(instance);\n\n              const value = validateProp(options.props[key], key, newValue);\n              props[key] = isObject(value) ? reactive(value) : value;\n              trigger(props, 'set' as TriggerOpTypes, key, newValue);\n            } catch (ex) {\n              exception(ex);\n            } finally {\n              setCurrentInstance(null);\n            }\n          }\n        },\n      });\n    }\n  }\n\n  /**\n   * Runs when mounted from DOM\n   */\n  connectedCallback(): void {\n    const instance = getComponentInstance(this);\n    // to leave the app to get a chance to mount, push the connect to next paint cycle\n    nextTick(() => instance.mount());\n  }\n\n  /**\n   * Runs when unmounted from DOM\n   */\n  disconnectedCallback(): void {\n    const instance = getComponentInstance(this);\n    instance.unmount();\n  }\n\n  /**\n   * Observes attribute changes, triggers updates on props\n   */\n  attributeChangedCallback(attr: string, oldValue: string, newValue: string): void {\n    // newValue & oldValue null if not set, string if set, default to empty string\n    if (oldValue !== newValue) {\n      const { options } = this.constructor as typeof Component;\n      const key = options.attrs[attr];\n      this[key] = newValue;\n    }\n  }\n}\n","import { Component, normalizeOptions } from '../runtime/component';\nimport { warn } from '../warn';\nimport type { ComponentOptions, Props } from '../types';\n\n/**\n * Defines a new component\n * @param options - Raw element options\n * @returns A constructor to create a new Component element\n */\nexport function defineComponent<T extends Readonly<Props>>(options: ComponentOptions<T>): typeof Component {\n  const normalized = normalizeOptions(options);\n  if (!normalized.tag.includes('-')) {\n    warn('Component names should include a hyphen (-) or be Pascal/camelCased with at least 1-2 upper-case character', options.name);\n  }\n\n  // TODO HMR, override options, then reflow all mounted elements\n  // However element state cannot be saved this way.\n  // if already defined then just override options\n  const CustomComponent = class extends Component {\n    static options = normalized;\n  };\n\n  window.customElements.define(CustomComponent.is, CustomComponent);\n  return CustomComponent;\n}\n","import { getCurrentInstance } from '../runtime/instance';\nimport { warn } from '../warn';\n\n/**\n * Value to track if parameter is unset\n */\nconst UNSET = Object.create(null);\n\n/**\n * Helps type inference when providing/injecting a key\n */\nexport interface InjectionKey<T> extends Symbol {}\n\n/**\n * Provides a value to itself and children, used to flow data down, such as stores\n * @param key - Key to provide value as, can be a InjectionKey for type inference\n * @param value - Value to set to the provider\n */\nexport function provide<T>(key: InjectionKey<T>|string, value: T): void {\n  const instance = getCurrentInstance();\n  if (instance) {\n    instance.provide(key, value);\n  } else {\n    warn(`provide() requires to have a setup function in its call stack.`, `provide(${key})`);\n  }\n}\n\n/**\n * Gets a inherited value shared by any parent in the instance tree\n * @param key - Key of injected value\n * @param defaultValue - Fallback value in case of not being provided, defaults to undefined\n * @returns Default value if value waw not found otherwise undefined\n */\nexport function inject<T>(key: InjectionKey<T>|string, defaultValue?: T): T | undefined;\nexport function inject<T>(key: InjectionKey<T>|string, defaultValue: T = UNSET): T {\n  const instance = getCurrentInstance();\n  if (instance) {\n    const { provides } = instance;\n    const prop = key as string;\n\n    if (prop in provides) {\n      return provides[prop] as T;\n    } else if (defaultValue !== UNSET) {\n      return defaultValue;\n    }\n\n    // Explicit toString used as Symbols require it.\n    warn(`Provider \"${key.toString()}\" not found, cannot inject.`, `inject(${key.toString()})`);\n  } else {\n    warn(`inject() requires to have a setup function in its call stack.`, `inject(${key.toString()})`);\n  }\n}\n","import { onMount } from './lifecycle';\nimport { getCurrentInstance } from '../runtime/instance';\nimport { defineComponent } from './defineComponent';\n\ndefineComponent({\n  name: 'VPortal',\n  setup() {\n    const { el } = getCurrentInstance();\n    const $body = window.document.body;\n    const $slot = document.createElement('slot');\n\n    // Ensure the elements parent is the body\n    onMount(() => {\n      if (el.parentNode != $body) {\n        $body.appendChild(el);\n      }\n    });\n\n    // patching should already be done by the parent component\n    // this element just moves the elements to another root\n    return () => $slot;\n  },\n});\n","/*!\n * Based on https://github.com/vuejs/vue-next/blob/master/packages/runtime-core/src/apiWatch.ts\n * Copyright(c) 2019-2020 Vuejs Maintainers, http://vuejs.org\n * Copyright(c) 2020 Christian Norrman\n * MIT Licensed\n */\nimport { isObject } from '@kirei/shared';\nimport { stop, effect, isRef, isReactive } from '@vue/reactivity';\nimport type { Ref } from '@vue/reactivity';\nimport { isMap, isSet, isFunction } from '@vue/shared';\n\n/**\n * Function to stop a reactive watcher\n */\ntype StopWatcher = () => void;\n\n/**\n */\ntype WatchTarget<T = any> = Ref<T> | T | (() => T);\n\n/**\n * Infers value types from an array of WatchTargets\n */\ntype InferWatchValues<T> = {\n  [K in keyof T]: T[K] extends WatchTarget<infer V> ? V : never;\n}\n\n\n/**\n * Optional configuration to pass to a watcher\n */\ninterface WatchOptions {\n  /**\n   * If watcher should be run immediately, with undefined value(s)\n   */\n  immediate?: boolean;\n  /**\n   * If watch should traverse every child of the watched target(s)\n   */\n  deep?: boolean;\n}\n\n/**\n * Creates a function that runs anytime a reactive dependency updates.\n * Runs immediately to collect dependencies.\n * Returns a function to effectivly stop the watcher.\n * @param target - Function to run when an update is triggered\n * @returns A function to stop the effect from watching\n */\nexport function watchEffect(target: () => void): StopWatcher {\n  if (!isFunction(target)) {\n    throw new TypeError(`watchEffect expected function as argument, got ${typeof target}.`);\n  }\n\n  const fx = effect(target, { lazy: false });\n  return stop.bind(null, fx);\n}\n\n/**\n * Watches one or multiple sources for changes, to easily consume the updates with a before and after value.\n * Has an option to trigger an immediate call (with oldValue set to undefined or empty array).\n * Returns a function to effectivly stop the watcher.\n * @param target - Target or targets to watch\n * @param callback - Callback to run when a target is updated\n * @param options - Optional watcher options\n * @returns A function to stop the effect from watching\n */\nexport function watch<T extends WatchTarget[]>(\n  target: T,\n  callback: (values: InferWatchValues<T>, oldValues: InferWatchValues<T>) => void,\n  options?: WatchOptions\n): StopWatcher;\nexport function watch<T extends WatchTarget>(\n  target: WatchTarget<T>,\n  callback: (values: T, oldValues: T) => void,\n  options?: WatchOptions\n): StopWatcher;\nexport function watch<T>(\n  target: WatchTarget<T>|WatchTarget<T>[],\n  callback: (value: T, oldValue: T) => void,\n  options?: WatchOptions\n): StopWatcher {\n  let fn: () => T|T[];\n  let value: T|T[];\n  let deep = !!options.deep;\n\n  if (!isFunction(callback)) {\n    throw new TypeError(`Unexpected type in \"callback\", expected function got ${typeof callback}`);\n  }\n\n  if (Array.isArray(target)) {\n    fn = () => target.map(t => {\n      if (isRef(t)) {\n        return t.value;\n      } else if (isFunction(t)) {\n        return t();\n      } else if (isReactive(t)) {\n        return traverse(t);\n      }\n\n      throw new TypeError(`Unexpected type, cannot watch ${typeof target}`);\n    });\n    value = [];\n  } else if (isRef(target)) {\n    fn = () => target.value;\n  } else if (isFunction(target)) {\n    fn = target;\n  } else if (isReactive(target)) {\n    fn = () => target;\n    deep = true;\n  } else {\n    throw new TypeError(`Unexpected type, cannot watch ${typeof target}`);\n  }\n\n  if (deep && callback) {\n    const getter = fn;\n    fn = () => traverse(getter());\n  }\n\n  const { immediate } = options ?? {};\n  const fx = effect(fn, {\n    lazy: true,\n    scheduler(run) {\n      const newValue = run();\n\n      callback(newValue as T, value as T);\n      value = newValue;\n    }\n  });\n\n  // If immediate, run scheduler, otherwise cache value(s) for next run.\n  if (immediate) {\n    fx.options.scheduler(fx);\n  } else {\n    value = fx();\n  }\n  return stop.bind(null, fx);\n}\n\n/**\n * Traverses every property of the value\n * @param value - Value to traverse\n * @param seen - List of values that has already been traversed\n * @returns The same object as the input value\n */\nfunction traverse<T = any>(value: T, seen: Set<unknown> = new Set()): T {\n  if (!isObject(value) || seen.has(value)) {\n    return value;\n  }\n  seen.add(value);\n\n  if (isRef(value)) {\n    traverse(value.value, seen);\n  } else if (Array.isArray(value) || isSet(value) || isMap(value)) {\n    value.forEach(v => traverse(v, seen));\n  } else {\n    for (const key in value) {\n      traverse(value[key], seen);\n    }\n  }\n\n  return value;\n}\n"],"names":["isString","HookTypes","isFunction","isUndefined","isObject","unref","hyphenate","isRef","defaultCompiler","customize","mapObject","effect","Queue.push","shallowReactive","shallowReadonly","pauseTracking","resetTracking","isPromise","reactive","trigger","stop","isReactive","isSet","isMap"],"mappings":"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"}