ranui 0.1.1-alpha → 0.1.1-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_commonjs-dynamic-modules.8823314d.js +31 -0
  3. package/dist/_commonjs-dynamic-modules.8823314d.js.map +1 -0
  4. package/dist/add-user.98b805f1.js +5 -0
  5. package/dist/add-user.98b805f1.js.map +1 -0
  6. package/dist/assets/image/failImage.d.ts +2 -0
  7. package/dist/book.c3235430.js +5 -0
  8. package/dist/book.c3235430.js.map +1 -0
  9. package/dist/check-circle-fill.0a9e8a28.js +5 -0
  10. package/dist/check-circle-fill.0a9e8a28.js.map +1 -0
  11. package/dist/check-circle.711c4f31.js +5 -0
  12. package/dist/check-circle.711c4f31.js.map +1 -0
  13. package/dist/close-circle-fill.726bf59c.js +5 -0
  14. package/dist/close-circle-fill.726bf59c.js.map +1 -0
  15. package/dist/close-circle.dda355df.js +5 -0
  16. package/dist/close-circle.dda355df.js.map +1 -0
  17. package/dist/close.9954c08c.js +5 -0
  18. package/dist/close.9954c08c.js.map +1 -0
  19. package/dist/component.d.ts +0 -0
  20. package/dist/components/button/index.d.ts +328 -0
  21. package/dist/components/icon/index.d.ts +2 -0
  22. package/dist/components/image/index.d.ts +2 -0
  23. package/dist/components/input/index.d.ts +436 -0
  24. package/dist/components/message/index.d.ts +8 -0
  25. package/dist/components/preview/index.d.ts +2 -0
  26. package/dist/components/skeleton/index.d.ts +2 -0
  27. package/dist/components/tabpane/index.d.ts +326 -0
  28. package/dist/components/tabs/index.d.ts +383 -0
  29. package/dist/components/video/index.d.ts +393 -0
  30. package/dist/docx.9c82eaaf.js +2643 -0
  31. package/dist/docx.9c82eaaf.js.map +1 -0
  32. package/dist/eye-close.a954b46e.js +5 -0
  33. package/dist/eye-close.a954b46e.js.map +1 -0
  34. package/dist/eye.c904f80b.js +5 -0
  35. package/dist/eye.c904f80b.js.map +1 -0
  36. package/dist/home.f5970edc.js +5 -0
  37. package/dist/home.f5970edc.js.map +1 -0
  38. package/dist/index.26f69227.js +15110 -0
  39. package/dist/index.26f69227.js.map +1 -0
  40. package/dist/index.965c8d86.js +1513 -0
  41. package/dist/index.965c8d86.js.map +1 -0
  42. package/dist/index.js +1 -676
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.umd.cjs +12 -1
  45. package/dist/index.umd.cjs.map +1 -1
  46. package/dist/info-circle-fill.9dfc3b5e.js +5 -0
  47. package/dist/info-circle-fill.9dfc3b5e.js.map +1 -0
  48. package/dist/info-circle.718e6ac4.js +5 -0
  49. package/dist/info-circle.718e6ac4.js.map +1 -0
  50. package/dist/jszip.min.263da606.js +2656 -0
  51. package/dist/jszip.min.263da606.js.map +1 -0
  52. package/dist/loading.876d0293.js +5 -0
  53. package/dist/loading.876d0293.js.map +1 -0
  54. package/dist/lock.26244026.js +5 -0
  55. package/dist/lock.26244026.js.map +1 -0
  56. package/dist/message.5379338a.js +5 -0
  57. package/dist/message.5379338a.js.map +1 -0
  58. package/dist/pdf.5dd28052.js +74510 -0
  59. package/dist/pdf.5dd28052.js.map +1 -0
  60. package/dist/power-off.050e4c26.js +5 -0
  61. package/dist/power-off.050e4c26.js.map +1 -0
  62. package/dist/preview.de4d53cc.js +5 -0
  63. package/dist/preview.de4d53cc.js.map +1 -0
  64. package/dist/setting.7917f3b2.js +5 -0
  65. package/dist/setting.7917f3b2.js.map +1 -0
  66. package/dist/style.css +1 -1
  67. package/dist/team.b3a3196b.js +5 -0
  68. package/dist/team.b3a3196b.js.map +1 -0
  69. package/dist/typings.d.ts +46 -0
  70. package/dist/unlock.1e7bed93.js +5 -0
  71. package/dist/unlock.1e7bed93.js.map +1 -0
  72. package/dist/user.21cfbfa6.js +5 -0
  73. package/dist/user.21cfbfa6.js.map +1 -0
  74. package/dist/utils/docx.d.ts +8 -0
  75. package/dist/utils/index.d.ts +23 -0
  76. package/dist/utils/pdf.d.ts +1 -0
  77. package/dist/utils/pptx/colz.d.ts +70 -0
  78. package/dist/utils/pptx/index.d.ts +16 -0
  79. package/dist/utils/pptx/process_pptx.d.ts +23 -0
  80. package/dist/utils/pptx/t_xml.d.ts +1 -0
  81. package/dist/warning-circle-fill.b87fec04.js +5 -0
  82. package/dist/warning-circle-fill.b87fec04.js.map +1 -0
  83. package/dist/warning-circle.b1792bd4.js +5 -0
  84. package/dist/warning-circle.b1792bd4.js.map +1 -0
  85. package/package.json +43 -11
  86. package/.vitepress/config.ts +0 -26
  87. package/index.md +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.965c8d86.js","sources":["../utils/index.ts","../components/button/index.ts","../../../../../../../../@vite/dynamic-import-helper","../__vite-browser-external","../../ranuts/dist/index.js","../components/icon/index.ts","../assets/image/failImage.ts","../components/image/index.ts","../components/input/index.ts","../components/message/index.ts","../components/preview/index.ts","../components/skeleton/index.ts","../components/tabpane/index.ts","../components/tabs/index.ts","../components/video/index.ts","../index.ts"],"sourcesContent":["export const falseList = [false, 'false', null, undefined]\n/**\n * @description: 判断这个元素上是否有disabled属性\n * @param {Element} element\n * @return {*}\n */\nexport const isDisabled = (element: Element): boolean => {\n const status = element.hasAttribute('disabled')\n const value = element.getAttribute('disabled')\n if (status && !falseList.includes(value)) return true\n return false\n}\n/**\n * @description: 给指定的元素添加指定的class\n * @param {Element} element\n * @param {string} addClass\n */\nexport const setElementClass = (element: Element, addClass: string): void => {\n const classList = element.classList\n if (!classList.contains(addClass)) {\n classList.add(addClass)\n }\n}\n/**\n * @description: 查询指定元素的子级元素,删除他们的某一个指定class\n * @param {Element} parent\n * @param {string} deleteClass\n */\nexport const deleteElementChildClass = (\n parent: Element,\n deleteClass: string,\n): void => {\n const pre = parent.querySelectorAll(`.${deleteClass}`)\n if (pre.length > 0) {\n pre.forEach((item) => item.classList.remove(deleteClass))\n }\n}\n\n/**\n * @description: 创建icon的文档示例\n */\nexport const createIconList = (): void => {\n setTimeout(() => {\n const list = [\n 'add-user',\n 'book',\n 'check-circle',\n 'close-circle',\n 'eye-close',\n 'eye',\n 'info-circle',\n 'loading',\n 'lock',\n 'message',\n 'power-off',\n 'setting',\n 'team',\n 'unlock',\n 'user',\n ]\n const dom = document.getElementById('icon-list')\n list.forEach((item) => {\n const container = document.createElement('div')\n container.style.setProperty('display', 'flex')\n container.style.setProperty('align-items', 'center')\n container.style.setProperty('margin', '15px')\n container.style.setProperty('justify-content', 'center')\n container.style.setProperty('flex-flow', 'column nowrap')\n const icon = document.createElement('r-icon')\n icon.setAttribute('name', item)\n icon.setAttribute('size', '50')\n container.appendChild(icon)\n const span = document.createElement('span')\n span.innerHTML = item\n container.appendChild(span)\n console.log(container, dom)\n dom?.appendChild(container)\n })\n }, 0)\n}\n","import { falseList, isDisabled } from '@/utils/index'\n\n\nclass CustomError {\n message: string\n constructor(message:string = 'document is undefined or r-button is exist'){\n this.message = message\n }\n}\n\nfunction Custom() {\n if (typeof document !== 'undefined' && !customElements.get('r-button')) {\n class Button extends HTMLElement {\n static get observedAttributes() {\n return ['disabled', 'icon', 'effect']\n }\n _btn: HTMLDivElement\n _iconElement?: HTMLElement\n _slot: HTMLSlotElement\n constructor() {\n super()\n this._slot = document.createElement('slot')\n this._btn = document.createElement('div')\n this._btn.setAttribute('class', 'btn')\n this._btn.appendChild(this._slot)\n this._slot.setAttribute('class', 'slot')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._btn)\n }\n get disabled() {\n return isDisabled(this)\n }\n set disabled(value: boolean | string | undefined | null) {\n if (!value || value === 'false') {\n this.removeAttribute('disabled')\n } else {\n this.setAttribute('disabled', '')\n }\n }\n get icon() {\n return this.getAttribute('icon')\n }\n set icon(value) {\n if (value) {\n this.setAttribute('icon', value)\n }\n }\n get effect() {\n return this.getAttribute('effect')\n }\n set effect(value) {\n if (falseList.includes(value) || !value) {\n this.removeAttribute('effect')\n } else {\n this.setAttribute('effect', value)\n }\n }\n /**\n * @description: 设置button的icon\n * @return {*}\n */\n setIcon = () => {\n if (this.icon) {\n // 获取button的尺寸\n const { width, height } = this._slot.getBoundingClientRect()\n const size = Math.min(width, height)\n if (this._iconElement) {\n // 如果有_iconElement,只用设置name和size\n this._iconElement.setAttribute('name', this.icon)\n this._iconElement.setAttribute('size', `${size - 5}`)\n } else {\n // 创建icon,设置name,size,color\n this._iconElement = document.createElement('r-icon')\n this._iconElement.setAttribute('name', this.icon)\n this._iconElement.setAttribute('size', `${size - 5}`)\n this._iconElement.setAttribute('color', 'currentColor')\n this._iconElement.setAttribute('class', 'icon')\n // 添加到btn元素的首位\n this._slot.insertAdjacentElement('beforebegin', this._iconElement)\n }\n }\n }\n mousedown = (event: MouseEvent) => {\n if (!this.disabled || this.disabled === 'false') {\n const { left, top } = this.getBoundingClientRect()\n this.style.setProperty('--ran-x', event.clientX - left + 'px')\n this.style.setProperty('--ran-y', event.clientY - top + 'px')\n }\n }\n mouseLeave = () => {\n this.style.removeProperty('--ran-x')\n this.style.removeProperty('--ran-y')\n }\n connectedCallback() {\n this._btn.addEventListener('mousedown', this.mousedown)\n this._btn.addEventListener('mouseleave', this.mouseLeave)\n this.setIcon()\n }\n disconnectCallback() {\n this._btn.removeEventListener('mousedown', this.mousedown)\n this._btn.removeEventListener('mouseleave', this.mouseLeave)\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n if (name === 'disabled' && this._btn) {\n if (!newValue || newValue === 'false') {\n this._btn.setAttribute('disabled', '')\n } else {\n this._btn.removeAttribute('disabled')\n }\n }\n if (name === 'icon') {\n if (oldValue !== newValue) {\n this.setIcon()\n }\n }\n }\n }\n customElements.define('r-button', Button)\n return Button\n }else{\n return CustomError\n }\n}\n\nexport default Custom()\n","export default (glob, path) => {\n const v = glob[path];\n if (v) {\n return typeof v === 'function' ? v() : Promise.resolve(v);\n }\n return new Promise((_, reject) => {\n (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(reject.bind(null, new Error('Unknown variable dynamic import: ' + path)));\n });\n}","export default {}","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n return value;\n};\nimport fs from \"node:fs\";\nlet fileSystem = fs;\nif (typeof process !== \"undefined\" && typeof fileSystem.Stats === \"function\") {\n fileSystem._identification = true;\n} else {\n fileSystem = { _identification: false, message: \"require is not defined\" };\n}\nconst fs$1 = fileSystem;\nconst writeFile = (path, content) => new Promise((resolve, reject) => {\n if (!fs$1._identification)\n return reject({ _identification: false, data: \"fs is not loaded\" });\n fs$1.writeFile(\n path,\n content,\n {\n mode: 438,\n flag: \"w+\",\n encoding: \"utf-8\"\n },\n (err) => {\n if (err) {\n reject({ _identification: false, data: err });\n throw err;\n } else {\n resolve({ _identification: true, data: { path, content } });\n }\n }\n );\n});\nconst readFile = (path, format = \"utf-8\") => new Promise((resolve, reject) => {\n if (!fs$1._identification)\n return reject({ _identification: false, data: \"fs is not loaded\" });\n fs$1.readFile(path, format, (err, data) => {\n err ? reject({ _identification: false, data: err }) : resolve({ _identification: true, data });\n });\n});\nconst watchFile = (path, interval = 20) => new Promise((resolve, reject) => {\n if (!fs$1._identification)\n return reject({ _identification: false, data: \"fs is not loaded\" });\n fs$1.watchFile(path, { interval }, (curr, prev) => {\n if (curr.mtime !== prev.mtime) {\n fs$1.unwatchFile(path);\n resolve({ _identification: true, data: { msg: \"file is changed\" } });\n } else {\n resolve({\n _identification: false,\n data: { msg: \"file is not changed\" }\n });\n }\n });\n});\nclass Subscribe {\n constructor() {\n __publicField(this, \"_events\");\n __publicField(this, \"on\", (eventName, eventItem) => {\n if (this._events[eventName] && eventName !== Symbol.for(\"new-listener\")) {\n this.emit(Symbol.for(\"new-listener\"), eventName);\n }\n const callbacks = this._events[eventName] || [];\n if (typeof eventItem === \"function\") {\n callbacks.push({\n name: eventName,\n callback: eventItem\n });\n } else {\n callbacks.push(eventItem);\n }\n this._events[eventName] = callbacks;\n });\n __publicField(this, \"emit\", (eventName, ...args) => {\n const callbacks = this._events[eventName] || [];\n callbacks.forEach((item) => {\n const { callback } = item;\n callback(...args);\n });\n });\n __publicField(this, \"once\", (eventName, eventItem) => {\n let one;\n if (typeof eventItem === \"function\") {\n one = {\n name: eventName,\n callback: (...args) => {\n eventItem(...args);\n this.off(eventName, one);\n },\n initialCallback: eventItem\n };\n } else {\n const { callback } = eventItem;\n one = {\n name: eventName,\n callback: (...args) => {\n callback(...args);\n this.off(eventName, one);\n },\n initialCallback: callback\n };\n }\n this.on(eventName, one);\n });\n __publicField(this, \"off\", (eventName, eventItem) => {\n const callbacks = this._events[eventName] || [];\n const newCallbacks = callbacks.filter((item) => {\n if (typeof eventItem === \"function\") {\n return item.callback !== eventItem && item.initialCallback !== eventItem;\n } else {\n const { callback } = eventItem;\n return item.callback !== callback && item.initialCallback !== callback;\n }\n });\n this._events[eventName] = newCallbacks;\n });\n this._events = {};\n }\n}\nconst queryFileInfo = (path) => new Promise((resolve, reject) => {\n if (!fs$1._identification)\n return reject({ _identification: false, data: \"fs is not loaded\" });\n fs$1.stat(path, (err, data) => {\n err ? reject({ _identification: false, data: err }) : resolve({ _identification: true, data });\n });\n});\nconst filterObj = (obj, list) => {\n const result = {};\n Object.keys(obj).forEach((item) => {\n if (!list.includes(obj[item])) {\n result[item] = obj[item];\n }\n });\n return result;\n};\nconst readDir = (options) => {\n const { dirPath } = options;\n try {\n return fs$1.readdirSync(dirPath);\n } catch (error) {\n console.log(\"readDir error\", error);\n throw error;\n }\n};\nconst str2Xml = (xmlStr, format = \"text/xml\") => {\n if (window.DOMParser)\n return new window.DOMParser().parseFromString(xmlStr, format).documentElement;\n if (typeof window.ActiveXObject !== \"undefined\" && new window.ActiveXObject(\"Microsoft.XMLDOM\")) {\n const xmlDoc = new window.ActiveXObject(\"Microsoft.XMLDOM\");\n xmlDoc.async = \"false\";\n xmlDoc.loadXML(xmlStr);\n return xmlDoc;\n }\n return void 0;\n};\nfunction vnode$1(sel, data, children, text, elm) {\n const key = data === void 0 ? void 0 : data.key;\n return { sel, data, children, text, elm, key };\n}\nfunction createElement(tagName2, options) {\n return document.createElement(tagName2, options);\n}\nfunction createElementNS(namespaceURI, qualifiedName, options) {\n return document.createElementNS(namespaceURI, qualifiedName, options);\n}\nfunction createDocumentFragment() {\n return parseFragment(document.createDocumentFragment());\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode2, newNode, referenceNode) {\n if (isDocumentFragment(parentNode2)) {\n let node = parentNode2;\n while (node && isDocumentFragment(node)) {\n const fragment = parseFragment(node);\n node = fragment.parent;\n }\n parentNode2 = node != null ? node : parentNode2;\n }\n if (isDocumentFragment(newNode)) {\n newNode = parseFragment(newNode, parentNode2);\n }\n if (referenceNode && isDocumentFragment(referenceNode)) {\n referenceNode = parseFragment(referenceNode).firstChildNode;\n }\n parentNode2.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n if (isDocumentFragment(child)) {\n child = parseFragment(child, node);\n }\n node.appendChild(child);\n}\nfunction parentNode(node) {\n if (isDocumentFragment(node)) {\n while (node && isDocumentFragment(node)) {\n const fragment = parseFragment(node);\n node = fragment.parent;\n }\n return node != null ? node : null;\n }\n return node.parentNode;\n}\nfunction nextSibling(node) {\n var _a;\n if (isDocumentFragment(node)) {\n const fragment = parseFragment(node);\n const parent = parentNode(fragment);\n if (parent && fragment.lastChildNode) {\n const children = Array.from(parent.childNodes);\n const index = children.indexOf(fragment.lastChildNode);\n return (_a = children[index + 1]) != null ? _a : null;\n }\n return null;\n }\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nfunction isDocumentFragment(node) {\n return node.nodeType === 11;\n}\nfunction parseFragment(fragmentNode, parentNode2) {\n var _a, _b, _c;\n const fragment = fragmentNode;\n (_a = fragment.parent) != null ? _a : fragment.parent = parentNode2 != null ? parentNode2 : null;\n (_b = fragment.firstChildNode) != null ? _b : fragment.firstChildNode = fragmentNode.firstChild;\n (_c = fragment.lastChildNode) != null ? _c : fragment.lastChildNode = fragmentNode.lastChild;\n return fragment;\n}\nconst htmlDomApi = {\n createElement,\n createElementNS,\n createTextNode,\n createDocumentFragment,\n createComment,\n insertBefore,\n removeChild,\n appendChild,\n parentNode,\n nextSibling,\n tagName,\n setTextContent,\n getTextContent,\n isElement,\n isText,\n isComment,\n isDocumentFragment\n};\nconst array = Array.isArray;\nfunction primitive(s) {\n return typeof s === \"string\" || typeof s === \"number\";\n}\nfunction isVnode$1(s) {\n return !!(s == null ? void 0 : s.sel);\n}\nconst xlinkNS = \"http://www.w3.org/1999/xlink\";\nconst xmlNS = \"http://www.w3.org/XML/1998/namespace\";\nconst colonChar = 58;\nconst xChar = 120;\nfunction updateAttrs(oldVnode, vnode2) {\n let key;\n const elm = vnode2.elm;\n let oldAttrs = oldVnode.data && oldVnode.data.attrs;\n let attrs = vnode2.data && vnode2.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n for (key in attrs) {\n const cur = attrs[key];\n const old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n } else if (cur === false) {\n elm.removeAttribute(key);\n } else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n } else if (key.charCodeAt(3) === colonChar) {\n elm.setAttributeNS(xmlNS, key, cur);\n } else if (key.charCodeAt(5) === colonChar) {\n elm.setAttributeNS(xlinkNS, key, cur);\n } else {\n elm.setAttribute(key, `${cur}`);\n }\n }\n }\n }\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nconst attributesModule = { create: updateAttrs, update: updateAttrs };\nfunction updateClass(oldVnode, vnode2) {\n let cur;\n let name;\n const elm = vnode2.elm;\n let oldClass = oldVnode.data && oldVnode.data.class;\n let className = vnode2.data && vnode2.data.class;\n if (!oldClass && !className)\n return;\n if (oldClass === className)\n return;\n oldClass = oldClass || {};\n className = className || {};\n for (name in oldClass) {\n if (oldClass[name] && !Object.prototype.hasOwnProperty.call(className, name)) {\n elm.classList.remove(name);\n }\n }\n for (name in className) {\n cur = className[name];\n if (cur !== oldClass[name]) {\n elm.classList[cur ? \"add\" : \"remove\"](name);\n }\n }\n}\nconst classModule = { create: updateClass, update: updateClass };\nconst isFunction = (handler) => {\n return typeof handler === \"function\";\n};\nfunction invokeHandler(handler, vnode2, event) {\n if (isFunction(handler)) {\n handler.call(vnode2, event, vnode2);\n } else if (typeof handler === \"object\") {\n for (let i = 0; i < handler.length; i++) {\n invokeHandler(handler[i], vnode2, event);\n }\n }\n}\nfunction handleEvent(event, vnode2) {\n const name = event.type;\n const on = vnode2.data && vnode2.data.on;\n if (on && on[name]) {\n invokeHandler(on[name], vnode2, event);\n }\n}\nfunction createListener() {\n return function handler(event) {\n handleEvent(event, handler.vnode);\n };\n}\nfunction updateEventListeners(oldVnode, vnode2) {\n var _a, _b;\n const oldOn = (_a = oldVnode == null ? void 0 : oldVnode.data) == null ? void 0 : _a.on;\n const oldListener = oldVnode == null ? void 0 : oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = (_b = vnode2 == null ? void 0 : vnode2.data) == null ? void 0 : _b.on;\n const elm = vnode2 && vnode2.elm;\n let name;\n if (oldOn === on) {\n return;\n }\n if (oldOn && oldListener) {\n if (!on) {\n for (name in oldOn) {\n oldElm.removeEventListener(name, oldListener, false);\n }\n } else {\n for (name in oldOn) {\n if (!on[name]) {\n oldElm.removeEventListener(name, oldListener, false);\n }\n }\n }\n }\n if (on) {\n const listener = vnode2.listener = oldVnode.listener || createListener();\n if (!oldOn) {\n for (name in on) {\n elm.addEventListener(name, listener, false);\n }\n } else {\n for (name in on) {\n if (!oldOn[name]) {\n elm.addEventListener(name, listener, false);\n }\n }\n }\n }\n}\nconst eventListenersModule = {\n create: updateEventListeners,\n update: updateEventListeners,\n destroy: updateEventListeners\n};\nfunction updateProps(oldVnode, vnode2) {\n let key;\n let cur;\n let old;\n const elm = vnode2.elm;\n let oldProps = oldVnode.data ? oldVnode.data.props : void 0;\n let props = vnode2.data ? vnode2.data.props : void 0;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== \"value\" || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nconst propsModule = { create: updateProps, update: updateProps };\nlet reflowForced = false;\nfunction updateStyle(oldVnode, vnode2) {\n let cur;\n let name;\n const elm = vnode2.elm;\n let oldStyle = oldVnode.data.style;\n let style = vnode2.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === \"-\" && name[1] === \"-\") {\n elm.style.removeProperty(name);\n } else {\n elm.style[name] = \"\";\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (cur !== oldStyle[name]) {\n if (name[0] === \"-\" && name[1] === \"-\") {\n elm.style.setProperty(name, cur);\n } else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction forceReflow() {\n reflowForced = false;\n}\nfunction applyDestroyStyle(vnode2) {\n let style;\n let name;\n const elm = vnode2.elm;\n const s = vnode2.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode2, rm) {\n const s = vnode2.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n if (!reflowForced) {\n vnode2.elm.offsetLeft;\n reflowForced = true;\n }\n let name;\n const elm = vnode2.elm;\n let i = 0;\n const style = s.remove;\n let amount = 0;\n const applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n const compStyle = getComputedStyle(elm);\n const props = compStyle[\"transition-property\"].split(\", \");\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener(\n \"transitionend\",\n function(ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n }\n );\n}\nconst styleModule = {\n pre: forceReflow,\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nconst modules = {\n attributesModule,\n classModule,\n eventListenersModule,\n propsModule,\n styleModule\n};\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode2) {\n return vnode2.sel !== void 0;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var _a;\n const map = {};\n for (let i = beginIdx; i <= endIdx; ++i) {\n const key = (_a = children[i]) == null ? void 0 : _a.key;\n if (key !== void 0) {\n map[key] = i;\n }\n }\n return map;\n}\nconst emptyNode = vnode$1(\"\", {}, [], void 0, void 0);\nfunction init() {\n const api = htmlDomApi;\n const cbs = {\n create: [],\n update: [],\n destroy: []\n };\n for (const key of Object.keys(cbs)) {\n cbs[key] = [];\n for (const module of Object.keys(modules)) {\n const hook = modules[module][key];\n if (hook !== void 0) {\n cbs[key].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n const id = elm.id ? \"#\" + elm.id : \"\";\n const c = elm.className ? \".\" + elm.className.split(\" \").join(\".\") : \"\";\n return vnode$1(\n api.tagName(elm).toLowerCase() + id + c,\n {},\n [],\n void 0,\n elm\n );\n }\n function isUndef(s) {\n return s === void 0;\n }\n function isDef(s) {\n return s !== void 0;\n }\n function createElm(vnode2) {\n let i;\n const children = vnode2.children;\n const sel = vnode2.sel;\n if (sel === \"!\") {\n if (isUndef(vnode2.text)) {\n vnode2.text = \"\";\n }\n vnode2.elm = api.createComment(`${vnode2.text}`);\n } else if (sel !== void 0) {\n const hashIdx = sel.indexOf(\"#\");\n const dotIdx = sel.indexOf(\".\", hashIdx);\n const hash = hashIdx > 0 ? hashIdx : sel.length;\n const dot = dotIdx > 0 ? dotIdx : sel.length;\n const tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n const elm = vnode2.elm = api.createElement(tag);\n if (hash < dot)\n elm.setAttribute(\"id\", sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute(\"class\", sel.slice(dot + 1).replace(/\\./g, \" \"));\n for (i = 0; i < cbs.create.length; ++i) {\n cbs.create[i](emptyNode, vnode2);\n }\n if (array(children)) {\n for (i = 0; i < children.length; ++i) {\n const ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch));\n }\n }\n } else if (primitive(vnode2.text)) {\n api.appendChild(elm, api.createTextNode(`${vnode2.text}`));\n }\n } else {\n vnode2.elm = api.createTextNode(`${vnode2.text}`);\n }\n return vnode2.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n const ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch), before);\n }\n }\n }\n function invokeDestroyHook(vnode2) {\n const data = vnode2.data;\n if (data !== void 0) {\n for (let i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode2);\n if (vnode2.children !== void 0) {\n for (let j = 0; j < vnode2.children.length; ++j) {\n const child = vnode2.children[j];\n if (child != null && typeof child !== \"string\" && typeof child !== \"number\") {\n invokeDestroyHook(child);\n }\n }\n }\n }\n }\n function createRmCb(childElm) {\n return function rmCb() {\n const parent = api.parentNode(childElm);\n api.removeChild(parent, childElm);\n };\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n let rm;\n const ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n rm = createRmCb(ch.elm);\n rm();\n } else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh) {\n let oldStartIdx = 0;\n let newStartIdx = 0;\n let oldEndIdx = oldCh.length - 1;\n let newEndIdx = newCh.length - 1;\n let oldStartVnode = oldCh[0];\n let oldEndVnode = oldCh[oldEndIdx];\n let newStartVnode = newCh[0];\n let newEndVnode = newCh[newEndIdx];\n let oldKeyToIdx;\n let idxInOld;\n let elmToMove;\n let before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx];\n } else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n } else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode);\n api.insertBefore(\n parentElm,\n oldStartVnode.elm,\n api.nextSibling(oldEndVnode.elm)\n );\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (oldKeyToIdx === void 0) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(\n parentElm,\n createElm(newStartVnode),\n oldStartVnode.elm\n );\n } else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(\n parentElm,\n createElm(newStartVnode),\n oldStartVnode.elm\n );\n } else {\n patchVnode(elmToMove, newStartVnode);\n oldCh[idxInOld] = void 0;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);\n } else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode2) {\n if (vnode2.data !== void 0) {\n for (let i = 0; i < cbs.update.length; ++i) {\n cbs.update[i](oldVnode, vnode2);\n }\n }\n const elm = vnode2.elm = oldVnode.elm;\n const oldCh = oldVnode.children;\n const ch = vnode2.children;\n if (oldVnode === vnode2)\n return;\n if (isUndef(vnode2.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) {\n updateChildren(elm, oldCh, ch);\n }\n }\n }\n }\n return function patch(oldVnode, vnode2) {\n let elm, parent;\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode2)) {\n patchVnode(oldVnode, vnode2);\n } else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode2);\n if (parent != null) {\n api.insertBefore(parent, vnode2.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n return vnode2;\n };\n}\nfunction addNS(data, children, sel) {\n data.ns = \"http://www.w3.org/2000/svg\";\n if (sel !== \"foreignObject\" && children !== void 0) {\n for (let i = 0; i < children.length; ++i) {\n const child = children[i];\n if (typeof child === \"string\" || typeof child === \"number\")\n continue;\n const childData = child.data;\n if (childData !== void 0) {\n addNS(childData, child.children, child.sel);\n }\n }\n }\n}\nfunction h(sel, b, c) {\n let data = {};\n let children = void 0;\n let text;\n let i;\n if (c !== void 0) {\n if (b != null) {\n data = b;\n }\n if (array(c)) {\n children = c;\n } else if (primitive(c)) {\n text = c;\n } else if (c && c.sel) {\n children = [c];\n }\n } else if (b !== void 0 && b != null) {\n if (array(b)) {\n children = b;\n } else if (primitive(b)) {\n text = b;\n } else {\n if (isVnode$1(b)) {\n children = [b];\n } else {\n data = b;\n }\n }\n }\n if (typeof children !== \"undefined\") {\n for (i = 0; i < children.length; ++i) {\n const msg = children[i];\n if (primitive(msg)) {\n children[i] = vnode$1(void 0, void 0, void 0, msg, void 0);\n }\n }\n }\n if (sel[0] === \"s\" && sel[1] === \"v\" && sel[2] === \"g\" && (sel.length === 3 || sel[3] === \".\" || sel[3] === \"#\")) {\n addNS(data, children, sel);\n }\n return vnode$1(sel, data, children, text, void 0);\n}\nfunction querystring(data = {}) {\n if (typeof data !== \"object\") {\n throw new TypeError(\"param must be object\");\n }\n return Object.entries(data).reduce(\n (searchParams, [name, value]) => value === void 0 || value == null ? searchParams : (searchParams.append(\n decodeURIComponent(name),\n decodeURIComponent(value)\n ), searchParams),\n new URLSearchParams()\n ).toString();\n}\nfunction randomString(len = 8) {\n const chars = \"ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678\";\n const maxPos = chars.length;\n let pwd = \"\";\n for (let i = 0; i < len; i++) {\n pwd += chars.charAt(Math.floor(Math.random() * maxPos));\n }\n return `${Date.now()}-${pwd}`;\n}\nfunction getCookie(name) {\n if (typeof window !== \"undefined\") {\n const cookieList = document.cookie.match(\n new RegExp(`(^| )${name}(?:=([^;]*))?(;|$)`)\n );\n if (cookieList && cookieList[2])\n return cookieList[2];\n }\n return \"\";\n}\nconst getWindow = () => {\n if (typeof window.innerWidth !== \"undefined\") {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n return {\n width: 0,\n height: 0\n };\n};\nfunction createData(params = {}) {\n if (typeof window !== \"undefined\") {\n const { width, height } = getWindow();\n return Object.assign(\n {},\n {\n id: randomString(),\n path: window.location.href,\n time: Date.now(),\n referrer: document.referrer,\n ip: window.returnCitySN || { cid: \"\", cip: \"\", cname: \"\" },\n userId: getCookie(\"chaxus_prod\"),\n ratio: `${width}x${height}`,\n userAgent: window.navigator.userAgent\n },\n params\n );\n }\n return {};\n}\nconst throttle = (fn, wait = 500) => {\n let timer = null;\n return function(...args) {\n const context = this;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n fn.apply(context, args);\n }, wait);\n }\n };\n};\nconst Noop = () => {\n};\nfunction replaceOld(source, name, replacement, isForced) {\n if (typeof source === \"undefined\")\n return;\n if (name in source || isForced) {\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === \"function\") {\n source[name] = wrapped;\n }\n }\n}\nconst isString = (obj) => {\n return toString.call(obj) === \"[object String]\";\n};\nconst handleClick = (hooks = Noop) => {\n if (typeof document !== \"undefined\") {\n document.addEventListener(\n \"click\",\n function(event) {\n hooks(event);\n },\n true\n );\n }\n};\nconst handleError = (hooks = Noop) => {\n if (typeof window !== \"undefined\") {\n window.addEventListener(\n \"unhandledrejection\",\n (error) => {\n hooks(error);\n },\n true\n );\n window.addEventListener(\n \"error\",\n (error) => {\n hooks(error);\n return false;\n },\n true\n );\n }\n};\nfunction getPerformance() {\n if (typeof window !== \"undefined\") {\n const [performanceNavigationTiming] = performance.getEntriesByType(\"navigation\");\n const [firstPaint = {}, firstContentfulPaint = {}] = performance.getEntriesByType(\"paint\");\n const { startTime: fp } = firstPaint;\n const { startTime: fcp } = firstContentfulPaint;\n const {\n domainLookupEnd,\n domainLookupStart,\n connectEnd,\n connectStart,\n secureConnectionStart,\n loadEventStart,\n domInteractive,\n domContentLoadedEventEnd,\n duration,\n responseStart,\n requestStart,\n responseEnd,\n fetchStart,\n transferSize,\n encodedBodySize,\n redirectEnd,\n redirectStart,\n redirectCount\n } = performanceNavigationTiming;\n return {\n dnsSearch: domainLookupEnd - domainLookupStart,\n tcpConnect: connectEnd - connectStart,\n sslConnect: connectEnd - secureConnectionStart,\n request: responseStart - requestStart,\n response: responseEnd - responseStart,\n parseDomTree: domInteractive - responseEnd,\n resource: loadEventStart - domContentLoadedEventEnd,\n domReady: domContentLoadedEventEnd - fetchStart,\n interactive: domInteractive - fetchStart,\n complete: loadEventStart - fetchStart,\n httpHead: transferSize - encodedBodySize,\n redirect: redirectCount,\n redirectTime: redirectEnd - redirectStart,\n duration,\n fp,\n fcp\n };\n }\n}\nconst getHost = (env) => {\n if (typeof window !== \"undefined\") {\n if (env && isString(env)) {\n if (/trunk|neibu|release/.test(env))\n ;\n else if (/test/.test(env))\n ;\n else if (/prod/.test(env))\n ;\n else\n ;\n } else {\n const env2 = /\\w(\\.trunk|\\.neibu|\\.release|test)\\./.exec(\n window.location.hostname\n );\n if (env2) {\n env2[1];\n }\n }\n return \"//log.chaxus.com\";\n }\n};\nconst sendBeacon = ({\n url = \"\",\n type = \"application/json; charset=UTF-8\",\n payload = {}\n}) => {\n const requestUrl = url ? url : getHost();\n if (navigator.sendBeacon && requestUrl) {\n const param = new Blob([JSON.stringify(payload)], { type });\n return navigator.sendBeacon(requestUrl, param);\n }\n};\nconst sendImage = ({ url = \"\", payload = {} }) => {\n const requestUrl = url ? url : getHost();\n if (typeof document !== \"undefined\" && requestUrl) {\n const image = new Image();\n image.width = 1;\n image.height = 1;\n image.src = `${requestUrl}?${querystring(payload)}`;\n }\n};\nconst report = ({\n url = \"\",\n type = \"application/json; charset=UTF-8\",\n payload = {}\n}) => {\n const requestUrl = url ? url : getHost();\n if (typeof navigator !== \"undefined\") {\n return sendBeacon({ url: requestUrl, type, payload });\n }\n return sendImage({ url: requestUrl, payload });\n};\nconst handleFetchHook = (options = {}) => {\n if (typeof window !== \"undefined\") {\n const {\n requestHook = Noop,\n responseHook = Noop,\n errorHook = Noop\n } = options;\n const replacement = (originalFetch) => {\n return (url, config) => {\n requestHook(url, config);\n return originalFetch.apply(window, [url, config]).then((response) => {\n responseHook(url, config, response);\n return response;\n }).catch((error) => {\n errorHook(url, error);\n throw error;\n });\n };\n };\n replaceOld(window, \"fetch\", replacement);\n }\n};\nconst handleXhrHook = (options = {}) => {\n if (typeof window !== \"undefined\") {\n const originalXhrProto = XMLHttpRequest.prototype;\n const {\n requestHook = Noop,\n responseHook = Noop,\n errorHook = Noop\n } = options;\n const replacementXhrOpen = (originalOpen) => {\n return function(...args) {\n requestHook(args);\n originalOpen.apply(this, args);\n };\n };\n replaceOld(originalXhrProto, \"open\", replacementXhrOpen);\n const replacementXhrSend = (originalSend) => {\n return function(...args) {\n this.addEventListener(\"loadend\", function() {\n responseHook(this);\n });\n this.addEventListener(\"error\", function() {\n errorHook(this);\n });\n originalSend.apply(this, args);\n };\n };\n replaceOld(originalXhrProto, \"send\", replacementXhrSend);\n }\n};\nconst handleConsole = (hooks = Noop) => {\n const consoleTypeList = [\"log\", \"info\", \"warn\", \"error\", \"assert\"];\n consoleTypeList.forEach((type) => {\n const replacement = (originalConsole) => {\n return function(...args) {\n if (originalConsole) {\n hooks(type, ...args);\n originalConsole.apply(console, args);\n }\n };\n };\n replaceOld(console, type, replacement);\n });\n};\nclass Monitor {\n constructor() {\n __publicField(this, \"init\", () => {\n this.reportClick();\n this.reportError();\n this.reportFetch();\n this.reportPerformance();\n this.reportXhr();\n });\n this.initialize();\n }\n reportPerformance() {\n const params = getPerformance();\n const payload = createData();\n report({\n payload: {\n ...params,\n ...payload\n }\n });\n }\n log(payload) {\n report({ payload });\n }\n reportClick() {\n const throttleReport = throttle(report);\n const payload = createData();\n const hook = (event) => {\n const { pageX, pageY, screenX, screenY, type } = event;\n throttleReport({\n payload: {\n ...payload,\n data: { pageX, pageY, screenX, screenY, type },\n type: \"click\"\n }\n });\n };\n handleClick(hook);\n }\n reportXhr() {\n const throttleReport = throttle(report);\n const payload = createData();\n const requestHook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"xhrRequest\" }\n });\n };\n const responseHook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"xhrResponse\" }\n });\n };\n const errorHook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"xhrError\" }\n });\n };\n handleXhrHook({ requestHook, responseHook, errorHook });\n }\n reportFetch() {\n const throttleReport = throttle(report);\n const payload = createData();\n const requestHook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"fetchRequest\" }\n });\n };\n const responseHook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"fetchResponse\" }\n });\n };\n const errorHook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"fetchError\" }\n });\n };\n handleFetchHook({ requestHook, responseHook, errorHook });\n }\n reportError() {\n const throttleReport = throttle(report);\n const payload = createData();\n const hook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"error\" }\n });\n };\n handleError(hook);\n }\n reportConsole() {\n const throttleReport = throttle(report);\n const payload = createData();\n const hook = (...args) => {\n throttleReport({\n payload: { ...payload, data: { ...args }, type: \"console\" }\n });\n };\n handleConsole(hook);\n }\n initialize() {\n if (typeof window !== \"undefined\" && !window.ranlog) {\n window.ranlog = true;\n this.init();\n }\n if (typeof process !== \"undefined\" && !process.ranlog) {\n process.ranlog = true;\n this.init();\n }\n }\n}\nconst MimeType = /* @__PURE__ */ new Map([\n [\".ez\", \"application/andrew-inset\"],\n [\".aw\", \"application/applixware\"],\n [\".txt\", \"text/plain\"],\n [\".ez\", \"application/andrew-inset\"],\n [\".aw\", \"application/applixware\"],\n [\".atom\", \"application/atom+xml\"],\n [\".atomcat\", \"application/atomcat+xml\"],\n [\".atomsvc\", \"application/atomsvc+xml\"],\n [\".ccxml\", \"application/ccxml+xml\"],\n [\".cu\", \"application/cu-seeme\"],\n [\".davmount\", \"application/davmount+xml\"],\n [\".ecma\", \"application/ecmascript\"],\n [\".emma\", \"application/emma+xml\"],\n [\".epub\", \"application/epub+zip\"],\n [\".pfr\", \"application/font-tdpfr\"],\n [\".stk\", \"application/hyperstudio\"],\n [\".jar\", \"application/java-archive\"],\n [\".ser\", \"application/java-serialized-object\"],\n [\".class\", \"application/java-vm\"],\n [\".js\", \"application/javascript\"],\n [\".ts\", \"application/javascript\"],\n [\".json\", \"application/json\"],\n [\".lostxml\", \"application/lost+xml\"],\n [\".hqx\", \"application/mac-binhex40\"],\n [\".cpt\", \"application/mac-compactpro\"],\n [\".mrc\", \"application/marc\"],\n [\".ma,\", \"application/mathematica\"],\n [\".nb\", \"application/mathematica\"],\n [\".mb\", \"application/mathematica\"],\n [\".mathml\", \"application/mathml+xml\"],\n [\".mbox\", \"application/mbox\"],\n [\".mscml\", \"application/mediaservercontrol+xml\"],\n [\".mp4s\", \"application/mp4\"],\n [\".doc\", \"application/msword\"],\n [\".dot\", \"application/msword\"],\n [\".mxf\", \"application/mxf\"],\n [\".oda\", \"application/oda\"],\n [\".opf\", \"application/oebps-package+xml\"],\n [\".ogx\", \"application/ogg\"],\n [\".onetoc\", \"application/onenote\"],\n [\".onetoc2\", \"application/onenote\"],\n [\".onetmp\", \"application/onenote\"],\n [\".onepkg\", \"application/onenote\"],\n [\".xer\", \"application/patch-ops-error+xml\"],\n [\".pdf\", \"application/pdf\"],\n [\".pgp\", \"application/pgp-encrypted\"],\n [\".asc\", \"application/pgp-signature\"],\n [\".sig\", \"application/pgp-signature\"],\n [\".prf\", \"application/pics-rules\"],\n [\".p10\", \"application/pkcs10\"],\n [\".p7c\", \"application/pkcs7-mime\"],\n [\".p7m\", \"application/pkcs7-mime\"],\n [\".p7s\", \"application/pkcs7-signature\"],\n [\".cer\", \"application/pkix-cert\"],\n [\".crl\", \"application/pkix-crl\"],\n [\".pkipath\", \"application/pkix-pkipath\"],\n [\".pki\", \"application/pkixcmp\"],\n [\".pls\", \"application/pls+xml\"],\n [\".ai\", \"application/postscript\"],\n [\".eps\", \"application/postscript\"],\n [\".ps\", \"application/postscript\"],\n [\".cww\", \"application/prs.cww\"],\n [\".rdf\", \"application/rdf+xml\"],\n [\".rif\", \"application/reginfo+xml\"],\n [\".rnc\", \"application/relax-ng-compact-syntax\"],\n [\".rl\", \"application/resource-lists+xml\"],\n [\".rld\", \"application/resource-lists-diff+xml\"],\n [\".rs\", \"application/rls-services+xml\"],\n [\".rsd\", \"application/rsd+xml\"],\n [\".rss\", \"application/rss+xml\"],\n [\".rtf\", \"application/rtf\"],\n [\".sbml\", \"application/sbml+xml\"],\n [\".scq\", \"application/scvp-cv-request\"],\n [\".scs\", \"application/scvp-cv-response\"],\n [\".spq\", \"application/scvp-vp-request\"],\n [\".spp\", \"application/scvp-vp-response\"],\n [\".sdp\", \"application/sdp\"],\n [\".setpay\", \"application/set-payment-initiation\"],\n [\".setreg\", \"application/set-registration-initiation\"],\n [\".shf\", \"application/shf+xml\"],\n [\".smil\", \"application/smil+xml\"],\n [\".smi\", \"application/smil+xml\"],\n [\".rq\", \"application/sparql-query\"],\n [\".srx\", \"application/sparql-results+xml\"],\n [\".gram\", \"application/srgs\"],\n [\".grxml\", \"application/srgs+xml\"],\n [\".ssml\", \"application/ssml+xml\"],\n [\".plb\", \"application/vnd.3gpp.pic-bw-large\"],\n [\".psb\", \"application/vnd.3gpp.pic-bw-small\"],\n [\".pvb\", \"application/vnd.3gpp.pic-bw-var\"],\n [\".tcap\", \"application/vnd.3gpp2.tcap\"],\n [\".pwn\", \"application/vnd.3m.post-it-notes\"],\n [\".aso\", \"application/vnd.accpac.simply.aso\"],\n [\".imp\", \"application/vnd.accpac.simply.imp\"],\n [\".acu\", \"application/vnd.acucobol\"],\n [\".atc\", \"application/vnd.acucorp\"],\n [\".acutc\", \"application/vnd.acucorp\"],\n [\".air\", \"application/vnd.adobe.air-application-installer-package+zip\"],\n [\".xdp\", \"application/vnd.adobe.xdp+xml\"],\n [\".xfdf\", \"application/vnd.adobe.xfdf\"],\n [\".azf\", \"application/vnd.airzip.filesecure.azf\"],\n [\".azs\", \"application/vnd.airzip.filesecure.azs\"],\n [\".azw\", \"application/vnd.amazon.ebook\"],\n [\".acc\", \"application/vnd.americandynamics.acc\"],\n [\".ami\", \"application/vnd.amiga.ami\"],\n [\".apk\", \"application/vnd.android.package-archive\"],\n [\".cii\", \"application/vnd.anser-web-certificate-issue-initiation\"],\n [\".fti\", \"application/vnd.anser-web-funds-transfer-initiation\"],\n [\".atx\", \"application/vnd.antix.game-component\"],\n [\".mpkg\", \"application/vnd.apple.installer+xml\"],\n [\".swi\", \"application/vnd.arastra.swi\"],\n [\".aep\", \"application/vnd.audiograph\"],\n [\".mpm\", \"application/vnd.blueice.multipass\"],\n [\".bmi\", \"application/vnd.bmi\"],\n [\".rep\", \"application/vnd.businessobjects\"],\n [\".cdxml\", \"application/vnd.chemdraw+xml\"],\n [\".mmd\", \"application/vnd.chipnuts.karaoke-mmd\"],\n [\".cdy\", \"application/vnd.cinderella\"],\n [\".cla\", \"application/vnd.claymore\"],\n [\".c4u\", \"application/vnd.clonk.c4group\"],\n [\".c4p\", \"application/vnd.clonk.c4group\"],\n [\".c4f\", \"application/vnd.clonk.c4group\"],\n [\".c4d\", \"application/vnd.clonk.c4group\"],\n [\".c4g\", \"application/vnd.clonk.c4group\"],\n [\".csp\", \"application/vnd.commonspace\"],\n [\".cdbcmsg\", \"application/vnd.contact.cmsg\"],\n [\".cmc\", \"application/vnd.cosmocaller\"],\n [\".clkx\", \"application/vnd.crick.clicker\"],\n [\".clkk\", \"application/vnd.crick.clicker.keyboard\"],\n [\".clkp\", \"application/vnd.crick.clicker.palette\"],\n [\".clkt\", \"application/vnd.crick.clicker.template\"],\n [\".clkw\", \"application/vnd.crick.clicker.wordbank\"],\n [\".wbs\", \"application/vnd.criticaltools.wbs+xml\"],\n [\".pml\", \"application/vnd.ctc-posml\"],\n [\".ppd\", \"application/vnd.cups-ppd\"],\n [\".car\", \"application/vnd.curl.car\"],\n [\".pcurl\", \"application/vnd.curl.pcurl\"],\n [\".rdz\", \"application/vnd.data-vision.rdz\"],\n [\".fe_launch\", \"application/vnd.denovo.fcselayout-link\"],\n [\".dna\", \"application/vnd.dna\"],\n [\".mlp\", \"application/vnd.dolby.mlp\"],\n [\".dpg\", \"application/vnd.dpgraph\"],\n [\".dfac\", \"application/vnd.dreamfactory\"],\n [\".geo\", \"application/vnd.dynageo\"],\n [\".mag\", \"application/vnd.ecowin.chart\"],\n [\".nml\", \"application/vnd.enliven\"],\n [\".esf\", \"application/vnd.epson.esf\"],\n [\".msf\", \"application/vnd.epson.msf\"],\n [\".qam\", \"application/vnd.epson.quickanime\"],\n [\".slt\", \"application/vnd.epson.salt\"],\n [\".ssf\", \"application/vnd.epson.ssf\"],\n [\".et3\", \"application/vnd.eszigno3+xml\"],\n [\".es3\", \"application/vnd.eszigno3+xml\"],\n [\".ez2\", \"application/vnd.ezpix-album\"],\n [\".ez3\", \"application/vnd.ezpix-package\"],\n [\".fdf\", \"application/vnd.fdf\"],\n [\".mseed\", \"application/vnd.fdsn.mseed\"],\n [\".dataless\", \"application/vnd.fdsn.seed\"],\n [\".seed\", \"application/vnd.fdsn.seed\"],\n [\".gph\", \"application/vnd.flographit\"],\n [\".ftc\", \"application/vnd.fluxtime.clip\"],\n [\".fm\", \"application/vnd.framemaker\"],\n [\".frame\", \"application/vnd.framemaker\"],\n [\".maker\", \"application/vnd.framemaker\"],\n [\".book\", \"application/vnd.framemaker\"],\n [\".fnc\", \"application/vnd.frogans.fnc\"],\n [\".ltf\", \"application/vnd.frogans.ltf\"],\n [\".fsc\", \"application/vnd.fsc.weblaunch\"],\n [\".oas\", \"application/vnd.fujitsu.oasys\"],\n [\".oa2\", \"application/vnd.fujitsu.oasys2\"],\n [\".oa3\", \"application/vnd.fujitsu.oasys3\"],\n [\".fg5\", \"application/vnd.fujitsu.oasysgp\"],\n [\".bh2\", \"application/vnd.fujitsu.oasysprs\"],\n [\".ddd\", \"application/vnd.fujixerox.ddd\"],\n [\".xdw\", \"application/vnd.fujixerox.docuworks\"],\n [\".xbd\", \"application/vnd.fujixerox.docuworks.binder\"],\n [\".fzs\", \"application/vnd.fuzzysheet\"],\n [\".txd\", \"application/vnd.genomatix.tuxedo\"],\n [\".ggb\", \"application/vnd.geogebra.file\"],\n [\".ggt\", \"application/vnd.geogebra.tool\"],\n [\".gre\", \"application/vnd.geometry-explorer\"],\n [\".gex\", \"application/vnd.geometry-explorer\"],\n [\".gmx\", \"application/vnd.gmx\"],\n [\".kml\", \"application/vnd.google-earth.kml+xml\"],\n [\".kmz\", \"application/vnd.google-earth.kmz\"],\n [\".gqf\", \"application/vnd.grafeq\"],\n [\".gqs\", \"application/vnd.grafeq\"],\n [\".gac\", \"application/vnd.groove-account\"],\n [\".ghf\", \"application/vnd.groove-help\"],\n [\".gim\", \"application/vnd.groove-identity-message\"],\n [\".grv\", \"application/vnd.groove-injector\"],\n [\".gtm\", \"application/vnd.groove-tool-message\"],\n [\".tpl\", \"application/vnd.groove-tool-template\"],\n [\".vcg\", \"application/vnd.groove-vcard\"],\n [\".zmm\", \"application/vnd.handheld-entertainment+xml\"],\n [\".hbci\", \"application/vnd.hbci\"],\n [\".les\", \"application/vnd.hhe.lesson-player\"],\n [\".hpgl\", \"application/vnd.hp-hpgl\"],\n [\".hpid\", \"application/vnd.hp-hpid\"],\n [\".hps\", \"application/vnd.hp-hps\"],\n [\".jlt\", \"application/vnd.hp-jlyt\"],\n [\".pcl\", \"application/vnd.hp-pcl\"],\n [\".pclxl\", \"application/vnd.hp-pclxl\"],\n [\".sfd-hdstx\", \"application/vnd.hydrostatix.sof-data\"],\n [\".x3d\", \"application/vnd.hzn-3d-crossword\"],\n [\".mpy\", \"application/vnd.ibm.minipay\"],\n [\".afp\", \"application/vnd.ibm.modcap\"],\n [\".listafp\", \"application/vnd.ibm.modcap\"],\n [\".list3820\", \"application/vnd.ibm.modcap\"],\n [\".irm\", \"application/vnd.ibm.rights-management\"],\n [\".sc\", \"application/vnd.ibm.secure-container\"],\n [\".icm\", \"application/vnd.iccprofile\"],\n [\".icc\", \"application/vnd.iccprofile\"],\n [\".igl\", \"application/vnd.igloader\"],\n [\".ivp\", \"application/vnd.immervision-ivp\"],\n [\".ivu\", \"application/vnd.immervision-ivu\"],\n [\".xpw\", \"application/vnd.intercon.formnet\"],\n [\".xpx\", \"application/vnd.intercon.formnet\"],\n [\".qbo\", \"application/vnd.intu.qbo\"],\n [\".qfx\", \"application/vnd.intu.qfx\"],\n [\".rcprofile\", \"application/vnd.ipunplugged.rcprofile\"],\n [\".irp\", \"application/vnd.irepository.package+xml\"],\n [\".xpr\", \"application/vnd.is-xpr\"],\n [\".jam\", \"application/vnd.jam\"],\n [\".rms\", \"application/vnd.jcp.javame.midlet-rms\"],\n [\".jisp\", \"application/vnd.jisp\"],\n [\".joda\", \"application/vnd.joost.joda-archive\"],\n [\".ktz\", \"application/vnd.kahootz\"],\n [\".ktr\", \"application/vnd.kahootz\"],\n [\".karbon\", \"application/vnd.kde.karbon\"],\n [\".chrt\", \"application/vnd.kde.kchart\"],\n [\".kfo\", \"application/vnd.kde.kformula\"],\n [\".flw\", \"application/vnd.kde.kivio\"],\n [\".kon\", \"application/vnd.kde.kontour\"],\n [\".kpt\", \"application/vnd.kde.kpresenter\"],\n [\".kpr\", \"application/vnd.kde.kpresenter\"],\n [\".ksp\", \"application/vnd.kde.kspread\"],\n [\".kwd\", \"application/vnd.kde.kword\"],\n [\".kwt\", \"application/vnd.kde.kword\"],\n [\".htke\", \"application/vnd.kenameaapp\"],\n [\".kia\", \"application/vnd.kidspiration\"],\n [\".kne\", \"application/vnd.kinar\"],\n [\".knp\", \"application/vnd.kinar\"],\n [\".skp\", \"application/vnd.koan\"],\n [\".skd\", \"application/vnd.koan\"],\n [\".skt\", \"application/vnd.koan\"],\n [\".skm\", \"application/vnd.koan\"],\n [\".sse\", \"application/vnd.kodak-descriptor\"],\n [\".lbd\", \"application/vnd.llamagraphics.life-balance.desktop\"],\n [\".lbe\", \"application/vnd.llamagraphics.life-balance.exchange+xml\"],\n [\".123\", \"application/vnd.lotus-1-2-3\"],\n [\".apr\", \"application/vnd.lotus-approach\"],\n [\".pre\", \"application/vnd.lotus-freelance\"],\n [\".nsf\", \"application/vnd.lotus-notes\"],\n [\".org\", \"application/vnd.lotus-organizer\"],\n [\".scm\", \"application/vnd.lotus-screencam\"],\n [\".lwp\", \"application/vnd.lotus-wordpro\"],\n [\".portpkg\", \"application/vnd.macports.portpkg\"],\n [\".mcd\", \"application/vnd.mcd\"],\n [\".mc1\", \"application/vnd.medcalcdata\"],\n [\".cdkey\", \"application/vnd.mediastation.cdkey\"],\n [\".mwf\", \"application/vnd.mfer\"],\n [\".mfm\", \"application/vnd.mfmp\"],\n [\".flo\", \"application/vnd.micrografx.flo\"],\n [\".igx\", \"application/vnd.micrografx.igx\"],\n [\".mif\", \"application/vnd.mif\"],\n [\".daf\", \"application/vnd.mobius.daf\"],\n [\".dis\", \"application/vnd.mobius.dis\"],\n [\".mbk\", \"application/vnd.mobius.mbk\"],\n [\".mqy\", \"application/vnd.mobius.mqy\"],\n [\".msl\", \"application/vnd.mobius.msl\"],\n [\".plc\", \"application/vnd.mobius.plc\"],\n [\".txf\", \"application/vnd.mobius.txf\"],\n [\".mpn\", \"application/vnd.mophun.application\"],\n [\".mpc\", \"application/vnd.mophun.certificate\"],\n [\".xul\", \"application/vnd.mozilla.xul+xml\"],\n [\".cil\", \"application/vnd.ms-artgalry\"],\n [\".cab\", \"application/vnd.ms-cab-compressed\"],\n [\".xls\", \"application/vnd.ms-excel\"],\n [\".xlm\", \"application/vnd.ms-excel\"],\n [\".xla\", \"application/vnd.ms-excel\"],\n [\".xlc\", \"application/vnd.ms-excel\"],\n [\".xlt\", \"application/vnd.ms-excel\"],\n [\".xlw\", \"application/vnd.ms-excel\"],\n [\".xlam\", \"application/vnd.ms-excel.addin.macroenabled.12\"],\n [\".xlsb\", \"application/vnd.ms-excel.sheet.binary.macroenabled.12\"],\n [\".xlsm\", \"application/vnd.ms-excel.sheet.macroenabled.12\"],\n [\".xltm\", \"application/vnd.ms-excel.template.macroenabled.12\"],\n [\".eot\", \"application/vnd.ms-fontobject\"],\n [\".chm\", \"application/vnd.ms-htmlhelp\"],\n [\".ims\", \"application/vnd.ms-ims\"],\n [\".lrm\", \"application/vnd.ms-lrm\"],\n [\".cat\", \"application/vnd.ms-pki.seccat\"],\n [\".stl\", \"application/vnd.ms-pki.stl\"],\n [\".pot\", \"application/vnd.ms-powerpoint\"],\n [\".pps\", \"application/vnd.ms-powerpoint\"],\n [\".ppt\", \"application/vnd.ms-powerpoint\"],\n [\".ppam\", \"application/vnd.ms-powerpoint.addin.macroenabled.12\"],\n [\".pptm\", \"application/vnd.ms-powerpoint.presentation.macroenabled.12\"],\n [\".sldm\", \"application/vnd.ms-powerpoint.slide.macroenabled.12\"],\n [\".ppsm\", \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\"],\n [\".potm\", \"application/vnd.ms-powerpoint.template.macroenabled.12\"],\n [\".mpp\", \"application/vnd.ms-project\"],\n [\".mpt\", \"application/vnd.ms-project\"],\n [\".docm\", \"application/vnd.ms-word.document.macroenabled.12\"],\n [\".dotm\", \"application/vnd.ms-word.template.macroenabled.12\"],\n [\".wdb\", \"application/vnd.ms-works\"],\n [\".wcm\", \"application/vnd.ms-works\"],\n [\".wks\", \"application/vnd.ms-works\"],\n [\".wps\", \"application/vnd.ms-works\"],\n [\".wpl\", \"application/vnd.ms-wpl\"],\n [\".xps\", \"application/vnd.ms-xpsdocument\"],\n [\".mseq\", \"application/vnd.mseq\"],\n [\".mus\", \"application/vnd.musician\"],\n [\".msty\", \"application/vnd.muvee.style\"],\n [\".nlu\", \"application/vnd.neurolanguage.nlu\"],\n [\".nnd\", \"application/vnd.noblenet-directory\"],\n [\".nns\", \"application/vnd.noblenet-sealer\"],\n [\".nnw\", \"application/vnd.noblenet-web\"],\n [\".ngdat\", \"application/vnd.nokia.n-gage.data\"],\n [\".n-gage\", \"application/vnd.nokia.n-gage.symbian.install\"],\n [\".rpst\", \"application/vnd.nokia.radio-preset\"],\n [\".rpss\", \"application/vnd.nokia.radio-presets\"],\n [\".edm\", \"application/vnd.novadigm.edm\"],\n [\".edx\", \"application/vnd.novadigm.edx\"],\n [\".ext\", \"application/vnd.novadigm.ext\"],\n [\".odc\", \"application/vnd.oasis.opendocument.chart\"],\n [\".otc\", \"application/vnd.oasis.opendocument.chart-template\"],\n [\".odb\", \"application/vnd.oasis.opendocument.database\"],\n [\".odf\", \"application/vnd.oasis.opendocument.formula\"],\n [\".odft\", \"application/vnd.oasis.opendocument.formula-template\"],\n [\".odg\", \"application/vnd.oasis.opendocument.graphics\"],\n [\".otg\", \"application/vnd.oasis.opendocument.graphics-template\"],\n [\".odi\", \"application/vnd.oasis.opendocument.image\"],\n [\".oti\", \"application/vnd.oasis.opendocument.image-template\"],\n [\".odp\", \"application/vnd.oasis.opendocument.presentation\"],\n [\".ods\", \"application/vnd.oasis.opendocument.spreadsheet\"],\n [\".ots\", \"application/vnd.oasis.opendocument.spreadsheet-template\"],\n [\".odt\", \"application/vnd.oasis.opendocument.text\"],\n [\".otm\", \"application/vnd.oasis.opendocument.text-master\"],\n [\".ott\", \"application/vnd.oasis.opendocument.text-template\"],\n [\".oth\", \"application/vnd.oasis.opendocument.text-web\"],\n [\".xo\", \"application/vnd.olpc-sugar\"],\n [\".dd2\", \"application/vnd.oma.dd2+xml\"],\n [\".oxt\", \"application/vnd.openofficeorg.extension\"],\n [\n \".pptx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n ],\n [\n \".sldx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\"\n ],\n [\n \".ppsx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\"\n ],\n [\n \".potx\",\n \"application/vnd.openxmlformats-officedocument.presentationml.template\"\n ],\n [\n \".xlsx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n ],\n [\n \".xltx\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\"\n ],\n [\n \".docx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\"\n ],\n [\n \".dotx\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\"\n ],\n [\".dp\", \"application/vnd.osgi.dp\"],\n [\".oprc\", \"application/vnd.palm\"],\n [\".pqa\", \"application/vnd.palm\"],\n [\".pdb\", \"application/vnd.palm\"],\n [\".str\", \"application/vnd.pg.format\"],\n [\".ei6\", \"application/vnd.pg.osasli\"],\n [\".efif\", \"application/vnd.picsel\"],\n [\".plf\", \"application/vnd.pocketlearn\"],\n [\".pbd\", \"application/vnd.powerbuilder6\"],\n [\".box\", \"application/vnd.previewsystems.box\"],\n [\".mgz\", \"application/vnd.proteus.magazine\"],\n [\".qps\", \"application/vnd.publishare-delta-tree\"],\n [\".ptid\", \"application/vnd.pvi.ptid1\"],\n [\".qxd\", \"application/vnd.quark.quarkxpress\"],\n [\".qxt\", \"application/vnd.quark.quarkxpress\"],\n [\".qwd\", \"application/vnd.quark.quarkxpress\"],\n [\".qwt\", \"application/vnd.quark.quarkxpress\"],\n [\".qxl\", \"application/vnd.quark.quarkxpress\"],\n [\".qxb\", \"application/vnd.quark.quarkxpress\"],\n [\".mxl\", \"application/vnd.recordare.musicxml\"],\n [\".musicxml\", \"application/vnd.recordare.musicxml+xml\"],\n [\".cod\", \"application/vnd.rim.cod\"],\n [\".rm\", \"application/vnd.rn-realmedia\"],\n [\".link66\", \"application/vnd.route66.link66+xml\"],\n [\".see\", \"application/vnd.seemail\"],\n [\".sema\", \"application/vnd.sema\"],\n [\".semd\", \"application/vnd.semd\"],\n [\".semf\", \"application/vnd.semf\"],\n [\".ifm\", \"application/vnd.shana.informed.formdata\"],\n [\".itp\", \"application/vnd.shana.informed.formtemplate\"],\n [\".iif\", \"application/vnd.shana.informed.interchange\"],\n [\".ipk\", \"application/vnd.shana.informed.package\"],\n [\".twds\", \"application/vnd.simtech-mindmapper\"],\n [\".twd\", \"application/vnd.simtech-mindmapper\"],\n [\".mmf\", \"application/vnd.smaf\"],\n [\".teacher\", \"application/vnd.smart.teacher\"],\n [\".sdkm\", \"application/vnd.solent.sdkm+xml\"],\n [\".sdkd\", \"application/vnd.solent.sdkm+xml\"],\n [\".dxp\", \"application/vnd.spotfire.dxp\"],\n [\".sfs\", \"application/vnd.spotfire.sfs\"],\n [\".sdc\", \"application/vnd.stardivision.calc\"],\n [\".sda\", \"application/vnd.stardivision.draw\"],\n [\".sdd\", \"application/vnd.stardivision.impress\"],\n [\".smf\", \"application/vnd.stardivision.math\"],\n [\".sdw\", \"application/vnd.stardivision.writer\"],\n [\".vor\", \"application/vnd.stardivision.writer\"],\n [\".sgl\", \"application/vnd.stardivision.writer-global\"],\n [\".sxc\", \"application/vnd.sun.xml.calc\"],\n [\".stc\", \"application/vnd.sun.xml.calc.template\"],\n [\".sxd\", \"application/vnd.sun.xml.draw\"],\n [\".std\", \"application/vnd.sun.xml.draw.template\"],\n [\".sxi\", \"application/vnd.sun.xml.impress\"],\n [\".sti\", \"application/vnd.sun.xml.impress.template\"],\n [\".sxm\", \"application/vnd.sun.xml.math\"],\n [\".sxw\", \"application/vnd.sun.xml.writer\"],\n [\".sxg\", \"application/vnd.sun.xml.writer.global\"],\n [\".stw\", \"application/vnd.sun.xml.writer.template\"],\n [\".susp\", \"application/vnd.sus-calendar\"],\n [\".sus\", \"application/vnd.sus-calendar\"],\n [\".svd\", \"application/vnd.svd\"],\n [\".sis\", \"application/vnd.symbian.install\"],\n [\".sisx\", \"application/vnd.symbian.install\"],\n [\".xsm\", \"application/vnd.syncml+xml\"],\n [\".bdm\", \"application/vnd.syncml.dm+wbxml\"],\n [\".xdm\", \"application/vnd.syncml.dm+xml\"],\n [\".tao\", \"application/vnd.tao.intent-module-archive\"],\n [\".tmo\", \"application/vnd.tmobile-livetv\"],\n [\".tpt\", \"application/vnd.trid.tpt\"],\n [\".mxs\", \"application/vnd.triscape.mxs\"],\n [\".tra\", \"application/vnd.trueapp\"],\n [\".ufdl\", \"application/vnd.ufdl\"],\n [\".ufd\", \"application/vnd.ufdl\"],\n [\".utz\", \"application/vnd.uiq.theme\"],\n [\".umj\", \"application/vnd.umajin\"],\n [\".unityweb\", \"application/vnd.unity\"],\n [\".uoml\", \"application/vnd.uoml+xml\"],\n [\".vcx\", \"application/vnd.vcx\"],\n [\".vsw\", \"application/vnd.visio\"],\n [\".vss\", \"application/vnd.visio\"],\n [\".vst\", \"application/vnd.visio\"],\n [\".vsd\", \"application/vnd.visio\"],\n [\".vis\", \"application/vnd.visionary\"],\n [\".vsf\", \"application/vnd.vsf\"],\n [\".wbxml\", \"application/vnd.wap.wbxml\"],\n [\".wmlc\", \"application/vnd.wap.wmlc\"],\n [\".wmlsc\", \"application/vnd.wap.wmlscriptc\"],\n [\".wtb\", \"application/vnd.webturbo\"],\n [\".wpd\", \"application/vnd.wordperfect\"],\n [\".wqd\", \"application/vnd.wqd\"],\n [\".stf\", \"application/vnd.wt.stf\"],\n [\".xar\", \"application/vnd.xara\"],\n [\".xfdl\", \"application/vnd.xfdl\"],\n [\".hvd\", \"application/vnd.yamaha.hv-dic\"],\n [\".hvs\", \"application/vnd.yamaha.hv-script\"],\n [\".hvp\", \"application/vnd.yamaha.hv-voice\"],\n [\".osf\", \"application/vnd.yamaha.openscoreformat\"],\n [\".osfpvg\", \"application/vnd.yamaha.openscoreformat.osfpvg+xml\"],\n [\".saf\", \"application/vnd.yamaha.smaf-audio\"],\n [\".spf\", \"application/vnd.yamaha.smaf-phrase\"],\n [\".cmp\", \"application/vnd.yellowriver-custom-menu\"],\n [\".zir\", \"application/vnd.zul\"],\n [\".zirz\", \"application/vnd.zul\"],\n [\".zaz\", \"application/vnd.zzazz.deck+xml\"],\n [\".vxml\", \"application/voicexml+xml\"],\n [\".hlp\", \"application/winhlp\"],\n [\".wsdl\", \"application/wsdl+xml\"],\n [\".wspolicy\", \"application/wspolicy+xml\"],\n [\".abw\", \"application/x-abiword\"],\n [\".ace\", \"application/x-ace-compressed\"],\n [\".aab\", \"application/x-authorware-bin\"],\n [\".x32\", \"application/x-authorware-bin\"],\n [\".u32\", \"application/x-authorware-bin\"],\n [\".vox\", \"application/x-authorware-bin\"],\n [\".aam\", \"application/x-authorware-map\"],\n [\".aas\", \"application/x-authorware-seg\"],\n [\".bcpio\", \"application/x-bcpio\"],\n [\".torrent\", \"application/x-bittorrent\"],\n [\".bz\", \"application/x-bzip\"],\n [\".bz2\", \"application/x-bzip2\"],\n [\".boz\", \"application/x-bzip2\"],\n [\".vcd\", \"application/x-cdlink\"],\n [\".chat\", \"application/x-chat\"],\n [\".pgn\", \"application/x-chess-pgn\"],\n [\".cpio\", \"application/x-cpio\"],\n [\".csh\", \"application/x-csh\"],\n [\".deb\", \"application/x-debian-package\"],\n [\".udeb\", \"application/x-debian-package\"],\n [\".swa\", \"application/x-director\"],\n [\".w3d\", \"application/x-director\"],\n [\".fgd\", \"application/x-director\"],\n [\".cxt\", \"application/x-director\"],\n [\".cct\", \"application/x-director\"],\n [\".cst\", \"application/x-director\"],\n [\".dxr\", \"application/x-director\"],\n [\".dcr\", \"application/x-director\"],\n [\".dir\", \"application/x-director\"],\n [\".wad\", \"application/x-doom\"],\n [\".ncx\", \"application/x-dtbncx+xml\"],\n [\".dtb\", \"application/x-dtbook+xml\"],\n [\".res\", \"application/x-dtbresource+xml\"],\n [\".dvi\", \"application/x-dvi\"],\n [\".bdf\", \"application/x-font-bdf\"],\n [\".gsf\", \"application/x-font-ghostscript\"],\n [\".psf\", \"application/x-font-linux-psf\"],\n [\".otf\", \"application/x-font-otf\"],\n [\".pcf\", \"application/x-font-pcf\"],\n [\".snf\", \"application/x-font-snf\"],\n [\".ttf\", \"application/x-font-ttf\"],\n [\".ttc\", \"application/x-font-ttf\"],\n [\".woff\", \"application/font-woff\"],\n [\".pfa\", \"application/x-font-type1\"],\n [\".pfb\", \"application/x-font-type1\"],\n [\".pfm\", \"application/x-font-type1\"],\n [\".afm\", \"application/x-font-type1\"],\n [\".spl\", \"application/x-futuresplash\"],\n [\".gnumeric\", \"application/x-gnumeric\"],\n [\".gtar\", \"application/x-gtar\"],\n [\".hdf\", \"application/x-hdf\"],\n [\".jnlp\", \"application/x-java-jnlp-file\"],\n [\".latex\", \"application/x-latex\"],\n [\".prc\", \"application/x-mobipocket-ebook\"],\n [\".mobi\", \"application/x-mobipocket-ebook\"],\n [\".application\", \"application/x-ms-application\"],\n [\".wmd\", \"application/x-ms-wmd\"],\n [\".wmz\", \"application/x-ms-wmz\"],\n [\".xbap\", \"application/x-ms-xbap\"],\n [\".mdb\", \"application/x-msaccess\"],\n [\".obd\", \"application/x-msbinder\"],\n [\".crd\", \"application/x-mscardfile\"],\n [\".clp\", \"application/x-msclip\"],\n [\".msi\", \"application/x-msdownload\"],\n [\".bat\", \"application/x-msdownload\"],\n [\".com\", \"application/x-msdownload\"],\n [\".dll\", \"application/x-msdownload\"],\n [\".exe\", \"application/x-msdownload\"],\n [\".mvb\", \"application/x-msmediaview\"],\n [\".m13\", \"application/x-msmediaview\"],\n [\".m14\", \"application/x-msmediaview\"],\n [\".wmf\", \"application/x-msmetafile\"],\n [\".mny\", \"application/x-msmoney\"],\n [\".pub\", \"application/x-mspublisher\"],\n [\".scd\", \"application/x-msschedule\"],\n [\".trm\", \"application/x-msterminal\"],\n [\".wri\", \"application/x-mswrite\"],\n [\".nc\", \"application/x-netcdf\"],\n [\".cdf\", \"application/x-netcdf\"],\n [\".p12\", \"application/x-pkcs12\"],\n [\".pfx\", \"application/x-pkcs12\"],\n [\".p7b\", \"application/x-pkcs7-certificates\"],\n [\".spc\", \"application/x-pkcs7-certificates\"],\n [\".p7r\", \"application/x-pkcs7-certreqresp\"],\n [\".rar\", \"application/x-rar-compressed\"],\n [\".sh\", \"application/x-sh\"],\n [\".shar\", \"application/x-shar\"],\n [\".swf\", \"application/x-shockwave-flash\"],\n [\".xap\", \"application/x-silverlight-app\"],\n [\".sit\", \"application/x-stuffit\"],\n [\".sitx\", \"application/x-stuffitx\"],\n [\".sv4cpio\", \"application/x-sv4cpio\"],\n [\".sv4crc\", \"application/x-sv4crc\"],\n [\".tar\", \"application/x-tar\"],\n [\".tcl\", \"application/x-tcl\"],\n [\".tex\", \"application/x-tex\"],\n [\".tfm\", \"application/x-tex-tfm\"],\n [\".texinfo\", \"application/x-texinfo\"],\n [\".texi\", \"application/x-texinfo\"],\n [\".ustar\", \"application/x-ustar\"],\n [\".src\", \"application/x-wais-source\"],\n [\".der\", \"application/x-x509-ca-cert\"],\n [\".crt\", \"application/x-x509-ca-cert\"],\n [\".fig\", \"application/x-xfig\"],\n [\".xpi\", \"application/x-xpinstall\"],\n [\".xenc\", \"application/xenc+xml\"],\n [\".xhtml\", \"application/xhtml+xml\"],\n [\".xht\", \"application/xhtml+xml\"],\n [\".xsl\", \"application/xml\"],\n [\".xml\", \"application/xml\"],\n [\".dtd\", \"application/xml-dtd\"],\n [\".xop\", \"application/xop+xml\"],\n [\".xslt\", \"application/xslt+xml\"],\n [\".xspf\", \"application/xspf+xml\"],\n [\".xvm\", \"application/xv+xml\"],\n [\".xvml\", \"application/xv+xml\"],\n [\".xhvml\", \"application/xv+xml\"],\n [\".mxml\", \"application/xv+xml\"],\n [\".zip\", \"application/zip\"],\n [\".adp\", \"audio/adpcm\"],\n [\".au\", \"audio/basic\"],\n [\".snd\", \"audio/basic\"],\n [\".mid\", \"audio/midi\"],\n [\".midi\", \"audio/midi\"],\n [\".kar\", \"audio/midi\"],\n [\".rmi\", \"audio/midi\"],\n [\".mp4a\", \"audio/mp4\"],\n [\".m4a\", \"audio/mp4a-latm\"],\n [\".m4p\", \"audio/mp4a-latm\"],\n [\".m3a\", \"audio/mpeg\"],\n [\".m2a\", \"audio/mpeg\"],\n [\".mp3\", \"audio/mpeg\"],\n [\".mp2a\", \"audio/mpeg\"],\n [\".mp2\", \"audio/mpeg\"],\n [\".mpga\", \"audio/mpeg\"],\n [\".spx\", \"audio/ogg\"],\n [\".ogg\", \"audio/ogg\"],\n [\".oga\", \"audio/ogg\"],\n [\".eol\", \"audio/vnd.digital-winds\"],\n [\".dts\", \"audio/vnd.dts\"],\n [\".dtshd\", \"audio/vnd.dts.hd\"],\n [\".lvp\", \"audio/vnd.lucent.voice\"],\n [\".pya\", \"audio/vnd.ms-playready.media.pya\"],\n [\".ecelp4800\", \"audio/vnd.nuera.ecelp4800\"],\n [\".ecelp7470\", \"audio/vnd.nuera.ecelp7470\"],\n [\".ecelp9600\", \"audio/vnd.nuera.ecelp9600\"],\n [\".aac\", \"audio/x-aac\"],\n [\".aif\", \"audio/x-aiff\"],\n [\".aiff\", \"audio/x-aiff\"],\n [\".aif\", \"audio/x-aiff\"],\n [\".m3u\", \"audio/x-mpegurl\"],\n [\".wax\", \"audio/x-ms-wax\"],\n [\".wma\", \"audio/x-ms-wma\"],\n [\".ram\", \"audio/x-pn-realaudio\"],\n [\".ra\", \"audio/x-pn-realaudio\"],\n [\".rmp\", \"audio/x-pn-realaudio-plugin\"],\n [\".wav\", \"audio/x-wav\"],\n [\".cdx\", \"chemical/x-cdx\"],\n [\".cif\", \"chemical/x-cif\"],\n [\".cmdf\", \"chemical/x-cmdf\"],\n [\".cml\", \"chemical/x-cml\"],\n [\".csml\", \"chemical/x-csml\"],\n [\".xyz\", \"chemical/x-xyz\"],\n [\".bmp\", \"image/bmp\"],\n [\".cgm\", \"image/cgm\"],\n [\".g3\", \"image/g3fax\"],\n [\".gif\", \"image/gif\"],\n [\".ief\", \"image/ief\"],\n [\".jp2\", \"image/jp2\"],\n [\".jpeg\", \"image/jpeg\"],\n [\".jpg\", \"image/jpeg\"],\n [\".jpe\", \"image/jpeg\"],\n [\".pict\", \"image/pict\"],\n [\".pic\", \"image/pict\"],\n [\".pct\", \"image/pict\"],\n [\".png\", \"image/png\"],\n [\".btif\", \"image/prs.btif\"],\n [\".svg\", \"image/svg+xml\"],\n [\".svgz\", \"image/svg+xml\"],\n [\".tiff\", \"image/tiff\"],\n [\".tif\", \"image/tiff\"],\n [\".psd\", \"image/vnd.adobe.photoshop\"],\n [\".djvu\", \"image/vnd.djvu\"],\n [\".djv\", \"image/vnd.djvu\"],\n [\".dwg\", \"image/vnd.dwg\"],\n [\".dxf\", \"image/vnd.dxf\"],\n [\".fbs\", \"image/vnd.fastbidsheet\"],\n [\".fpx\", \"image/vnd.fpx\"],\n [\".fst\", \"image/vnd.fst\"],\n [\".mmr\", \"image/vnd.fujixerox.edmics-mmr\"],\n [\".rlc\", \"image/vnd.fujixerox.edmics-rlc\"],\n [\".mdi\", \"image/vnd.ms-modi\"],\n [\".npx\", \"image/vnd.net-fpx\"],\n [\".wbmp\", \"image/vnd.wap.wbmp\"],\n [\".xif\", \"image/vnd.xiff\"],\n [\".ras\", \"image/x-cmu-raster\"],\n [\".cmx\", \"image/x-cmx\"],\n [\".fh\", \"image/x-freehand\"],\n [\".fhc\", \"image/x-freehand\"],\n [\".fh4\", \"image/x-freehand\"],\n [\".fh5\", \"image/x-freehand\"],\n [\".fh7\", \"image/x-freehand\"],\n [\".ico\", \"image/x-icon\"],\n [\".pntg\", \"image/x-macpaint\"],\n [\".pnt\", \"image/x-macpaint\"],\n [\".mac\", \"image/x-macpaint\"],\n [\".pcx\", \"image/x-pcx\"],\n [\".pic\", \"image/x-pict\"],\n [\".pct\", \"image/x-pict\"],\n [\".pnm\", \"image/x-portable-anymap\"],\n [\".pbm\", \"image/x-portable-bitmap\"],\n [\".pgm\", \"image/x-portable-graymap\"],\n [\".ppm\", \"image/x-portable-pixmap\"],\n [\".qtif\", \"image/x-quicktime\"],\n [\".qti\", \"image/x-quicktime\"],\n [\".rgb\", \"image/x-rgb\"],\n [\".xbm\", \"image/x-xbitmap\"],\n [\".xpm\", \"image/x-xpixmap\"],\n [\".xwd\", \"image/x-xwindowdump\"],\n [\".eml\", \"message/rfc822\"],\n [\".mime\", \"message/rfc822\"],\n [\".igs\", \"model/iges\"],\n [\".iges\", \"model/iges\"],\n [\".msh\", \"model/mesh\"],\n [\".mesh\", \"model/mesh\"],\n [\".silo\", \"model/mesh\"],\n [\".dwf\", \"model/vnd.dwf\"],\n [\".gdl\", \"model/vnd.gdl\"],\n [\".gtw\", \"model/vnd.gtw\"],\n [\".mts\", \"model/vnd.mts\"],\n [\".vtu\", \"model/vnd.vtu\"],\n [\".wrl\", \"model/vrml\"],\n [\".vrml\", \"model/vrml\"],\n [\".ics\", \"text/calendar\"],\n [\".ifb\", \"text/calendar\"],\n [\".css\", \"text/css\"],\n [\".csv\", \"text/csv\"],\n [\".html\", \"text/html\"],\n [\".htm\", \"text/html\"],\n [\".txt\", \"text/plain\"],\n [\".text\", \"text/plain\"],\n [\".conf\", \"text/plain\"],\n [\".def\", \"text/plain\"],\n [\".list\", \"text/plain\"],\n [\".log\", \"text/plain\"],\n [\".in\", \"text/plain\"],\n [\".dsc\", \"text/prs.lines.tag\"],\n [\".rtx\", \"text/richtext\"],\n [\".sgml\", \"text/sgml\"],\n [\".sgm\", \"text/sgml\"],\n [\".tsv\", \"text/tab-separated-values\"],\n [\".t\", \"text/troff\"],\n [\".tr\", \"text/troff\"],\n [\".roff\", \"text/troff\"],\n [\".man\", \"text/troff\"],\n [\".me\", \"text/troff\"],\n [\".ms\", \"text/troff\"],\n [\".uri\", \"text/uri-list\"],\n [\".uris\", \"text/uri-list\"],\n [\".urls\", \"text/uri-list\"],\n [\".curl\", \"text/vnd.curl\"],\n [\".dcurl\", \"text/vnd.curl.dcurl\"],\n [\".scurl\", \"text/vnd.curl.scurl\"],\n [\".mcurl\", \"text/vnd.curl.mcurl\"],\n [\".fly\", \"text/vnd.fly\"],\n [\".flx\", \"text/vnd.fmi.flexstor\"],\n [\".gv\", \"text/vnd.graphviz\"],\n [\".3dml\", \"text/vnd.in3d.3dml\"],\n [\".spot\", \"text/vnd.in3d.spot\"],\n [\".jad\", \"text/vnd.sun.j2me.app-descriptor\"],\n [\".wml\", \"text/vnd.wap.wml\"],\n [\".wmls\", \"text/vnd.wap.wmlscript\"],\n [\".s\", \"text/x-asm\"],\n [\".asm\", \"text/x-asm\"],\n [\".c\", \"text/x-c\"],\n [\".cc\", \"text/x-c\"],\n [\".cxx\", \"text/x-c\"],\n [\".cpp\", \"text/x-c\"],\n [\".h\", \"text/x-c\"],\n [\".hh\", \"text/x-c\"],\n [\".dic\", \"text/x-c\"],\n [\".f\", \"text/x-fortran\"],\n [\".for\", \"text/x-fortran\"],\n [\".f77\", \"text/x-fortran\"],\n [\".f90\", \"text/x-fortran\"],\n [\".p\", \"text/x-pascal\"],\n [\".pas\", \"text/x-pascal\"],\n [\".java\", \"text/x-java-source\"],\n [\".etx\", \"text/x-setext\"],\n [\".uu\", \"text/x-uuencode\"],\n [\".vcs\", \"text/x-vcalendar\"],\n [\".vcf\", \"text/x-vcard\"],\n [\".3gp\", \"video/3gpp\"],\n [\".3g2\", \"video/3gpp2\"],\n [\".h261\", \"video/h261\"],\n [\".h263\", \"video/h263\"],\n [\".h264\", \"video/h264\"],\n [\".jpgv\", \"video/jpeg\"],\n [\".jpm\", \"video/jpm\"],\n [\".jpgm\", \"video/jpm\"],\n [\".mj2\", \"video/mj2\"],\n [\".mjp2\", \"video/mj2\"],\n [\".mp4\", \"video/mp4\"],\n [\".mp4v\", \"video/mp4\"],\n [\".mpg4\", \"video/mp4\"],\n [\".m4v\", \"video/mp4\"],\n [\".mkv\", \"video/x-matroska\"],\n [\".mk3d\", \"video/x-matroska\"],\n [\".mka\", \"video/x-matroska\"],\n [\".mks\", \"video/x-matroska\"],\n [\".webm\", \"video/webm\"],\n [\".mpeg\", \"video/mpeg\"],\n [\".mpg\", \"video/mpeg\"],\n [\".mpe\", \"video/mpeg\"],\n [\".m1v\", \"video/mpeg\"],\n [\".m2v\", \"video/mpeg\"],\n [\".ogv\", \"video/ogg\"],\n [\".qt\", \"video/quicktime\"],\n [\".mov\", \"video/quicktime\"],\n [\".fvt\", \"video/vnd.fvt\"],\n [\".mxu\", \"video/vnd.mpegurl\"],\n [\".m4u\", \"video/vnd.mpegurl\"],\n [\".pyv\", \"video/vnd.ms-playready.media.pyv\"],\n [\".viv\", \"video/vnd.vivo\"],\n [\".dv\", \"video/x-dv\"],\n [\".dif\", \"video/x-dv\"],\n [\".f4v\", \"video/x-f4v\"],\n [\".fli\", \"video/x-fli\"],\n [\".flv\", \"video/x-flv\"],\n [\".m4v\", \"video/x-m4v\"],\n [\".asf\", \"video/x-ms-asf\"],\n [\".asx\", \"video/x-ms-asf\"],\n [\".wm\", \"video/x-ms-wm\"],\n [\".wmv\", \"video/x-ms-wmv\"],\n [\".wmx\", \"video/x-ms-wmx\"],\n [\".wvx\", \"video/x-ms-wvx\"],\n [\".avi\", \"video/x-msvideo\"],\n [\".movie\", \"video/x-sgi-movie\"],\n [\".ice\", \"x-conference/x-cooltalk\"],\n [\".indd\", \"application/x-indesign\"],\n [\".dat\", \"application/octet-stream\"],\n [\".gz\", \"application/x-gzip\"],\n [\".tgz\", \"application/x-tar\"],\n [\".tar\", \"application/x-tar\"],\n [\".epub\", \"application/epub+zip\"],\n [\".mobi\", \"application/x-mobipocket-ebook\"],\n [\"README\", \"text/plain\"],\n [\"LICENSE\", \"text/plain\"],\n [\"COPYING\", \"text/plain\"],\n [\"TODO\", \"text/plain\"],\n [\"ABOUT\", \"text/plain\"],\n [\"AUTHORS\", \"text/plain\"],\n [\"CONTRIBUTORS\", \"text/plain\"],\n [\"manifest\", \"text/cache-manifest\"],\n [\".manifest\", \"text/cache-manifest\"],\n [\".mf\", \"text/cache-manifest\"],\n [\".appcache\", \"text/cache-manifest\"]\n]);\nconst setMime = (ext, mimeType) => {\n MimeType.set(ext, mimeType);\n return MimeType;\n};\nfunction getMime(ext) {\n const tmp = (\"\" + ext).trim().toLowerCase();\n let idx = tmp.lastIndexOf(\".\");\n const suffix = !~idx ? tmp : tmp.substring(++idx);\n return MimeType.get(`.${suffix}`) || MimeType.get(suffix);\n}\nconst vnode = {\n init,\n h\n};\nexport {\n Subscribe as EventEmitter,\n MimeType,\n Monitor,\n filterObj,\n getMime,\n queryFileInfo,\n readDir,\n readFile,\n setMime,\n str2Xml,\n vnode,\n watchFile,\n writeFile\n};\n//# sourceMappingURL=index.js.map\n","import { str2Xml } from 'ranuts'\n\nfunction Custom() {\n if (typeof window !== 'undefined' && !customElements.get('r-icon')) {\n class CustomElement extends HTMLElement {\n static get observedAttributes() {\n return ['name', 'size', 'color', 'spin']\n }\n _icon?: HTMLElement\n _div: HTMLElement\n constructor() {\n super()\n this._div = document.createElement('div')\n this._div.setAttribute('class', 'icon')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._div)\n }\n get name() {\n return this.getAttribute('name')\n }\n set name(value) {\n if (value) this.setAttribute('name', value)\n }\n get size() {\n return this.getAttribute('size')\n }\n set size(value) {\n if (value) this.setAttribute('size', value)\n }\n get color() {\n return this.getAttribute('color')\n }\n set color(value) {\n if (value) this.setAttribute('color', value)\n }\n get spin() {\n return this.getAttribute('spin')\n }\n set spin(value) {\n if (value != null) this.setAttribute('spin', value)\n }\n /**\n * @description: 本地加载icon\n */\n loadLocal = () => {\n return new Promise<void>((resolve, reject) => {\n // vite 对动态导入的一些限制 https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations\n import(`../../assets/icons/${this.name}.svg`)\n .then((result) => {\n if (result && result.default && result.default._identification) {\n const { data } = result.default\n this._icon && this._div.removeChild(this._icon)\n this._icon = str2Xml(data, 'image/svg+xml')\n if (this._icon) {\n this._div.appendChild(this._icon)\n this.setSize()\n this.setColor()\n resolve()\n }\n } else {\n this.loadNs()\n reject(\n `\\n couldn't be loaded by r-icon, message: ${this.name} icon is undefined`,\n )\n }\n })\n .catch((error) => {\n this.loadNs()\n // reject(`\\n couldn't be loaded by r-icon, message: ${error}`)\n })\n })\n }\n /**\n * @description: NS加载icon\n */\n loadNs = () => {\n // https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.dc64b3430&cid=9402\n if (this._icon && this._div) {\n this._div.removeChild(this._icon)\n }\n this._icon = document.createElement('svg')\n this._icon.setAttribute('class', 'icon')\n this._icon.setAttribute('viewBox', '0 0 1024 1024')\n this._icon.setAttribute('width', '100')\n this._icon.setAttribute('height', '100')\n const xLinksNs = 'http://www.w3.org/1999/xlink'\n const use = document.createElementNS(xLinksNs, 'use')\n use.setAttributeNS(\n xLinksNs,\n 'xlink:href',\n `../../assets/iconfont/icon.svg#icon-${this.name}`,\n )\n this._icon.appendChild(use)\n this._div.appendChild(this._icon)\n }\n /**\n * @description: 根据name属性加载对应的svg\n */\n setIcon = async () => {\n if (this.name) {\n // 本地加载\n this.loadLocal()\n // 网络加载\n }\n }\n /**\n * @description: 设置icon的大小\n */\n setSize = () => {\n if (this._icon && this.size) {\n this._icon.setAttribute('width', this.size)\n this._icon.setAttribute('height', this.size)\n }\n }\n /**\n * @description: 设置icon的颜色\n */\n setColor = () => {\n if (this._icon) {\n this.color\n ? this._icon.setAttribute('fill', this.color)\n : this._icon.setAttribute('fill', 'currentColor')\n }\n }\n /**\n * @description: 设置是否旋转和旋转的速度\n */\n setSpin = () => {\n if (this.spin) {\n this.style.setProperty('animation-duration', `${this.spin}s`)\n }\n }\n connectedCallback() {\n this.setIcon()\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n if (newValue !== oldValue) {\n if (name === 'name') this.setIcon()\n if (name === 'size') this.setSize()\n if (name === 'color') this.setColor()\n if (name === 'spin') this.setSpin()\n }\n }\n }\n customElements.define('r-icon', CustomElement)\n }\n}\nexport default Custom()\n","const failImage = `\n data:image/png;base64,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\n`\nexport default failImage\n","import failImage from '../../assets/image/failImage'\n\nfunction Custom() {\n if (typeof window !== 'undefined' && !customElements.get('r-img')) {\n class CustomElement extends HTMLElement {\n static get observedAttributes() {\n return ['fallback']\n }\n _image: HTMLImageElement | undefined\n _container: Element\n constructor() {\n super()\n this._container = document.createElement('div')\n this._container.setAttribute('class', 'r-image')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._container)\n }\n get fallback() {\n return this.getAttribute('fallback') || failImage\n }\n set fallback(value) {\n if (value) {\n this.setAttribute('fallback', value)\n } else {\n this.removeAttribute('fallback')\n }\n }\n\n listenFallback(name: string, value: string) {\n if (name === 'fallback' && this._image) {\n if (value) {\n this._image.setAttribute('fallback', value)\n } else {\n this._image.removeAttribute('fallback')\n }\n }\n }\n\n connectedCallback() {\n const src = this.getAttribute('src') || ''\n this._image = new Image()\n this._image.src = src\n this._image.addEventListener('error', () => {\n if (this._image && this.fallback) {\n this._image.src = this.fallback\n }\n })\n this._image.addEventListener('load', () => {\n if (this._image) {\n this._container.appendChild(this._image)\n }\n })\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n this.listenFallback(name, newValue)\n }\n }\n customElements.define('r-img', CustomElement)\n }\n}\n\nexport default Custom()\n","import { falseList, isDisabled } from '../../utils/index'\n\nclass CustomError {\n message: string\n constructor(message:string = 'document is undefined or r-input is exist'){\n this.message = message\n }\n}\n\nfunction Custom() {\n if (typeof window !== 'undefined' && !customElements.get('r-input')) {\n class CustomElement extends HTMLElement {\n static get observedAttributes() {\n return [\n 'label',\n 'disabled',\n 'name',\n 'placeholder',\n 'type',\n 'icon',\n 'status',\n ]\n }\n _container: HTMLDivElement\n _label: HTMLLabelElement | undefined\n _input: HTMLInputElement\n _icon: HTMLElement | undefined\n constructor() {\n super()\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n this._container = document.createElement('div')\n this._container.setAttribute('class', 'input')\n this._input = document.createElement('input')\n this._input.setAttribute('class', 'input-main')\n this._container.appendChild(this._input)\n shadowRoot.appendChild(this._container)\n }\n /**\n * @description: 获取input的值\n * @return {String}\n */\n get value() {\n return this.getAttribute('value')\n }\n /**\n * @description: 设置input的值\n * @param {String} value\n */\n set value(value) {\n if (!isDisabled(this) && value) {\n this.setAttribute('value', value)\n this._container.setAttribute('value', value)\n } else {\n this.removeAttribute('value')\n this._container.removeAttribute('value')\n }\n }\n /**\n * @description: 获取input的占位字符\n * @return {String}\n */\n get placeholder() {\n return this.getAttribute('placeholder')\n }\n /**\n * @description: 设置input的占位字符\n * @param {String} value\n */\n set placeholder(value) {\n if (value) {\n this.setAttribute('placeholder', value)\n } else {\n this.removeAttribute('placeholder')\n }\n }\n /**\n * @description: input是否为必选\n * @return {String}\n */\n get required() {\n return this.getAttribute('required')\n }\n /**\n * @description: 设置input是否为必选,除非设置成false,否则都是必填\n * @param {*} value\n */\n set required(value) {\n if (!value || value === 'false') {\n this.removeAttribute('required')\n } else {\n this.setAttribute('required', '')\n }\n }\n /**\n * @description: 获取input上disabled属性\n * @return {String | null}\n */\n get disabled() {\n return isDisabled(this)\n }\n /**\n * @description: 设置input的disabled属性\n * @param {String} value\n */\n set disabled(value) {\n if (falseList.includes(value)) {\n this.removeAttribute('disabled')\n this._container.removeAttribute('disabled')\n this._input.removeAttribute('disabled')\n } else {\n this.setAttribute('disabled', '')\n this._container.setAttribute('disabled', '')\n this._input.setAttribute('disabled', '')\n }\n }\n /**\n * @description: 获取类似于Metiral Design的输入体验。\n */\n get label() {\n return this.getAttribute('label') || ''\n }\n /**\n * @description: 设置类似于Metiral Design的输入体验。\n */\n set label(value: string) {\n this.setAttribute('label', value)\n }\n /**\n * @description: 获取input框的状态\n */\n get status() {\n return this.getAttribute('status') || ''\n }\n /**\n * @description: 设置input框的状态\n */\n set status(value: string) {\n if (value) {\n this.removeAttribute('status')\n this._container.removeAttribute('status')\n } else {\n this.setAttribute('status', value)\n this._container.setAttribute('status', value)\n }\n }\n /**\n * @description: 与form组件联动时,收集的属性名\n * @return {String}\n */\n get name() {\n return this.getAttribute('name') || ''\n }\n /**\n * @description: 设置name属性\n * @param {string} value\n */\n set name(value: string) {\n this.setAttribute('name', value)\n }\n /**\n * @description: 当input类型为number类型时,可以获取min属性\n * @return {String}\n */\n get min() {\n return this.getAttribute('min') || ''\n }\n /**\n * @description: 当input类型为number类型时,设置min属性\n * @param {string} value\n */\n set min(value: string) {\n if (this.type === 'number') this.setAttribute('min', value)\n }\n /**\n * @description: 当input类型为number类型时,可以获取max属性\n * @return {String}\n */\n get max() {\n return this.getAttribute('max') || ''\n }\n /**\n * @description: 当input类型为number类型时,设置max属性\n * @param {string} value\n */\n set max(value: string) {\n if (this.type === 'number') this.setAttribute('max', value)\n }\n /**\n * @description: 当input类型为number类型时,可以获取step属性\n * @return {String}\n */\n get step() {\n return this.getAttribute('step') || ''\n }\n /**\n * @description: 当input类型为number类型时,设置step属性\n * @param {string} value\n */\n set step(value: string) {\n if (this.type === 'number') this.setAttribute('step', value)\n }\n /**\n * @description: 获取一个icon\n * @return {String}\n */\n get icon() {\n return this.getAttribute('icon')\n }\n /**\n * @description: 设置icon来表示标识\n * @param {string|null} value\n */\n set icon(value) {\n if (value) {\n this.setAttribute('icon', value)\n } else {\n this.removeAttribute('icon')\n }\n }\n /**\n * @description: 获取input的类型\n * @return {string|null}\n */\n get type() {\n return this.getAttribute('type')\n }\n /**\n * @description: 设置input的类型\n * @param {string|null} value\n */\n set type(value) {\n if (value) {\n this.setAttribute('type', value)\n } else {\n this.removeAttribute('type')\n }\n }\n /**\n * @description: 原生的input方法\n * @param {Event} event\n */\n inputValue = (event: Event) => {\n event.stopPropagation()\n const target = event.target as HTMLInputElement\n this.value = target ? target.value : ''\n // 增加onchange事件\n this.change()\n // 默认input事件\n this.dispatchEvent(\n new CustomEvent('input', {\n detail: {\n value: this.value,\n },\n }),\n )\n }\n /**\n * @description: 增加change方法\n */\n change = () => {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n value: this.value,\n },\n }),\n )\n }\n /**\n * @description: 增加focus方法\n */\n focus = () => {\n this.dispatchEvent(\n new CustomEvent('focus', {\n detail: {\n value: this.value,\n },\n }),\n )\n }\n /**\n * @description: 监听placeholder属性函数\n * @param {string} name\n * @param {string} value\n */\n listenPlaceholder(name: string, value: string) {\n if (name === 'placeholder' && this._input) {\n if (value != null) {\n this._input.setAttribute('placeholder', value)\n } else {\n this._input.removeAttribute('placeholder')\n }\n }\n }\n /**\n * @description: 监听label属性函数\n * @param {string} name\n * @param {string} value\n */\n listenLabel(name: string, value: string) {\n if (name === 'label' && this._input) {\n if (value != null) {\n if (this._label) {\n this._label.innerHTML = value\n } else {\n this._label = document.createElement('label')\n this._label.innerHTML = value\n this._label.setAttribute('class', 'input-label')\n this._container.appendChild(this._label)\n }\n } else {\n this._container.removeAttribute('label')\n if (this._label) {\n this._container.removeChild(this._label)\n this._label = undefined\n }\n }\n }\n }\n /**\n * @description: 监听type属性\n * @param {string} name\n * @param {string} value\n */\n listenType(name: string, value: string) {\n if (name === 'type' && this._input) {\n if (value) {\n this._input.setAttribute('type', value)\n } else {\n this._input.removeAttribute('type')\n this._input.removeAttribute('min')\n this._input.removeAttribute('max')\n this._input.removeAttribute('step')\n }\n }\n }\n /**\n * @description: 监听status属性\n * @param {string} name\n * @param {string} value\n */\n listenStatus(name: string, value: string) {\n if (name === 'status' && this._container) {\n if (value) {\n this._container.setAttribute('status', value)\n } else {\n this._container.removeAttribute('status')\n }\n }\n }\n /**\n * @description: 监听disabled属性\n * @param {string} name\n * @param {string} value\n */\n listenDisabled(name: string, value: string) {\n if (name === 'disabled' && this._container) {\n if (falseList.includes(value)) {\n this._container.removeAttribute('disabled')\n } else {\n this._container.setAttribute('disabled', '')\n this._input.setAttribute('disabled', '')\n }\n }\n }\n /**\n * @description: 监听icon属性\n * @param {string} name\n * @param {string} value\n */\n listenIcon(name: string, value: string, oldValue: string) {\n if (name === 'icon' && value && value !== oldValue) {\n this.removeAttribute('label')\n this.setAttribute('icon', value)\n this.dealIcon()\n }\n }\n /**\n * @description: 处理icon属性的问题\n */\n dealIcon = () => {\n if (!this._icon) {\n this._icon = document.createElement('r-icon')\n const { width, height } = this._input.getBoundingClientRect()\n const size = Math.min(width, height)\n this._icon.setAttribute('size', `${size}`)\n this._input.insertAdjacentElement('beforebegin', this._icon)\n }\n this.icon && this._icon.setAttribute('name', this.icon)\n }\n /**\n * @description: 聚合监听事件\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n listenEvent(name: string, oldValue: string, newValue: string) {\n this.listenPlaceholder(name, newValue)\n this.listenLabel(name, newValue)\n this.listenStatus(name, newValue)\n this.listenDisabled(name, newValue)\n this.listenIcon(name, newValue, oldValue)\n }\n connectedCallback() {\n // 如果一开始就设置了input的值,则初始化input的值\n if (this.value) {\n this._input.value = this.value\n this._container.setAttribute('value', this.value)\n }\n if (this.status) {\n this._container.setAttribute('status', this.status)\n }\n if (isDisabled(this)) {\n this._container.setAttribute('disabled', '')\n this._input.setAttribute('disabled', '')\n }\n if (this.type) {\n this._input.setAttribute('type', this.type)\n }\n this._input.addEventListener('input', this.inputValue)\n this._input.addEventListener('focus', this.focus)\n if (document.readyState === 'complete') {\n this.dealIcon()\n }\n }\n disconnectCallback() {\n this._input.removeEventListener('input', this.inputValue)\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n this.listenEvent(name, newValue, oldValue)\n }\n }\n customElements.define('r-input', CustomElement)\n return CustomElement\n }else{\n return CustomError\n }\n}\n\nexport default Custom()\n","const AnimationTime = 300 // message退出动画执行的时间\nconst defaultDuration = 3000 // 默认message存在的时间\n\n// message类型映射icon的类型\nconst typeMapIcon = new Map([\n ['success', 'check-circle-fill'],\n ['warning', 'warning-circle-fill'],\n ['error', 'close-circle-fill'],\n ['info', 'info-circle-fill'],\n ['toast', null],\n])\n\n// message类型映射icon的颜色\nconst typeMapColor = new Map([\n ['success', '#52c41a'],\n ['warning', '#faad14'],\n ['error', '#ff4d4f'],\n ['info', '#1890ff'],\n ['toast', 'rgba(0, 0, 0, 0.7)'],\n])\n\nfunction Custom() {\n if (typeof window !== 'undefined' && !customElements.get('r-message')) {\n class CustomElement extends HTMLElement {\n _info: HTMLDivElement\n _notice: HTMLDivElement\n _content: HTMLDivElement\n _icon?: HTMLElement\n _span: HTMLSpanElement\n timeId?: NodeJS.Timeout\n close?: () => void\n static get observedAttributes() {\n return ['type', 'content']\n }\n constructor() {\n super()\n this._notice = document.createElement('div')\n this._notice.setAttribute('class', 'message-notice')\n this._content = document.createElement('div')\n this._content.setAttribute('class', 'message-notice-content')\n this._info = document.createElement('div')\n this._info.setAttribute('class', 'message-notice-content-info')\n this._icon = document.createElement('r-icon')\n this._span = document.createElement('span')\n this._info.appendChild(this._icon)\n this._info.appendChild(this._span)\n this._content.appendChild(this._info)\n this._notice.appendChild(this._content)\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._notice)\n }\n get type() {\n return this.getAttribute('type')\n }\n set type(value) {\n if (value) this.setAttribute('type', value)\n }\n get content() {\n return this.getAttribute('content')\n }\n set content(value) {\n if (value) this.setAttribute('content', value)\n }\n /**\n * @description: 设置图标\n * @param {string} value\n */\n setIcon = (value: string) => {\n const icon = typeMapIcon.get(value)\n const color = typeMapColor.get(value)\n if (icon) {\n this._icon?.setAttribute('name', icon)\n this._icon?.style.setProperty('margin-right', '8px')\n this._icon?.setAttribute('size', '18')\n color && this._icon?.setAttribute('color', color)\n }\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n if (name === 'content' && oldValue !== newValue) {\n this._span.textContent = newValue\n }\n if (name === 'type' && oldValue !== newValue) {\n this.setIcon(newValue)\n }\n }\n }\n customElements.define('r-message', CustomElement)\n const container = document.createElement('div')\n const div = document.createElement('div')\n div.setAttribute('class', 'ranui-message')\n document.body.appendChild(container)\n container.appendChild(div)\n const commonPrompt = (type: string) => {\n return (options: Ran.Prompt | string) => {\n const message = new CustomElement()\n message.setAttribute('class', 'message')\n message.timeId && clearTimeout(message.timeId)\n message.setAttribute('type', type)\n let duration = defaultDuration\n let close: Ran.Prompt['close']\n if (typeof options === 'string') {\n message.setAttribute('content', options)\n } else {\n message.setAttribute('content', options.content)\n close = options.close\n duration = options.duration || defaultDuration\n }\n const time = setTimeout(() => {\n message.classList.remove('message-in')\n message.classList.add('message-leave')\n clearTimeout(time)\n }, duration - AnimationTime)\n message.timeId = setTimeout(() => {\n div.removeChild(message)\n if (close) close()\n }, duration)\n div.appendChild(message)\n message.classList.add('message-in')\n }\n }\n return {\n info: commonPrompt('info'),\n success: commonPrompt('success'),\n error: commonPrompt('error'),\n warning: commonPrompt('warning'),\n toast: commonPrompt('toast'),\n }\n }\n}\n\nconst message = Custom()\n\nif (typeof window !== 'undefined' && message) {\n window.message = message\n}\n\nexport default message\n","\n\nconst PPTX =\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\nconst PDF = 'application/pdf'\nconst DOCX =\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\nasync function Custom() {\n if (typeof window !== 'undefined' && !customElements.get('r-preview')) {\n const { renderPptx } = await import('@/utils/pptx')\n const { renderDocx } = await import('@/utils/docx')\n const { renderPdf } = await import('@/utils/pdf')\n const url2File = (\n url: string,\n onProgress?: (x: ProgressEvent<EventTarget>) => void,\n ): Promise<File> => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = () => {\n const blob = xhr.response\n const file = new File([blob], blob.name, { type: blob.type })\n resolve(file)\n }\n xhr.onprogress = (event) => {\n onProgress && onProgress(event)\n }\n xhr.onerror = (e) => {\n reject(e)\n }\n xhr.send()\n })\n }\n\n const renderPpt = (file: File, dom?: HTMLElement) => {\n return new Promise<void>((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsArrayBuffer(file)\n reader.onload = () => {\n if (reader.result && dom) {\n const param = {\n pptx: reader.result,\n resultElement: dom,\n }\n renderPptx(param)?.then(() => {\n resolve()\n })\n }\n }\n reader.onerror = (error) => {\n reject(error)\n }\n reader.onabort = (abort) => {\n reject(abort)\n }\n })\n }\n\n const renderWord = (file: File, dom?: HTMLElement) => {\n return Promise.resolve().then(() =>\n renderDocx({ buffer: file, bodyContainer: dom }),\n )\n }\n\n const renderFileMap = new Map<\n string,\n (file: File, dom?: HTMLElement) => Promise<void>\n >([\n [PDF, renderPdf],\n [PPTX, renderPpt],\n [DOCX, renderWord],\n ])\n class CustomElement extends HTMLElement {\n static get observedAttributes() {\n return ['src']\n }\n preview?: HTMLElement | null\n previewContext?: HTMLDivElement\n _slot: HTMLSlotElement\n _div: HTMLElement\n constructor() {\n super()\n this._div = document.createElement('div')\n this.preview = document.getElementById('r-preview-mask')\n this._slot = document.createElement('slot')\n this._div.appendChild(this._slot)\n this._slot.setAttribute('class', 'r-preview-slot')\n this._div.setAttribute('class', 'r-preview')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._div)\n }\n get label() {\n return this.getAttribute('label')\n }\n set label(value) {\n if (value) this.setAttribute('label', value)\n }\n get src() {\n return this.getAttribute('src')\n }\n set src(value) {\n if (value) this.setAttribute('src', value)\n }\n onProgress = (event: ProgressEvent<EventTarget>) => {\n const num = (event.loaded / event.total) * 100\n const progress = num.toFixed(2) + '%'\n console.log(progress);\n }\n handleFile = async (file: string | File) => {\n try {\n if (typeof file === 'string') {\n file = await url2File(file, this.onProgress)\n }\n const { type } = file\n const handler = renderFileMap.get(type)\n if (handler && this.previewContext) {\n // document.body.style.overflow = 'hidden'\n handler(file, this.previewContext)\n }\n } catch (error) {\n console.log('handleFile', error)\n }\n }\n closePreview = () => {\n if (this.preview) {\n this.preview.style.display = 'none'\n }\n }\n showPreview = () => {\n if (this.src) {\n if (this.preview) {\n this.preview.style.display = 'block'\n } else {\n this.preview = document.createElement('div')\n this.preview.setAttribute('class', 'r-preview-mask')\n this.preview.setAttribute('id', 'r-preview-mask')\n const previewOption = document.createElement('div')\n previewOption.setAttribute('class', 'r-preview-options')\n const previewCloseButton = document.createElement('button')\n previewCloseButton.setAttribute('class', 'r-preview-options-close')\n previewCloseButton.addEventListener('click', this.closePreview)\n const previewContain = document.createElement('div')\n previewContain.setAttribute('class', 'r-preview-contain')\n this.previewContext = document.createElement('div')\n this.previewContext.setAttribute('class', 'r-preview-context')\n previewContain.appendChild(this.previewContext)\n previewOption.appendChild(previewCloseButton)\n this.preview.appendChild(previewOption)\n this.preview.appendChild(previewContain)\n document.body.appendChild(this.preview)\n }\n this.handleFile(this.src)\n }\n }\n connectedCallback() {\n this.preview = document.getElementById('r-preview-mask')\n this.addEventListener('click', this.showPreview)\n }\n disconnectedCallback() {\n this.removeEventListener('click', this.showPreview)\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n if (newValue !== oldValue) {\n if (name === 'src') {\n this.setAttribute('src', newValue)\n }\n }\n }\n }\n customElements.define('r-preview', CustomElement)\n }\n}\n\nexport default Custom()\n","function Skeleton() {\n if (typeof window !== 'undefined' && !customElements.get('r-skeleton')) {\n class CustomElement extends HTMLElement {\n static get observedAttributes() {\n return ['disabled']\n }\n _div: HTMLElement\n constructor() {\n super()\n this._div = document.createElement('div')\n this._div.setAttribute('class', 'skeleton')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._div)\n }\n connectedCallback() {}\n disconnectCallback() {}\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {}\n }\n\n window.customElements.define('r-skeleton', CustomElement)\n }\n}\nexport default Skeleton()\n","interface ExtendParentNode {\n updateAttribute: (\n key: string,\n attribute: string,\n value?: string | null,\n ) => void\n}\n\nfunction CustomElement() {\n if (typeof window !== 'undefined' && !customElements.get('r-tab')) {\n class TabPane extends HTMLElement {\n static get observedAttributes() {\n return ['label', 'key', 'disabled', 'icon', 'effect']\n }\n _div: HTMLElement\n parent: (ParentNode & ExtendParentNode) | undefined | null\n constructor() {\n super()\n this._div = document.createElement('slot')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._div)\n }\n get label() {\n return this.getAttribute('label') || ''\n }\n set label(value) {\n this.setAttribute('label', value)\n }\n get icon() {\n return this.getAttribute('icon')\n }\n set icon(value) {\n if (value) {\n this.setAttribute('icon', value)\n }\n }\n get key() {\n return (\n this.getAttribute('ranKey') ||\n this.getAttribute('rankey') ||\n this.getAttribute('ran-key') ||\n this.getAttribute('key')\n )\n }\n set key(value) {\n if (value) {\n this.setAttribute('key', value)\n } else {\n this.removeAttribute('key')\n }\n }\n get disabled() {\n return this.getAttribute('disabled')\n }\n set disabled(value) {\n if (!value || value === 'false') {\n this.removeAttribute('disabled')\n } else {\n this.setAttribute('disabled', value)\n }\n }\n get effect() {\n return this.getAttribute('effect')\n }\n set effect(value) {\n if (!value || value === 'false') {\n this.removeAttribute('effect')\n } else {\n this.setAttribute('effect', value)\n }\n }\n onClick(e: Event) {\n console.log('e', e)\n }\n /**\n * @description: 在页面元素都加载完毕后,设置 tab 上的图标\n */\n initAttribute = () => {\n this.parent = this.parentNode as ParentNode & ExtendParentNode\n this.key && this.parent?.updateAttribute(this.key, 'icon', this.icon)\n this.key &&\n this.parent?.updateAttribute(this.key, 'effect', this.effect)\n }\n connectedCallback() {\n this._div.addEventListener('click', this.onClick)\n document.addEventListener('DOMContentLoaded', this.initAttribute)\n }\n disconnectCallback() {\n document.removeEventListener('DOMContentLoaded', this.initAttribute)\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n if (oldValue !== newValue && this.key && this.parent?.updateAttribute) {\n if (name === 'icon')\n this.parent?.updateAttribute(this.key, 'icon', newValue)\n if (name === 'effect')\n this.parent?.updateAttribute(this.key, 'effect', newValue)\n if (name === 'disabled')\n this.parent?.updateAttribute(this.key, 'disabled', newValue)\n }\n }\n }\n customElements.define('r-tab', TabPane)\n return TabPane\n }\n}\n\nexport default CustomElement()\n","import {\n deleteElementChildClass,\n isDisabled,\n setElementClass,\n} from '../../utils/index'\n\nfunction CustomElement() {\n if (typeof window !== 'undefined' && !customElements.get('r-tabs')) {\n class Tabs extends HTMLElement {\n static get observedAttributes() {\n return ['active', 'forceRender', 'type', 'align', 'effect']\n }\n _container: HTMLDivElement\n _header: HTMLDivElement\n _nav: HTMLDivElement\n _line: HTMLDivElement\n _content: HTMLDivElement\n _wrap: HTMLDivElement\n _slot: HTMLSlotElement\n tabHeaderKeyMapIndex: Record<string, number>\n constructor() {\n super()\n /**\n * <div class=\"tab\">\n * <div class=\"tab-header\">\n * <div class=\"tab-header_nav\">...</div>\n * <div class=\"tab-header_line\"></div>\n * </div>\n * <div class=\"tab-content\">\n * <div class=\"tab-content_wrap\">\n * <slot></slot>\n * </div>\n * </div>\n * </div>\n */\n this._container = document.createElement('div')\n this._container.setAttribute('class', 'tab')\n this._header = document.createElement('div')\n this._header.setAttribute('class', 'tab-header')\n this._nav = document.createElement('div')\n this._nav.setAttribute('class', 'tab-header_nav')\n this._line = document.createElement('div')\n this._line.setAttribute('class', 'tab-header_line')\n this._content = document.createElement('div')\n this._content.setAttribute('class', 'tab-content')\n this._wrap = document.createElement('div')\n this._wrap.setAttribute('class', 'tab-content_wrap')\n this._slot = document.createElement('slot')\n this._wrap.appendChild(this._slot)\n this._content.appendChild(this._wrap)\n this._header.appendChild(this._nav)\n this._header.appendChild(this._line)\n this._container.appendChild(this._header)\n this._container.appendChild(this._content)\n\n this.tabHeaderKeyMapIndex = {}\n\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._container)\n }\n\n get align() {\n return this.getAttribute('align') || 'start'\n }\n\n set align(value) {\n this.setAttribute('align', value)\n }\n\n set type(value) {\n this.setAttribute('type', value)\n }\n\n get type() {\n return this.getAttribute('type') || 'flat'\n }\n\n get active() {\n return this.getAttribute('active')\n }\n\n set active(value) {\n if (value) {\n this.setAttribute('active', value)\n this.setTabLine(value)\n this.setTabContent(value)\n } else {\n this.removeAttribute('active')\n }\n }\n\n get effect() {\n return this.getAttribute('effect')\n }\n\n set effect(value) {\n if (!value || value === 'false') {\n this.removeAttribute('effect')\n } else {\n this.setAttribute('effect', value)\n }\n }\n\n /**\n * @description: 构建tabPane组件key值和index的映射,同时判断一个tabs下的tabPane key值不能重复\n * @param {string} key\n * @param {number} index\n */\n initTabHeaderKeyMapIndex = (key: string, index: number) => {\n const value = this.tabHeaderKeyMapIndex[key]\n if (value) {\n throw new Error(\n 'tab 组件的 key 值存在重复, 或者某个 tab 组件缺少 key 属性',\n )\n } else {\n this.tabHeaderKeyMapIndex[key] = index\n }\n }\n /**\n * @description: 根据传入的tabPane生成tabs的头部\n * @param {Element} tabPane\n * @param {number} index\n * @return {Element}\n */\n createTabHeader(tabPane: Element, index: number) {\n const label = tabPane.getAttribute('label') || ''\n const key =\n tabPane.getAttribute('ranKey') ||\n tabPane.getAttribute('rankey') ||\n tabPane.getAttribute('ran-key') ||\n tabPane.getAttribute('key') ||\n `${index}`\n const type = tabPane.getAttribute('type') || 'text'\n this.initTabHeaderKeyMapIndex(key, index)\n const tabHeader = document.createElement('r-button')\n tabHeader.setAttribute('class', 'tab-header_nav__item')\n tabHeader.setAttribute('type', type)\n isDisabled(tabPane) && tabHeader.setAttribute('disabled', '')\n tabHeader.setAttribute('ran-key', key)\n if (this.effect) {\n tabPane.setAttribute('effect', this.effect)\n this._line.style.setProperty('display', 'none')\n }\n tabPane.setAttribute('ran-key', key)\n tabHeader.innerHTML = label\n return tabHeader\n }\n /**\n * @description: 初始化tabLine的位置,主要是当tabs的align属性为center时需要处理\n */\n initTabLineAlignCenter = () => {\n const { length } = this._nav.children\n let left = 0\n for (let i = 0; i < length; i++) {\n const { width = 0 } = this._nav.children[i].getBoundingClientRect()\n left += width\n }\n this._line.style.setProperty('left', `calc(50% - ${left / 2}px)`)\n }\n /**\n * @description: 初始化tabLine的位置,主要是当tabs的align属性为end时需要处理\n */\n initTabLineAlignEnd = () => {\n const { length } = this._nav.children\n let left = 0\n for (let i = 0; i < length; i++) {\n const { width = 0 } = this._nav.children[i].getBoundingClientRect()\n left += width\n }\n this._line.style.setProperty('left', `calc(100% - ${left}px)`)\n }\n /**\n * @description: 通过key值设置tabLine的位置\n * @param {string} key\n */\n setTabLine = (key: string) => {\n if (key) {\n const index = this.tabHeaderKeyMapIndex[key]\n // 计算tabHeader的宽度,给tabLine赋值\n const TabHeader = this._nav.children[index]\n const { width = 0 } = TabHeader.getBoundingClientRect()\n this._line.style.setProperty('width', `${width}px`)\n // 计算tabLine的移动距离\n let distance = 0\n for (let i = 0; i < index; i++) {\n const item = this._nav.children[i]\n const { width = 0 } = item.getBoundingClientRect()\n distance += width\n }\n // 设置移动的距离\n this._line.style.setProperty('transform', `translateX(${distance}px)`)\n }\n }\n /**\n * @description: 通过传入的key值设置tabContent\n */\n setTabContent = (key: string) => {\n if (key) {\n const index = this.tabHeaderKeyMapIndex[key]\n this._wrap.style.setProperty(\n 'transform',\n `translateX(${index * -100}%)`,\n )\n }\n }\n /**\n * @description: 根据点击设置tabLine的位置\n * @param {Event} e\n * @param {number} index\n * @param {number} width\n */\n clickTabHead = (e: Event) => {\n const tabHeader = e.target as Element\n // 移动元素到可视区域内\n // tabHeader.scrollIntoView({ block: \"center\", inline: \"center\" });\n // TODO: tab超出屏幕滚动问题\n const key = tabHeader.getAttribute('ran-key')\n const disabled = isDisabled(tabHeader)\n if (!disabled && key) {\n this.setAttribute('active', key)\n this.setTabLine(key)\n this.setTabContent(key)\n deleteElementChildClass(this._nav, 'active')\n setElementClass(tabHeader, 'active')\n }\n }\n /**\n * @description: tabPane 设置属性,需要在 tabs 上展示时触发\n * @param {string} key\n * @param {string} value\n */\n updateAttribute = (\n key: string,\n attribute: string,\n value: string | null = '',\n ) => {\n const index = this.tabHeaderKeyMapIndex[key]\n if (key && value && this._nav.children[index]) {\n this._nav.children[index]?.setAttribute(attribute, value)\n } else {\n this._nav.children[index]?.removeAttribute(attribute)\n }\n }\n /**\n * @description: 初始化tabs的active属性和tabLine,tabContent\n */\n initActive = () => {\n const tabHeaderList = [...this._nav.children]\n const initTabList = tabHeaderList.filter((item) => !isDisabled(item))\n let initTabHeader: Element | undefined\n // 如果有active,找到active对应的标签,设置活跃标签\n if (this.active != null) {\n initTabHeader = initTabList.find(\n (item, index) =>\n (item.getAttribute('ran-key') || `${index}`) === this.active,\n )\n }\n // 如果没有active,则默认第一个标签为活跃标签\n if (!initTabHeader) {\n initTabHeader = initTabList.shift()\n }\n // 如果都没有,则返回\n if (!initTabHeader) return\n const index = tabHeaderList.findIndex((item) => item === initTabHeader)\n const key = initTabHeader?.getAttribute('ran-key') || `${index}`\n if (key != null) {\n this.setAttribute('active', `${key}`)\n setElementClass(initTabHeader, 'active')\n const { width = 0 } = initTabHeader.getBoundingClientRect()\n this._line.style.setProperty('width', `${width}px`)\n this.setTabLine(key)\n this.setTabContent(key)\n }\n }\n /**\n * @description: 监听slot组件的添加/删除/替换操作,进行tabs初始化\n * @return {*}\n */\n listenSlotChange = () => {\n const slots = this._slot.assignedElements()\n slots.forEach((item, index) => {\n const tabPane = this.createTabHeader(item, index)\n this._nav.appendChild(tabPane)\n tabPane.addEventListener('click', this.clickTabHead)\n })\n this.initActive()\n // 如果存在align属性,进行设置tabLine的初始位置\n if (this.align) {\n if (this.align === 'center') this.initTabLineAlignCenter()\n if (this.align === 'end') this.initTabLineAlignEnd()\n }\n }\n /**\n * @description: 初始化tab\n */\n initTab = () => {\n this._slot.addEventListener('slotchange', this.listenSlotChange)\n }\n /**\n * @description: 卸载tab\n */\n unloadTab = () => {\n this._slot.removeEventListener('slotchange', this.listenSlotChange)\n }\n\n connectedCallback() {\n this.initTab()\n }\n\n disconnectCallback() {\n this.unloadTab()\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\n if (oldValue !== newValue) {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n active: this.active,\n },\n }),\n )\n // 改变align属性,进行设置tabLine的初始位置\n if (name === 'align') {\n if (newValue === 'center') this.initTabLineAlignCenter()\n if (newValue === 'end') this.initTabLineAlignEnd()\n }\n if (name === 'effect') {\n const tabHeaderList = [...this._nav.children]\n tabHeaderList.forEach((item) => {\n if (!this.effect || this.effect === 'false') {\n item.removeAttribute('effect')\n } else {\n item.setAttribute('effect', newValue)\n }\n })\n }\n }\n }\n }\n customElements.define('r-tabs', Tabs)\n return Tabs\n }\n}\n\nexport default CustomElement()\n","const fetchAB = (url: string) => {\n return new Promise((resolve) => {\n const xhr = new XMLHttpRequest()\n xhr.open('get', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n resolve(xhr.response)\n }\n xhr.send()\n })\n}\n\nfunction Custom() {\n if (typeof document !== 'undefined' && !customElements.get('r-video')) {\n class Video extends HTMLVideoElement {\n static get observedAttributes() {\n return ['disabled', 'icon', 'effect']\n }\n _video: HTMLVideoElement\n _contain: HTMLDivElement\n _iconElement?: HTMLElement\n _slot: HTMLSlotElement\n totalTime: number\n presentTime: number\n canplay: boolean\n constructor(options: Record<string, string>) {\n super()\n this._slot = document.createElement('slot')\n this._contain = document.createElement('div')\n this._video = this.initialize(options)\n this._contain.setAttribute('class', 'contain')\n this._contain.appendChild(this._slot)\n this._slot.setAttribute('class', 'slot')\n const shadowRoot = this.attachShadow({ mode: 'closed' })\n shadowRoot.appendChild(this._video)\n this.totalTime = 0\n this.presentTime = 0\n this.canplay = false\n }\n get icon() {\n return this.getAttribute('icon')\n }\n set icon(value) {\n if (value) {\n this.setAttribute('icon', value)\n }\n }\n initialize = (options: Record<string, string>) => {\n const { src } = options\n const video = document.createElement('video')\n const source = document.createElement('source')\n source.setAttribute('src', src)\n video.textContent = '您的浏览器不支持 video 标签。'\n video.appendChild(source)\n video.setAttribute('loop', 'true')\n video.muted = true\n video.setAttribute('autoplay', 'true')\n video.setAttribute('width', '100%')\n video.setAttribute('preload', 'auto')\n video.setAttribute('x5-video-player-type', 'h5')\n video.setAttribute('x5-video-orientation', 'portrait')\n video.setAttribute('webkit-playsinline', 'true')\n video.setAttribute('playsinline', 'true')\n video.setAttribute('controls', 'false')\n video.controls = false\n video.setAttribute('initial-time', '0.01')\n Object.keys(options).forEach((key) => {\n video.setAttribute(key, options[key])\n })\n return video\n }\n sourceOpen = (assetURL: string) => {\n return function (this: MediaSource) {\n const mimeCodec = 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'\n const sourceBuffer = this.addSourceBuffer(mimeCodec)\n fetchAB(assetURL).then((buf) => {\n if (buf instanceof Buffer) {\n sourceBuffer.appendBuffer(buf)\n }\n })\n }\n }\n videoUrlToBlob = (src: string, source: HTMLSourceElement) => {\n const mimeCodec = 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'\n if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {\n const mediaSource = new MediaSource()\n source.setAttribute('src', URL.createObjectURL(mediaSource))\n mediaSource.addEventListener('sourceopen', this.sourceOpen(src))\n } else {\n console.error('Unsupported MIME type or codec: ', mimeCodec)\n }\n }\n ranloadedmetadata = () => {\n this.totalTime = this._video.duration\n }\n\n ranCanplay = () => {\n this.canplay = true\n }\n ranPlay = () => {}\n ranPlaying = () => {\n this.presentTime = this._video.currentTime\n }\n ranPause = () => {}\n ranEnded = () => {}\n ranWaiting = () => {}\n videoMountEvent = () => {\n const video = this._video\n video.addEventListener('loadedmetadata', this.ranloadedmetadata)\n video.addEventListener('loadeddata', this.ranCanplay)\n video.addEventListener('play', this.ranPlay)\n video.addEventListener('waiting', this.ranWaiting)\n video.addEventListener('playing', this.ranPlaying)\n video.addEventListener('pause', this.ranPause)\n video.addEventListener('ended', this.ranEnded)\n }\n videoUnmountEvent = () => {\n const video = this._video\n if (video) {\n video.removeEventListener('loadedmetadata', this.ranloadedmetadata)\n video.removeEventListener('play', this.ranPlay)\n video.removeEventListener('playing', this.ranPlaying)\n video.removeEventListener('pause', this.ranPause)\n video.removeEventListener('waiting', this.ranWaiting)\n video.removeEventListener('ended', this.ranEnded)\n video.removeEventListener('loadeddata', this.ranCanplay)\n }\n }\n handlePlay = () => {\n this._video.play()\n }\n handlePause = () => {\n this._video.pause()\n }\n connectedCallback() {\n this.videoMountEvent()\n }\n disconnectCallback() {\n this.videoUnmountEvent()\n }\n attributeChangedCallback(name: string, old: string, fresh: string) {}\n }\n customElements.define('r-video', Video)\n return Video\n }\n}\n\nexport default Custom()\n","import './component.ts'\nimport styles from './base.less'\n\nif (typeof document !== 'undefined') {\n const style = document.createElement('style')\n style.textContent = styles\n document.body.appendChild(style)\n}\n"],"names":["CustomError","message","Custom","f7170ee498e0dd32cbdcb63fba8f75cc","CustomElement","width"],"mappings":"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"}