{"version":3,"file":"xhear.min.mjs","sources":["../packages/ofa-error/main.js","../packages/stanz/public.mjs","../packages/xhear/public.mjs","../packages/stanz/watch.mjs","../packages/stanz/array.mjs","../packages/stanz/main.mjs","../packages/stanz/accessor.mjs","../packages/xhear/accessor.mjs","../packages/xhear/render/render.mjs","../packages/xhear/render/sync.mjs","../packages/xhear/event.mjs","../packages/xhear/array.mjs","../packages/stanz/base.mjs","../packages/xhear/form.mjs","../packages/xhear/css.mjs","../packages/xhear/dollar.mjs","../packages/xhear/register.mjs","../packages/xhear/render/fake-node.mjs","../packages/xhear/render/condition.mjs","../packages/xhear/render/fill.mjs","../packages/xhear/main.mjs","../packages/xhear/util.mjs","../packages/xhear/base.mjs"],"sourcesContent":["// const error_origin = \"http://127.0.0.1:5793/errors\";\nconst error_origin = \"https://ofajs.github.io/ofa-errors/errors\";\n\n// 存放错误信息的数据对象\nconst errors = {\n  load_fail: \"Load {url} failed\",\n  load_fail_status: \"Load {url} failed, status code: {status}\",\n  load_module: \"Load module failed, module address: {url}\",\n  no_alias: \"No alias found: {name}, so '{url}' request is invalid\",\n  config_alias_name_error: \"Error in setting alias, must start with '@'\",\n  alias_already: \"Alias ​​'{name}' already exists\",\n  alias_relate_name:\n    \"Alias ​​cannot be configured with relative address, '{name}': '{path}'\",\n  failed_to_set_data: \"Error in setting attribute value {key}\",\n  failed_to_get_data: \"Error in getting {key}\",\n  nexttick_thread_limit:\n    \"nextTick exceeds thread limit, may have an infinite loop, please try to repair or optimize the function\",\n  not_func: \"The callback parameter of the {name} method must be a Function\",\n  not_found_func:\n    \"The '{name}' method was not found on the target {tag}. Please define the '{name}' method on the 'proto' of the component {tag}\",\n  invalid_key:\n    \"The parameters for registering the '{compName}' component are incorrect. The '{name}' on '{targetName}' is already occupied. Please change '{name}' to another name.\",\n  xhear_wrap_no_parent:\n    \"The target element has no parent element, the warp method cannot be used\",\n  xhear_unwrap_has_siblings:\n    \"The target element contains adjacent nodes, the unwrap method cannot be used\",\n  xhear_reander_err: \"Failed to render the tag '{tag}'\",\n  xhear_register_exists:\n    \"The component '{name}' already exists, and this component cannot be registered repeatedly\",\n  xhear_register_err: \"Error in registering the '{tag}' component\",\n  xhear_validate_tag:\n    \"The registered component name '{str}' is incorrect. For the Web Components naming rules, please refer to: https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define#valid_custom_element_names \",\n  xhear_tag_noline:\n    \"The registered component name '{str}' is incorrect and contains at least one '-' character; Web Components For naming rules, please refer to: https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define#valid_custom_element_names \",\n  xhear_regster_data_noset:\n    \"Error in registering component {tag}, custom data cannot have data of type 'Set' or 'Map'\",\n  xhear_regster_data_nofunc:\n    \"Registration component {tag} error, functions cannot appear in custom data, please put the function in 'proto'; or change '{key}' to '_{key}'\",\n  xhear_fakenode_unclose:\n    \"This is an unclosed FakeNode; use the wrong attribute name: {name}\",\n  xhear_fill_tempname: \"Fill component template '{name}' not found\",\n  xhear_eval:\n    \"Template syntax '{name}' error, expression {name}:{arg0}=\\\"{arg1}\\\"\",\n  xhear_listen_already:\n    \"An old listener already exists, and this element is rendering incorrectly. \",\n  xhear_dbfill_noname:\n    \"Only fill components with the 'name' attribute can be rendered in the fill component\",\n  xhear_temp_exist: \"Template '{name}' already exists\",\n  xhear_sync_no_options:\n    \"Direct use of the 'sync' method is not allowed, it is only used for template rendering\",\n  xhear_sync_object_value:\n    \"Cannot use 'sync' to synchronize values ​​of Object type, target {targetName}\",\n  loading_nothing: \"Loading function has no return content\",\n  app_src_change:\n    \"The app element that has been initialized cannot modify the src attribute\",\n  no_cross_access_func:\n    \"To jump to a page across domains, you must set the access function\",\n  access_return_error: \"Jumping to {src} is not allowed\",\n  load_comp_module:\n    \"Error loading component module, wrong module address: {url}\",\n  comp_registered:\n    \"Component '{tag}' has been registered, and the component cannot be registered again\",\n  \"inject-link-rel\":\n    \"The rel attribute value of the link element in the inject-host component can only be 'stylesheet'\",\n  \"use-data-inject\":\n    \"Please do not use data() on the style element in the inject-host, because it will cause serious performance crisis\",\n  load_page_module: \"Loading page module {url} failed\",\n  page_no_defaults:\n    \"The current page ({src}) has been rendered and cannot be rendered again\",\n  not_page_module:\n    \"{src} is not a page module and cannot be set as the src of the page component\",\n  page_failed: \"Loading page failed: {src}\",\n  fetch_temp_err: \"Page module {url} failed to load template {tempSrc}\",\n  page_wrap_fetch: \"Page {before} failed to get the parent page ({current})\",\n  context_change_name:\n    \"Changing the 'name' of {compName} may cause performance issues, please avoid changing this property\",\n  no_provider:\n    \"The consumer named '{name}' was not captured by the corresponding provider\",\n  page_invalid_key:\n    \"The registration parameters of page {src} are incorrect. '{name}' on '{targetName}' is already taken. Please change '{name}' to another name.\",\n  root_provider_exist:\n    \"An exception occurred in the root provider named '{name}'. The root provider component can only appear once\",\n  root_provider_name_change:\n    \"An exception occurred in the root provider named '{name}'. The root provider component cannot change the 'name' attribute\",\n  change_lm_src:\n    \"{tag} element changes 'src' attribute invalid, this attribute can only be set once.\",\n  error_no_owner:\n    \"This data is incorrect, the owner has not registered this object\",\n  circular_data: \"An object with a circular reference\",\n  fill_type:\n    \"'value' of 'x-fill' must be of type Array, the current value is of type {type}\",\n  fill_key_duplicates: \"The key in the fill component is repeated\",\n  render_el_error: \"Rendering element failed, rendering error is {expr}\",\n  temp_multi_child:\n    \"The template element can only contain one child element. If multiple child elements appear, the child elements will be repackaged in a <div> element\",\n  temp_wrap_child:\n    \"The template '{tempName}' contains {len} child elements, which have been wrapped in a div element with the attribute '{wrapName}'.\",\n  app_noback:\n    \"This is already the first page, and the 'back' operation cannot be performed again\",\n  invalidated_inject_host: \"This element will be invalidated in 'inject-host'\",\n  olink_out_app: \"The element of [olink] is only allowed in o-app\",\n  app_noforward:\n    \"This is the last page, you can no longer perform the 'forward' operation\",\n  need_forwards:\n    \"The target o-app does not allow forward operations, please add the '_forwards' attribute to the target; or in the app config file, add 'export const allowForward = true' \",\n  watchuntil_timeout: \"watchUntil timed out, target value not monitored\",\n};\n\nif (globalThis.navigator && navigator.language) {\n  let langFirst = navigator.language.toLowerCase().split(\"-\")[0];\n\n  if (langFirst === \"zh\" && navigator.language.toLowerCase() !== \"zh-cn\") {\n    langFirst = \"zhft\";\n  }\n\n  // 根据用户的语言首字母加载对应的错误匹配库，匹配开发人员报错信息\n  (async () => {\n    if (!globalThis.localStorage) {\n      // 不支持 localStorage，不加载错误库\n      return;\n    }\n\n    if (globalThis.navigator && !navigator.onLine) {\n      // 网络不可用，不加载错误库\n      return;\n    }\n\n    if (localStorage[\"ofa-errors\"]) {\n      const targetLangErrors = JSON.parse(localStorage[\"ofa-errors\"]);\n      Object.assign(errors, targetLangErrors);\n    }\n\n    const errCacheTime = localStorage[\"ofa-errors-time\"];\n\n    if (!errCacheTime || Date.now() > Number(errCacheTime) + 5 * 60 * 1000) {\n      const targetLangErrors = await fetch(`${error_origin}/${langFirst}.json`)\n        .then((e) => e.json())\n        .catch(() => null);\n\n      if (targetLangErrors) {\n        localStorage[\"ofa-errors\"] = JSON.stringify(targetLangErrors);\n        localStorage[\"ofa-errors-time\"] = Date.now();\n      } else {\n        targetLangErrors = await fetch(`${error_origin}/en.json`)\n          .then((e) => e.json())\n          .catch((error) => {\n            return null;\n          });\n      }\n\n      Object.assign(errors, targetLangErrors);\n    }\n  })();\n}\n\nlet isSafari = false;\nif (globalThis.navigator) {\n  isSafari =\n    navigator.userAgent.includes(\"Safari\") &&\n    !navigator.userAgent.includes(\"Chrome\");\n}\n\n/**\n * 根据键、选项和错误对象生成错误对象。\n *\n * @param {string} key - 错误描述的键。\n * @param {Object} [options] - 映射相关值的选项对象。\n * @param {Error} [error] - 原始错误对象。\n * @returns {Error} 生成的错误对象。\n */\nexport const getErr = (key, options, error) => {\n  let desc = getErrDesc(key, options);\n\n  let errObj;\n  if (error) {\n    if (isSafari) {\n      desc += `\\nCaused by: ${error.toString()}\\n`;\n\n      if (error.stack) {\n        desc += `  ${error.stack.replace(/\\n/g, \"\\n    \")}`;\n      }\n    }\n    errObj = new Error(desc, { cause: error });\n  } else {\n    errObj = new Error(desc);\n  }\n  errObj.code = key;\n  return errObj;\n};\n\n/**\n * 根据键、选项生成错误描述\n *\n * @param {string} key - 错误描述的键。\n * @param {Object} [options] - 映射相关值的选项对象。\n * @returns {string} 生成的错误描述。\n */\nexport const getErrDesc = (key, options) => {\n  if (!errors[key]) {\n    return `Error code: \"${key}\", please go to https://github.com/ofajs/ofa-errors to view the corresponding error information`;\n  }\n\n  let desc = errors[key];\n\n  // 映射相关值\n  if (options) {\n    for (let k in options) {\n      desc = desc.replace(new RegExp(`{${k}}`, \"g\"), options[k]);\n    }\n  }\n\n  return desc;\n};\n","import { getErr, getErrDesc } from \"../ofa-error/main.js\";\n\nexport const getRandomId = () => Math.random().toString(32).slice(2);\n\nconst objectToString = Object.prototype.toString;\nexport const getType = (value) =>\n  objectToString\n    .call(value)\n    .toLowerCase()\n    .replace(/(\\[object )|(])/g, \"\");\n\nexport const isObject = (obj) => {\n  const type = getType(obj);\n  return type === \"array\" || type === \"object\";\n};\n\n// export const isDebug = {\n//   value: null,\n// };\n\n// try {\n//   const fileUrl = import.meta.url;\n//   isDebug.value = fileUrl.includes(\"#debug\");\n// } catch (err) {\n//   isDebug.value = false;\n// }\n\n// const TICKERR = \"nexttick_thread_limit\";\n\nlet asyncsCounter = 0;\nlet afterTimer;\nconst tickSets = new Set();\nexport function nextTick(callback) {\n  clearTimeout(afterTimer);\n  afterTimer = setTimeout(() => {\n    asyncsCounter = 0;\n  });\n\n  // if (isDebug.value) {\n  Promise.resolve().then(() => {\n    asyncsCounter++;\n    if (asyncsCounter > 100000) {\n      const err = getErr(\"nexttick_thread_limit\");\n      console.warn(err, \"lastCall => \", callback);\n      throw err;\n    }\n\n    callback();\n  });\n  return;\n  // }\n\n  // const tickId = `t-${getRandomId()}`;\n  // tickSets.add(tickId);\n  // Promise.resolve().then(() => {\n  //   asyncsCounter++;\n  //   // console.log(\"asyncsCounter => \", asyncsCounter);\n  //   if (asyncsCounter > 50000) {\n  //     tickSets.clear();\n\n  //     const err = getErr(TICKERR);\n  //     console.warn(err, \"lastCall => \", callback);\n  //     throw err;\n  //   }\n  //   if (tickSets.has(tickId)) {\n  //     callback();\n  //     tickSets.delete(tickId);\n  //   }\n  // });\n  // return tickId;\n}\n\n// export const clearTick = (id) => tickSets.delete(id);\n\nexport function debounce(func, wait = 0) {\n  let timeout = null;\n  let hisArgs = [];\n\n  return function (...args) {\n    hisArgs.push(...args);\n\n    if (wait > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        func.call(this, hisArgs);\n        hisArgs = [];\n        timeout = null;\n      }, wait);\n    } else {\n      if (timeout === null) {\n        timeout = 1;\n        nextTick(() => {\n          timeout = null;\n          const args = hisArgs.slice();\n          hisArgs = [];\n          func.call(this, args);\n        });\n      }\n    }\n  };\n}\n\n// Enhanced methods for extending objects\nexport const extend = (_this, proto, descriptor = {}) => {\n  [\n    ...Object.getOwnPropertyNames(proto),\n    ...Object.getOwnPropertySymbols(proto),\n  ].forEach((k) => {\n    const result = Object.getOwnPropertyDescriptor(proto, k);\n    const { configurable, enumerable, writable, get, set, value } = result;\n\n    if (\"value\" in result) {\n      if (_this.hasOwnProperty(k)) {\n        _this[k] = value;\n      } else {\n        Object.defineProperty(_this, k, {\n          enumerable,\n          configurable,\n          writable,\n          ...descriptor,\n          value,\n        });\n      }\n    } else {\n      Object.defineProperty(_this, k, {\n        enumerable,\n        configurable,\n        ...descriptor,\n        get,\n        set,\n      });\n    }\n  });\n\n  return _this;\n};\n\n// 检测 Proxy 是否被撤销的函数\nexport function dataRevoked(proxyToCheck) {\n  try {\n    // 尝试对 Proxy 做一个无害的操作，例如获取原型\n    Object.getPrototypeOf(proxyToCheck);\n    return false; // 如果没有抛出错误，则 Proxy 没有被撤销\n  } catch (error) {\n    if (error instanceof TypeError) {\n      return true; // 如果抛出了 TypeError，则 Proxy 已经被撤销\n    }\n    // throw error; // 抛出其他类型的错误\n    return false;\n  }\n}\n","import { getErr } from \"../ofa-error/main.js\";\nimport { getType } from \"../stanz/public.mjs\";\n\nexport const isFunction = (val) => getType(val).includes(\"function\");\n\nexport const hyphenToUpperCase = (str) =>\n  str.replace(/-([a-z])/g, (match, p1) => {\n    return p1.toUpperCase();\n  });\n\nexport function capitalizeFirstLetter(str) {\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport const isArrayEqual = (arr1, arr2) => {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, len = arr1.length; i < len; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n};\n\nexport const toDashCase = (str) => {\n  return str.replace(/[A-Z]/g, function (match) {\n    return \"-\" + match.toLowerCase();\n  });\n};\n\nexport function isEmptyObject(obj) {\n  if (!obj) {\n    return false;\n  }\n  for (var key in obj) {\n    if (obj.hasOwnProperty(key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport const removeArrayValue = (arr, target) => {\n  const index = arr.indexOf(target);\n  if (index > -1) {\n    arr.splice(index, 1);\n  }\n};\n\nexport const searchEle = (el, expr) => {\n  if (el instanceof HTMLTemplateElement) {\n    return Array.from(el.content.querySelectorAll(expr));\n  }\n  return Array.from(el.querySelectorAll(expr));\n};\n\nexport function mergeObjects(obj1, obj2) {\n  for (let key of Object.keys(obj1)) {\n    if (!obj2.hasOwnProperty(key)) {\n      delete obj1[key];\n    }\n  }\n\n  for (let [key, value] of Object.entries(obj2)) {\n    obj1[key] = value;\n  }\n}\n\nexport const isSafariBrowser = () =>\n  /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n","import { getRandomId, debounce, dataRevoked } from \"./public.mjs\";\nimport { WATCHS } from \"./main.mjs\";\nimport { getErr } from \"../ofa-error/main.js\";\nconst { assign, freeze } = Object;\n\nclass Watcher {\n  constructor(opts) {\n    assign(this, opts);\n    freeze(this);\n  }\n\n  hasModified(k) {\n    if (this.type === \"array\") {\n      return this.path.includes(this.currentTarget.get(k));\n    }\n\n    const keys = k.split(\".\");\n\n    if (this.currentTarget === this.target && this.name === keys[0]) {\n      return true;\n    }\n\n    const modifieds = getModifieds(this, keys);\n\n    const positionIndex = modifieds.indexOf(this.target);\n    if (positionIndex > -1) {\n      const currentKeys = keys.slice(positionIndex + 1);\n\n      if (!currentKeys.length) {\n        // This is listening for changes in the child object itself\n        return true;\n      }\n\n      return this.name === currentKeys[0];\n    }\n\n    // Data belonging to the chain of change\n    return this.path.includes(this.currentTarget[k]);\n  }\n\n  hasReplaced(k) {\n    if (this.type !== \"set\") {\n      return false;\n    }\n\n    const keys = k.split(\".\");\n\n    if (this.target === this.currentTarget && this.name === keys[0]) {\n      return true;\n    }\n\n    const modifieds = getModifieds(this, keys);\n\n    const positionIndex = modifieds.indexOf(this.target);\n\n    if (positionIndex > -1) {\n      const currentKeys = keys.slice(positionIndex + 1);\n\n      return currentKeys[0] === this.name;\n    }\n\n    return false;\n  }\n}\n\nconst getModifieds = (_this, keys) => {\n  const modifieds = [];\n\n  const cloneKeys = keys.slice();\n  let target = _this.currentTarget;\n  while (cloneKeys.length) {\n    const targetKey = cloneKeys.shift();\n    if (target) {\n      target = target[targetKey];\n    }\n\n    modifieds.push(target);\n  }\n\n  return modifieds;\n};\n\nclass Watchers extends Array {\n  constructor(arr) {\n    super(...arr);\n  }\n\n  hasModified(key) {\n    return this.some((e) => e.hasModified(key));\n  }\n\n  hasReplaced(key) {\n    return this.some((e) => e.hasReplaced(key));\n  }\n}\n\nexport const emitUpdate = ({\n  type,\n  currentTarget,\n  target,\n  name,\n  value,\n  oldValue,\n  args,\n  path = [],\n}) => {\n  if (path && path.includes(currentTarget)) {\n    const err = getErr(\"circular_data\");\n\n    console.warn(err, {\n      currentTarget,\n      target,\n      path,\n    });\n\n    return;\n  }\n\n  let options = {\n    type,\n    target,\n    name,\n    oldValue,\n    value,\n  };\n\n  if (type === \"array\") {\n    delete options.value;\n    options.args = args;\n  }\n\n  if (currentTarget._hasWatchs) {\n    const watcher = new Watcher({\n      currentTarget,\n      ...options,\n      path: [...path],\n    });\n\n    currentTarget[WATCHS].forEach((func) => {\n      func(watcher);\n    });\n  }\n\n  currentTarget._update &&\n    currentTarget.owner.forEach((parent) => {\n      emitUpdate({\n        currentTarget: parent,\n        ...options,\n        path: [currentTarget, ...path],\n      });\n    });\n};\n\nexport default {\n  watch(callback) {\n    if (!(callback instanceof Function)) {\n      throw getErr(\"not_func\", { name: \"watch\" });\n    }\n\n    const wid = \"w-\" + getRandomId();\n\n    this[WATCHS].set(wid, callback);\n\n    return wid;\n  },\n\n  unwatch(wid) {\n    return this[WATCHS].delete(wid);\n  },\n\n  watchTick(callback, wait) {\n    if (!(callback instanceof Function)) {\n      throw getErr(\"not_func\", { name: \"watchTick\" });\n    }\n\n    return this.watch(\n      debounce((arr) => {\n        if (dataRevoked(this)) {\n          // console.warn(`The revoked object cannot use watchTick : `, this);\n          return;\n        }\n        arr = arr.filter((e) => {\n          try {\n            e.path.forEach((item) => item.xid);\n          } catch (err) {\n            return false;\n          }\n\n          return true;\n        });\n\n        callback(new Watchers(arr));\n      }, wait || 0)\n    );\n  },\n  // For manual use of emitUpdate\n  refresh(opts) {\n    const options = {\n      ...opts,\n      type: \"refresh\",\n      target: this,\n      currentTarget: this,\n    };\n    emitUpdate(options);\n  },\n  watchUntil(func, outTime = 30000) {\n    return new Promise((resolve, reject) => {\n      let f;\n      let timer;\n      const tid = this.watch(\n        (f = () => {\n          const bool = func();\n          if (bool) {\n            clearTimeout(timer);\n            this.unwatch(tid);\n            resolve(this);\n          }\n        })\n      );\n\n      timer = setTimeout(() => {\n        this.unwatch(tid);\n        const err = getErr(\"watchuntil_timeout\");\n        console.warn(err, func, this);\n        reject(err);\n      }, outTime);\n\n      f();\n    });\n  },\n};\n","import { clearOwner } from \"./accessor.mjs\";\nimport { SELF, PROXY, isxdata } from \"./main.mjs\";\nimport { isObject } from \"./public.mjs\";\nimport { emitUpdate } from \"./watch.mjs\";\n\nconst mutatingMethods = [\n  \"push\",\n  \"pop\",\n  \"shift\",\n  \"unshift\",\n  \"splice\",\n  \"reverse\",\n  \"sort\",\n  \"fill\",\n  \"copyWithin\",\n];\n\nconst holder = Symbol(\"placeholder\");\n\nfunction compareArrays(oldArray, newArray) {\n  const backupNewArray = Array.from(newArray);\n  const backupOldArray = Array.from(oldArray);\n  const deletedItems = [];\n  const addedItems = new Map();\n\n  const oldLen = oldArray.length;\n  for (let i = 0; i < oldLen; i++) {\n    const oldItem = oldArray[i];\n    const newIndex = backupNewArray.indexOf(oldItem);\n    if (newIndex > -1) {\n      backupNewArray[newIndex] = holder;\n    } else {\n      deletedItems.push(oldItem);\n    }\n  }\n\n  const newLen = newArray.length;\n  for (let i = 0; i < newLen; i++) {\n    const newItem = newArray[i];\n    const oldIndex = backupOldArray.indexOf(newItem);\n    if (oldIndex > -1) {\n      backupOldArray[oldIndex] = holder;\n    } else {\n      addedItems.set(i, newItem);\n    }\n  }\n\n  return { deletedItems, addedItems };\n}\n\nconst fn = {};\n\nconst arrayFn = Array.prototype;\n\nmutatingMethods.forEach((methodName) => {\n  if (arrayFn[methodName]) {\n    fn[methodName] = function (...args) {\n      const backupArr = Array.from(this);\n\n      const reval = arrayFn[methodName].apply(this[SELF], args);\n\n      const { deletedItems, addedItems } = compareArrays(backupArr, this);\n\n      // Refactoring objects as proxy instances\n      for (let [key, value] of addedItems) {\n        if (isxdata(value)) {\n          value._owner.push(this);\n        } else if (isObject(value)) {\n          this.__unupdate = 1;\n          this[key] = value;\n          delete this.__unupdate;\n        }\n      }\n\n      for (let item of deletedItems) {\n        clearOwner(item, this);\n      }\n\n      emitUpdate({\n        type: \"array\",\n        currentTarget: this,\n        target: this,\n        args,\n        name: methodName,\n        oldValue: backupArr,\n      });\n\n      if (reval === this[SELF]) {\n        return this[PROXY];\n      }\n\n      return reval;\n    };\n  }\n});\n\n// Object.getOwnPropertyNames(Array.prototype).forEach((methodName) => {\n[\"concat\", \"filter\", \"slice\", \"flatMap\", \"map\"].forEach((methodName) => {\n  if (methodName === \"constructor\" || mutatingMethods.includes(methodName)) {\n    return;\n  }\n\n  const oldFunc = Array.prototype[methodName];\n  if (oldFunc instanceof Function) {\n    fn[methodName] = function (...args) {\n      return oldFunc.call(Array.from(this), ...args);\n    };\n  }\n});\n\nexport default fn;\n","import { extend, getRandomId } from \"./public.mjs\";\nimport { handler as stanzHandler } from \"./accessor.mjs\";\nimport arrayFn from \"./array.mjs\";\nimport watchFn from \"./watch.mjs\";\nimport { getErr } from \"../ofa-error/main.js\";\nconst { defineProperties, getOwnPropertyDescriptor, entries } = Object;\n\nexport const SELF = Symbol(\"self\");\nexport const PROXY = Symbol(\"proxy\");\nexport const WATCHS = Symbol(\"watchs\");\nexport const ISXDATA = Symbol(\"isxdata\");\n\nexport const isxdata = (val) => val && !!val[ISXDATA];\n\nexport function constructor(data, handler = stanzHandler) {\n  // const proxySelf = new Proxy(this, handler);\n  let { proxy: proxySelf, revoke } = Proxy.revocable(this, handler);\n\n  // Determines the properties of the listener bubble\n  proxySelf._update = 1;\n\n  let watchs;\n\n  defineProperties(this, {\n    xid: { value: data.xid || getRandomId() },\n    // Save all parent objects\n    _owner: {\n      value: [],\n    },\n    owner: {\n      configurable: true,\n      get() {\n        return new Set(this._owner);\n      },\n    },\n    [ISXDATA]: {\n      value: true,\n    },\n    [SELF]: {\n      configurable: true,\n      get: () => this,\n    },\n    [PROXY]: {\n      configurable: true,\n      get: () => proxySelf,\n    },\n    // Save the object of the listener function\n    [WATCHS]: {\n      get: () => watchs || (watchs = new Map()),\n    },\n    _hasWatchs: {\n      get: () => !!watchs,\n    },\n    _revoke: {\n      value: revoke,\n    },\n    __init_is_array: {\n      value: Array.isArray(data),\n    },\n  });\n\n  Object.keys(data).forEach((key) => {\n    const descObj = getOwnPropertyDescriptor(data, key);\n    let { value, get, set } = descObj;\n\n    if (get || set) {\n      defineProperties(this, {\n        [key]: descObj,\n      });\n    } else {\n      // Set the function directly\n      proxySelf[key] = value;\n    }\n  });\n\n  return proxySelf;\n}\n\nexport default class Stanz extends Array {\n  constructor(data, options) {\n    // options是被继承的类库使用的参数，当前stanz不需要使用\n    super();\n\n    return constructor.call(this, data);\n  }\n\n  // This method is still in the experimental period\n  revoke() {\n    const self = this[SELF];\n\n    if (self._onrevokes) {\n      self._onrevokes.forEach((f) => f());\n      self._onrevokes.length = 0;\n    }\n\n    self.__unupdate = 1;\n\n    self[WATCHS].clear();\n\n    entries(this).forEach(([name, value]) => {\n      if (isxdata(value)) {\n        this[name] = null;\n      }\n    });\n\n    self._owner.forEach((parent) => {\n      entries(parent).forEach(([name, value]) => {\n        if (value === this) {\n          parent[name] = null;\n        }\n      });\n    });\n\n    delete self[SELF];\n    delete self[PROXY];\n    self._revoke();\n  }\n\n  toJSON() {\n    let obj = {};\n\n    let isPureArray = true;\n    let maxId = -1;\n\n    const initIsArray = this.__init_is_array;\n\n    Object.keys(this).forEach((k) => {\n      let val = this[k];\n\n      if (!/\\D/.test(k)) {\n        k = parseInt(k);\n        if (k > maxId) {\n          maxId = k;\n        }\n      } else {\n        isPureArray = false;\n      }\n\n      if (isxdata(val)) {\n        val = val.toJSON();\n      }\n\n      obj[k] = val;\n    });\n\n    if (isPureArray) {\n      obj.length = maxId + 1;\n      obj = Array.from(obj);\n\n      if (!obj.length && !initIsArray) {\n        // 初始化不是数组，就是对象\n        obj = {};\n      }\n    }\n    const xid = this.xid;\n    defineProperties(obj, {\n      xid: {\n        get: () => xid,\n      },\n    });\n\n    return obj;\n  }\n\n  toString() {\n    return JSON.stringify(this.toJSON());\n  }\n\n  extend(obj, desc) {\n    return extend(this, obj, desc);\n  }\n\n  get(key) {\n    if (/\\./.test(key)) {\n      const keys = key.split(\".\");\n      let target = this;\n      for (let i = 0, len = keys.length; i < len; i++) {\n        try {\n          target = target[keys[i]];\n        } catch (error) {\n          const err = getErr(\n            \"failed_to_get_data\",\n            {\n              key: keys.slice(0, i).join(\".\"),\n            },\n            error\n          );\n\n          console.warn(err, {\n            key,\n            self: this,\n          });\n\n          throw err;\n        }\n      }\n\n      return target;\n    }\n\n    return this[key];\n  }\n  set(key, value) {\n    if (/\\./.test(key)) {\n      const keys = key.split(\".\");\n      const lastKey = keys.pop();\n      let target = this;\n      for (let i = 0, len = keys.length; i < len; i++) {\n        try {\n          target = target[keys[i]];\n        } catch (error) {\n          const err = getErr(\n            \"failed_to_get_data\",\n            {\n              key: keys.slice(0, i).join(\".\"),\n            },\n            error\n          );\n\n          console.warn(err, {\n            key,\n            self: this,\n          });\n\n          throw err;\n        }\n      }\n\n      return (target[lastKey] = value);\n    }\n\n    return (this[key] = value);\n  }\n}\n\nStanz.prototype.extend(\n  { ...watchFn, ...arrayFn },\n  {\n    enumerable: false,\n  }\n);\n","import { isObject } from \"./public.mjs\";\nimport Stanz, { PROXY, isxdata } from \"./main.mjs\";\nimport { emitUpdate } from \"./watch.mjs\";\nimport { getErr } from \"../ofa-error/main.js\";\n\nconst { defineProperties } = Object;\n\nexport const setData = ({ target, key, value, receiver, type, succeed }) => {\n  const oldValue = receiver[key];\n\n  let data = value;\n  if (isxdata(data)) {\n    if (oldValue === value) {\n      return true;\n    }\n    data._owner.push(receiver);\n  } else if (isObject(value)) {\n    const desc = Object.getOwnPropertyDescriptor(target, key);\n    if (!desc || desc.hasOwnProperty(\"value\")) {\n      data = new (target.__OriginStanz || Stanz)(value, {\n        owner: receiver,\n      });\n\n      data._owner.push(receiver);\n    }\n  }\n\n  const isSame = oldValue === value;\n\n  if (!isSame && isxdata(oldValue)) {\n    clearOwner(oldValue, receiver);\n  }\n\n  const reval = succeed(data);\n\n  !isSame &&\n    // __unupdate: Let the system not trigger an upgrade, system self-use attribute\n    !target.__unupdate &&\n    emitUpdate({\n      type: type || \"set\",\n      target: receiver,\n      currentTarget: receiver,\n      name: key,\n      value,\n      oldValue,\n    });\n\n  return reval;\n};\n\n// 当数据被移除时，清除 owner 数据\nexport const clearOwner = (targetData, owner) => {\n  if (isxdata(targetData)) {\n    const index = targetData._owner.indexOf(owner);\n    if (index > -1) {\n      targetData._owner.splice(index, 1);\n    } else {\n      const err = getErr(\"error_no_owner\");\n      console.warn(err, {\n        owner,\n        mismatch: targetData,\n      });\n      console.error(err);\n    }\n  }\n};\n\nexport const handler = {\n  set(target, key, value, receiver) {\n    if (typeof key === \"symbol\") {\n      return Reflect.set(target, key, value, receiver);\n    }\n\n    // Set properties with _ prefix directly\n    if (/^_/.test(key)) {\n      if (!target.hasOwnProperty(key)) {\n        defineProperties(target, {\n          [key]: {\n            writable: true,\n            configurable: true,\n            value,\n          },\n        });\n      } else {\n        Reflect.set(target, key, value, receiver);\n      }\n      return true;\n    }\n\n    try {\n      return setData({\n        target,\n        key,\n        value,\n        receiver,\n        succeed(data) {\n          return Reflect.set(target, key, data, receiver);\n        },\n      });\n    } catch (error) {\n      const err = getErr(\n        \"failed_to_set_data\",\n        {\n          key,\n        },\n        error\n      );\n\n      console.warn(err, { target, value });\n\n      throw err;\n    }\n  },\n  deleteProperty(target, key) {\n    if (/^_/.test(key) || typeof key === \"symbol\") {\n      return Reflect.deleteProperty(target, key);\n    }\n\n    return setData({\n      target,\n      key,\n      value: undefined,\n      receiver: target[PROXY],\n      type: \"delete\",\n      succeed() {\n        return Reflect.deleteProperty(target, key);\n      },\n    });\n  },\n};\n","import { eleX } from \"./util.mjs\";\nimport { handler as stanzHandler } from \"../stanz/accessor.mjs\";\n\n// const tempEl = document.createElement(\"template\");\n\nexport const handler = {\n  set(target, key, value, receiver) {\n    if (!/\\D/.test(String(key))) {\n      return Reflect.set(target, key, value, receiver);\n    }\n\n    if (target[key] === value) {\n      // Optimise performance;\n      // fix focus remapping caused by 'text' being reset\n      return true;\n    }\n\n    if (key === \"html\") {\n      // When setting HTML values that contain single quotes, they become double quotes when set, leading to an infinite loop of updates.\n      // tempEl.innerHTML = value;\n      // value = tempEl.innerHTML;\n\n      // If custom elements are stuffed, the html values may remain inconsistent\n      return Reflect.set(target, key, value, receiver);\n    }\n\n    return stanzHandler.set(target, key, value, receiver);\n  },\n  get(target, key, receiver) {\n    if (!/\\D/.test(String(key))) {\n      return eleX(target.ele.children[key]);\n    }\n\n    return Reflect.get(target, key, receiver);\n  },\n  ownKeys(target) {\n    let keys = Reflect.ownKeys(target);\n    let len = target.ele.children.length;\n    for (let i = 0; i < len; i++) {\n      keys.push(String(i));\n    }\n    return keys;\n  },\n  getOwnPropertyDescriptor(target, key) {\n    if (typeof key === \"string\" && !/\\D/.test(key)) {\n      return {\n        enumerable: true,\n        configurable: true,\n      };\n    }\n    return Reflect.getOwnPropertyDescriptor(target, key);\n  },\n};\n","import { getErr, getErrDesc } from \"../../ofa-error/main.js\";\nimport { getRandomId, dataRevoked } from \"../../stanz/public.mjs\";\nimport stanzProto from \"../../stanz/watch.mjs\";\nimport { isxdata } from \"../../stanz/main.mjs\";\n\nimport {\n  isFunction,\n  hyphenToUpperCase,\n  isEmptyObject,\n  searchEle,\n  removeArrayValue as remove,\n} from \"../public.mjs\";\nimport { eleX } from \"../util.mjs\";\n\nexport const renderExtends = {\n  beforeConvert() {},\n  afterConvert() {},\n  beforeRender() {},\n  render() {},\n};\n\nconst getRevokes = (target) => target.__revokes || (target.__revokes = []);\nconst addRevoke = (target, revoke) => getRevokes(target).push(revoke);\n\nconst convertToFunc = (expr, data, opts) => {\n  const funcStr = `\nconst dataRevoked = ${dataRevoked.toString()};\nconst [$event] = $args;\nconst {data, errCall} = this;\nif(dataRevoked(data)){\n  return;\n}\ntry{\n  with(data){\n    return ${expr};\n  }\n}catch(error){\n  if(data.ele && !data.ele.isConnected){\n    return;\n  }\n  if(errCall){\n    const result = errCall(error);\n    if(result !== false){\n      console.error(error);\n    }\n  }else{\n    console.error(error);\n  }\n}\n`;\n  return new Function(\"...$args\", funcStr).bind({ data, ...opts });\n};\n\nexport function render({\n  data,\n  target,\n  template,\n  temps,\n  isRenderSelf, // 是否将当前target元素也渲染处理\n  ...otherOpts\n}) {\n  const content = template && template.innerHTML;\n\n  if (content) {\n    target.innerHTML = content;\n  }\n\n  renderExtends.beforeRender({\n    target,\n  });\n\n  const texts = searchEle(target, \"xtext\");\n\n  const tasks = [];\n  const revokes = getRevokes(target);\n\n  // Styles with data() function to monitor and correct rendering\n  searchEle(target, \"style\").forEach((el) => {\n    const originStyle = el.innerHTML;\n\n    if (/data\\(.+\\)/.test(originStyle)) {\n      const matchs = Array.from(new Set(originStyle.match(/data\\(.+?\\)/g))).map(\n        (dataExpr) => {\n          const expr = dataExpr.replace(/data\\((.+)\\)/, \"$1\");\n          const func = convertToFunc(expr, data);\n\n          return {\n            dataExpr,\n            func,\n          };\n        }\n      );\n\n      const renderStyle = () => {\n        let afterStyle = originStyle;\n\n        matchs.forEach(({ dataExpr, func }) => {\n          afterStyle = afterStyle.replace(dataExpr, func());\n        });\n\n        if (el.innerHTML !== afterStyle) {\n          el.innerHTML = afterStyle;\n        }\n      };\n      tasks.push(renderStyle);\n\n      const revokeStyle = () => {\n        matchs.length = 0;\n        remove(tasks, renderStyle);\n        remove(getRevokes(el), revokeStyle);\n        remove(revokes, revokeStyle);\n      };\n\n      addRevoke(el, revokeStyle);\n      revokes.push(revokeStyle);\n    }\n  });\n\n  // Render text nodes\n  texts.forEach((el) => {\n    const textEl = document.createTextNode(\"\");\n    const { parentNode } = el;\n    parentNode.insertBefore(textEl, el);\n    parentNode.removeChild(el);\n\n    const func = convertToFunc(el.getAttribute(\"expr\"), data);\n    const renderFunc = () => {\n      const content = func();\n      if (textEl.textContent !== String(content)) {\n        textEl.textContent = content;\n      }\n    };\n    tasks.push(renderFunc);\n\n    const textRevoke = () => {\n      remove(revokes, textRevoke);\n      remove(tasks, renderFunc);\n      remove(getRevokes(textEl), textRevoke);\n    };\n    revokes.push(textRevoke);\n    addRevoke(textEl, textRevoke);\n  });\n\n  const eles = searchEle(target, `[x-bind-data]`);\n\n  if (isRenderSelf && target.matches(`[x-bind-data]`)) {\n    eles.unshift(target);\n  }\n\n  // Render properties based on expressions\n  eles.forEach((el) => {\n    const bindData = JSON.parse(el.getAttribute(\"x-bind-data\"));\n\n    const $el = eleX(el);\n\n    for (let [actionName, arr] of Object.entries(bindData)) {\n      arr.forEach((args) => {\n        try {\n          const { always } = $el[actionName];\n          let afterArgs = [];\n\n          let workResult;\n\n          const work = () => {\n            const [key, expr] = args;\n\n            const func = convertToFunc(expr, data, {\n              errCall: (error) => {\n                const errorExpr = `:${key}=\"${expr}\"`;\n                const err = getErr(\n                  \"render_el_error\",\n                  {\n                    expr: errorExpr,\n                  },\n                  error\n                );\n\n                console.warn(err, {\n                  target: $el.ele,\n                  errorExpr,\n                });\n                console.error(err);\n\n                return false;\n              },\n            });\n\n            afterArgs = [key, func];\n\n            const reval = $el[actionName](...afterArgs, {\n              actionName,\n              target: $el,\n              data,\n              beforeArgs: args,\n              args: afterArgs,\n            });\n\n            renderExtends.render({\n              step: \"refresh\",\n              args,\n              name: actionName,\n              target: $el,\n            });\n\n            return reval;\n          };\n\n          let clearRevs = () => {\n            const { revoke: methodRevoke } = $el[actionName];\n\n            if (methodRevoke) {\n              methodRevoke({\n                actionName,\n                target: $el,\n                data,\n                beforeArgs: args,\n                args: afterArgs,\n                result: workResult,\n              });\n            }\n\n            remove(revokes, clearRevs);\n            remove(getRevokes(el), clearRevs);\n            remove(tasks, work);\n            clearRevs = null;\n          };\n\n          if (always) {\n            // Run every data update\n            tasks.push(work);\n          } else {\n            workResult = work();\n          }\n\n          revokes.push(clearRevs);\n          if (el !== target) {\n            addRevoke(el, clearRevs);\n          }\n        } catch (error) {\n          const err = getErr(\n            \"xhear_eval\",\n            {\n              name: actionName,\n              arg0: args[0],\n              arg1: args[1],\n            },\n            error\n          );\n          console.warn(err, el);\n          throw err;\n        }\n      });\n    }\n\n    el.removeAttribute(\"x-bind-data\");\n\n    el._bindingRendered = true;\n    el.dispatchEvent(new Event(\"binding-rendered\"));\n  });\n\n  if (!target.__render_temps && !isEmptyObject(temps)) {\n    target.__render_temps = temps;\n  }\n\n  if (target.__render_data && target.__render_data !== data) {\n    const err = getErr(\"xhear_listen_already\");\n\n    console.warn(err, {\n      element: target,\n      old: target.__render_data,\n      new: data,\n    });\n\n    throw err;\n  }\n\n  target.__render_data = data;\n\n  if (tasks.length) {\n    tasks.forEach((f) => f());\n\n    // After the data changes, traverse the rendering tasks\n    const wid = data.watchTick((e) => {\n      if (tasks.length) {\n        tasks.forEach((f) => f());\n      } else {\n        data.unwatch(wid);\n      }\n    });\n  }\n\n  renderExtends.render({ step: \"init\", target });\n}\n\nconst convertEl = (el) => {\n  const { tagName } = el;\n\n  if (tagName === \"TEMPLATE\") {\n    return;\n  }\n\n  if (tagName) {\n    // Converting elements\n    const obj = {};\n\n    Array.from(el.attributes).forEach((attr) => {\n      const matchData = /(.*):(.+)/.exec(attr.name);\n\n      if (!matchData) {\n        return;\n      }\n\n      let [, actionName, param0] = matchData;\n\n      if (!actionName) {\n        actionName = \"prop\";\n      }\n\n      const targetActions = obj[actionName] || (obj[actionName] = []);\n\n      targetActions.push([param0, attr.value]);\n\n      el.removeAttribute(attr.name);\n    });\n\n    const keys = Object.keys(obj);\n\n    if (keys.length) {\n      el.setAttribute(\"x-bind-data\", JSON.stringify(obj));\n    }\n  }\n\n  Array.from(el.children).forEach(convertEl);\n};\n\nconst searchTemp = (template, expr, func) => {\n  const rearr = Array.from(template.content.querySelectorAll(expr));\n\n  if (func) {\n    rearr.forEach(func);\n  }\n\n  return rearr;\n};\n\nlet isWarned;\n\nexport const convert = (template) => {\n  let temps = {};\n  const codeEls = {};\n\n  renderExtends.beforeConvert({\n    template,\n  });\n\n  searchTemp(template, \"code\", (code) => {\n    const cid = getRandomId();\n    code.setAttribute(\"code-id\", cid);\n\n    codeEls[cid] = code.innerHTML;\n    code.innerHTML = \"\";\n  });\n\n  template.innerHTML = template.innerHTML.replace(\n    /{{(.+?)}}/g,\n    (str, match) => {\n      return `<xtext expr=\"${match}\"></xtext>`;\n    }\n  );\n\n  const tempName = template.getAttribute(\"name\");\n\n  if (tempName) {\n    const tempChilds = template.content.children;\n    if (tempChilds.length > 1) {\n      if (!isWarned) {\n        const err = getErr(\"temp_multi_child\");\n        console.warn(err, {\n          content: template.content,\n        });\n        isWarned = 1;\n      }\n\n      const wrapName = `wrapper-${tempName}`;\n      template.innerHTML = `<div ${wrapName} style=\"display:contents\">${template.innerHTML}</div>`;\n      console.warn(\n        getErr(\"temp_wrap_child\", {\n          tempName,\n          len: tempChilds.length,\n          wrapName,\n        })\n      );\n    }\n    temps[tempName] = template;\n    template.remove();\n  }\n\n  searchTemp(template, \"x-fill:not([name])\", (fillEl) => {\n    if (fillEl.querySelector(\"x-fill:not([name])\")) {\n      throw getErr(\"xhear_dbfill_noname\");\n    }\n\n    if (fillEl.innerHTML.trim()) {\n      const tid = `t${getRandomId()}`;\n      fillEl.setAttribute(\"name\", tid);\n\n      const temp = document.createElement(\"template\");\n      temp.setAttribute(\"name\", tid);\n      temp.innerHTML = fillEl.innerHTML;\n      fillEl.innerHTML = \"\";\n      fillEl.appendChild(temp);\n    }\n  });\n\n  searchTemp(template, \"x-if,x-else-if,x-else\", (condiEl) => {\n    const firstChild = condiEl.children[0];\n    if (!firstChild || firstChild.tagName !== \"TEMPLATE\") {\n      condiEl.innerHTML = `<template condition>${condiEl.innerHTML}</template>`;\n    }\n  });\n\n  searchTemp(template, \"template\", (e) => {\n    const newTemps = convert(e);\n\n    Object.keys(newTemps).forEach((tempName) => {\n      if (temps[tempName]) {\n        throw getErr(\"xhear_temp_exist\", {\n          name: tempName,\n        });\n      }\n    });\n\n    temps = { ...temps, ...newTemps };\n  });\n\n  Array.from(template.content.children).forEach((el) => convertEl(el));\n\n  // Restore the contents of the code\n  for (let [key, value] of Object.entries(codeEls)) {\n    searchTemp(template, `[code-id=\"${key}\"]`, (el) => {\n      el.removeAttribute(\"code-id\");\n      // el.innerHTML = htmlEncode(value);\n      el.innerHTML = value;\n    });\n  }\n\n  renderExtends.afterConvert({\n    template,\n    temps,\n  });\n\n  return temps;\n};\n\nconst getVal = (val) => {\n  if (isFunction(val)) {\n    return val();\n  }\n\n  return val;\n};\n\nconst defaultData = {\n  prop(...args) {\n    let [name, value] = args;\n\n    if (args.length === 1) {\n      return this[name];\n    }\n\n    value = getVal(value);\n    name = hyphenToUpperCase(name);\n\n    this.set(name, value);\n  },\n  attr(...args) {\n    let [name, value] = args;\n\n    const { ele } = this;\n\n    if (args.length === 1) {\n      return ele.getAttribute(name);\n    }\n\n    value = getVal(value);\n\n    if (value === false) {\n      value = null;\n    } else if (value === true) {\n      value = \"\";\n    }\n\n    if (value === null || value === undefined) {\n      ele.removeAttribute(name);\n    } else if (ele.getAttribute(name) != value) {\n      ele.setAttribute(name, value);\n    }\n  },\n  class(...args) {\n    let [name, value] = args;\n\n    if (args.length === 1) {\n      return this.ele.classList.contains(name);\n    }\n\n    value = getVal(value);\n\n    if (value) {\n      this.ele.classList.add(name);\n    } else {\n      this.ele.classList.remove(name);\n    }\n  },\n  watch(...args) {\n    if (args.length < 3) {\n      return stanzProto.watch.apply(this, args);\n    }\n\n    const options = args[2];\n    const { beforeArgs, data: target } = options;\n    const [selfPropName, targetPropName] = beforeArgs;\n    const propName = hyphenToUpperCase(selfPropName);\n\n    const setData = () => {\n      let val = this.get(propName);\n      target.set(targetPropName, val);\n    };\n\n    const wid = this.watch((e) => {\n      if (e.hasModified(propName)) {\n        setData();\n      }\n    });\n\n    // Initialize once\n    setData();\n\n    return () => {\n      this.unwatch(wid);\n    };\n  },\n};\n\ndefaultData.prop.always = true;\ndefaultData.attr.always = true;\ndefaultData.class.always = true;\n\ndefaultData.prop.revoke = ({ target, args, $ele, data }) => {\n  const propName = args[0];\n\n  const oldVal = target.get(propName);\n  if (isxdata(oldVal)) {\n    target.set(propName, {});\n  }\n};\n\ndefaultData.watch.revoke = (e) => {\n  e.result();\n  const propName = e.beforeArgs[1];\n\n  const oldVal = e.data.get(propName);\n  if (isxdata(oldVal)) {\n    e.data.set(propName, {});\n  }\n};\n\nexport default defaultData;\n","import { hyphenToUpperCase } from \"../public.mjs\";\nimport { dataRevoked } from \"../../stanz/public.mjs\";\nimport { getErr } from \"../../ofa-error/main.js\";\n\nconst syncFn = {\n  sync(propName, targetName, options) {\n    if (!options) {\n      throw getErr(\"xhear_sync_no_options\");\n    }\n\n    [propName, targetName] = options.beforeArgs;\n\n    propName = hyphenToUpperCase(propName);\n    targetName = hyphenToUpperCase(targetName);\n\n    const { data } = options;\n\n    const val = data.get(targetName);\n\n    if (val instanceof Object) {\n      const err = getErr(\"xhear_sync_object_value\", { targetName });\n      console.warn(err, data);\n      throw err;\n    }\n\n    this[propName] = data.get(targetName);\n\n    const wid1 = this.watch((e) => {\n      if (e.hasModified(propName)) {\n        try {\n          const value = this.get(propName);\n          data.set(targetName, value);\n        } catch (err) {\n          // Errors are reported when a proxy is revoked.\n          // console.warn(err);\n        }\n      }\n    });\n\n    const wid2 = data.watch((e) => {\n      if (e.hasModified(targetName)) {\n        try {\n          const value = data.get(targetName);\n          this.set(propName, value);\n        } catch (err) {\n          // Errors are reported when a proxy is revoked.\n          // console.warn(err);\n        }\n      }\n    });\n\n    return () => {\n      this.unwatch(wid1);\n      if (!dataRevoked(data)) {\n        data.unwatch(wid2);\n      }\n    };\n  },\n};\n\nsyncFn.sync.revoke = (e) => {\n  e.result();\n};\n\nexport default syncFn;\n","import { getErr } from \"../ofa-error/main.js\";\n\nfunction getBindOptions(name, func, options) {\n  let revoker;\n  if (options) {\n    const beforeValue = options.beforeArgs[1];\n\n    if (!/[^\\d\\w_\\$\\.]/.test(beforeValue)) {\n      func = options.data.get(beforeValue);\n      if (!func) {\n        const tag = options.data.tag;\n        const err = getErr(\"not_found_func\", {\n          name: beforeValue,\n          tag: tag ? `\"${tag}\"` : \"\",\n        });\n        console.warn(err, \" target =>\", options.data);\n        throw err;\n      }\n      func = func.bind(options.data);\n    }\n\n    revoker = () => this.ele.removeEventListener(name, func);\n  }\n\n  return { revoker, name, func };\n}\n\nconst eventFn = {\n  on(...args) {\n    const { revoker, name, func } = getBindOptions.call(this, ...args);\n\n    this.ele.addEventListener(name, func);\n\n    if (revoker) {\n      return revoker;\n    }\n\n    return this;\n  },\n  one(...args) {\n    const { revoker, name, func } = getBindOptions.call(this, ...args);\n\n    let callback = (e) => {\n      this.off(name, callback);\n      func(e);\n    };\n\n    this.ele.addEventListener(name, callback);\n\n    if (revoker) {\n      return revoker;\n    }\n\n    return this;\n  },\n  off(name, func) {\n    this.ele.removeEventListener(name, func);\n    return this;\n  },\n  emit(name, opts) {\n    const options = { ...opts };\n\n    let data;\n    if (options.hasOwnProperty(\"data\")) {\n      data = options.data;\n      delete options.data;\n    }\n\n    let event;\n\n    if (name instanceof Event) {\n      event = name;\n    } else if (name) {\n      event = new Event(name, { bubbles: true, ...options });\n    }\n\n    event.data = data;\n\n    this.ele.dispatchEvent(event);\n\n    return this;\n  },\n};\n\neventFn.on.revoke = (e) => {\n  e.result();\n};\n\neventFn.one.revoke = (e) => {\n  e.result();\n};\n\nexport default eventFn;\n","import { isFunction } from \"./public.mjs\";\nimport { createXEle, eleX } from \"./util.mjs\";\nimport { emitUpdate } from \"../stanz/watch.mjs\";\n\nconst originSplice = (ele, start, count, ...items) => {\n  const { children } = ele;\n  if (start < 0) {\n    start += ele.children.length;\n  }\n\n  if (count === undefined) {\n    count = ele.children.length - start;\n  }\n\n  const removes = [];\n  for (let i = start, len = start + count; i < len; i++) {\n    const target = children[i];\n    removes.push(target);\n  }\n\n  removes.forEach((el) => el && el.remove());\n\n  if (items.length) {\n    const frag = document.createDocumentFragment();\n    items.forEach((e) => frag.append(createXEle(e).ele));\n\n    const positionEle = children[start];\n    if (positionEle) {\n      ele.insertBefore(frag, positionEle);\n    } else {\n      ele.appendChild(frag);\n    }\n  }\n\n  return removes;\n};\n\nconst mutatingMethods = [\n  \"push\",\n  \"pop\",\n  \"shift\",\n  \"unshift\",\n  \"splice\",\n  \"reverse\",\n  \"sort\",\n  \"fill\",\n  \"copyWithin\",\n];\n\nconst likeArrayFn = {\n  push(...args) {\n    const { ele } = this;\n\n    originSplice(ele, ele.children.length, 0, ...args);\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"push\",\n    });\n\n    return ele.children.length;\n  },\n\n  pop(...args) {\n    const { ele } = this;\n\n    const targets = originSplice(ele, ele.children.length - 1, 1, ...args);\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"pop\",\n    });\n\n    return eleX(targets[0]);\n  },\n\n  shift(...args) {\n    const { ele } = this;\n\n    const targets = originSplice(ele, 0, 1, ...args);\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"shift\",\n    });\n\n    return eleX(targets[0]);\n  },\n\n  unshift(...args) {\n    const { ele } = this;\n\n    originSplice(ele, 0, 0, ...args);\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"unshift\",\n    });\n\n    return ele.children.length;\n  },\n  splice(...args) {\n    const reVal = originSplice(this.ele, ...args);\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"splice\",\n    });\n\n    return reVal.map(eleX);\n  },\n  reverse(...args) {\n    const childs = Array.from(this.ele.childNodes);\n\n    arrayFn.reverse.call(childs, ...args);\n\n    const frag = document.createDocumentFragment();\n\n    childs.forEach((ele) => {\n      // Identify internal operations to prevent detached corrections\n      ele.__internal = 1;\n      frag.append(ele);\n    });\n\n    this.ele.append(frag);\n\n    childs.forEach((ele) => {\n      delete ele.__internal;\n    });\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"reverse\",\n    });\n\n    return this;\n  },\n  sort(...args) {\n    const childs = Array.from(this.ele.children).map(eleX);\n\n    arrayFn.sort.call(childs, ...args);\n\n    const frag = document.createDocumentFragment();\n\n    childs.forEach((e) => {\n      e.ele.__internal = 1;\n      frag.append(e.ele);\n    });\n\n    this.ele.append(frag);\n\n    childs.forEach((e) => {\n      delete e.ele.__internal;\n    });\n\n    emitUpdate({\n      type: \"array\",\n      currentTarget: this,\n      target: this,\n      args,\n      name: \"sort\",\n    });\n\n    return this;\n  },\n};\n\nconst arrayFn = Array.prototype;\n\nObject.keys(Object.getOwnPropertyDescriptors(arrayFn)).forEach((key) => {\n  if (\n    key === \"constructor\" ||\n    key === \"length\" ||\n    mutatingMethods.includes(key)\n  ) {\n    return;\n  }\n\n  const targetFunc = arrayFn[key];\n\n  if (isFunction(targetFunc)) {\n    likeArrayFn[key] = function (...args) {\n      return targetFunc.apply(Array.from(this.ele.children).map(eleX), args);\n    };\n  }\n});\n\nexport default class LikeArray {}\n\nfor (let [name, value] of Object.entries(likeArrayFn)) {\n  Object.defineProperty(LikeArray.prototype, name, {\n    value,\n  });\n}\n","import Stanz, { isxdata } from \"./main.mjs\";\n\nconst stanz = (data) => {\n  return new Stanz(data);\n};\n\nObject.assign(stanz, { is: isxdata });\n\nexport default stanz;\n\nexport { stanz, Stanz };\n","import stanz from \"../stanz/base.mjs\";\nimport { emitUpdate } from \"../stanz/watch.mjs\";\nimport { mergeObjects, searchEle } from \"./public.mjs\";\n\nconst { defineProperty, assign } = Object;\n\nconst hasValueEleNames = [\"input\", \"textarea\", \"select\"];\n\nconst setKeys = (keys, $ele) => {\n  const { ele } = $ele;\n\n  keys.forEach((k) => {\n    if (k in ele) {\n      let isNum = false;\n      defineProperty($ele, k, {\n        enumerable: true,\n        get: () => {\n          let val = ele[k];\n          if (isNum) {\n            if (/\\D/.test(val)) {\n              isNum = false;\n            } else {\n              val = Number(val);\n            }\n          }\n          return val;\n        },\n        set: (val) => {\n          isNum = typeof val === \"number\";\n          ele[k] = val;\n        },\n      });\n    }\n  });\n};\n\nconst formEleNames = new Set([\n  ...hasValueEleNames,\n  \"option\",\n  \"button\",\n  \"label\",\n  \"fieldset\",\n  \"legend\",\n  \"form\",\n]);\n\nconst bindProp = ($ele, opts = {}) => {\n  const { name: keyName, type } = opts;\n\n  const { ele } = $ele;\n  let old = ele[keyName];\n\n  $ele.on(type, () => {\n    emitUpdate({\n      type: \"set\",\n      target: $ele,\n      currentTarget: $ele,\n      name: keyName,\n      value: ele[keyName],\n      oldValue: old,\n    });\n\n    old = ele[keyName];\n  });\n};\n\nexport const initFormEle = ($ele) => {\n  const { tag } = $ele;\n\n  if (!formEleNames.has(tag)) {\n    return;\n  }\n\n  setKeys([\"type\", \"name\", \"disabled\"], $ele);\n\n  switch (tag) {\n    case \"input\":\n      initInput($ele);\n      break;\n    case \"textarea\":\n      setKeys([\"value\"], $ele);\n      bindProp($ele, { name: \"value\", type: \"input\" });\n      break;\n    case \"option\":\n      setKeys([\"selected\", \"value\"], $ele);\n      break;\n    case \"select\":\n      {\n        const { ele } = $ele;\n        $ele.__unupdate = 1;\n        $ele.value = ele.value;\n        delete $ele.__unupdate;\n\n        $ele.watch(() => {\n          ele.value = $ele.value;\n        });\n        $ele.on(\"change\", () => {\n          $ele.value = ele.value;\n        });\n      }\n      break;\n  }\n};\n\nconst initInput = ($ele) => {\n  const type = $ele.attr(\"type\");\n\n  switch (type) {\n    case \"file\":\n      setKeys([\"multiple\", \"files\"], $ele);\n      bindProp($ele, { name: \"files\", type: \"change\" });\n      break;\n    case \"checkbox\":\n      setKeys([\"checked\", \"multiple\", \"value\"], $ele);\n      bindProp($ele, { name: \"checked\", type: \"change\" });\n      break;\n    case \"radio\":\n      setKeys([\"checked\", \"value\"], $ele);\n      bindProp($ele, { name: \"checked\", type: \"change\" });\n      break;\n    case \"text\":\n    default:\n      setKeys([\"placeholder\", \"value\"], $ele);\n      bindProp($ele, { name: \"value\", type: \"input\" });\n      break;\n  }\n};\n\nconst getFormData = (target, expr) => {\n  const data = {};\n\n  target.all(expr).forEach(($el) => {\n    const { name, tag, ele } = $el;\n\n    if (tag === \"input\") {\n      switch ($el.type) {\n        case \"checkbox\":\n          if (!(name in data)) {\n            data[name] = [];\n          }\n\n          if (ele.checked) {\n            data[name].push(ele.value);\n          }\n          break;\n        case \"radio\":\n          if (ele.checked) {\n            data[name] = ele.value;\n          }\n          break;\n        case \"file\":\n          data[name] = ele.files;\n          break;\n        default:\n          data[name] = ele.value;\n      }\n    } else if (tag === \"textarea\") {\n      data[name] = ele.value;\n    } else if (tag === \"select\") {\n      const selectedsOpt = searchEle(ele, `option:checked`);\n\n      if (ele.multiple) {\n        data[name] = selectedsOpt.map((e) => e.value || e.textContent);\n      } else {\n        const [e] = selectedsOpt;\n        data[name] = e.value || e.textContent;\n      }\n    } else {\n      // custom element\n      data[name] = $el.value;\n    }\n  });\n\n  return data;\n};\n\nexport default {\n  // This method is still being tested\n  formData(expr, opts = { wait: 200 }) {\n    const data = stanz({});\n\n    assign(data, getFormData(this, expr || \"input,select,textarea\"));\n\n    const wid1 = this.watchTick((e) => {\n      const newData = getFormData(this, expr || \"input,select,textarea\");\n      mergeObjects(data, newData);\n    }, opts.wait);\n\n    const wid2 = data.watchTick((e) => {\n      resetValue(this, expr || \"input,select,textarea\", data);\n    });\n\n    const _this = this;\n\n    const oldRevoke = data.revoke;\n    data.extend({\n      revoke() {\n        _this.unwatch(wid1);\n        data.unwatch(wid2);\n        oldRevoke.call(this);\n      },\n    });\n\n    return data;\n  },\n};\n\nfunction resetValue(el, expr, data) {\n  const eles = el.all(expr);\n\n  Object.keys(data).forEach((name) => {\n    const targets = eles.filter((e) => e.attr(\"name\") === name);\n\n    if (targets.length === 0) {\n      return;\n    }\n\n    const val = data[name];\n    const target = targets[0];\n    const type = target.attr(\"type\");\n    if (targets.length === 1) {\n      let isUseValue = true;\n\n      if (target.tag === \"input\" && (type === \"radio\" || type === \"checkbox\")) {\n        isUseValue = false;\n      }\n\n      if (isUseValue) {\n        if (target.value !== val) {\n          target.value = val;\n        }\n        return;\n      }\n    }\n\n    // checkbox or radio\n    targets.forEach((e) => {\n      switch (e.attr(\"type\")) {\n        case \"radio\":\n          if (e.value === val) {\n            e.checked = true;\n          } else {\n            e.checked = false;\n          }\n          break;\n        case \"checkbox\":\n          e.checked = val.includes(e.value);\n          break;\n      }\n    });\n  });\n}\n","import { getType } from \"../stanz/public.mjs\";\n\nconst cssHandler = {\n  set(target, key, value, receiver) {\n    target._ele.style[key] = value;\n    Reflect.set(target, key, value, receiver);\n    return true;\n  },\n  get(target, key, receiver) {\n    if (key === \"length\") {\n      return 0;\n    }\n\n    if (key.startsWith && key.startsWith(\"--\")) {\n      return getComputedStyle(target._ele).getPropertyValue(key);\n    }\n\n    const { style } = target._ele;\n    if (Array.from(style).includes(key)) {\n      return style[key];\n    }\n\n    return getComputedStyle(target._ele)[key];\n  },\n};\n\nclass XhearCSS {\n  constructor($el) {\n    const obj = {};\n\n    Object.defineProperty(obj, \"_ele\", {\n      enumerable: false,\n      get: () => $el.ele,\n    });\n\n    const { style } = $el.ele;\n\n    Array.from(style).forEach((key) => {\n      obj[key] = style[key];\n    });\n\n    return ($el._css = new Proxy(obj, cssHandler));\n  }\n}\n\nexport default {\n  get css() {\n    return new XhearCSS(this);\n  },\n  set css(d) {\n    if (getType(d) == \"string\") {\n      this.ele.style = d;\n      return;\n    }\n\n    let { style } = this;\n\n    // Covering the old style\n    let nextKeys = Object.keys(d);\n\n    // Clear the unused key\n    Array.from(style).forEach((k) => {\n      if (!nextKeys.includes(k)) {\n        style[k] = \"\";\n      }\n    });\n\n    Object.assign(style, d);\n  },\n};\n","import { eleX, createXEle } from \"./util.mjs\";\nimport { getType } from \"../stanz/public.mjs\";\n\nexport default function $(expr) {\n  if (getType(expr) === \"string\" && !/<.+>/.test(expr)) {\n    const ele = document.querySelector(expr);\n\n    return eleX(ele);\n  }\n\n  return createXEle(expr);\n}\n\nObject.defineProperties($, {\n  // Convenient objects for use as extensions\n  extensions: {\n    value: {},\n  },\n});\n","import { getErr, getErrDesc } from \"../ofa-error/main.js\";\nimport { getType } from \"../stanz/public.mjs\";\nimport {\n  hyphenToUpperCase,\n  capitalizeFirstLetter,\n  toDashCase,\n} from \"./public.mjs\";\nimport { convert, render } from \"./render/render.mjs\";\nimport { eleX } from \"./util.mjs\";\nimport $ from \"./dollar.mjs\";\n\nconst COMPS = {};\n\nexport const renderElement = ({ defaults, ele, template, temps }) => {\n  let $ele;\n\n  try {\n    const data = {\n      ...deepCopyData(defaults.data, defaults.tag),\n      ...defaults.attrs,\n    };\n\n    defaults.attrs &&\n      Object.keys(defaults.attrs).forEach((name) => {\n        const value = ele.getAttribute(toDashCase(name));\n        if (value !== null && value !== undefined) {\n          data[name] = value;\n        }\n      });\n\n    $ele = eleX(ele);\n\n    defaults.proto && $ele.extend(defaults.proto, { enumerable: false });\n\n    for (let [key, value] of Object.entries(data)) {\n      if (!$ele.hasOwnProperty(key)) {\n        $ele[key] = value;\n      }\n    }\n\n    if (defaults.temp) {\n      const root = ele.attachShadow({ mode: \"open\" });\n\n      root.innerHTML = template.innerHTML;\n\n      render({\n        target: root,\n        data: $ele,\n        temps,\n      });\n    }\n\n    defaults.ready && defaults.ready.call($ele);\n  } catch (error) {\n    throw getErr(\n      \"xhear_reander_err\",\n      {\n        tag: ele.tagName.toLowerCase(),\n      },\n      error\n    );\n  }\n\n  if (defaults.watch) {\n    const wen = Object.entries(defaults.watch);\n\n    $ele.watchTick((e) => {\n      for (let [name, func] of wen) {\n        const names = name.split(\",\");\n\n        if (names.length >= 2) {\n          if (names.some((name) => e.hasModified(name))) {\n            func.call(\n              $ele,\n              names.map((name) => $ele[name]),\n              {\n                watchers: e,\n              }\n            );\n          }\n        } else {\n          if (e.hasModified(name)) {\n            func.call($ele, $ele[name], {\n              watchers: e,\n            });\n          }\n        }\n      }\n    });\n\n    for (let [name, func] of wen) {\n      const names = name.split(\",\");\n      if (names.length >= 2) {\n        func.call(\n          $ele,\n          names.map((name) => $ele[name]),\n          {}\n        );\n      } else {\n        func.call($ele, $ele[name], {});\n      }\n    }\n  }\n};\n\nexport const register = (opts = {}) => {\n  const defaults = {\n    // Registered component name\n    tag: \"\",\n    // Body content string\n    temp: \"\",\n    // Initialization data after element creation\n    data: {},\n    // Values that will not be traversed\n    proto: {},\n    // Keys bound to attributes\n    // attrs: {},\n    // The listener function for the element\n    // watch: {},\n    // Function triggered when the component is created (data initialization complete)\n    // created() { },\n    // Function triggered after component data initialization is complete (initial rendering completed)\n    // ready() { },\n    // Functions that are added to the document trigger\n    // attached() { },\n    // Functions triggered by moving out of the document\n    // detached() { },\n    // The container element is changed\n    // slotchange() { }\n    ...opts,\n  };\n\n  const { fn, extensions } = $;\n  if (fn) {\n    // 检查 proto 和 data 上的key，是否和fn上的key冲突\n    Object.keys(defaults.data).forEach((name) => {\n      if (fn.hasOwnProperty(name)) {\n        throw getErr(\"invalid_key\", {\n          compName: defaults.tag,\n          targetName: \"data\",\n          name,\n        });\n      }\n    });\n    Object.keys(defaults.proto).forEach((name) => {\n      if (fn.hasOwnProperty(name)) {\n        console.warn(\n          getErrDesc(\"invalid_key\", {\n            compName: defaults.tag,\n            targetName: \"proto\",\n            name,\n          }),\n          opts\n        );\n      }\n    });\n  }\n\n  let template, temps, name;\n\n  try {\n    validateTagName(defaults.tag);\n\n    defaults.data = deepCopyData(defaults.data, defaults.tag);\n\n    name = capitalizeFirstLetter(hyphenToUpperCase(defaults.tag));\n\n    if (COMPS[name]) {\n      throw getErr(\"xhear_register_exists\", { name });\n    }\n\n    template = document.createElement(\"template\");\n    template.innerHTML = defaults.temp;\n    temps = convert(template);\n  } catch (error) {\n    throw getErr(\"xhear_register_err\", { tag: defaults.tag }, error);\n  }\n\n  const getAttrKeys = (attrs) => {\n    let attrKeys;\n\n    if (attrs instanceof Array) {\n      attrKeys = [...attrs];\n    } else {\n      attrKeys = Object.keys(attrs);\n    }\n\n    return attrKeys;\n  };\n\n  const XElement = (COMPS[name] = class extends HTMLElement {\n    constructor(...args) {\n      super(...args);\n\n      const $ele = eleX(this);\n\n      defaults.created && defaults.created.call($ele);\n\n      if (defaults.attrs) {\n        const attrKeys = getAttrKeys(defaults.attrs);\n\n        // fix self attribule value\n        $ele.watchTick((e) => {\n          attrKeys.forEach((key) => {\n            if (e.hasModified(key)) {\n              const val = $ele[key];\n              const attrName = toDashCase(key);\n              const oldVal = this.getAttribute(attrName);\n              if (val === null || val === undefined) {\n                this.removeAttribute(attrName);\n              } else if (oldVal !== val) {\n                let reval = val;\n\n                const valType = getType(val);\n\n                if (valType === \"number\" && oldVal === String(val)) {\n                  // Setting the number will cause an infinite loop\n                  return;\n                }\n                if (valType === \"object\") {\n                  // Setting the object will cause an infinite loop\n                  reval = JSON.stringify(reval);\n                  if (reval === oldVal) {\n                    return;\n                  }\n                }\n\n                this.setAttribute(attrName, reval);\n              }\n            }\n          });\n        });\n\n        // The data set before initialization needs to be reflected in attrs\n        attrKeys.forEach((key) => {\n          if (\n            $ele[key] !== null &&\n            $ele[key] !== undefined &&\n            $ele[key] !== defaults.attrs[key]\n          ) {\n            this.setAttribute(toDashCase(key), $ele[key]);\n          }\n        });\n      }\n\n      renderElement({\n        defaults,\n        ele: this,\n        template,\n        temps,\n      });\n    }\n\n    connectedCallback() {\n      if (isInternal(this)) {\n        return;\n      }\n\n      defaults.attached && defaults.attached.call(eleX(this));\n      extensions.afterAttached && extensions.afterAttached(eleX(this));\n    }\n\n    disconnectedCallback() {\n      if (isInternal(this)) {\n        return;\n      }\n\n      defaults.detached && defaults.detached.call(eleX(this));\n      extensions.afterDetached && extensions.afterDetached(eleX(this));\n    }\n\n    attributeChangedCallback(name, oldValue, newValue) {\n      const $ele = eleX(this);\n\n      if (!/[^\\d.]/.test(newValue) && typeof $ele[name] === \"number\") {\n        newValue = Number(newValue);\n      }\n\n      $ele[hyphenToUpperCase(name)] = newValue;\n    }\n\n    static get observedAttributes() {\n      return getAttrKeys(defaults.attrs || {}).map((e) => toDashCase(e));\n    }\n  });\n\n  if (document.readyState !== \"loading\") {\n    customElements.define(defaults.tag, XElement);\n  } else {\n    const READYSTATE = \"readystatechange\";\n    let f;\n    document.addEventListener(\n      READYSTATE,\n      (f = () => {\n        customElements.define(defaults.tag, XElement);\n        document.removeEventListener(READYSTATE, f);\n      })\n    );\n  }\n};\n\n// 判断元素是否临时脱离节点，防止数组操作导致元素触发detached问题\nfunction isInternal(ele) {\n  let target = ele;\n\n  while (target) {\n    if (target.__internal) {\n      return true;\n    }\n\n    target = target.parentNode || target.host;\n\n    if (!target || (target.tagName && target.tagName === \"BODY\")) {\n      break;\n    }\n  }\n\n  return false;\n}\n\nfunction validateTagName(str) {\n  // Check if the string has at least one '-' character\n  if (!str.includes(\"-\")) {\n    throw getErr(\"xhear_tag_noline\", { str });\n  }\n\n  // Check if the string starts or ends with '-'\n  if (str.charAt(0) === \"-\" || str.charAt(str.length - 1) === \"-\") {\n    throw getErr(\"xhear_validate_tag\", { str });\n  }\n\n  // Check if the string has consecutive '-' characters\n  for (let i = 0; i < str.length - 1; i++) {\n    if (str.charAt(i) === \"-\" && str.charAt(i + 1) === \"-\") {\n      throw getErr(\"xhear_validate_tag\", { str });\n    }\n  }\n\n  return true;\n}\n\nfunction deepCopyData(obj, tag = \"\", keyName) {\n  if (obj instanceof Set || obj instanceof Map) {\n    throw getErr(\"xhear_regster_data_noset\", { tag });\n  }\n\n  if (obj instanceof Function) {\n    throw getErr(\"xhear_regster_data_nofunc\", { tag, key: keyName });\n  }\n\n  if (typeof obj !== \"object\" || obj === null) {\n    return obj;\n  }\n\n  const copy = Array.isArray(obj) ? [] : {};\n\n  for (let key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) {\n      if (/^_/.test(key) && obj[key] instanceof Function) {\n        // 直接赋值私有属性\n        copy[key] = obj[key];\n      } else {\n        copy[key] = deepCopyData(obj[key], tag, key);\n      }\n    }\n  }\n\n  return copy;\n}\n","import { renderExtends, render } from \"./render.mjs\";\nimport { isSafariBrowser } from \"../public.mjs\";\nimport { getErr } from \"../../ofa-error/main.js\";\nimport { getRenderData } from \"./condition.mjs\";\nexport class FakeNode extends Comment {\n  constructor(markname) {\n    const tagText = `Fake Node${markname ? \": \" + markname : \"\"}`;\n\n    super(` ${tagText} --end `);\n\n    this._mark = markname;\n    this._inited = false;\n\n    const startCom = new Comment(` ${tagText} --start `);\n    startCom.__fake_end = this;\n\n    Object.defineProperty(this, \"_start\", {\n      value: startCom,\n    });\n  }\n\n  init() {\n    if (this._inited) {\n      return;\n    }\n\n    this.parentNode.insertBefore(this._start, this);\n    this._inited = true;\n  }\n\n  querySelector(expr) {\n    return this.__searchEl(expr, \"find\");\n  }\n\n  querySelectorAll(expr) {\n    return this.__searchEl(expr);\n  }\n\n  __searchEl(expr, funcName = \"filter\") {\n    const startParent = this.parentNode;\n    if (!startParent) return [];\n\n    const childs = this.children;\n\n    return Array.from(startParent.querySelectorAll(expr))[funcName]((e) => {\n      let par = e;\n      while (true) {\n        if (childs.includes(par)) {\n          return true;\n        }\n\n        par = par.parentNode;\n\n        if (!par) {\n          break;\n        }\n      }\n    });\n  }\n\n  insertBefore(newEle, target) {\n    const { parentNode } = this;\n\n    if (Array.from(parentNode.children).includes(target)) {\n      parentNode.insertBefore(newEle, target);\n    } else {\n      parentNode.insertBefore(newEle, this);\n    }\n  }\n\n  appendChild(newEle) {\n    this.parentNode.insertBefore(newEle, this);\n  }\n\n  get children() {\n    const childs = [];\n\n    let prev = this;\n    while (true) {\n      prev = prev.previousSibling;\n\n      if (prev) {\n        if (prev instanceof HTMLElement) {\n          childs.unshift(prev);\n        } else if (prev === this._start) {\n          break;\n        }\n      } else if (this.isConnected) {\n        throw getErr(\"xhear_fakenode_unclose\", { name: \"children\" });\n      } else {\n        break;\n      }\n    }\n\n    return childs;\n  }\n\n  get childNodes() {\n    const childs = [];\n\n    let prev = this;\n    while (true) {\n      prev = prev.previousSibling;\n\n      if (prev) {\n        if (prev === this._start) {\n          break;\n        }\n        childs.unshift(prev);\n      } else {\n        if (!this.isConnected) {\n          break;\n        }\n        throw getErr(\"xhear_fakenode_unclose\", { name: \"childNodes\" });\n      }\n    }\n\n    return childs;\n  }\n\n  set innerHTML(val) {\n    this.childNodes.forEach((e) => {\n      e.remove();\n    });\n\n    const temp = document.createElement(\"template\");\n    temp.innerHTML = val;\n\n    Array.from(temp.content.childNodes).forEach((e) => {\n      this.appendChild(e);\n    });\n  }\n\n  get innerHTML() {\n    const { children } = this;\n    let content = \"\";\n\n    children.forEach((e) => {\n      content += e.outerHTML + \"\\n\";\n    });\n\n    return content;\n  }\n\n  get nextElementSibling() {\n    let next = this.nextSibling;\n\n    if (!next) {\n      return null;\n    }\n\n    if (next.__fake_end) {\n      return next.__fake_end;\n    }\n\n    if (next && !(next instanceof Element)) {\n      next = next.nextElementSibling;\n    }\n\n    return next;\n  }\n\n  get previousElementSibling() {\n    const { _start } = this;\n    let prev = _start.previousSibling;\n\n    if (!prev) {\n      return null;\n    }\n\n    if (prev instanceof FakeNode) {\n      return prev;\n    }\n\n    return _start.previousElementSibling;\n  }\n}\n\n// 将temp元素替换到原来的位置上\nconst replaceTempInit = (_this) => {\n  const parent = _this.parentNode;\n  if (parent) {\n    const parent = _this.parentNode;\n    const children = Array.from(_this.content.children);\n    children.forEach((e) => {\n      parent.insertBefore(e, _this);\n    });\n\n    _this.remove();\n\n    if (parent.querySelector(\"[x-bind-data]\")) {\n      const regData = getRenderData(parent);\n\n      if (regData) {\n        // 重新渲染未绑定元素\n        render({\n          data: regData.data,\n          target: regData.target,\n          temps: regData.temps,\n        });\n      }\n    }\n  }\n};\n\nif (isSafariBrowser()) {\n  renderExtends.beforeRender = ({ target }) => {\n    let replaces = [];\n\n    while (true) {\n      replaces = Array.from(\n        target.querySelectorAll('template[is=\"replace-temp\"]')\n      );\n\n      if (!replaces.length) {\n        break;\n      }\n\n      replaces.forEach((temp) => {\n        replaceTempInit(temp);\n      });\n    }\n  };\n} else {\n  class ReplaceTemp extends HTMLTemplateElement {\n    constructor() {\n      super();\n      this.init();\n    }\n\n    init() {\n      replaceTempInit(this);\n    }\n\n    connectedCallback() {\n      this.init();\n    }\n  }\n\n  customElements.define(\"replace-temp\", ReplaceTemp, {\n    extends: \"template\",\n  });\n}\n","/**\n * `x-if` first replaces all neighboring conditional elements with token elements and triggers the rendering process once; the rendering process is triggered again after each `value` change.\n * The rendering process is as follows:\n * 1. First, collect all conditional elements adjacent to `x-if`.\n * 2. Mark these elements and wait for the `value` of each conditional element to be set successfully before proceeding to the next step.\n * 3. Based on the marking, perform a judgment operation asynchronously, the element that satisfies the condition first will be rendered; after successful rendering, the subsequent conditional elements will clear the rendered content.\n */\n\nimport { dataRevoked } from \"../../stanz/public.mjs\";\nimport { register } from \"../register.mjs\";\nimport { eleX, revokeAll } from \"../util.mjs\";\nimport { FakeNode } from \"./fake-node.mjs\";\nimport { render } from \"./render.mjs\";\n\nconst regOptions = {\n  data: {\n    value: null,\n    __rendered: false,\n  },\n  watch: {\n    value() {\n      if (!this._bindend) {\n        return;\n      }\n\n      this.refreshValue();\n    },\n  },\n  proto: {\n    refreshValue() {\n      clearTimeout(this._timer);\n      this._timer = setTimeout(() => {\n        const conditions = [this, ...this._others];\n\n        let isOK = false;\n\n        conditions.forEach((conditionEl) => {\n          if (isOK) {\n            // A success condition has preceded it, and any subsequent conditional elements should be clear\n            conditionEl._clearContent();\n            return;\n          }\n\n          if (conditionEl.value || conditionEl.tag === \"x-else\") {\n            isOK = true;\n            conditionEl._renderContent();\n          } else {\n            conditionEl._clearContent();\n          }\n        });\n        if (this._fake.parentNode) {\n          eleX(this._fake.parentNode).refresh();\n        }\n\n        // const fakeParent = eleX(this._fake.parentNode);\n        // fakeParent.refresh();\n        // fakeParent.host && fakeParent.host.refresh({ unupdate: 1 });\n      }, 0);\n    },\n    _renderContent() {\n      if (this.__rendered) {\n        return;\n      }\n      this.__rendered = true;\n\n      const result = getRenderData(this._fake);\n\n      if (!result) {\n        return;\n      }\n\n      const { target, data, temps } = result;\n\n      if (dataRevoked(data)) {\n        return;\n      }\n\n      this._fake.innerHTML = this.__originHTML;\n\n      render({ target, data, temps });\n\n      this.emit(\"rendered\", {\n        bubbles: false,\n      });\n    },\n    _clearContent() {\n      if (!this.__rendered) {\n        return;\n      }\n\n      this.__rendered = false;\n\n      // revokeAll(this._fake);\n      this._fake?.childNodes?.forEach((el) => revokeAll(el));\n      this._fake.innerHTML = \"\";\n\n      this.emit(\"clear\", {\n        bubbles: false,\n      });\n    },\n    init() {\n      if (this._bindend) {\n        return;\n      }\n\n      this._bindend = true;\n      const fake = (this._fake = new FakeNode(this.tag));\n      fake.__revokes = this.ele.__revokes;\n      this.before(fake);\n      fake.init();\n      this.remove();\n\n      // 给 else-if 添加 _xif，给 else 初始化\n      if (this.tag === \"x-if\") {\n        const others = (this._others = []);\n\n        let next = fake;\n        while (true) {\n          next = next.nextElementSibling;\n\n          if (!next || next.tagName == \"X-IF\") {\n            // 下一个还是if的话，就直接跳过遍历的逻辑，因为下一个if后面可能有它们的else\n            break;\n          }\n\n          switch (next.tagName) {\n            case \"X-ELSE\": {\n              const $el = eleX(next);\n              if ($el.init) {\n                $el.init();\n              } else {\n                $el._if_ready = 1;\n              }\n\n              others.push($el);\n              return;\n            }\n            case \"X-ELSE-IF\": {\n              const $el = eleX(next);\n\n              $el._xif = this;\n\n              others.push($el);\n              break;\n            }\n            default:\n              break;\n          }\n        }\n      }\n    },\n  },\n  created() {\n    this.__originHTML = this.$(\"template[condition]\").html;\n    this.html = \"\";\n  },\n  ready() {\n    if (this.ele._bindingRendered) {\n      this.init();\n    } else {\n      this.one(\"binding-rendered\", () => this.init());\n    }\n  },\n};\n\nregister({\n  tag: \"x-if\",\n  ...regOptions,\n});\n\nregister({\n  tag: \"x-else-if\",\n  ...regOptions,\n  watch: {\n    value() {\n      if (!this._bindend) {\n        return;\n      }\n\n      if (this._xif) {\n        this._xif.refreshValue();\n      }\n    },\n  },\n});\n\nregister({\n  tag: \"x-else\",\n  ...regOptions,\n  watch: {},\n  ready() {\n    if (this._if_ready) {\n      this.init();\n    }\n  },\n});\n\nexport const getRenderData = (target) => {\n  while (target && !target.__render_data) {\n    target = target.parentNode;\n  }\n\n  if (target) {\n    return {\n      target,\n      data: target.__render_data,\n      temps: target.__render_temps,\n    };\n  }\n\n  return null;\n};\n","import { register } from \"../register.mjs\";\nimport { render } from \"./render.mjs\";\nimport { FakeNode } from \"./fake-node.mjs\";\nimport Stanz from \"../../stanz/main.mjs\";\nimport { createXEle, eleX, revokeAll } from \"../util.mjs\";\nimport { removeArrayValue } from \"../public.mjs\";\nimport { getRenderData } from \"./condition.mjs\";\nimport { getErr } from \"../../ofa-error/main.js\";\nimport { getType } from \"../../stanz/public.mjs\";\n\nregister({\n  tag: \"x-fill\",\n  data: {\n    value: null,\n  },\n  watch: {\n    value(value, t) {\n      this.refreshValue(t?.watchers);\n    },\n  },\n  proto: {\n    refreshValue(watchers) {\n      const arrayData = this.value;\n\n      if (!this._bindend) {\n        return;\n      }\n\n      const childs = this._fake.children;\n\n      if (!arrayData) {\n        childs.forEach((e) => revokeAll(e));\n        this._fake.innerHTML = \"\";\n        return;\n      }\n\n      if (!(arrayData instanceof Array)) {\n        console.warn(\n          getErr(\"fill_type\", {\n            type: getType(arrayData),\n          })\n        );\n\n        childs &&\n          childs.forEach((el) => {\n            revokeAll(el);\n            el.remove();\n          });\n        return;\n      }\n\n      const regData = getRenderData(this._fake);\n\n      if (!regData) {\n        return;\n      }\n\n      const { data, temps } = regData;\n\n      const targetTemp = temps[this._name];\n\n      const keyName = this.attr(\"fill-key\") || \"xid\";\n\n      if (!childs.length) {\n        const frag = document.createDocumentFragment();\n\n        arrayData.forEach((e, i) => {\n          const $ele = createItem(\n            e,\n            temps,\n            targetTemp,\n            data.$host || data,\n            i,\n            keyName\n          );\n          frag.appendChild($ele.ele);\n        });\n\n        this._fake.appendChild(frag);\n      } else {\n        if (watchers) {\n          const isReplaced = watchers.some((e) => e.path.length <= 1);\n\n          if (!isReplaced) {\n            // It is not a replacement, it can be corrected by binding the item internally.\n            return;\n          }\n        }\n\n        const vals = arrayData.slice();\n        const valsKeys = new Set(\n          vals.map((e) => {\n            if (!e) {\n              return;\n            }\n\n            const val = e[keyName];\n            return val === undefined ? e : val;\n          })\n        );\n\n        const { parentNode } = this._fake;\n\n        if (keyName !== \"xid\" && vals.length !== valsKeys.size) {\n          const err = getErr(\"fill_key_duplicates\");\n          console.error(err);\n          console.warn(err, {\n            parentNode,\n            host: eleX(parentNode)?.host?.ele,\n          });\n        }\n\n        // const positionKeys = childs.map((e) => e._data_xid || e);\n        // Delete non-existing projects in advance (used to improve performance, this step can be removed and the above comment is turned on)\n        const positionKeys = [];\n        for (let i = 0, len = childs.length; i < len; i++) {\n          const e = childs[i];\n          const key = e._data_xid || e;\n\n          if (!valsKeys.has(key)) {\n            // If it no longer exists, delete it in advance.\n            revokeAll(e);\n            e.remove();\n            childs.splice(i, 1);\n            len--;\n            i--;\n          } else {\n            positionKeys.push(key);\n          }\n        }\n\n        let target = this._fake._start;\n\n        const needRemoves = [];\n\n        let count = 0;\n\n        while (target) {\n          if (target === this._fake) {\n            if (vals.length) {\n              // We have reached the end, add all elements directly to the front\n              vals.forEach((item) => {\n                const $ele = createItem(\n                  item,\n                  temps,\n                  targetTemp,\n                  data.$host || data,\n                  count,\n                  keyName\n                );\n\n                count++;\n\n                // target.parentNode.insertBefore($ele.ele, target);\n                parentNode.insertBefore($ele.ele, target);\n              });\n            }\n            break;\n          }\n          if (!(target instanceof Element)) {\n            target = target.nextSibling;\n            continue;\n          }\n          const currentVal = vals.shift();\n          const isObj = currentVal instanceof Object;\n          const $tar = eleX(target);\n          const item = $tar.__item;\n\n          if (currentVal === undefined && !vals.length) {\n            // There will be no follow-up, just delete it directly\n            needRemoves.push(target);\n            target = target.nextSibling;\n            continue;\n          }\n\n          const oldId = positionKeys.indexOf(\n            isObj ? currentVal[keyName] : currentVal\n          );\n          if (oldId > -1) {\n            // If the key originally exists, perform key displacement.\n            const oldItem = childs[oldId];\n            if (\n              isObj\n                ? currentVal[keyName] !== item.$data[keyName]\n                : currentVal !== item.$data\n            ) {\n              // Adjust position\n              oldItem.__internal = 1;\n              // target.parentNode.insertBefore(oldItem, target);\n              parentNode.insertBefore(oldItem, target);\n              delete oldItem.__internal;\n              target = oldItem;\n            }\n\n            // Update object\n            const $old = eleX(oldItem);\n            if ($old.__item.$data !== currentVal) {\n              $old.__item.$data = currentVal;\n            }\n            $old.__item.$index = count;\n          } else {\n            // Add new element\n            const $ele = createItem(\n              currentVal,\n              temps,\n              targetTemp,\n              data.$host || data,\n              count,\n              keyName\n            );\n\n            // target.parentNode.insertBefore($ele.ele, target);\n            parentNode.insertBefore($ele.ele, target);\n            target = $ele.ele;\n          }\n\n          count++;\n          target = target.nextSibling;\n        }\n\n        if (needRemoves.length) {\n          needRemoves.forEach((e) => {\n            revokeAll(e);\n            e.remove();\n          });\n        }\n      }\n\n      if (this._fake.parentNode) {\n        eleX(this._fake.parentNode).refresh();\n      }\n\n      this.emit(\"rendered\", {\n        bubbles: false,\n      });\n    },\n    init() {\n      if (this._bindend) {\n        return;\n      }\n\n      this._bindend = true;\n      const fake = (this._fake = new FakeNode(\"x-fill\"));\n\n      // 搬动 revokes\n      fake.__revokes = this.ele.__revokes;\n\n      this.before(fake);\n      fake.init();\n      this.remove();\n\n      this.refreshValue();\n    },\n  },\n  ready() {\n    this._name = this.attr(\"name\");\n\n    if (!this._name) {\n      const err = getErr(\"xhear_fill_tempname\", { name: this._name });\n      console.warn(err, this.ele);\n      throw err;\n    }\n\n    if (this.ele._bindingRendered) {\n      this.init();\n    } else {\n      this.one(\"binding-rendered\", () => this.init());\n    }\n  },\n});\n\nexport const createItem = ($data, temps, targetTemp, $host, $index, keyName) => {\n  const $ele = createXEle(targetTemp.innerHTML);\n\n  const itemData = new Stanz({\n    $data,\n    // $ele,\n    $host,\n    $index,\n  });\n\n  // tips: 如果$ele被设置为item的子属性，$ele内出现自定义组件，进一步导致改动冒泡，会出现xfill内元素不停渲染的死循环\n  Object.defineProperties(itemData, {\n    $ele: {\n      get() {\n        return $ele;\n      },\n    },\n  });\n\n  render({\n    target: $ele.ele,\n    data: itemData,\n    temps,\n    // $host,\n    isRenderSelf: true,\n  });\n\n  const revokes = $ele.ele.__revokes;\n\n  const revoke = () => {\n    removeArrayValue(revokes, revoke);\n    itemData.revoke();\n  };\n\n  revokes.push(revoke);\n\n  $ele.__item = itemData;\n  $ele.ele._data_xid = $data?.[keyName] || $data;\n\n  return $ele;\n};\n","import { createXEle, eleX } from \"./util.mjs\";\nimport { searchEle } from \"./public.mjs\";\nimport { handler } from \"./accessor.mjs\";\nimport renderFn from \"./render/render.mjs\";\nimport syncFn from \"./render/sync.mjs\";\nimport eventFn from \"./event.mjs\";\nimport LikeArray from \"./array.mjs\";\nimport formFn, { initFormEle } from \"./form.mjs\";\nimport cssFn from \"./css.mjs\";\nimport { extend } from \"../stanz/public.mjs\";\nimport Stanz, { constructor } from \"../stanz/main.mjs\";\nimport watchFn from \"../stanz/watch.mjs\";\nimport \"./render/condition.mjs\";\nimport \"./render/fill.mjs\";\nimport { getErr } from \"../ofa-error/main.js\";\nconst { defineProperties } = Object;\n\nconst GET_COMPOSE_PATH = `get-${Math.random()}`;\n\nconst init = ({ _this, ele, proxySelf }) => {\n  const descs = {\n    owner: {\n      get() {\n        const { parentNode } = ele;\n        const { _owner } = _this;\n        const arr = parentNode ? [eleX(parentNode), ..._owner] : [..._owner];\n        return new Set(arr);\n      },\n    },\n    ele: {\n      get: () => ele,\n    },\n  };\n\n  const tag = ele.tagName && ele.tagName.toLowerCase();\n\n  if (tag) {\n    descs.tag = {\n      enumerable: true,\n      value: tag,\n    };\n  }\n\n  defineProperties(_this, descs);\n\n  initFormEle(proxySelf);\n};\n\nexport default class Xhear extends LikeArray {\n  constructor({ ele }) {\n    super();\n\n    const proxySelf = constructor.call(this, {}, handler);\n\n    init({\n      _this: this,\n      ele,\n      proxySelf,\n    });\n\n    ele.__xhear__ = proxySelf;\n\n    return proxySelf;\n  }\n\n  get length() {\n    return this.ele && this.ele.children.length;\n  }\n\n  $(expr) {\n    let { ele } = this;\n    if (ele instanceof HTMLTemplateElement) {\n      ele = ele.content;\n    }\n\n    const target = ele.querySelector(expr);\n    return target ? eleX(target) : null;\n  }\n\n  all(expr) {\n    return searchEle(this.ele, expr).map(eleX);\n  }\n\n  extend(obj, desc) {\n    return extend(this, obj, desc);\n  }\n\n  get text() {\n    return this.ele.textContent;\n  }\n\n  set text(val) {\n    this.ele.textContent = val;\n  }\n\n  get html() {\n    return this.ele.innerHTML;\n  }\n\n  set html(val) {\n    this.ele.innerHTML = val;\n  }\n\n  get classList() {\n    return this.ele.classList;\n  }\n\n  get data() {\n    return this.ele.dataset;\n  }\n\n  get shadow() {\n    return eleX(this.ele.shadowRoot);\n  }\n\n  get root() {\n    const rootNode = this.ele.getRootNode();\n    return rootNode ? eleX(rootNode) : null;\n  }\n  get host() {\n    let root = this.ele.getRootNode();\n    let { host } = root;\n    return host instanceof Node ? eleX(host) : null;\n  }\n\n  get parent() {\n    let { parentNode } = this.ele;\n    return !parentNode || parentNode === document ? null : eleX(parentNode);\n  }\n\n  get parents() {\n    const parents = [];\n    let target = this;\n    while (target.parent) {\n      target = target.parent;\n      parents.push(target);\n    }\n    return parents;\n  }\n\n  parentsUntil(expr) {\n    const allParents = this.parents;\n    const parents = [];\n\n    const exprIsObj = typeof expr === \"object\";\n\n    while (allParents.length) {\n      const target = allParents.shift();\n\n      if (exprIsObj) {\n        if (target === expr || target.ele === expr) {\n          break;\n        }\n      } else if (target.ele.matches(expr)) {\n        break;\n      }\n\n      parents.push(target);\n    }\n\n    return parents;\n  }\n\n  get hosts() {\n    const hosts = [];\n    let target = this;\n    while (target.host) {\n      target = target.host;\n      hosts.push(target);\n    }\n    return hosts;\n  }\n\n  composedPath() {\n    let paths = [];\n    this.one(GET_COMPOSE_PATH, (e) => {\n      paths = e.composedPath();\n      e.stopPropagation();\n    });\n    this.emit(GET_COMPOSE_PATH, {\n      composed: true,\n    });\n    return paths;\n  }\n\n  get next() {\n    const nextEle = this.ele.nextElementSibling;\n    return nextEle ? eleX(nextEle) : null;\n  }\n\n  after(val) {\n    const { next: nextEl } = this;\n\n    if (nextEl) {\n      nextEl.before(val);\n    } else {\n      this.parent.push(val);\n    }\n  }\n\n  get nexts() {\n    const { parent } = this;\n    const selfIndex = this.index;\n    return parent.filter((e, i) => i > selfIndex);\n  }\n\n  get prev() {\n    const prevEle = this.ele.previousElementSibling;\n    return prevEle ? eleX(prevEle) : null;\n  }\n\n  before(val) {\n    const $el = createXEle(val);\n    this.parent.ele.insertBefore($el.ele, this.ele);\n  }\n\n  get prevs() {\n    const { parent } = this;\n    const selfIndex = this.index;\n    return parent.filter((e, i) => i < selfIndex);\n  }\n\n  get siblings() {\n    return this.parent.filter((e) => e !== this);\n  }\n\n  get index() {\n    let { parentNode } = this.ele;\n\n    if (!parentNode) {\n      return null;\n    }\n\n    return Array.prototype.indexOf.call(parentNode.children, this.ele);\n  }\n\n  get style() {\n    return this.ele.style;\n  }\n\n  get width() {\n    return parseInt(getComputedStyle(this.ele).width) || 0;\n  }\n\n  get height() {\n    return parseInt(getComputedStyle(this.ele).height) || 0;\n  }\n\n  get clientWidth() {\n    return this.ele.clientWidth;\n  }\n\n  get clientHeight() {\n    return this.ele.clientHeight;\n  }\n\n  get offsetWidth() {\n    return this.ele.offsetWidth;\n  }\n\n  get offsetHeight() {\n    return this.ele.offsetHeight;\n  }\n\n  get outerWidth() {\n    let computedStyle = getComputedStyle(this.ele);\n    return (\n      this.ele.offsetWidth +\n      parseInt(computedStyle[\"margin-left\"]) +\n      parseInt(computedStyle[\"margin-right\"])\n    );\n  }\n\n  get outerHeight() {\n    let computedStyle = getComputedStyle(this.ele);\n    return (\n      this.ele.offsetHeight +\n      parseInt(computedStyle[\"margin-top\"]) +\n      parseInt(computedStyle[\"margin-bottom\"])\n    );\n  }\n\n  is(expr) {\n    return this.ele.matches(expr);\n  }\n\n  remove() {\n    const { parent } = this;\n    if (parent) {\n      parent.splice(parent.indexOf(this), 1);\n    }\n    // this.ele.remove();\n  }\n\n  clone(bool = true) {\n    return eleX(this.ele.cloneNode(bool));\n  }\n\n  wrap(content) {\n    const $el = createXEle(content);\n\n    const { ele } = this;\n\n    if (!ele.parentNode) {\n      throw getErr(\"xhear_wrap_no_parent\");\n    }\n\n    ele.parentNode.insertBefore($el.ele, ele);\n\n    ele.__internal = 1;\n\n    $el.ele.appendChild(ele);\n\n    delete ele.__internal;\n\n    return this;\n  }\n\n  unwrap() {\n    const { ele } = this;\n\n    const target = ele.parentNode;\n\n    if (target.children.length > 1) {\n      throw getErr(\"xhear_unwrap_has_siblings\");\n    }\n\n    ele.__internal = 1;\n\n    target.parentNode.insertBefore(ele, target);\n\n    target.remove();\n\n    delete ele.__internal;\n\n    return this;\n  }\n}\n\nconst sfn = Stanz.prototype;\nconst fn = Xhear.prototype;\n\nfn.extend(\n  {\n    get: sfn.get,\n    set: sfn.set,\n    toJSON: sfn.toJSON,\n    toString: sfn.toString,\n    ...watchFn,\n    ...eventFn,\n    ...renderFn,\n    ...syncFn,\n    ...formFn,\n  },\n  {\n    enumerable: false,\n  }\n);\n\nfn.extend(cssFn);\n","import Xhear from \"./main.mjs\";\nimport { getType } from \"../stanz/public.mjs\";\n\nexport const eleX = (ele) => {\n  if (!ele) return null;\n\n  if (ele.__xhear__) {\n    return ele.__xhear__;\n  }\n\n  return new Xhear({ ele });\n};\n\nexport const objToXEle = (obj) => {\n  const data = { ...obj };\n\n  if (!obj.tag) {\n    return null;\n  }\n\n  const ele = document.createElement(obj.tag);\n  delete data.tag;\n  const $ele = eleX(ele);\n\n  Object.assign($ele, data);\n\n  return $ele;\n};\n\nconst temp = document.createElement(\"template\");\n\nexport const strToXEle = (str) => {\n  temp.innerHTML = str;\n  const ele = temp.content.children[0] || temp.content.childNodes[0];\n  temp.innerHTML = \"\";\n\n  return eleX(ele);\n};\n\nexport const createXEle = (expr, exprType) => {\n  if (expr instanceof Xhear) {\n    return expr;\n  }\n\n  if (expr instanceof Node || expr === window) {\n    return eleX(expr);\n  }\n\n  const type = getType(expr);\n\n  switch (type) {\n    case \"object\":\n      return objToXEle(expr);\n    case \"string\":\n      return strToXEle(expr);\n  }\n};\n\nexport const revokeAll = (target) => {\n  if (target.__revokes) {\n    Array.from(target.__revokes).forEach((f) => f && f());\n  }\n  target.childNodes &&\n    Array.from(target.childNodes).forEach((el) => {\n      revokeAll(el);\n    });\n\n  const revokes = target?.shadowRoot?.__revokes;\n\n  if (revokes) {\n    [...revokes].forEach((f) => f());\n  }\n};\n","import { eleX } from \"./util.mjs\";\nimport { render, convert } from \"./render/render.mjs\";\nimport Xhear from \"./main.mjs\";\nimport stanz from \"../stanz/base.mjs\";\nimport Stanz from \"../stanz/main.mjs\";\nimport { register } from \"./register.mjs\";\nimport { searchEle } from \"./public.mjs\";\nimport $ from \"./dollar.mjs\";\nimport { nextTick } from \"../stanz/public.mjs\";\n\nObject.assign($, {\n  stanz,\n  Stanz,\n  render,\n  convert,\n  register,\n  nextTick,\n  fn: Xhear.prototype,\n  all: (expr) => searchEle(document, expr).map(eleX),\n  frag: () => $(document.createDocumentFragment()),\n});\n\nexport default $;\n"],"names":["error_origin","errors","load_fail","load_fail_status","load_module","no_alias","config_alias_name_error","alias_already","alias_relate_name","failed_to_set_data","failed_to_get_data","nexttick_thread_limit","not_func","not_found_func","invalid_key","xhear_wrap_no_parent","xhear_unwrap_has_siblings","xhear_reander_err","xhear_register_exists","xhear_register_err","xhear_validate_tag","xhear_tag_noline","xhear_regster_data_noset","xhear_regster_data_nofunc","xhear_fakenode_unclose","xhear_fill_tempname","xhear_eval","xhear_listen_already","xhear_dbfill_noname","xhear_temp_exist","xhear_sync_no_options","xhear_sync_object_value","loading_nothing","app_src_change","no_cross_access_func","access_return_error","load_comp_module","comp_registered","load_page_module","page_no_defaults","not_page_module","page_failed","fetch_temp_err","page_wrap_fetch","context_change_name","no_provider","page_invalid_key","root_provider_exist","root_provider_name_change","change_lm_src","error_no_owner","circular_data","fill_type","fill_key_duplicates","render_el_error","temp_multi_child","temp_wrap_child","app_noback","invalidated_inject_host","olink_out_app","app_noforward","need_forwards","watchuntil_timeout","globalThis","navigator","language","langFirst","toLowerCase","split","localStorage","onLine","targetLangErrors","JSON","parse","Object","assign","errCacheTime","Date","now","Number","fetch","then","e","json","catch","stringify","error","isSafari","userAgent","includes","getErr","key","options","errObj","desc","getErrDesc","toString","stack","replace","Error","cause","code","k","RegExp","getRandomId","Math","random","slice","objectToString","prototype","getType","value","call","isObject","obj","type","afterTimer","asyncsCounter","nextTick","callback","clearTimeout","setTimeout","Promise","resolve","err","console","warn","extend","_this","proto","descriptor","getOwnPropertyNames","getOwnPropertySymbols","forEach","result","getOwnPropertyDescriptor","configurable","enumerable","writable","get","set","hasOwnProperty","defineProperty","dataRevoked","proxyToCheck","getPrototypeOf","TypeError","isFunction","val","hyphenToUpperCase","str","match","p1","toUpperCase","toDashCase","removeArrayValue","arr","target","index","indexOf","splice","searchEle","el","expr","HTMLTemplateElement","Array","from","content","querySelectorAll","freeze","Watcher","constructor","opts","this","hasModified","path","currentTarget","keys","name","positionIndex","getModifieds","currentKeys","length","hasReplaced","modifieds","cloneKeys","targetKey","shift","push","Watchers","super","some","emitUpdate","oldValue","args","_hasWatchs","watcher","WATCHS","func","_update","owner","parent","watchFn","watch","Function","wid","unwatch","delete","watchTick","wait","timeout","hisArgs","debounce","filter","item","xid","refresh","watchUntil","outTime","reject","f","timer","tid","mutatingMethods","holder","Symbol","fn","arrayFn","methodName","backupArr","reval","apply","SELF","deletedItems","addedItems","oldArray","newArray","backupNewArray","backupOldArray","Map","oldLen","i","oldItem","newIndex","newLen","newItem","oldIndex","compareArrays","isxdata","_owner","__unupdate","clearOwner","PROXY","oldFunc","defineProperties","entries","ISXDATA","data","handler","stanzHandler","watchs","proxy","proxySelf","revoke","Proxy","revocable","Set","_revoke","__init_is_array","isArray","descObj","Stanz","self","_onrevokes","clear","toJSON","isPureArray","maxId","initIsArray","test","parseInt","len","join","lastKey","pop","setData","receiver","succeed","__OriginStanz","isSame","targetData","mismatch","Reflect","deleteProperty","undefined","String","eleX","ele","children","ownKeys","renderExtends","beforeConvert","afterConvert","beforeRender","render","getRevokes","__revokes","addRevoke","convertToFunc","funcStr","bind","template","temps","isRenderSelf","otherOpts","innerHTML","texts","tasks","revokes","originStyle","matchs","map","dataExpr","renderStyle","afterStyle","revokeStyle","remove","textEl","document","createTextNode","parentNode","insertBefore","removeChild","getAttribute","renderFunc","textContent","textRevoke","eles","matches","unshift","bindData","$el","actionName","always","workResult","afterArgs","work","errCall","errorExpr","beforeArgs","step","clearRevs","methodRevoke","arg0","arg1","removeAttribute","_bindingRendered","dispatchEvent","Event","__render_temps","isEmptyObject","__render_data","element","old","new","convertEl","tagName","attributes","attr","matchData","exec","param0","setAttribute","searchTemp","rearr","isWarned","convert","codeEls","cid","tempName","tempChilds","wrapName","fillEl","querySelector","trim","temp","createElement","appendChild","condiEl","firstChild","newTemps","getVal","defaultData","prop","class","classList","contains","add","stanzProto","selfPropName","targetPropName","propName","$ele","oldVal","syncFn","sync","targetName","wid1","wid2","getBindOptions","revoker","beforeValue","tag","removeEventListener","eventFn","on","addEventListener","one","off","emit","event","bubbles","originSplice","start","count","items","removes","frag","createDocumentFragment","append","createXEle","positionEle","likeArrayFn","targets","reVal","reverse","childs","childNodes","__internal","sort","getOwnPropertyDescriptors","targetFunc","LikeArray","stanz","is","setKeys","isNum","formEleNames","bindProp","keyName","initInput","getFormData","all","checked","files","selectedsOpt","multiple","formFn","formData","newData","obj1","obj2","mergeObjects","isUseValue","resetValue","oldRevoke","cssHandler","_ele","style","startsWith","getComputedStyle","getPropertyValue","XhearCSS","_css","cssFn","css","d","nextKeys","$","extensions","COMPS","register","defaults","compName","charAt","validateTagName","deepCopyData","getAttrKeys","attrs","attrKeys","XElement","HTMLElement","created","attrName","valType","root","attachShadow","mode","ready","wen","names","watchers","renderElement","connectedCallback","isInternal","attached","afterAttached","disconnectedCallback","detached","afterDetached","attributeChangedCallback","newValue","observedAttributes","readyState","customElements","define","READYSTATE","host","copy","FakeNode","Comment","markname","tagText","_mark","_inited","startCom","__fake_end","init","_start","__searchEl","funcName","startParent","par","newEle","prev","previousSibling","isConnected","outerHTML","nextElementSibling","next","nextSibling","Element","previousElementSibling","replaceTempInit","regData","getRenderData","replaces","ReplaceTemp","extends","regOptions","__rendered","_bindend","refreshValue","_timer","conditions","_others","isOK","conditionEl","_clearContent","_renderContent","_fake","__originHTML","revokeAll","fake","before","others","_if_ready","_xif","html","t","arrayData","targetTemp","_name","vals","valsKeys","size","positionKeys","_data_xid","has","needRemoves","createItem","$host","currentVal","isObj","__item","oldId","$data","$old","$index","itemData","GET_COMPOSE_PATH","descs","initFormEle","Xhear","__xhear__","text","dataset","shadow","shadowRoot","rootNode","getRootNode","Node","parents","parentsUntil","allParents","exprIsObj","hosts","composedPath","paths","stopPropagation","composed","nextEle","after","nextEl","nexts","selfIndex","prevEle","prevs","siblings","width","height","clientWidth","clientHeight","offsetWidth","offsetHeight","outerWidth","computedStyle","outerHeight","clone","bool","cloneNode","wrap","unwrap","sfn","renderFn","exprType","window","objToXEle","strToXEle"],"mappings":";AACA,MAAMA,EAAe,4CAGfC,EAAS,CACbC,UAAW,oBACXC,iBAAkB,2CAClBC,YAAa,4CACbC,SAAU,wDACVC,wBAAyB,8CACzBC,cAAe,kCACfC,kBACE,yEACFC,mBAAoB,yCACpBC,mBAAoB,yBACpBC,sBACE,0GACFC,SAAU,iEACVC,eACE,iIACFC,YACE,uKACFC,qBACE,2EACFC,0BACE,+EACFC,kBAAmB,mCACnBC,sBACE,4FACFC,mBAAoB,6CACpBC,mBACE,sNACFC,iBACE,0PACFC,yBACE,4FACFC,0BACE,gJACFC,uBACE,qEACFC,oBAAqB,6CACrBC,WACE,sEACFC,qBACE,8EACFC,oBACE,uFACFC,iBAAkB,mCAClBC,sBACE,yFACFC,wBACE,gFACFC,gBAAiB,yCACjBC,eACE,4EACFC,qBACE,qEACFC,oBAAqB,kCACrBC,iBACE,8DACFC,gBACE,sFACF,kBACE,oGACF,kBACE,qHACFC,iBAAkB,mCAClBC,iBACE,0EACFC,gBACE,gFACFC,YAAa,6BACbC,eAAgB,sDAChBC,gBAAiB,0DACjBC,oBACE,sGACFC,YACE,6EACFC,iBACE,gJACFC,oBACE,8GACFC,0BACE,4HACFC,cACE,sFACFC,eACE,mEACFC,cAAe,sCACfC,UACE,iFACFC,oBAAqB,4CACrBC,gBAAiB,sDACjBC,iBACE,uJACFC,gBACE,qIACFC,WACE,qFACFC,wBAAyB,oDACzBC,cAAe,kDACfC,cACE,2EACFC,cACE,6KACFC,mBAAoB,oDAGtB,GAAIC,WAAWC,WAAaA,UAAUC,SAAU,CAC9C,IAAIC,EAAYF,UAAUC,SAASE,cAAcC,MAAM,KAAK,GAE1C,OAAdF,GAA2D,UAArCF,UAAUC,SAASE,gBAC3CD,EAAY,QAId,WACE,IAAKH,WAAWM,aAEd,OAGF,GAAIN,WAAWC,YAAcA,UAAUM,OAErC,OAGF,GAAID,aAAa,cAAe,CAC9B,MAAME,EAAmBC,KAAKC,MAAMJ,aAAa,eACjDK,OAAOC,OAAO1E,EAAQsE,EACvB,CAED,MAAMK,EAAeP,aAAa,mBAElC,IAAKO,GAAgBC,KAAKC,MAAQC,OAAO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"}