ranui 0.1.1-alpha.2 → 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 (45) 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/assets/image/failImage.d.ts +2 -0
  5. package/dist/close.9954c08c.js +5 -0
  6. package/dist/close.9954c08c.js.map +1 -0
  7. package/dist/components/button/index.d.ts +328 -0
  8. package/dist/components/icon/index.d.ts +2 -0
  9. package/dist/components/image/index.d.ts +2 -0
  10. package/dist/components/input/index.d.ts +436 -0
  11. package/dist/components/message/index.d.ts +8 -0
  12. package/dist/components/preview/index.d.ts +2 -0
  13. package/dist/components/skeleton/index.d.ts +2 -0
  14. package/dist/components/tabpane/index.d.ts +326 -0
  15. package/dist/components/tabs/index.d.ts +383 -0
  16. package/dist/components/video/index.d.ts +393 -0
  17. package/dist/docx.9c82eaaf.js +2643 -0
  18. package/dist/docx.9c82eaaf.js.map +1 -0
  19. package/dist/index.26f69227.js +15110 -0
  20. package/dist/index.26f69227.js.map +1 -0
  21. package/dist/index.965c8d86.js +1513 -0
  22. package/dist/index.965c8d86.js.map +1 -0
  23. package/dist/index.js +1 -1123
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.umd.cjs +12 -1
  26. package/dist/index.umd.cjs.map +1 -1
  27. package/dist/jszip.min.263da606.js +2656 -0
  28. package/dist/jszip.min.263da606.js.map +1 -0
  29. package/dist/pdf.5dd28052.js +74510 -0
  30. package/dist/pdf.5dd28052.js.map +1 -0
  31. package/dist/preview.de4d53cc.js +5 -0
  32. package/dist/preview.de4d53cc.js.map +1 -0
  33. package/dist/style.css +1 -1
  34. package/dist/typings.d.ts +46 -0
  35. package/dist/utils/docx.d.ts +8 -0
  36. package/dist/utils/index.d.ts +23 -0
  37. package/dist/utils/pdf.d.ts +1 -0
  38. package/dist/utils/pptx/colz.d.ts +70 -0
  39. package/dist/utils/pptx/index.d.ts +16 -0
  40. package/dist/utils/pptx/process_pptx.d.ts +23 -0
  41. package/dist/utils/pptx/t_xml.d.ts +1 -0
  42. package/package.json +33 -16
  43. package/base.less +0 -17
  44. package/component.ts +0 -7
  45. package/test/button.test.ts +0 -12
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.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/tabpane/index.ts","../components/tabs/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\nfunction Custom() {\n if (typeof window !== '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 }\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 EventEmitter {\n constructor() {\n __publicField(this, \"_events\");\n __publicField(this, \"on\", (eventName, callback) => {\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 callbacks.push(callback);\n this._events[eventName] = callbacks;\n });\n __publicField(this, \"emit\", (eventName, ...args) => {\n const callbacks = this._events[eventName] || [];\n callbacks.forEach((cb) => cb(...args));\n });\n __publicField(this, \"once\", (eventName, callback) => {\n const one = (...args) => {\n callback(...args);\n this.off(eventName, one);\n };\n one.initialCallback = callback;\n this.on(eventName, one);\n });\n __publicField(this, \"off\", (eventName, callback) => {\n const callbacks = this._events[eventName] || [];\n const newCallbacks = callbacks.filter(\n (fn) => fn !== callback && fn.initialCallback !== callback\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};\nexport {\n EventEmitter,\n filterObj,\n queryFileInfo,\n readDir,\n readFile,\n str2Xml,\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`).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 couldn't be loaded by r-icon, message: ${this.name} icon is undefined`)\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(xLinksNs, 'xlink:href', `../../assets/iconfont/icon.svg#icon-${this.name}`);\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\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 private _container: HTMLDivElement\n private _label: HTMLLabelElement | undefined\n private _input: HTMLInputElement\n private _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') {\n if (value && value !== oldValue) {\n this.removeAttribute('label')\n this.setAttribute('icon', value)\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.setAttribute('name', value)\n } else {\n this.removeAttribute('icon')\n this._icon && this._container.removeChild(this._icon)\n }\n }\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 }\n disconnectCallback() {\n this._input.removeEventListener('input', this.inputValue)\n }\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ) {\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 }\n customElements.define('r-input', CustomElement)\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","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 && 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') this.parent?.updateAttribute(this.key, 'icon', newValue)\n if (name === 'effect') this.parent?.updateAttribute(this.key, 'effect', newValue)\n if (name === 'disabled') 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","import './component.ts'\nimport styles from './base.less'\nif (typeof document !== 'undefined') {\n const style = document.createElement('style')\n style.textContent = styles\n document.body.appendChild(style)\n}\n"],"names":["Custom","f7170ee498e0dd32cbdcb63fba8f75cc","CustomElement","message","width"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}