@ng-nest/ui 20.1.4 → 20.1.6

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 (37) hide show
  1. package/checkbox/index.d.ts +1 -1
  2. package/core/index.d.ts +12 -1
  3. package/coversations/index.d.ts +29 -7
  4. package/fesm2022/ng-nest-ui-bubble.mjs +2 -2
  5. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  6. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-coversations.mjs +26 -3
  8. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  9. package/fesm2022/ng-nest-ui-examples.mjs +2 -2
  10. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  11. package/fesm2022/ng-nest-ui-list.mjs +20 -10
  12. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  13. package/fesm2022/ng-nest-ui-loading.mjs +13 -3
  14. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  15. package/fesm2022/ng-nest-ui-message.mjs +20 -20
  16. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  17. package/fesm2022/ng-nest-ui-progress.mjs +24 -3
  18. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  19. package/fesm2022/ng-nest-ui-prompts.mjs +98 -0
  20. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -0
  21. package/fesm2022/ng-nest-ui-sender.mjs +2 -2
  22. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  23. package/fesm2022/ng-nest-ui-table.mjs +2 -2
  24. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  25. package/fesm2022/ng-nest-ui-welcome.mjs +84 -0
  26. package/fesm2022/ng-nest-ui-welcome.mjs.map +1 -0
  27. package/fesm2022/ng-nest-ui.mjs +1 -0
  28. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  29. package/index.d.ts +1 -0
  30. package/list/index.d.ts +15 -5
  31. package/loading/index.d.ts +17 -1
  32. package/message/index.d.ts +1 -1
  33. package/package.json +55 -47
  34. package/progress/index.d.ts +7 -1
  35. package/prompts/index.d.ts +88 -0
  36. package/radio/index.d.ts +1 -1
  37. package/welcome/index.d.ts +65 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-core.mjs","sources":["../../../../lib/ng-nest/ui/core/util/option.ts","../../../../lib/ng-nest/ui/core/util/host.ts","../../../../lib/ng-nest/ui/core/util/log.ts","../../../../lib/ng-nest/ui/core/util/computed-style.ts","../../../../lib/ng-nest/ui/core/util/animation.ts","../../../../lib/ng-nest/ui/core/util/html.ts","../../../../lib/ng-nest/ui/core/util/check.ts","../../../../lib/ng-nest/ui/core/util/camel-to-kebab.ts","../../../../lib/ng-nest/ui/core/util/kebab-to-camel.ts","../../../../lib/ng-nest/ui/core/util/sleep.ts","../../../../lib/ng-nest/ui/core/animation/consts.ts","../../../../lib/ng-nest/ui/core/animation/fade.ts","../../../../lib/ng-nest/ui/core/animation/slide.ts","../../../../lib/ng-nest/ui/core/animation/drop.ts","../../../../lib/ng-nest/ui/core/animation/move.ts","../../../../lib/ng-nest/ui/core/animation/connect.ts","../../../../lib/ng-nest/ui/core/animation/badge.ts","../../../../lib/ng-nest/ui/core/animation/opacity.ts","../../../../lib/ng-nest/ui/core/interfaces/data.type.ts","../../../../lib/ng-nest/ui/core/interfaces/identify.type.ts","../../../../lib/ng-nest/ui/core/functions/convert.ts","../../../../lib/ng-nest/ui/core/functions/date.ts","../../../../lib/ng-nest/ui/core/functions/flex.ts","../../../../lib/ng-nest/ui/core/functions/drop.ts","../../../../lib/ng-nest/ui/core/functions/remove.ts","../../../../lib/ng-nest/ui/core/functions/order-by.ts","../../../../lib/ng-nest/ui/core/functions/clone-deep.ts","../../../../lib/ng-nest/ui/core/functions/has-in.ts","../../../../lib/ng-nest/ui/core/functions/chunk.ts","../../../../lib/ng-nest/ui/core/functions/guid.ts","../../../../lib/ng-nest/ui/core/functions/group-by.ts","../../../../lib/ng-nest/ui/core/functions/resize.ts","../../../../lib/ng-nest/ui/core/functions/parent-path.ts","../../../../lib/ng-nest/ui/core/config/config.ts","../../../../lib/ng-nest/ui/core/theme/theme.ts","../../../../lib/ng-nest/ui/core/theme/theme.service.ts","../../../../lib/ng-nest/ui/core/config/config.service.ts","../../../../lib/ng-nest/ui/core/functions/property.ts","../../../../lib/ng-nest/ui/core/functions/csspx.ts","../../../../lib/ng-nest/ui/core/functions/cssrem.ts","../../../../lib/ng-nest/ui/core/services/reuse-strategy.service.ts","../../../../lib/ng-nest/ui/core/services/preloading-strategy.service.ts","../../../../lib/ng-nest/ui/core/services/http.service.ts","../../../../lib/ng-nest/ui/core/services/storage.service.ts","../../../../lib/ng-nest/ui/core/services/repository.service.ts","../../../../lib/ng-nest/ui/core/components/inner-html.component.ts","../../../../lib/ng-nest/ui/core/ng-nest-ui-core.ts"],"sourcesContent":["/**\r\n * @zh_CN 填充默认值\r\n * @en_US Fill default values\r\n */\r\nexport function XFillDefault(option: { [property: string]: any }, def: { [property: string]: any }) {\r\n if (option && def) {\r\n for (const key in def) {\r\n if (typeof option[key] === 'undefined') {\r\n option[key] = def[key];\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * @zh_CN 删除当前标签,保留内容\r\n * @en_US Delete the current label and keep the content\r\n */\r\nexport function XRemoveNgTag(nativeElement: HTMLElement): void {\r\n const parentElement = nativeElement.parentElement;\r\n if (!parentElement || !parentElement.insertBefore) return;\r\n while (nativeElement.firstChild) {\r\n parentElement.insertBefore(nativeElement.firstChild, nativeElement);\r\n }\r\n parentElement.removeChild(nativeElement);\r\n}\r\n","/**\r\n * @zh_CN svg 标签不存在的警告信息\r\n * @en_US Warning information that does not exist in SVG tags\r\n */\r\nexport function XWarnSVGTagNotFound() {\r\n console.warn(`<svg> tag not found.`);\r\n}\r\n\r\n/**\r\n * @zh_CN icon 不存在的警告信息\r\n * @en_US Warning information that does not exist in icon\r\n */\r\nexport function XWarnIconTypeNotFound() {\r\n console.warn(`icon type not found.`);\r\n}\r\n","/**\r\n * @zh_CN 获取元素的指定样式的计算值\r\n * @en_US The calculation value of the specified style of the element\r\n */\r\nexport function XComputedStyle(element: HTMLElement, style: string): string {\r\n let computed = XComputed(element);\r\n let value = computed[style as any];\r\n return value.replace(/px/g, '');\r\n}\r\n\r\n/**\r\n * @zh_CN 获取元素的计算样式\r\n * @en_US Calculation style of obtaining elements\r\n */\r\nexport function XComputed(element: HTMLElement): CSSStyleDeclaration {\r\n if (typeof getComputedStyle === 'function') {\r\n return getComputedStyle(element);\r\n }\r\n return element.style;\r\n}\r\n","// tslint:disable:no-any typedef no-invalid-this\r\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\r\n\r\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\r\n let lastTime = 0;\r\n return function (callback: FrameRequestCallback): any {\r\n const currTime = new Date().getTime();\r\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n const id = setTimeout(() => {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n}\r\n\r\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\r\n if (typeof window === 'undefined') {\r\n return () => 0;\r\n }\r\n if (window.requestAnimationFrame) {\r\n return window.requestAnimationFrame.bind(window);\r\n }\r\n\r\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\r\n\r\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\r\n}\r\n\r\nexport const XRequestAnimationFrame = getRequestAnimationFrame();\r\n","/**\r\n * @zh_CN 去除 HTML 标签\r\n * @en_US Remove the html tag\r\n */\r\nexport function XStripTags(text: string, ...usefulTags: any[]): string {\r\n if (!text || typeof text !== 'string') return text;\r\n return usefulTags.length > 0\r\n ? text.replace(new RegExp(`<(?!\\/?(${usefulTags.join('|')})\\s*\\/?)[^>]+>`, 'g'), '')\r\n : text.replace(/<(?:.|\\s)*?>/g, '');\r\n}\r\n","/**\r\n * @zh_CN 判断值不为 null 或 undefined\r\n * @en_US The judgment value is not null or undefined\r\n */\r\nexport function XIsNotNil<T>(value: T): value is NonNullable<T> {\r\n return typeof value !== 'undefined' && value !== null;\r\n}\r\n\r\n/**\r\n * @zh_CN 判断值为 null 或 undefined\r\n * @en_US The judgment value is null or undefined\r\n */\r\nexport function XIsNil(value: unknown): value is null | undefined {\r\n return typeof value === 'undefined' || value === null;\r\n}\r\n","/**\r\n * @zh_CN 该函数将字符串中的驼峰命名法转换为减号命名法\r\n * - 采用正则表达式匹配字符串中每个连续的大小写字母边界\r\n * - 将其替换为小写字母和连字符的组合\r\n * - 最后将整个字符串转换为小写\r\n * - 例如,`XCamelToKebab('helloWorld')` 将返回 `hello-world`\r\n * @en_US This function converts string of hump nomenclature kebab nomenclature\r\n * - Use regular expression match each successive lowercase letters in the string boundary\r\n * - Replace it with a lower case letters and hyphens\r\n * - Finally the whole string converted to lowercase\r\n * - For example, `XCamelToKebab('helloWorld')` returns the `hello-world`\r\n */\r\nexport function XCamelToKebab(str: string) {\r\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n","/**\r\n * @zh_CN 该函数将字符串中的减号命名法转换为驼峰命名法\r\n * - 使用正则表达式匹配所有连字符后的字母 ( `(\\w)` )\r\n * - 用 `toUpperCase()` 将这些字母转换为大写\r\n * - 替换原字符串中的连字符和小写字母为大写字母\r\n * - 例如,`XKebabToCamel('hello-world')` 将返回 `helloWorld`\r\n * @en_US This function converts string minus nomenclature of hump nomenclature\r\n * - Use a regular expression match all the letter after a hyphen ( `(\\w)` )\r\n * - Use `toUpperCase()` converts these letters to uppercase\r\n * - Replace the original string the hyphen and lowercase letters to uppercase\r\n * - For example, `XKebabToCamel('hello-world')` returns `helloWorld`\r\n */\r\nexport function XKebabToCamel(str: string) {\r\n return str.replace(/-(\\w)/g, (_, char) => char.toUpperCase());\r\n}\r\n","/**\r\n * @zh_CN 延迟时间\r\n * @en_US Delayed sleep\r\n */\r\nexport function XSleep(time: number) {\r\n return new Promise((resolve) => setTimeout(resolve, time));\r\n}\r\n","/**\r\n * @zh_CN 动画执行时间\r\n * @en_US Animation execution time\r\n */\r\nexport enum XDuration {\r\n Slow = '0.3s',\r\n Base = '0.2s',\r\n Fast = '0.1s'\r\n}\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 进场动画\r\n * @en_US Enter an animation\r\n */\r\nconst XDURATION_BASE_EASE_IN = `${XDuration.Fast} ease-in`;\r\n\r\n/**\r\n * @zh_CN 移除动画\r\n * @en_US Remove animation\r\n */\r\nconst XDURATION_BASE_EASE_OUT = `${XDuration.Fast} ease-out`;\r\n\r\n/**\r\n * @zh_CN 淡入淡出动画\r\n * @en_US Fade into the animation\r\n */\r\nexport const XFadeAnimation: AnimationTriggerMetadata = trigger('x-fade-animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scale(0.8)' }),\r\n animate(`${XDURATION_BASE_EASE_IN}`, style({ opacity: 1, transform: 'scale(1)' }))\r\n ]),\r\n transition(':leave', [animate(`${XDURATION_BASE_EASE_OUT}`, style({ opacity: 0 }))])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 抽屉动画\r\n * @en_US Drawer animation\r\n */\r\nexport const XSlideAnimation: AnimationTriggerMetadata = trigger('x-slide-animation', [\r\n transition('void => right', [style({ transform: 'translate(100%,0)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('right => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(100%,0)' }))]),\r\n transition('void => left', [style({ transform: 'translate(-100%,0)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('left => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(-100%,0)' }))]),\r\n transition('void => top', [style({ transform: 'translate(0,-100%)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('top => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(0,-100%)' }))]),\r\n transition('void => bottom', [style({ transform: 'translate(0,100%)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('bottom => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(0,100%)' }))])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, state, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 放置动画\r\n * @en_US Drop animation\r\n */\r\nexport const XDropAnimation: AnimationTriggerMetadata = trigger('x-drop-animation', [\r\n state('*', style({ opacity: 0, height: 0, border: 0, padding: 0, visibility: 'hidden' })),\r\n state('false', style({ opacity: 0, height: 0, border: 0, padding: 0, visibility: 'hidden' })),\r\n state('true', style({ opacity: 1, height: '*', border: '*', padding: '*', visibility: 'inherit' })),\r\n transition('* => *', animate(`${XDuration.Base} ease-out`))\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 移入移出动画\r\n * @en_US Move in the animation\r\n */\r\nexport const XMoveAnimation: AnimationTriggerMetadata = trigger('x-move-animation', [\r\n transition('void => top-start, void => top, void => top-end, void => center', [\r\n style({\r\n transform: 'translateY(-200%)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('top-start => void, top => void, top-end => void, center => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1,\r\n height: '*'\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(-200%)',\r\n opacity: 0,\r\n height: 0\r\n })\r\n )\r\n ]),\r\n transition('void => left', [\r\n style({\r\n transform: 'translateX(-30%)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('left => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1,\r\n height: '*'\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(-30%)',\r\n opacity: 0,\r\n height: 0\r\n })\r\n )\r\n ]),\r\n transition('void => right', [\r\n style({\r\n transform: 'translateX(30%)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('right => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1,\r\n height: '*'\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(30%)',\r\n opacity: 0,\r\n height: 0\r\n })\r\n )\r\n ]),\r\n transition('void => bottom-start, void => bottom, void => bottom-end', [\r\n style({\r\n transform: 'translateY(200%)',\r\n opacity: 0,\r\n height: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1,\r\n height: '*'\r\n })\r\n )\r\n ]),\r\n transition('bottom-start => void, bottom => void, bottom-end => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(200%)',\r\n opacity: 0\r\n })\r\n )\r\n ])\r\n]);\r\n\r\nexport const XMoveBoxAnimation: AnimationTriggerMetadata = trigger('x-move-box-animation', [\r\n transition('void => top-start, void => top, void => top-end, void => center', [\r\n style({\r\n transform: 'translateY(-2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('top-start => void, top => void, top-end => void, center => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(-2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ]),\r\n transition('void => left', [\r\n style({\r\n transform: 'translateX(-2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('left => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(-2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ]),\r\n transition('void => right', [\r\n style({\r\n transform: 'translateX(2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('right => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ]),\r\n transition('void => bottom-start, void => bottom, void => bottom-end', [\r\n style({\r\n transform: 'translateY(2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('bottom-start => void, bottom => void, bottom-end => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 进场动画\r\n * @en_US Enter an animation\r\n */\r\nconst XDURATION_BASE_EASE_IN = `${XDuration.Base} ease-in`;\r\nconst XDURATION_FAST_EASE_IN = `${XDuration.Fast} ease-in`;\r\n\r\n/**\r\n * @zh_CN 移除动画\r\n * @en_US Remove animation\r\n */\r\nconst XDURATION_BASE_EASE_OUT = `${XDuration.Base} ease-out`;\r\nconst XDURATION_FAST_EASE_OUT = `${XDuration.Fast} ease-out`;\r\n\r\n/**\r\n * @zh_CN 弹框连接时的动画,只处理 Y 轴\r\n * @en_US The animation when the bomb frame is connected, only the y-axis\r\n */\r\nexport const XConnectBaseAnimation: AnimationTriggerMetadata = trigger('x-connect-base-animation', [\r\n transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate(XDURATION_FAST_EASE_IN)]),\r\n transition(':leave', [animate(XDURATION_FAST_EASE_OUT, style({ opacity: 0 }))])\r\n]);\r\n\r\n/**\r\n * @zh_CN 弹框连接时的动画,缩放\r\n * @en_US The animation when the bomb frame is connected, zoomed in\r\n */\r\nexport const XBaseAnimation: AnimationTriggerMetadata = trigger('x-base-animation', [\r\n transition(':enter', [style({ opacity: 0, transform: 'scale(0.2)' }), animate(XDURATION_BASE_EASE_IN)]),\r\n transition(':leave', [animate(XDURATION_BASE_EASE_OUT, style({ opacity: 0, transform: 'scale(0.2)' }))])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 进场动画\r\n * @en_US Enter an animation\r\n */\r\nconst XDURATION_SLOW_EASE_IN = `${XDuration.Slow} ease-in`;\r\n\r\n/**\r\n * @zh_CN 移除动画\r\n * @en_US Remove animation\r\n */\r\nconst XDURATION_SLOW_EASE_OUT = `${XDuration.Slow} ease-out`;\r\n\r\n/**\r\n * @zh_CN Badge 动画\r\n * @en_US Badge animation\r\n */\r\nexport const XBadgeAnimation: AnimationTriggerMetadata = trigger('x-badge-animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scale(0) translate(50%, -50%)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_IN,\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1) translate(50%, -50%)'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1, transform: 'scale(1) translate(50%, -50%)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_OUT,\r\n style({\r\n opacity: 0,\r\n transform: 'scale(0) translate(50%, -50%)'\r\n })\r\n )\r\n ])\r\n]);\r\n\r\n/**\r\n * @zh_CN Badge 独立存在时的动画\r\n * @en_US The animation when Badge exists independently\r\n */\r\nexport const XBadgeStandaloneAnimation: AnimationTriggerMetadata = trigger('x-badge-standalone-animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scale(0)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_IN,\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1)'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_OUT,\r\n style({\r\n opacity: 0,\r\n transform: 'scale(0)'\r\n })\r\n )\r\n ])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, state, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 透明度淡入淡出动画\r\n * @en_US The transparency fades into the animation\r\n */\r\nexport const XOpacityAnimation: AnimationTriggerMetadata = trigger('x-opacity-animation', [\r\n state('*', style({ opacity: 0 })),\r\n state('false', style({ opacity: 0 })),\r\n state('true', style({ opacity: 1 })),\r\n transition('* => *', animate(`${XDuration.Slow} cubic-bezier(0.25, 0.8, 0.25, 1)`))\r\n]);\r\n","import { Observable, isObservable } from 'rxjs';\r\nimport { TemplateRef, SimpleChange } from '@angular/core';\r\nimport type { InputSignal } from '@angular/core';\r\n\r\n/**\r\n * @zh_CN data 数据类型\r\n * 通用的泛型数据类型,一般是指数组、可订阅对象并且流数据为数组类型、函数等\r\n * @en_US Data data type\r\n * General generic data types, generally is index set,\r\n * can subscribe to the object and flow data for the array, function, etc\r\n */\r\nexport type XData<T> = T[] | Observable<T[] | any[]> | any[] | Function;\r\n\r\n/**\r\n * @zh_CN data 数据类型\r\n * 通用的泛型数据类型,一般是指数组\r\n * @en_US Data data type\r\n * General generic data types, generally is index set\r\n */\r\nexport type XDataArray<T> = string | number | (T | string | number)[];\r\n\r\n/**\r\n * @zh_CN boolean 数据类型\r\n * 此类型作为组件的输入参数,一般会使用 `XToBoolean` 转换函数,转换成 true 或 false\r\n * @en_US Boolean data type\r\n * This type as a component of the input parameters,\r\n * usually with `XToBoolean` decorator to process parameters,\r\n * directly into true or false\r\n * @example\r\n *\r\n * ```html\r\n * // true\r\n * <my-component disabled></my-component>\r\n * <my-component disabled=\"true\"></my-component>\r\n * <my-component [disabled]=\"true\"></my-component>\r\n *\r\n * // false\r\n * <my-component disabled=\"false\"></my-component>\r\n * <my-component [disabled]=\"false\"></my-component>\r\n * ```\r\n *\r\n */\r\nexport type XBoolean = boolean | string;\r\n\r\n/**\r\n * @zh_CN number 数据类型\r\n * 此类型作为组件的输入参数,一般会使用 `XToNumber` 转换函数,转换成数字类型\r\n * 如果是宽高尺寸,会通过 `XToCssPixelValue` 转换函数,转换成字符串尺寸\r\n * @en_US Number data type\r\n * This type as the input parameters of the component, generally use `XToNumber` conversion function, converted to digital type\r\n * If the width of the high is through `XToCssPixelValue` conversion function, convert the string size\r\n * @example\r\n *\r\n * ```html\r\n * // XToNumber => num = 10\r\n * <my-component max=\"10\"></my-component>\r\n * <my-component [max]=\"10\"></my-component>\r\n * <my-component [max]=\"'10'\"></my-component>\r\n *\r\n * // XToCssPixelValue\r\n * // width = '200px'\r\n * <my-component width=\"200\"></my-component>\r\n * <my-component width=\"200px\"></my-component>\r\n * <my-component [width]=\"200\"></my-component>\r\n * <my-component [width]=\"'200'\"></my-component>\r\n * <my-component [width]=\"'200px'\"></my-component>\r\n * // width = '20rem'\r\n * <my-component width=\"20rem\"></my-component>\r\n * <my-component [width]=\"'20rem'\"></my-component>\r\n * // width = '50%'\r\n * <my-component width=\"50%\"></my-component>\r\n * <my-component [width]=\"'50%'\"></my-component>\r\n * ```\r\n *\r\n */\r\nexport type XNumber = number | string;\r\n\r\n/**\r\n * @zh_CN 模板类型\r\n * 一般会配合 `outlet` 指令来指定一个参数即可为基本数据类型,也可为模板\r\n * @en_US Template type\r\n * Usually cooperate `outlet` instructions to specify a parameter can be as the basic data types, can also be used as a template\r\n * @example\r\n *\r\n * ```html\r\n * // label = \"string\"\r\n * <ng-container *xOutlet=\"label\">{{ label }}</ng-container>\r\n *\r\n * <ng-container *xOutlet=\"labelTpl\">{{ labelTpl }}</ng-container>\r\n * <ng-template #labelTpl>this is a label template</ng-template>\r\n * ```\r\n *\r\n */\r\nexport type XTemplate = string | number | Date | TemplateRef<any>;\r\n\r\n/**\r\n * @zh_CN 函数返回类型\r\n * @en_US Function return type\r\n */\r\nexport type XTypeFunc = (object: any) => boolean;\r\n\r\n/**\r\n * @zh_CN 类型判断\r\n * @en_US Type judgment\r\n */\r\nexport function XIsType(type: string): XTypeFunc {\r\n return (object: any) => Object.prototype.toString.call(object) === `[object ${type}]`;\r\n}\r\n\r\n/**\r\n * @zh_CN 值改变判断\r\n * @en_US Value change judgment\r\n */\r\nexport function XIsChange(...changes: SimpleChange[]): boolean {\r\n for (let change of changes) {\r\n if (change?.currentValue !== change?.previousValue) return true;\r\n }\r\n return false;\r\n}\r\n\r\nconst IsString = XIsType('String');\r\nconst IsArray = XIsType('Array');\r\nconst IsNumber = XIsType('Number');\r\nconst IsBoolean = XIsType('Boolean');\r\nconst IsObject = XIsType('Object');\r\nconst IsNull = (value: null) => value === null;\r\nconst IsFunction = XIsType('Function');\r\nconst IsDate = XIsType('Date');\r\nconst IsRegExp = XIsType('RegExp');\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为字符串类型\r\n * @en_US Determine whether the given value is a string type\r\n */\r\nexport function XIsString(value: any): value is string {\r\n return IsString(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为数组类型\r\n * @en_US Determine whether the given value is a array type\r\n */\r\nexport function XIsArray<T>(value: any): value is Array<T> {\r\n return IsArray(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为数字类型\r\n * @en_US Determine whether the given value is a number type\r\n */\r\nexport function XIsNumber(value: any): value is number {\r\n return IsNumber(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为布尔类型\r\n * @en_US Determine whether the given value is a boolean type\r\n */\r\nexport function XIsBoolean(value: any): value is boolean {\r\n return IsBoolean(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为对象类型\r\n * @en_US Determine whether the given value is a object type\r\n */\r\nexport function XIsObject<T>(value: any): value is T {\r\n return IsObject(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为 null 类型\r\n * @en_US Determine whether the given value is a null type\r\n */\r\nexport function XIsNull(value: any): value is null {\r\n return IsNull(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为函数类型\r\n * @en_US Determine whether the given value is a function type\r\n */\r\nexport function XIsFunction(value: any): value is Function {\r\n return IsFunction(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为日期类型\r\n * @en_US Determine whether the given value is a date type\r\n */\r\nexport function XIsDate(value: any): value is Date {\r\n return IsDate(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为正则表达式\r\n * @en_US Determine whether the given value is a regular expression\r\n */\r\nexport function XIsRegExp(value: any): value is RegExp {\r\n return IsRegExp(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为 undefined\r\n * @en_US Determine whether the given value is undefined\r\n */\r\nexport function XIsUndefined(value: any): value is undefined {\r\n return typeof value === 'undefined';\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为字符串、数字、布尔值或日期\r\n * @en_US Determine whether the given value is a string, number, Boolean value or date\r\n */\r\nexport function XIsValue<T>(object: any): object is T {\r\n return XIsString(object) || XIsNumber(object) || XIsBoolean(object) || XIsDate(object);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断一个对象是否为空\r\n * @en_US Determine whether an object is empty\r\n */\r\nexport function XIsEmpty(object: any) {\r\n try {\r\n return XIsUndefined(object) || XIsNull(object) || object === '' || object.length === 0;\r\n } catch (e) {\r\n console.error(object, e);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为非空数组\r\n * @en_US Determine whether the given object is a non -empty array\r\n */\r\nexport function XIsValueArray<T>(object: any): object is T {\r\n return XIsArray(object) && object.length > 0 && !XIsObject(object[0]);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为非空对象数组\r\n * @en_US Determine whether the given object is a non -empty object array\r\n */\r\nexport function XIsObjectArray<T>(object: any): object is T {\r\n return XIsArray(object) && object.length > 0 && XIsObject(object[0]);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 Observable\r\n * @en_US Determine whether the given object is observable\r\n */\r\nexport function XIsObservable<T>(object: any): object is Observable<T> {\r\n return isObservable(object);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 TemplateRef\r\n * @en_US Determine whether the given object is TemplateRef\r\n */\r\nexport function XIsTemplateRef<T>(object: any): object is TemplateRef<T> {\r\n if (!XIsEmpty(object) && object.elementRef) return true;\r\n else return false;\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 XTemplateRef\r\n * @en_US Determine whether the given object is XTemplateRef\r\n */\r\nexport function XIsXTemplate(object: any): object is XTemplate {\r\n return XIsString(object) || XIsNumber(object) || XIsDate(object) || XIsTemplateRef(object);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 InputSignal\r\n * @en_US Determine whether a given object for InputSignal\r\n */\r\nexport function XIsInputSignal(object: any): object is InputSignal<any> {\r\n return XIsFunction(object) && object.name === 'inputValueFn';\r\n}\r\n","/**\r\n * @zh_CN 标识对象\r\n * @en_US Identify object\r\n */\r\nexport interface XIdentityProperty {\r\n /**\r\n * @zh_CN 编码\r\n * @en_US Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 父节点标识对象\r\n * @en_US Father node identification object\r\n */\r\nexport interface XParentIdentityProperty<T> extends XIdentityProperty {\r\n /**\r\n * @zh_CN 父节点编码\r\n * @en_US Parent Id\r\n */\r\n pid?: any;\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n level?: number;\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US Leaf node\r\n */\r\n leaf?: boolean;\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Children node\r\n */\r\n children?: T[];\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Sub node has been loaded\r\n */\r\n childrenLoaded?: boolean;\r\n /**\r\n * @zh_CN 选中\r\n * @en_US Selected\r\n */\r\n selected?: boolean;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 排序\r\n * @en_US sort\r\n */\r\n sort?: number;\r\n}\r\n\r\n/**\r\n * @zh_CN 标识对象\r\n * @en_US Identify object\r\n */\r\nexport class XIdentity {\r\n /**\r\n * @zh_CN 编码\r\n * @en_US Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: any;\r\n}\r\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\r\nimport {\r\n XIsNull,\r\n XIsUndefined,\r\n XIsArray,\r\n XIsValue,\r\n XIsObject,\r\n XIsObservable,\r\n XIsFunction,\r\n XIsNumber\r\n} from '../interfaces';\r\nimport { Observable, Subject, Observer } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { WritableSignal, booleanAttribute, numberAttribute } from '@angular/core';\r\nimport type { XData, XParentIdentityProperty, XBoolean, XClassMap, XNumber, XDataArray } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 转换 value 为 boolean 值\r\n * @en_US Convert the value to boolean value\r\n */\r\nexport function XToBoolean(value: XBoolean): boolean {\r\n return booleanAttribute(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为像素值\r\n * @en_US Convert the value to pixels\r\n */\r\nexport function XToCssPixelValue(value: XNumber): string {\r\n if (!XIsNumber(value) && /^\\d+(\\.\\d+)?$/.test(value)) {\r\n return coerceCssPixelValue(Number(value));\r\n } else {\r\n return coerceCssPixelValue(value);\r\n }\r\n}\r\n\r\nexport function XToString(value: XNumber): string {\r\n return `${value}`;\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为 number 值\r\n * @en_US Convert the value to Number value\r\n */\r\nexport function XToNumber(value: XNumber): number;\r\nexport function XToNumber<D>(value: XNumber, fallback: D): number | D;\r\nexport function XToNumber(value: XNumber, fallbackValue?: number): number {\r\n return numberAttribute(value, fallbackValue);\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为指定的 list 数据 [{ label: any; id: any }, ....]\r\n * @en_US Convert value as the specified list data [{ label: any; id: any }, ....]\r\n */\r\nexport function XToDataConvert<T>(value: XData<T>): XData<T> {\r\n if (XIsArray(value)) {\r\n return (value as []).map((x: any) => {\r\n if (XIsValue(x)) {\r\n return { label: x, id: x };\r\n } else if (XIsObject<{ label: any; id: any }>(x)) {\r\n x.label = XIsUndefined(x.label) || XIsNull(x.label) ? x.id : x.label;\r\n x.id = XIsUndefined(x.id) || XIsNull(x.id) ? x.label : x.id;\r\n return x;\r\n }\r\n return x;\r\n });\r\n }\r\n return value;\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为指定的 list 数据 [{ label: any; id: any }, ....]\r\n * @en_US Convert value as the specified list data [{ label: any; id: any }, ....]\r\n */\r\nexport function XToDataArray<T>(value: XDataArray<T>): T[] {\r\n if (XIsArray(value)) {\r\n return value.map((x: any) => {\r\n if (XIsValue(x)) {\r\n return { label: x, id: x };\r\n } else if (XIsObject<{ label: any; id: any }>(x)) {\r\n x.label = XIsUndefined(x.label) || XIsNull(x.label) ? x.id : x.label;\r\n x.id = XIsUndefined(x.id) || XIsNull(x.id) ? x.label : x.id;\r\n return x;\r\n }\r\n return x;\r\n });\r\n }\r\n return [{ label: value, id: value } as T];\r\n}\r\n\r\n/**\r\n * @zh_CN 根据 data 的类型获取实际的数据\r\n * @en_US Obtain actual data based on the type of data\r\n */\r\nexport function XSetData<T>(\r\n data: XData<T>,\r\n unSubject: Subject<void>,\r\n toConvert = true,\r\n funcParam: any = null\r\n): Observable<T[]> {\r\n return new Observable((x: Observer<T[]>) => {\r\n const result = (res: T[]) => {\r\n x.next(res);\r\n x.complete();\r\n };\r\n if (typeof data === 'undefined') {\r\n result([]);\r\n } else {\r\n if (XIsObservable(data)) {\r\n (data as Observable<T[]>)\r\n .pipe(\r\n map((y) => (toConvert ? XToDataConvert(y) : y)),\r\n takeUntil(unSubject)\r\n )\r\n .subscribe((y) => {\r\n result(y as T[]);\r\n });\r\n } else if (XIsFunction(data)) {\r\n (data as (param: any) => Observable<T[]>)(funcParam)\r\n .pipe(\r\n map((y) => (toConvert ? XToDataConvert(y) : y)),\r\n takeUntil(unSubject)\r\n )\r\n .subscribe((y) => {\r\n result(y as T[]);\r\n });\r\n } else {\r\n result((toConvert ? XToDataConvert(data) : data) as T[]);\r\n }\r\n }\r\n }).pipe(takeUntil(unSubject));\r\n}\r\n\r\n/**\r\n * @zh_CN 根据 id、pid 获取子节点\r\n * @en_US Obtain sub-nodes based on ID and PID\r\n */\r\nexport function XGetChildren<T extends XParentIdentityProperty<T>>(nodes: T[], node: T, level: number): T {\r\n node.level = level;\r\n node.children = nodes.filter((y) => y.pid === node.id);\r\n node.leaf = node.children?.length > 0;\r\n if (node.leaf) node.children.map((y) => XGetChildren(nodes, y, level + 1));\r\n return node;\r\n}\r\n\r\n/**\r\n * @zh_CN 递归检查并设置节点是否具有子节点\r\n * @en_US Recursively checks and sets whether nodes have children\r\n */\r\nexport function XHasChildren<T extends XParentIdentityProperty<T>>(nodes: T[], level: number): T[] {\r\n for (let node of nodes) {\r\n node.level = level;\r\n node.leaf = node.children && node.children.length > 0;\r\n if (node.leaf) {\r\n XHasChildren(node.children!, level + 1);\r\n }\r\n }\r\n\r\n return nodes;\r\n}\r\n\r\n/**\r\n * @zh_CN 将对象键值对反转\r\n * @en_US Reversal the key value of the object\r\n */\r\nexport function XInvertKeyValues(obj: any): Map<any, any> {\r\n return Object.keys(obj).reduce((nw, key) => {\r\n nw.set(obj[key], key);\r\n return nw;\r\n }, new Map());\r\n}\r\n\r\n/**\r\n * @zh_CN 设置样式名称为 false\r\n * @en_US Set style name is false\r\n */\r\nexport function XClearClass(...classMaps: XClassMap[]): void {\r\n classMaps.forEach((classMap) => {\r\n for (const key in classMap) {\r\n classMap[key] = false;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * @zh_CN 设置样式名称为 false\r\n * @en_US Set style name is false\r\n */\r\nexport function XClearClassSignal(...classMaps: WritableSignal<XClassMap>[]): void {\r\n classMaps.forEach((classMap) => {\r\n const value = classMap();\r\n for (const key in value) {\r\n value[key] = false;\r\n }\r\n classMap.set(value);\r\n });\r\n}\r\n\r\n/**\r\n * @zh_CN 属性装饰器返回类型\r\n * @en_US Attribute decorator return type\r\n */\r\nexport type XPropDecorator = (target: any, propName: string) => void;\r\n\r\n/**\r\n * @zh_CN 创建属性装饰器的工厂函数\r\n * @en_US Factory functions that create attribute decorators\r\n */\r\nfunction propDecoratorFactory<T, D>(name: string, fallback: (v: T) => D): XPropDecorator {\r\n function propDecorator(target: any, propName: string, originalDescriptor?: TypedPropertyDescriptor<any>): any {\r\n const privatePropName = `$$__${propName}`;\r\n\r\n if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\r\n console.warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${name} decorator.`);\r\n }\r\n\r\n Object.defineProperty(target, privatePropName, {\r\n configurable: true,\r\n writable: true\r\n });\r\n\r\n return {\r\n get(): string {\r\n return originalDescriptor && originalDescriptor.get\r\n ? originalDescriptor.get.bind(this)()\r\n : this[privatePropName];\r\n },\r\n set(value: T): void {\r\n if (originalDescriptor && originalDescriptor.set) {\r\n originalDescriptor.set.bind(this)(fallback(value));\r\n }\r\n this[privatePropName] = fallback(value);\r\n }\r\n };\r\n }\r\n\r\n return propDecorator;\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XInputBoolean 属性装饰器\r\n * @en_US Create XInputBoolean Properties\r\n */\r\nexport function XInputBoolean(): XPropDecorator {\r\n return propDecoratorFactory('XInputBoolean', XToBoolean);\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XInputNumber 属性装饰器\r\n * @en_US Create XInputNumber Properties\r\n */\r\nexport function XInputNumber(): XPropDecorator {\r\n return propDecoratorFactory('XInputNumber', XToNumber);\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XInputNumber 属性装饰器\r\n * @en_US Create XInputNumber Properties\r\n */\r\nexport function XInputCssPixelValue(): XPropDecorator {\r\n return propDecoratorFactory('XInputCssPixelValue', XToCssPixelValue);\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XDataConvert 属性装饰器\r\n * @en_US Create XDataConvert Properties\r\n */\r\nexport function XDataConvert(): XPropDecorator {\r\n return propDecoratorFactory('XDataConvert', XToDataConvert);\r\n}\r\n\r\n/**\r\n * @zh_CN 限制给定数值 value 的范围\r\n * @en_US Limit the range of the given value value\r\n */\r\nexport function XClamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n","import { XIsDate, XIsNumber } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 日期类型\r\n * @en_US Date type\r\n */\r\nexport type XDate = string | Date | number;\r\n\r\n/**\r\n * @zh_CN 转换 Date\r\n * @en_US Convert to date\r\n */\r\nexport function XToDate(date: XDate): Date {\r\n if (XIsDate(date) || XIsNumber(date)) {\r\n return new Date(date);\r\n } else {\r\n return new Date(Date.parse(date as string));\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加毫秒数,负数为减少\r\n * @en_US Add milliseconds to the date, the negative number is reduced\r\n */\r\nexport function XAddMilliseconds(date: XDate, amount: number): Date {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf()) && amount) {\r\n return new Date(dt.getTime() + amount);\r\n } else {\r\n return date as Date;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加秒数,负数为减少\r\n * @en_US Date adds seconds, the negative number is reduced\r\n */\r\nexport function XAddSeconds(date: XDate, amount: number): Date {\r\n return XAddMilliseconds(date, amount * 1000);\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加分钟数,负数为减少\r\n * @en_US Date adds minutes, the negative number is reduced\r\n */\r\nexport function XAddMinutes(date: XDate, amount: number): Date {\r\n return XAddMilliseconds(date, amount * 60000);\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加小时数,负数为减少\r\n * @en_US Date adds hours, the negative number is reduced\r\n */\r\nexport function XAddHours(date: XDate, amount: number): Date {\r\n return XAddMilliseconds(date, amount * 3600000);\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加天数,负数为减少\r\n * @en_US Date adds days, the negative number is reduced\r\n */\r\nexport function XAddDays(date: XDate, amount: number): Date {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf()) && amount) {\r\n dt.setDate(dt.getDate() + amount);\r\n return dt;\r\n } else {\r\n return date as Date;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加月数,负数为减少\r\n * @en_US Date adds monthly number, negative number is reduced\r\n */\r\nexport function XAddMonths(date: XDate, amount: number): Date {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf()) && amount) {\r\n const day = dt.getDate();\r\n const month = dt.getMonth();\r\n const endMonth = new Date(dt);\r\n endMonth.setMonth(month + amount + 1, 0);\r\n const endDay = endMonth.getDate();\r\n if (day >= endDay) {\r\n return endMonth;\r\n } else {\r\n dt.setFullYear(endMonth.getFullYear(), endMonth.getMonth(), day);\r\n }\r\n return dt;\r\n } else {\r\n return date as Date;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加年数,负数为减少\r\n * @en_US The number of years of date, the negative number is reduced\r\n */\r\nexport function XAddYears(date: XDate, amount: number): Date {\r\n return XAddMonths(date, amount * 12);\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期的 ISO 周数\r\n * @en_US Get the number of ISO weeks of the given date\r\n */\r\nexport function XDateWeek(date: XDate): number | undefined {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return getISOWeek(dt);\r\n }\r\n return;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期的 ISO 周年份\r\n * @en_US Get the ISO anniversary of the specified date\r\n */\r\nexport function XDateWeekYear(date: XDate): number | undefined {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return getISOWeekYear(dt);\r\n }\r\n return;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期的年份和周数\r\n * @en_US Get the year and week of the specified date\r\n */\r\nexport function XDateYearWeek(date: XDate): string {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return `${getISOWeekYear(dt)}-${getISOWeek(dt)}`;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期的年份和季度\r\n * @en_US Get the year and quarter of the specified date\r\n */\r\nexport function XDateYearQuarter(date: XDate): string {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return `${dt.getFullYear()}-${XDateQuarter(dt)}`;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期所属的季度\r\n * @en_US Get the season when the specified date belongs\r\n */\r\nexport function XDateQuarter(date: XDate): string {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return `Q${Math.ceil((dt.getMonth() + 1) / 3)}`;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期的 ISO 周数\r\n * @en_US Get the number of ISO weeks of the given date\r\n */\r\nfunction getISOWeek(date: Date): number {\r\n const diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\r\n return Math.round(diff / 604800000) + 1;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期所在 ISO 周的开始日期\r\n * @en_US The start date of the ISO week where the given date is located\r\n */\r\nfunction startOfISOWeek(date: Date) {\r\n return startOfWeek(date, { weekStartsOn: 1 });\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期所在周的开始日期\r\n * @en_US The start date of the ISO week where the given date is located\r\n */\r\nfunction startOfWeek(date: Date, options?: { weekStartsOn: number }) {\r\n const weekStartsOn = options?.weekStartsOn || 0;\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期所在 ISO 周年的起始日期\r\n * @en_US The start date of the ISO anniversary where the given date is located\r\n */\r\nfunction startOfISOWeekYear(date: Date) {\r\n const year = getISOWeekYear(date);\r\n const fourthOfJanuary = constructFrom(date, 0);\r\n fourthOfJanuary.setFullYear(year, 0, 4);\r\n fourthOfJanuary.setHours(0, 0, 0, 0);\r\n const result = startOfISOWeek(fourthOfJanuary);\r\n return result;\r\n}\r\n\r\n/**\r\n * @zh_CN 返回一个与传入的 date 参数类型相同的对象\r\n * @en_US Return to an object of the same type of Date parameter.\r\n */\r\nfunction constructFrom<T extends Date>(date: T | number, value: Date | number): T {\r\n if (date instanceof Date) {\r\n return new (date.constructor as any)(value);\r\n } else {\r\n return new Date(value) as T;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期的 ISO 周年份\r\n * @en_US Obtain the ISO anniversary of the given date\r\n */\r\nfunction getISOWeekYear(date: Date): number {\r\n const year = date.getFullYear();\r\n\r\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\r\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\r\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\r\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\r\n\r\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\r\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\r\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\r\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\r\n\r\n if (date.getTime() >= startOfNextYear.getTime()) {\r\n return year + 1;\r\n } else if (date.getTime() >= startOfThisYear.getTime()) {\r\n return year;\r\n } else {\r\n return year - 1;\r\n }\r\n}\r\n","import { Renderer2 } from '@angular/core';\r\nimport { XAlign, XDirection, XIsEmpty, XJustify } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 用于设置元素的 flex 样式\r\n * @en_US Flex style for setting elements\r\n */\r\nexport function XSetFlex(\r\n ele: Element,\r\n renderer: Renderer2,\r\n justify?: XJustify,\r\n align?: XAlign,\r\n direction?: XDirection\r\n): string[] {\r\n let result: string[] = [];\r\n if (!XIsEmpty(justify)) {\r\n const justifyStr = `x-justify-${justify}`;\r\n result.push(justifyStr);\r\n renderer.addClass(ele, justifyStr);\r\n }\r\n if (!XIsEmpty(align)) {\r\n const alignStr = `x-align-${align}`;\r\n result.push(alignStr);\r\n renderer.addClass(ele, alignStr);\r\n }\r\n if (!XIsEmpty(direction)) {\r\n const directionStr = `x-direction-${direction}`;\r\n result.push(directionStr);\r\n renderer.addClass(ele, directionStr);\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 通过参数 n 来截取数组\r\n * 如果 n 未定义或为 0,则返回与原数组相同的数组\r\n * 如果原数组长度小于 1 或小于等于 n 的绝对值,则返回一个空数组\r\n * 如果 n 大于 0,则截取从第 n 个元素开始到数组末尾的子数组\r\n * 如果 n 小于等于 0,则截取从第 0 个元素到倒数第 n 个元素\r\n * @en_US Send the array by parameter n\r\n * If n is not defined or 0, returns the same array as the original array\r\n * If the original array length is less than 1 or less than equal to N, return a empty array\r\n * If n is greater than 0, cut off the sub-array starting from the nn element to the end of the array\r\n * If n is less than or equal to 0, cut off from the 0th element to the countless nary element\r\n */\r\nexport function XDrop<T>(array: Array<T>, n?: number): Array<T> {\r\n if (!n) return [...array];\r\n if (array.length < 1 || array.length <= Math.abs(n)) return [];\r\n return array.slice(n > 0 ? n : 0, n > 0 ? array.length : n);\r\n}\r\n","/**\r\n * @zh_CN 从数组中移除满足条件的元素,并返回被移除的元素组成的数组\r\n * @en_US Remove elements that meet the conditions from the array and return the array of the removal element\r\n */\r\nexport function XRemove<T>(array: Array<T>, predicate?: (value: T) => boolean): Array<T> {\r\n if (typeof predicate === 'undefined') return [];\r\n let result: T[] = [];\r\n for (let i = 0; i < array.length; i++) {\r\n if (predicate(array[i])) {\r\n result.push(array[i]);\r\n }\r\n }\r\n for (let item of result) {\r\n array.splice(array.indexOf(item), 1);\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 根据指定元素来排序\r\n * @en_US Sort by specified elements\r\n */\r\nexport function XOrderBy<T>(collection: Array<T>, iteratees: Array<string>, orders?: Array<'asc' | 'desc'>): Array<T> {\r\n if (!iteratees) return collection;\r\n if (!orders) orders = [];\r\n\r\n function compare(a: any, b: any, prop: any, order: 'asc' | 'desc' | undefined, idex: number): number {\r\n if (a[prop] == b[prop]) {\r\n ++idex;\r\n if (iteratees.length > idex) {\r\n const odr = orders && orders.length > idex ? orders[idex] : 'asc';\r\n return compare(a, b, iteratees[idex], odr, idex);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n let isNumber = !isNaN(a[prop]);\r\n if (order === 'desc') {\r\n if (isNumber) {\r\n return (b[prop] - a[prop]) as number;\r\n } else {\r\n if (b[prop] > a[prop]) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n } else {\r\n if (isNumber) {\r\n return (a[prop] - b[prop]) as number;\r\n } else {\r\n if (a[prop] > b[prop]) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const iterate = iteratees.shift();\r\n const order = orders.shift() || 'asc';\r\n\r\n if (!iterate) return collection;\r\n\r\n collection.sort((a: any, b: any) => compare(a, b, iterate, order, -1));\r\n\r\n return collection;\r\n}\r\n","/**\r\n * @zh_CN 该函数是一个深拷贝函数,用于克隆一个对象或数组\r\n * 它会递归地复制对象的所有属性,包括嵌套对象和数组,生成一个全新的独立副本。\r\n * 对于非对象和非数组类型的值,直接返回该值。\r\n * 函数接受一个参数 value,表示需要进行深拷贝的值。\r\n * 首先创建一个空的结果对象 result,如果 value 是数组,则 result 也是一个空数组。\r\n * 遍历 value 的所有属性,如果属性是对象,则递归调用 XCloneDeep 函数进行深拷贝,并将结果赋值给 result 对应的属性。\r\n * 最后返回 result,即深拷贝后的对象或数组。\r\n * @en_US This function is a deep copy function that is used for a cloning object or array\r\n * It will recover all the attributes of the object, including nested objects and array, and generate a new independent copy.\r\n * For non object and non -array type values, return that value directly.\r\n * The function accepts a parameter Value, indicating that the value of deep copy needs to be performed.\r\n * First create a empty result object Result. If Value is an array, Result is also an empty array.\r\n * It traverses all the attributes of Value. If the attribute is an object, the recursively calls the XCLONEDEEP function for deep copy, and assign the result to the corresponding attributes corresponding to Result.\r\n * Finally return to Result, that is, the object or array after the deep copy.\r\n */\r\nexport function XCloneDeep(value: any): any {\r\n let result: any = Array.isArray(value) ? [] : {};\r\n if (value && typeof value === 'object') {\r\n for (let key in value) {\r\n if ((value as Object).hasOwnProperty(key)) {\r\n result[key] = value && typeof value[key] === 'object' ? XCloneDeep(value[key]) : value[key];\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 判断一个对象是否包含指定的属性\r\n * @en_US Determine whether an object contains the specified attribute\r\n */\r\nexport function XHasIn(object: Object, key: string): boolean {\r\n return object != null && key in Object(object);\r\n}\r\n","/**\r\n * @zh_CN 该函数用于将给定的数组拆分成多个小数组\r\n * 每个小数组的长度由函数的第二个参数指定,默认为 1。\r\n * 如果给定的数组为空或者小数组长度小于等于 0,则函数返回一个空数组。\r\n * 函数通过循环遍历给定的数组,并使用 slice 方法将数组拆分成小数组,然后将小数组添加到结果数组中,最后返回结果数组。\r\n * @en_US This function is used to split the given array into multiple decimal arrays\r\n * The length of each decimal array is specified by the second parameter of the function, and the default is 1.\r\n * If the given array is empty or the length of the decimal array is less than equal to 0, the function returns a empty array.\r\n * The function traverses the given array by circulating, and uses the Slice method to split the array into a decimal array,\r\n * then add the decimal array to the result array, and finally return the result array.\r\n */\r\nexport function XChunk<T>(array: Array<T>, size = 1): Array<Array<T>> {\r\n const len = array == null ? 0 : array.length;\r\n if (!len || size < 1) {\r\n return [];\r\n }\r\n let index = 0;\r\n let resIndex = 0;\r\n const result = new Array(Math.ceil(len / size));\r\n\r\n while (index < len) {\r\n result[resIndex++] = array.slice(index, (index += size));\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 生成 GUID\r\n * @en_US GUID\r\n */\r\nexport function XGuid(): string {\r\n let S4 = () => {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n };\r\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\r\n}\r\n","/**\r\n * @zh_CN 根据属性 name 或迭代函数来对数组分组\r\n * @en_US Groups the elements of an array based on a property name or iteratee function\r\n * @param array 需要分组的数组\r\n * @param key 属性名或迭代函数\r\n * @returns 分组后的对象,键为分组依据的值,值为属于该组的元素数组\r\n */\r\nexport function XGroupBy<T>(array: T[], key: string | ((item: T) => string | number)): Record<string, T[]> {\r\n const groups: Record<string, T[]> = {};\r\n\r\n array.forEach((item) => {\r\n const groupKey = typeof key === 'function' ? String(key(item)) : String((item as any)[key]);\r\n\r\n if (!groups[groupKey]) {\r\n groups[groupKey] = [];\r\n }\r\n\r\n groups[groupKey].push(item);\r\n });\r\n\r\n return groups;\r\n}\r\n","import { Observable, Subscriber } from 'rxjs';\r\n\r\n/**\r\n * @zh_CN 监听元素大小边界尺寸的变化\r\n * @en_US Monitoring elements of the size of the boundary size\r\n */\r\nexport type XResizeObserver = ResizeObserver | null;\r\n\r\n/**\r\n * @zh_CN ResizeObserver 回调函数参数的对象\r\n * @en_US Object of ResizeobServer's callback function parameter\r\n */\r\nexport type XResizeObserverEntry = ResizeObserverEntry | null;\r\n\r\n/**\r\n * @zh_CN 这个函数的功能是创建一个Observable,用于监听多个元素的尺寸变化\r\n * @en_US The function of this function is to create an Observable to monitor the size changes of multiple elements.\r\n */\r\nexport function XResize(\r\n ...element: Element[]\r\n): Observable<{ entry: XResizeObserverEntry; resizeObserver: XResizeObserver }> {\r\n return new Observable(\r\n (\r\n x: Subscriber<{\r\n entry: XResizeObserverEntry;\r\n resizeObserver: XResizeObserver;\r\n }>\r\n ) => {\r\n if (typeof ResizeObserver !== 'function') {\r\n return;\r\n }\r\n const resizeObserver = new ResizeObserver((entries: XResizeObserverEntry[]) => {\r\n for (const entry of entries) {\r\n x.next({ entry: entry, resizeObserver: resizeObserver });\r\n }\r\n });\r\n for (let ele of element) {\r\n if (ele) resizeObserver.observe(ele);\r\n }\r\n }\r\n );\r\n}\r\n","/**\r\n * @zh_CN 获取元素的父节点路径\r\n * @en_US The parent node of the element\r\n */\r\nexport function XParentPath(ele: HTMLElement): string[] {\r\n let path: string[] = [];\r\n let nowEle = ele;\r\n while (nowEle.parentNode != null) {\r\n path.push(nowEle.localName);\r\n nowEle = nowEle.parentNode as HTMLElement;\r\n }\r\n return path;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取元素的父元素路径\r\n * @en_US The parent element path of obtaining elements\r\n */\r\nexport function XParents(ele: HTMLElement): HTMLElement[] {\r\n let res: HTMLElement[] = [];\r\n let nowEle = ele;\r\n while (nowEle.parentElement != null) {\r\n res.push(nowEle.parentElement!);\r\n nowEle = nowEle.parentNode as HTMLElement;\r\n }\r\n return res;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { XTheme } from '../theme';\r\nimport type {\r\n XSize,\r\n XType,\r\n XEffect,\r\n XNumber,\r\n XPositionLeftRight,\r\n XJustify,\r\n XShape,\r\n XFit,\r\n XShadow,\r\n XTrigger,\r\n XDisplayDirection,\r\n XCorner,\r\n XDirection,\r\n XPlace,\r\n XPosition,\r\n XPlacement,\r\n XPositionTopBottom,\r\n XStatus,\r\n XAlign,\r\n XVariant,\r\n XTemplate,\r\n XStyleMap,\r\n XFloatLabel\r\n} from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 组件和主题全局配置信息\r\n * @en_US Component and theme global configuration information\r\n */\r\nexport interface XConfig {\r\n /**\r\n * @zh_CN 组件配置信息\r\n * @en_US Component configuration information\r\n */\r\n components?: XComponentConfig;\r\n /**\r\n * @zh_CN 主题全配置信息\r\n * @en_US theme configuration information\r\n */\r\n theme?: XTheme;\r\n}\r\n\r\nexport type XConfigKey = keyof XConfig;\r\nexport type XComponentConfigKey = keyof XComponentConfig;\r\nexport const X_CONFIG = new InjectionToken<XConfig>('x-config');\r\n\r\n/**\r\n * @zh_CN 组件全局配置\r\n * @en_US Global configuration of the component\r\n */\r\nexport interface XComponentConfig {\r\n affix?: XAffixConfig;\r\n alert?: XAlertConfig;\r\n anchor?: XAnchorConfig;\r\n avatar?: XAvatarConfig;\r\n autoComplete?: XAutoCompleteConfig;\r\n backTop?: XBackTopConfig;\r\n badge?: XBadgeConfgig;\r\n button?: XButtonConfig;\r\n buttons?: XButtonsConfig;\r\n bubble?: XBubbleConfig;\r\n bubbles?: XBubblesConfig;\r\n calendar?: XCalendarConfig;\r\n card?: XCardConfig;\r\n carousel?: XCarouselConfig;\r\n cascade?: XCascadeConfig;\r\n checkbox?: XCheckboxConfig;\r\n collapse?: XCollapseConfig;\r\n color?: XColorConfig;\r\n colorPicker?: XColorPickerConfig;\r\n comment?: XCommentConfig;\r\n container?: XContainerConfig;\r\n coversations?: XCoversationsConfig;\r\n header?: XHeaderConfig;\r\n aside?: XAsideConfig;\r\n footer?: XFooterConfig;\r\n crumb?: XCrumbComfig;\r\n datePicker?: XDatePickerConfig;\r\n dateRange?: XDateRangeConfig;\r\n dialog?: XDialogConfig;\r\n drawer?: XDrawerConfig;\r\n dropdown?: XDropdownConfig;\r\n description?: XDescriptionConfig;\r\n empty?: XEmptyConfig;\r\n find?: XFindConfig;\r\n form?: XFormConfig;\r\n highlight?: XHighlightConfig;\r\n icon?: XIconConfig;\r\n inner?: XInnerConfig;\r\n input?: XInputConfig;\r\n inputGroup?: XInputGroupConfig;\r\n inputNumber?: XInputNumberConfig;\r\n image?: XImageConfig;\r\n col?: XColConfig;\r\n row?: XRowConfig;\r\n ripple?: XRippleConfig;\r\n link?: XLinkConfig;\r\n list?: XListConfig;\r\n listOption?: XListOptionConfig;\r\n loading?: XLoadingConfig;\r\n menu?: XMenuConfig;\r\n message?: XMessageConfig;\r\n messageBox?: XMessageBoxConfig;\r\n notification?: XNotificationConfig;\r\n outlet?: XOutletConfig;\r\n pageHeader?: XPageHeaderConfig;\r\n pagination?: XPaginationConfig;\r\n pattern?: XPatternConfig;\r\n popconfirm?: XPopconfirmConfig;\r\n popover?: XPopoverConfig;\r\n portal?: XPortalConfig;\r\n progress?: XProgressConfing;\r\n radio?: XRadioConfig;\r\n rate?: XRateConfig;\r\n result?: XResultConfig;\r\n select?: XSelectConfig;\r\n sender?: XSenderConfig;\r\n skeleton?: XSkeletonConfig;\r\n slider?: XSliderConfig;\r\n sliderSelect?: XSliderSelectConfig;\r\n statistic?: XStatisticConfig;\r\n countdown?: XCountdownConfig;\r\n steps?: XStepsConfig;\r\n switch?: XSwitchConfig;\r\n table?: XTableConfig;\r\n tableView?: XTableViewConfig;\r\n tabs?: XTabsConfig;\r\n tag?: XTagConfig;\r\n textRetract?: XTextRetractConfig;\r\n theme?: XThemeConfig;\r\n timeAgo?: XTimeAgoConfig;\r\n timePicker?: XTimePickerConfig;\r\n timeRange?: XTimeRangeConfig;\r\n timeline?: XTimelineConfig;\r\n tooltip?: XTooltipConfig;\r\n transfer?: XTransferConfig;\r\n tree?: XTreeConfig;\r\n treeFile?: XTreeFileConfig;\r\n treeSelect?: XTreeSelectConfig;\r\n textarea?: XTextareaConfig;\r\n upload?: XUploadConfig;\r\n keyword?: XKeywordConfig;\r\n}\r\n\r\nexport interface XAffixConfig {\r\n top?: string;\r\n left?: string;\r\n}\r\n\r\nexport interface XAlertConfig {\r\n effect?: XEffect;\r\n hideClose?: boolean;\r\n variant?: 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n showIcon?: boolean;\r\n disabledAnimation?: boolean;\r\n draggable?: boolean;\r\n resizable?: boolean;\r\n dragHandleTitle?: boolean;\r\n duration?: number;\r\n minWidth?: string;\r\n minHeight?: string;\r\n}\r\n\r\nexport interface XAnchorConfig {\r\n affixTop?: string;\r\n affixBottom?: string;\r\n affixWidth?: string;\r\n layout?: XPositionLeftRight;\r\n justify?: XJustify;\r\n}\r\n\r\nexport interface XAvatarConfig {\r\n size?: XSize;\r\n shape?: XShape;\r\n fit?: XFit;\r\n gap?: string;\r\n backgroundColor?: string;\r\n color?: string;\r\n}\r\n\r\nexport interface XAutoCompleteConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XPositionTopBottom;\r\n debounceTime?: number;\r\n size?: XSize;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n caseSensitive?: boolean;\r\n onlySelect?: boolean;\r\n}\r\n\r\nexport interface XBackTopConfig {\r\n right?: string;\r\n bottom?: string;\r\n visibilityHeight?: number;\r\n}\r\n\r\nexport interface XBadgeConfgig {\r\n type?: XType;\r\n}\r\n\r\nexport interface XButtonConfig {\r\n size?: XSize;\r\n type?: XType;\r\n plain?: boolean;\r\n round?: boolean;\r\n circle?: boolean;\r\n flat?: boolean;\r\n text?: boolean;\r\n attrType?: 'submit' | 'button' | 'reset';\r\n}\r\n\r\nexport interface XButtonsConfig {\r\n space?: string;\r\n hiddenBorder?: boolean;\r\n boxShadow?: boolean;\r\n round?: boolean;\r\n}\r\n\r\nexport interface XBubbleConfig {\r\n variant?: 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n size?: XSize;\r\n}\r\n\r\nexport interface XBubblesConfig {\r\n variant?: 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n size?: XSize;\r\n}\r\n\r\nexport interface XCalendarConfig {}\r\n\r\nexport interface XCardConfig {\r\n shadow?: XShadow;\r\n}\r\n\r\nexport interface XCarouselConfig {\r\n height?: string;\r\n trigger?: XTrigger;\r\n arrow?: XShadow;\r\n direction?: XDisplayDirection;\r\n}\r\n\r\nexport interface XCascadeConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XCorner;\r\n size?: XSize;\r\n clearable?: boolean;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n nodeTrigger?: XTrigger;\r\n nodeHoverDelay?: number;\r\n separator?: string;\r\n}\r\n\r\nexport interface XCheckboxConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XCollapseConfig {\r\n showIcon?: boolean;\r\n ghost?: boolean;\r\n iconPosition?: 'left' | 'right';\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XColorConfig {\r\n merge?: string;\r\n amounts?: number[];\r\n}\r\n\r\nexport interface XColorPickerConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XCommentConfig {\r\n contentMax?: number;\r\n maxlength?: number;\r\n}\r\n\r\nexport interface XContainerConfig {\r\n direction?: XDirection;\r\n}\r\n\r\nexport interface XCoversationsConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XHeaderConfig {\r\n height?: string;\r\n}\r\n\r\nexport interface XAsideConfig {\r\n width?: string;\r\n}\r\n\r\nexport interface XFooterConfig {\r\n height?: string;\r\n}\r\n\r\nexport interface XCrumbComfig {\r\n separator?: string;\r\n}\r\n\r\nexport interface XDatePickerConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n format?: string;\r\n clearable?: boolean;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XDateRangeConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n format?: string;\r\n clearable?: boolean;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XDialogConfig {\r\n placement?: XPlace;\r\n offset?: string;\r\n width?: string;\r\n minWidth?: string;\r\n minHeight?: string;\r\n maxWidth?: string;\r\n maxHeight?: string;\r\n effect?: XEffect;\r\n showCancel?: boolean;\r\n cancelText?: string;\r\n showConfirm?: boolean;\r\n confirmText?: string;\r\n backdropClose?: boolean;\r\n draggable?: boolean;\r\n resizable?: boolean;\r\n maximize?: boolean;\r\n hasBackdrop?: boolean;\r\n className?: string;\r\n buttonsCenter?: boolean;\r\n}\r\n\r\nexport interface XDrawerConfig {\r\n placement?: XPosition;\r\n size?: string;\r\n backdropClose?: boolean;\r\n hasBackdrop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport interface XDropdownConfig {\r\n trigger?: XTrigger;\r\n placement?: XPlacement;\r\n size?: XSize;\r\n}\r\n\r\nexport interface XDescriptionConfig {\r\n bordered?: boolean;\r\n size?: XSize;\r\n}\r\n\r\nexport interface XEmptyConfig {\r\n img?: XTemplate;\r\n content?: XTemplate;\r\n}\r\n\r\nexport interface XFindConfig {\r\n size?: XSize;\r\n bordered?: boolean;\r\n columnLabel?: string;\r\n dialogTitle?: string;\r\n dialogCheckboxLabel?: string;\r\n dialogCheckboxWidth?: string;\r\n dialogEmptyContent?: string;\r\n dialogButtonsCenter?: boolean;\r\n tableIndex?: number;\r\n tableSize?: number;\r\n tableLoading?: boolean;\r\n tableVirtualScroll?: boolean;\r\n tableRowHeight?: number;\r\n treeExpandedLevel?: number;\r\n}\r\n\r\nexport interface XFormConfig {\r\n space?: string;\r\n labelSuffix?: string;\r\n width?: string;\r\n}\r\n\r\nexport interface XHighlightConfig {}\r\n\r\nexport interface XIconConfig {\r\n href?: string;\r\n}\r\n\r\nexport interface XInnerConfig {\r\n padding?: string;\r\n}\r\n\r\nexport interface XInputConfig {\r\n floatFixed?: boolean;\r\n floatLabel?: XFloatLabel;\r\n variant?: XVariant;\r\n clearable?: boolean;\r\n iconLayout?: XPositionLeftRight;\r\n size?: XSize;\r\n bordered?: boolean;\r\n inputPadding?: string;\r\n inputIconPadding?: XNumber;\r\n}\r\n\r\nexport interface XInputGroupConfig {\r\n size?: XSize;\r\n bordered?: boolean;\r\n compact?: boolean;\r\n}\r\n\r\nexport interface XInputNumberConfig {\r\n variant?: XVariant;\r\n size?: XSize;\r\n bordered?: boolean;\r\n hiddenButton?: boolean;\r\n}\r\n\r\nexport interface XImageConfig {\r\n previewText?: string;\r\n}\r\n\r\nexport interface XColConfig {}\r\n\r\nexport interface XRowConfig {}\r\n\r\nexport interface XRippleConfig {\r\n type?: XType;\r\n}\r\n\r\nexport interface XLinkConfig {\r\n underline?: boolean;\r\n iconRight?: boolean;\r\n preventDefault?: boolean;\r\n}\r\n\r\nexport interface XListConfig {\r\n selectAllText?: string;\r\n loadMoreText?: string;\r\n loadingMoreText?: string;\r\n caseSensitive?: boolean;\r\n virtualScroll?: boolean;\r\n scrollHeight?: number;\r\n size?: XSize;\r\n}\r\n\r\nexport interface XListOptionConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XLoadingConfig {\r\n size?: XSize | number;\r\n text?: string;\r\n icon?: string;\r\n color?: string;\r\n background?: string;\r\n zIndex?: number;\r\n}\r\n\r\nexport interface XMenuConfig {\r\n size?: XSize;\r\n width?: string;\r\n trigger?: XTrigger;\r\n}\r\n\r\nexport interface XMessageConfig {\r\n type?: XStatus;\r\n width?: string;\r\n placement?: XPlace;\r\n displayType?: string;\r\n offset?: string | string[];\r\n duration?: number;\r\n hideClose?: boolean;\r\n showIcon?: boolean;\r\n}\r\n\r\nexport interface XMessageBoxConfig {}\r\n\r\nexport interface XNotificationConfig {}\r\n\r\nexport interface XOutletConfig {}\r\n\r\nexport interface XPageHeaderConfig {\r\n backIcon?: string;\r\n backText?: string;\r\n}\r\n\r\nexport interface XPaginationConfig {\r\n index?: number;\r\n size?: number;\r\n space?: string;\r\n pageLinkSize?: number;\r\n hiddenBorder?: boolean;\r\n showEllipsis?: boolean;\r\n showTotal?: boolean;\r\n showSize?: boolean;\r\n showBackground?: boolean;\r\n sizeWidth?: string;\r\n sizeData?: number[];\r\n showInputSize?: boolean;\r\n showInputSizeTooltipText?: boolean;\r\n inputSizeTooltipText?: string;\r\n inputSizeWidth?: number;\r\n showJump?: boolean;\r\n jumpWidth?: string;\r\n showJumpTooltipText?: boolean;\r\n jumpTooltipText?: string;\r\n simple?: boolean;\r\n simpleIndexWidth?: string;\r\n inputIndexSizeSureType?: 'enter' | 'blur' | 'both';\r\n}\r\n\r\nexport interface XPatternConfig {}\r\n\r\nexport interface XPopconfirmConfig {\r\n placement?: XPlacement;\r\n trigger?: XTrigger;\r\n icon?: string;\r\n iconColor?: string;\r\n cancelText?: string;\r\n confirmText?: string;\r\n width?: string;\r\n maxWidth?: string;\r\n minWidth?: string;\r\n}\r\n\r\nexport interface XPopoverConfig {\r\n placement?: XPlacement;\r\n trigger?: XTrigger;\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n}\r\n\r\nexport interface XPortalConfig {}\r\n\r\nexport interface XProgressConfing {\r\n height?: string;\r\n stepWidth?: string;\r\n}\r\n\r\nexport interface XRadioConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XRateConfig {\r\n color?: string | { [color: string]: (rate: number) => boolean };\r\n}\r\n\r\nexport interface XResultConfig {}\r\n\r\nexport interface XSelectConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XPositionTopBottom;\r\n clearable?: boolean;\r\n size?: XSize;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n selectAllText?: string;\r\n search?: boolean;\r\n caseSensitive?: boolean;\r\n debounceTime?: number;\r\n maxTagCount?: number;\r\n maxTagContent?: XTemplate;\r\n virtualScroll?: boolean;\r\n}\r\n\r\nexport interface XSenderConfig {\r\n submitType?: 'enter' | 'shiftEnter';\r\n}\r\n\r\nexport interface XSkeletonConfig {}\r\n\r\nexport interface XSliderConfig {\r\n animated?: boolean;\r\n size?: XSize;\r\n showExpand?: boolean;\r\n autoShowArrow?: boolean;\r\n trigger?: XTrigger;\r\n expandMaxHeight?: string;\r\n}\r\n\r\nexport interface XSliderSelectConfig {}\r\n\r\nexport interface XStatisticConfig {}\r\n\r\nexport interface XCountdownConfig {\r\n format?: string;\r\n}\r\n\r\nexport interface XStepsConfig {}\r\n\r\nexport interface XSwitchConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XTableConfig {\r\n index?: number;\r\n size?: number;\r\n loading?: boolean;\r\n showHeader?: boolean;\r\n headerPosition?: 'top' | 'bottom' | 'top-bottom';\r\n bodyInnerHTML?: boolean;\r\n virtualScroll?: boolean;\r\n rowHeight?: number;\r\n itemSize?: number;\r\n bordered?: boolean;\r\n allowSelectRow?: boolean;\r\n allowCheckRow?: boolean;\r\n rowSize?: XSize;\r\n showPagination?: boolean;\r\n treeTable?: boolean;\r\n expandedAll?: boolean;\r\n expandedLevel?: number;\r\n hiddenPaginationBorder?: boolean;\r\n hiddenWrapBorder?: boolean;\r\n showEmpty?: boolean;\r\n emptyImg?: XTemplate;\r\n emptyContent?: XTemplate;\r\n\r\n space?: string;\r\n pageLinkSize?: number;\r\n hiddenBorder?: boolean;\r\n showEllipsis?: boolean;\r\n showTotal?: boolean;\r\n showSize?: boolean;\r\n showBackground?: boolean;\r\n sizeWidth?: string;\r\n sizeData?: number[];\r\n showInputSize?: boolean;\r\n showInputSizeTooltipText?: boolean;\r\n inputSizeTooltipText?: string;\r\n inputSizeWidth?: number;\r\n showJump?: boolean;\r\n jumpWidth?: string;\r\n showJumpTooltipText?: boolean;\r\n jumpTooltipText?: string;\r\n simple?: boolean;\r\n simpleIndexWidth?: string;\r\n inputIndexSizeSureType?: 'enter' | 'blur' | 'both';\r\n}\r\n\r\nexport interface XTableViewConfig {}\r\n\r\nexport interface XTabsConfig {\r\n size?: XSize;\r\n trigger?: XTrigger;\r\n expandMaxHeight?: string;\r\n}\r\n\r\nexport interface XTagConfig {\r\n size?: XSize;\r\n bordered?: boolean;\r\n closable?: boolean;\r\n dark?: boolean;\r\n}\r\n\r\nexport interface XTextRetractConfig {\r\n max?: number;\r\n}\r\n\r\nexport interface XThemeConfig {\r\n amounts?: number[];\r\n}\r\n\r\nexport interface XTimeAgoConfig {}\r\n\r\nexport interface XTimePickerConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n format?: string;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n use12Hours?: boolean;\r\n defaultNow?: boolean;\r\n hourStep?: number;\r\n minuteStep?: number;\r\n secondStep?: number;\r\n}\r\n\r\nexport interface XTimeRangeConfig {}\r\n\r\nexport interface XTimelineConfig {\r\n size?: XSize;\r\n mode?: 'left' | 'right' | 'alternate';\r\n}\r\n\r\nexport interface XTooltipConfig {\r\n placement?: XPlacement;\r\n}\r\n\r\nexport interface XTransferConfig {\r\n titles?: string[];\r\n drag?: boolean;\r\n virtualScroll?: boolean;\r\n type?: 'list' | 'table' | 'tree';\r\n listStyle: XStyleMap | XStyleMap[];\r\n}\r\n\r\nexport interface XTreeConfig {\r\n spacing?: string;\r\n nodeHeight?: string;\r\n nodeAlignItems?: XAlign;\r\n virtualScroll?: boolean;\r\n onlyLeaf?: boolean;\r\n showLine?: boolean;\r\n virtualScrollHeight?: string;\r\n itemSize?: number;\r\n caseSensitive?: boolean;\r\n order?: {\r\n property: string;\r\n order: 'asc' | 'desc';\r\n }[];\r\n includeChildren?: boolean;\r\n}\r\n\r\nexport interface XTextareaConfig {\r\n variant?: XVariant;\r\n clearable?: boolean;\r\n iconLayout?: XPositionLeftRight;\r\n}\r\n\r\nexport interface XTreeFileConfig {\r\n maxHeight?: string;\r\n spacing?: string;\r\n}\r\n\r\nexport interface XTreeSelectConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XPositionTopBottom;\r\n clearable?: boolean;\r\n size?: XSize;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n selectAllText?: string;\r\n search?: boolean;\r\n caseSensitive?: boolean;\r\n debounceTime?: number;\r\n maxTagCount?: number;\r\n maxTagContent?: XTemplate;\r\n virtualScroll?: boolean;\r\n showPath?: boolean;\r\n separator?: string;\r\n onlyLeaf?: boolean;\r\n order?: {\r\n property: string;\r\n order: 'asc' | 'desc';\r\n }[];\r\n includeChildren?: boolean;\r\n}\r\n\r\nexport interface XUploadConfig {\r\n download?: boolean;\r\n multipleModel?: 'cover' | 'add';\r\n}\r\n\r\nexport interface XKeywordConfig {\r\n type?: XType;\r\n color?: string;\r\n caseSensitive?: boolean;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface XTheme {\r\n colors?: XColorsTheme;\r\n vars?: XVarsTheme;\r\n dark?: boolean;\r\n}\r\n\r\nexport interface XColorsTheme {\r\n primary?: string;\r\n success?: string;\r\n warning?: string;\r\n danger?: string;\r\n info?: string;\r\n text?: string;\r\n border?: string;\r\n background?: string;\r\n [property: string]: any;\r\n}\r\n\r\nexport interface XVarsTheme {\r\n black?: string;\r\n white?: string;\r\n fontSize?: string;\r\n fontSizeMini?: string;\r\n fontSizeSmall?: string;\r\n fontSizeMedium?: string;\r\n fontSizeLarge?: string;\r\n fontSizeBig?: string;\r\n fontVariant?: string;\r\n fontFamily?: string;\r\n fontCodeFamily?: string;\r\n lineHeight?: string;\r\n heightBig?: string;\r\n heightLarge?: string;\r\n heightMedium?: string;\r\n heightSmall?: string;\r\n heightMini?: string;\r\n paddingBig?: string;\r\n paddingLarge?: string;\r\n paddingMedium?: string;\r\n paddingSmall?: string;\r\n paddingMini?: string;\r\n borderStyle?: string;\r\n borderRadius?: string;\r\n borderSmallRadius?: string;\r\n borderWidth?: string;\r\n borderDeepWidth?: string;\r\n boxShadow?: string;\r\n boxShadowHover?: string;\r\n boxShadowTop?: string;\r\n boxShadowRight?: string;\r\n boxShadowBottom?: string;\r\n boxShadowLeft?: string;\r\n animationDurationSlow?: string;\r\n animationDurationBase?: string;\r\n animationDurationFast?: string;\r\n [property: string]: any;\r\n}\r\n\r\nexport type XThemeKey = keyof XTheme;\r\n\r\nexport type XColors = 'primary' | 'success' | 'warning' | 'danger' | 'info';\r\n\r\nexport const X_THEME = new InjectionToken<XTheme>('xTheme');\r\n\r\nexport const X_THEME_PREFIX = '--x-';\r\n\r\nexport const X_THEME_MERGE = '#ffffff';\r\n\r\nexport const X_THEME_BLACK_MERGE = '#cccccc';\r\n\r\nexport const X_THEME_AMOUNTS = [\r\n 0, -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9\r\n];\r\n\r\nexport const X_THEME_BACKGROUNDS = [-0.2, -0.3, -0.4];\r\n\r\nexport const X_THEME_TEXTS = [\r\n [-0.5, 0],\r\n [-0.6, 0.2],\r\n [-0.7, 0.4]\r\n];\r\n\r\nexport const X_THEME_BORDERS = [\r\n [-0.8, 0],\r\n [-0.9, 0.2]\r\n];\r\n\r\nexport const X_THEME_EXCHANGES = [\r\n [-0.1, -0.1],\r\n [0.1, -0.1],\r\n [0.2, 0.2],\r\n [0.3, 0],\r\n [0.4, -0.4],\r\n [0.5, -0.2],\r\n [0.6, 0],\r\n [0.7, -0.4],\r\n [0.8, -0.4],\r\n [0.9, -0.2]\r\n];\r\n\r\nexport const X_THEME_LIGHT_COLORS: XColorsTheme = {\r\n text: '#333333',\r\n border: '#efefef',\r\n background: '#ffffff'\r\n};\r\n\r\nexport const X_THEME_DARK_COLORS: XColorsTheme = {\r\n text: '#dddddd',\r\n border: '#252022',\r\n background: '#0f0f11'\r\n};\r\n\r\nexport const X_THEME_COLORS: XColorsTheme = {\r\n primary: '#3B82F6',\r\n success: '#67c23a',\r\n warning: '#e6a23c',\r\n danger: '#f56c6c',\r\n info: '#909399',\r\n ...X_THEME_LIGHT_COLORS\r\n};\r\n\r\nexport const X_THEME_VARS: XVarsTheme = {\r\n black: '#000000',\r\n white: '#ffffff',\r\n fontSize: '0.875rem',\r\n fontSizeMini: '0.75rem',\r\n fontSizeSmall: '0.875rem',\r\n fontSizeMedium: '1rem',\r\n fontSizeLarge: '1.25rem',\r\n fontSizeBig: '1.5rem',\r\n fontVariant: 'tabular-nums',\r\n fontFamily:\r\n '-appleSystem, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sansSerif',\r\n fontCodeFamily: 'SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace',\r\n lineHeight: '1.75rem',\r\n heightBig: '2.75rem',\r\n heightLarge: '2.5rem',\r\n heightMedium: '2.25rem',\r\n heightSmall: '2rem',\r\n heightMini: '1.75rem',\r\n paddingBig: '1.5rem',\r\n paddingLarge: '1.25rem',\r\n paddingMedium: '1rem',\r\n paddingSmall: '0.75rem',\r\n paddingMini: '0.5rem',\r\n borderStyle: 'solid',\r\n borderRadius: '0.75rem',\r\n borderSmallRadius: '0.5rem',\r\n borderWidth: '0.0625rem',\r\n borderDeepWidth: '0.125rem',\r\n boxShadow: '0 0.0625rem 0.25rem 0.0625rem rgba(0, 0, 0, 0.15)',\r\n boxShadowHover: '0 0.0625rem 0.25rem 0.0625rem rgba(0, 0, 0, 0.3)',\r\n boxShadowTop: '0 -0.0625rem 0.25rem rgba(0, 0, 0, 0.15)',\r\n boxShadowRight: '0.0625rem 0 0.25rem rgba(0, 0, 0, 0.15)',\r\n boxShadowBottom: '0 0.0625rem 0.25rem rgba(0, 0, 0, 0.15)',\r\n boxShadowLeft: '-0.0625rem 0 0.25rem rgba(0, 0, 0, 0.15)',\r\n animationDurationSlow: '0.3s',\r\n animationDurationBase: '0.2s',\r\n animationDurationFast: '0.1s'\r\n};\r\n\r\nexport const X_THEME_COLOR_KEYS = Object.keys(X_THEME_COLORS);\r\nexport const X_THEME_VARS_KEYS = Object.keys(X_THEME_VARS);\r\n","import { Injectable, RendererFactory2, Renderer2, inject } from '@angular/core';\r\nimport {\r\n XTheme,\r\n XColorsTheme,\r\n X_THEME_COLORS,\r\n X_THEME_COLOR_KEYS,\r\n X_THEME_PREFIX,\r\n X_THEME_AMOUNTS,\r\n X_THEME_MERGE,\r\n X_THEME_BLACK_MERGE,\r\n X_THEME_EXCHANGES,\r\n X_THEME_BACKGROUNDS,\r\n X_THEME_TEXTS,\r\n X_THEME_BORDERS,\r\n X_THEME_VARS,\r\n XVarsTheme,\r\n X_THEME_DARK_COLORS,\r\n X_THEME_LIGHT_COLORS\r\n} from './theme';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XCamelToKebab, XComputed, XKebabToCamel } from '../util';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XThemeService {\r\n private colorsProp: XColorsTheme = {};\r\n private varsProp: XVarsTheme = {};\r\n private colorsStyleEle!: HTMLStyleElement;\r\n private varsStyleEle!: HTMLStyleElement;\r\n private renderer2: Renderer2;\r\n private declaration: CSSStyleDeclaration;\r\n private doc: Document = inject(DOCUMENT);\r\n changed = new BehaviorSubject<'light' | 'dark'>('light');\r\n\r\n constructor(private factory: RendererFactory2) {\r\n this.renderer2 = this.factory.createRenderer(null, null);\r\n this.declaration = XComputed(this.doc.documentElement);\r\n }\r\n\r\n setInitialTheme(theme?: XTheme) {\r\n this.setVars(theme?.vars);\r\n if (theme?.vars) Object.assign(X_THEME_VARS, theme.vars);\r\n this.setColors(theme?.colors);\r\n if (theme?.colors) Object.assign(X_THEME_COLORS, theme.colors);\r\n if (theme?.dark) {\r\n this.setDark(true);\r\n }\r\n }\r\n\r\n setTheme(theme?: XTheme) {\r\n this.setColors(theme?.colors);\r\n this.setVars(theme?.vars);\r\n this.setDark(theme?.dark);\r\n }\r\n\r\n getTheme(includesAll = false): XTheme {\r\n return {\r\n colors: this.getColors(includesAll),\r\n vars: this.getVars()\r\n };\r\n }\r\n\r\n setColors(colors?: XColorsTheme) {\r\n colors = this.getColorsTheme(colors);\r\n for (let key in colors) {\r\n Object.assign(this.colorsProp, this.setColorRoot(key, colors[key]));\r\n }\r\n this.createColorsStyle();\r\n }\r\n\r\n setDark(dark?: boolean) {\r\n const colors = this.getColors();\r\n if (dark === true) {\r\n Object.assign(colors, X_THEME_DARK_COLORS);\r\n this.setDarkColors(colors);\r\n this.changed.next('dark');\r\n } else if (dark === false) {\r\n Object.assign(colors, X_THEME_LIGHT_COLORS);\r\n this.setColors(colors);\r\n this.changed.next('light');\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n setDarkColors(colors?: XColorsTheme) {\r\n this.colorsProp = this.getDefineColors(colors, X_THEME_PREFIX, true);\r\n this.createColorsStyle();\r\n }\r\n\r\n getColors(includes = false, prefix = X_THEME_PREFIX): XColorsTheme {\r\n let result: XColorsTheme = {};\r\n const keys = includes ? Object.keys(this.colorsProp) : X_THEME_COLOR_KEYS.map((x) => `${prefix}${x}`);\r\n keys.forEach((x) => {\r\n result[x.replace(prefix, '')] = this.declaration.getPropertyValue(`${x}`).trim();\r\n });\r\n\r\n return result;\r\n }\r\n\r\n getVars(prefix = X_THEME_PREFIX): XVarsTheme {\r\n let result: XVarsTheme = {};\r\n const keys = Object.keys(this.varsProp);\r\n keys.forEach((x) => {\r\n result[XKebabToCamel(x.replace(prefix, ''))] = this.declaration.getPropertyValue(`${x}`).trim();\r\n });\r\n return result;\r\n }\r\n\r\n getColorsInProperty(colors?: XColorsTheme, prefix = X_THEME_PREFIX): XColorsTheme {\r\n let result: XColorsTheme = {};\r\n Object.keys(colors as XColorsTheme).forEach((x) => {\r\n result[x] = this.declaration.getPropertyValue(`${prefix}${x}`).trim();\r\n });\r\n return result;\r\n }\r\n\r\n getColorsTheme(colors?: XColorsTheme) {\r\n if (typeof colors === 'undefined') colors = X_THEME_COLORS;\r\n else colors = Object.assign({}, X_THEME_COLORS, colors);\r\n return colors;\r\n }\r\n\r\n setColorRoot(color: string, value: string, prefix = X_THEME_PREFIX) {\r\n let result: XColorsTheme = {};\r\n if (X_THEME_COLOR_KEYS.includes(color)) {\r\n for (let amount of X_THEME_AMOUNTS) {\r\n if (amount === 0) {\r\n result[`${prefix}${color}`] = value;\r\n } else {\r\n result[`${prefix}${color}${this.getSuffix(amount)}`] = XToHex(\r\n XMixColors(amount > 0 ? X_THEME_MERGE : X_THEME_BLACK_MERGE, value, Math.abs(amount))\r\n );\r\n }\r\n }\r\n } else {\r\n result[`${prefix}${color}`] = value;\r\n }\r\n return result;\r\n }\r\n\r\n setDarkColorRoot(color: string, value: string, prefix = X_THEME_PREFIX) {\r\n let result: XColorsTheme = {};\r\n let allColors = this.setColorRoot(color, value, '');\r\n if (X_THEME_COLOR_KEYS.includes(color)) {\r\n allColors = this.setColorRoot(color, value, prefix);\r\n X_THEME_EXCHANGES.forEach((x) => {\r\n if (x[1] >= -0.1) {\r\n const curr = this.getSuffix(x[0]);\r\n const next = this.getSuffix(x[1]);\r\n result[`${prefix}${color}${curr}`] = allColors[`${prefix}${color}${next}`];\r\n }\r\n });\r\n } else if (['background'].includes(color)) {\r\n result = this.getDefineColors(Object.assign({}, this.getColorsInProperty(X_THEME_COLORS), allColors), '', true);\r\n }\r\n return result;\r\n }\r\n\r\n getDefineColors(colors?: XColorsTheme, prefix = X_THEME_PREFIX, darken = false): XColorsTheme {\r\n let result: XColorsTheme = {};\r\n colors = this.getColorsTheme(colors);\r\n for (let key in colors) {\r\n Object.assign(result, this.setColorRoot(key, colors[key], prefix));\r\n }\r\n if (darken) {\r\n const colorsFunc = (nums: number[] | number[][], callback: Function) => {\r\n for (let num of nums) {\r\n for (let color in colors) {\r\n if (X_THEME_COLOR_KEYS.includes(color) && !['background'].includes(color)) {\r\n callback(num, color);\r\n }\r\n }\r\n }\r\n };\r\n colorsFunc(X_THEME_BACKGROUNDS, (background: number, color: string) => {\r\n const theme = this.getSuffix(background);\r\n result[`${prefix}${color}${theme}`] = result[`${prefix}background${theme.replace('a', '')}`];\r\n });\r\n colorsFunc(X_THEME_TEXTS, (text: number[], color: string) => {\r\n const curr = this.getSuffix(text[0]);\r\n const next = this.getSuffix(text[1]);\r\n result[`${prefix}${color}${curr}`] = result[`${prefix}text${next}`];\r\n });\r\n colorsFunc(X_THEME_BORDERS, (border: number[], color: string) => {\r\n const curr = this.getSuffix(border[0]);\r\n const next = this.getSuffix(border[1]);\r\n result[`${prefix}${color}${curr}`] = result[`${prefix}border${next}`];\r\n });\r\n colorsFunc(X_THEME_EXCHANGES, (exchange: number[], color: string) => {\r\n const curr = this.getSuffix(exchange[0]);\r\n const next = this.getSuffix(exchange[1]);\r\n result[`${prefix}${color}${curr}`] = result[`${prefix}${color}${next}`];\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n getSuffix(num: number): string {\r\n if (num > 0) {\r\n return `-${Math.abs(num * 1000)}`;\r\n } else if (num < 0) {\r\n return `-a${Math.abs(num * 1000)}`;\r\n }\r\n return '';\r\n }\r\n\r\n setVarRoot(va: string, value: string, prefix = X_THEME_PREFIX) {\r\n let result: XVarsTheme = {};\r\n result[`${prefix}${XCamelToKebab(va)}`] = value;\r\n return result;\r\n }\r\n\r\n setVars(vars?: XVarsTheme) {\r\n if (typeof vars === 'undefined') vars = X_THEME_VARS;\r\n else vars = Object.assign({}, X_THEME_VARS, vars);\r\n for (let key in vars) {\r\n Object.assign(this.varsProp, this.setVarRoot(key, vars[key]));\r\n }\r\n this.createVarsStyle();\r\n }\r\n\r\n createColorsStyle() {\r\n if (this.colorsStyleEle) this.renderer2.removeChild(this.colorsStyleEle.parentNode, this.colorsStyleEle);\r\n const styles = Object.entries(this.colorsProp)\r\n .map((x) => `${x[0]}: ${x[1]};`)\r\n .join('');\r\n this.colorsStyleEle = this.renderer2.createElement('style');\r\n this.colorsStyleEle.innerHTML = `.x-theme-colors{${styles}}`;\r\n this.renderer2.addClass(this.doc.documentElement, 'x-theme-colors');\r\n this.doc.documentElement.getElementsByTagName('head')[0].appendChild(this.colorsStyleEle);\r\n }\r\n\r\n createVarsStyle() {\r\n if (this.varsStyleEle) this.renderer2.removeChild(this.varsStyleEle.parentNode, this.varsStyleEle);\r\n const styles = Object.entries(this.varsProp)\r\n .map((x) => `${x[0]}: ${x[1]};`)\r\n .join('');\r\n this.varsStyleEle = this.renderer2.createElement('style');\r\n this.varsStyleEle.innerHTML = `:root{${styles}}`;\r\n this.doc.documentElement.getElementsByTagName('head')[0].appendChild(this.varsStyleEle);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN RGB 颜色值\r\n * @en_US RGB color value\r\n */\r\nexport interface XRGBColor {\r\n /**\r\n * @zh_CN 红\r\n * @en_US Red\r\n */\r\n r: number;\r\n /**\r\n * @zh_CN 绿\r\n * @en_US Green\r\n */\r\n g: number;\r\n /**\r\n * @zh_CN 蓝\r\n * @en_US Blue\r\n */\r\n b: number;\r\n}\r\n\r\n/**\r\n * @zh_CN 根据权重混合2种颜色\r\n * @en_US Mix 2 colors according to heavy weights\r\n */\r\nexport function XMixColors(color1: string, color2: string, weight: number): XRGBColor {\r\n let rgb1 = XToRgb(color1);\r\n let rgb2 = XToRgb(color2);\r\n let weight1 = weight;\r\n let weight2 = 1 - weight;\r\n let result: { r: number; g: number; b: number };\r\n\r\n const inRange = (num: number) => {\r\n return num > 255 ? 255 : num < 0 ? 0 : num;\r\n };\r\n\r\n result = {\r\n r: inRange(Math.round(rgb1.r * weight1 + rgb2.r * weight2)),\r\n g: inRange(Math.round(rgb1.g * weight1 + rgb2.g * weight2)),\r\n b: inRange(Math.round(rgb1.b * weight1 + rgb2.b * weight2))\r\n };\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * @zh_CN RGB 颜色转换为 Hex\r\n * @en_US RGB color converts to hex\r\n */\r\nexport function XToHex(rgb: { r: number; g: number; b: number }): string {\r\n return '#' + ((1 << 24) + (rgb.r << 16) + (rgb.g << 8) + rgb.b).toString(16).slice(1);\r\n}\r\n\r\n/**\r\n * @zh_CN Hex 颜色转换为 RGB\r\n * @en_US Hex color converts to RGB\r\n */\r\nexport function XToRgb(hex: string): XRGBColor {\r\n if (hex.indexOf('#') == 0) hex = hex.slice(1);\r\n let num = parseInt(hex, 16);\r\n let r = num >> 16;\r\n if (r > 255) r = 255;\r\n else if (r < 0) r = 0;\r\n let g = (num >> 8) & 0x00ff;\r\n if (g > 255) g = 255;\r\n else if (g < 0) g = 0;\r\n let b = num & 0x0000ff;\r\n if (b > 255) b = 255;\r\n else if (b < 0) b = 0;\r\n\r\n return { r: r, g: g, b: b };\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { X_CONFIG } from './config';\r\nimport { XThemeService } from '../theme';\r\nimport type { XTheme } from '../theme';\r\nimport type { XConfig, XComponentConfigKey, XComponentConfig } from './config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XConfigService {\r\n private componentConfigUpdated$ = new Subject<keyof XComponentConfig>();\r\n private config: XConfig;\r\n private defaultConfig = inject(X_CONFIG, { optional: true })!;\r\n public themeService = inject(XThemeService, { optional: true })!;\r\n\r\n constructor() {\r\n this.config = this.defaultConfig || {};\r\n this.setInitialTheme(this.config.theme);\r\n }\r\n\r\n getConfigForComponent<T extends XComponentConfigKey>(componentName: T): XComponentConfig[T] {\r\n return this.config?.components ? this.config.components[componentName] : undefined;\r\n }\r\n\r\n getConfigChangeEventForComponent(componentName: XComponentConfigKey): Observable<void> {\r\n return this.componentConfigUpdated$.pipe(\r\n filter((n) => n === componentName),\r\n map(() => undefined)\r\n );\r\n }\r\n\r\n set<T extends XComponentConfigKey>(componentName: T, value: XComponentConfig[T]): void {\r\n if (this.config?.components) {\r\n this.config.components[componentName] = {\r\n ...this.config.components[componentName],\r\n ...value\r\n };\r\n this.componentConfigUpdated$.next(componentName);\r\n }\r\n }\r\n\r\n setDarkTheme() {\r\n return this.themeService.setDark(true);\r\n }\r\n\r\n setLightTheme() {\r\n return this.themeService.setDark(false);\r\n }\r\n\r\n setTheme(theme?: XTheme) {\r\n this.themeService.setTheme(theme);\r\n }\r\n\r\n setInitialTheme(theme?: XTheme) {\r\n this.themeService.setInitialTheme(theme);\r\n }\r\n\r\n getTheme(includesAll = false): XTheme {\r\n return this.themeService.getTheme(includesAll);\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { XComponentConfigKey, XConfigService } from '../config';\r\n\r\n/**\r\n * @zh_CN 组件公共属性\r\n * @en_US Component of public properties\r\n */\r\nexport class XProperty {}\r\n\r\n/**\r\n * @zh_CN 组件公共属性,通过函数返回,注入全局配置\r\n * @en_US Component of public properties, through the function returns, into the global configuration\r\n */\r\nexport function XPropertyFunction<T extends XComponentConfigKey>(configName: T) {\r\n return class XPropertyFun {\r\n config = inject(XConfigService).getConfigForComponent(configName);\r\n };\r\n}\r\n","import { XIsNumber } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 转换 csspx 为像素宽度\r\n * @en_US Convert CSS PX to pixel width\r\n */\r\nexport function XToCssPx(csspx: string, fontSize: number) {\r\n if (csspx === '0') return 0;\r\n if (XIsNumber(csspx)) return Number(csspx);\r\n else if (csspx.endsWith('rem')) return Number(csspx.replace(/rem/g, '')) * fontSize;\r\n else if (csspx.endsWith('px')) return Number(csspx.replace(/px/g, ''));\r\n return 0;\r\n}\r\n\r\n","import { XIsNumber } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 转换 css 为 rem 宽度\r\n * @en_US Convert CSS to pixel width\r\n */\r\nexport function XToCssRem(css: string, fontSize: number) {\r\n if (css === '0') return 0;\r\n if (XIsNumber(css)) return Number(css);\r\n else if (css.endsWith('rem')) return Number(css.replace(/rem/g, ''));\r\n else if (css.endsWith('px')) return Number(css.replace(/px/g, '')) / fontSize;\r\n return 0;\r\n}\r\n","import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n\r\nexport interface XRouteReuseStorage {\r\n id: string;\r\n handle: DetachedRouteHandle;\r\n}\r\n\r\nexport class XReuseStrategyService implements RouteReuseStrategy {\r\n public static storages: XRouteReuseStorage[] = [];\r\n private static waitDelete: string | null;\r\n\r\n public shouldDetach(_route: ActivatedRouteSnapshot): boolean {\r\n return true;\r\n }\r\n\r\n public store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n if (handle == null) return;\r\n if (XReuseStrategyService.waitDelete && this.getRouteUrl(route).indexOf(XReuseStrategyService.waitDelete) == 0) {\r\n XReuseStrategyService.waitDelete = null;\r\n return;\r\n }\r\n this.add(this.getRouteUrl(route), handle);\r\n }\r\n\r\n public shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return !!XReuseStrategyService.storages.find((x) => x.id == this.getRouteUrl(route));\r\n }\r\n\r\n public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n if (!route.routeConfig) {\r\n return {};\r\n }\r\n let stroage = XReuseStrategyService.storages.find((x) => x.id == this.getRouteUrl(route));\r\n return stroage ? stroage.handle : {};\r\n }\r\n\r\n public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return future.routeConfig === curr.routeConfig && JSON.stringify(future.params) == JSON.stringify(curr.params);\r\n }\r\n\r\n private getRouteUrl(route: ActivatedRouteSnapshot) {\r\n let url = route.url.map((x) => x.path).join('_');\r\n return url;\r\n }\r\n\r\n public static deleteRouteSnapshot(name?: string): void {\r\n if (name) {\r\n let id = name.replace(/\\//g, '_');\r\n XReuseStrategyService.storages.splice(\r\n XReuseStrategyService.storages.findIndex((x) => x.id.indexOf(id) === 0),\r\n 1\r\n );\r\n XReuseStrategyService.waitDelete = id;\r\n } else {\r\n XReuseStrategyService.storages = [];\r\n }\r\n }\r\n\r\n private add(id: string, handle: DetachedRouteHandle) {\r\n XReuseStrategyService.storages.splice(\r\n XReuseStrategyService.storages.findIndex((x) => x.id == id),\r\n 1\r\n );\r\n XReuseStrategyService.storages = [...XReuseStrategyService.storages, { id: id, handle: handle }];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PreloadingStrategy, Route } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XPreloadingStrategyService implements PreloadingStrategy {\r\n preloadedModules: string[] = [];\r\n\r\n preload(route: Route, load: () => Observable<any>): Observable<any> {\r\n if (route.data && route.data['preload']) {\r\n this.preloadedModules.push(route.path as string);\r\n return load();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XHttpService {\r\n api: string = '';\r\n constructor(public http: HttpClient) {}\r\n\r\n get(url: string, params?: { [property: string]: any }) {\r\n return this.request('GET', url, params);\r\n }\r\n\r\n post(url: string, params?: { [property: string]: any }): Observable<any> {\r\n return this.request('POST', url, params);\r\n }\r\n\r\n put(url: string, params?: { [property: string]: any }): Observable<any> {\r\n return this.request('PUT', url, params);\r\n }\r\n\r\n delete(url: string, params?: { [property: string]: any }): Observable<any> {\r\n return this.request('DELETE', url, params);\r\n }\r\n\r\n request(\r\n method: string,\r\n url: string,\r\n params?: { [property: string]: any },\r\n option?: { [property: string]: any }\r\n ): Observable<any> {\r\n if (!option) option = {};\r\n let opt = {};\r\n url = `${this.api}${url}`;\r\n method = method.toUpperCase();\r\n if (['POST', 'PUT', 'DELETE'].indexOf(method) > -1) {\r\n opt = { body: params, observe: 'body', responseType: 'json' };\r\n } else if (['GET'].indexOf(method) > -1) {\r\n opt = { params: params };\r\n }\r\n Object.assign(opt, option);\r\n return new Observable((x) => {\r\n this.http.request(method, url, opt).subscribe(\r\n (y: any) => {\r\n x.next(y);\r\n x.complete();\r\n },\r\n (y) => {\r\n x.error(y);\r\n x.complete();\r\n this.handleError(y);\r\n }\r\n );\r\n });\r\n }\r\n\r\n handleError(error: HttpErrorResponse) {\r\n if (error.error) {\r\n }\r\n return throwError(error.error);\r\n }\r\n}\r\n","import { Platform } from '@angular/cdk/platform';\r\nimport { Injectable } from '@angular/core';\r\nimport { XIsString } from '../interfaces';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XStorageService {\r\n constructor(private platform: Platform) {}\r\n\r\n getLocal(key: string) {\r\n if (this.platform.isBrowser) {\r\n let str = localStorage.getItem(key);\r\n try {\r\n return JSON.parse(localStorage.getItem(key) || 'null') || null;\r\n } catch (_e) {\r\n return str;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n setLocal(key: string, value: any) {\r\n if (this.platform.isBrowser) {\r\n if (XIsString(value)) {\r\n localStorage.setItem(key, value);\r\n } else {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n }\r\n }\r\n\r\n getSession(key: string) {\r\n if (this.platform.isBrowser) {\r\n let str = localStorage.getItem(key);\r\n try {\r\n return JSON.parse(sessionStorage.getItem(key) || 'null') || null;\r\n } catch (_e) {\r\n return str;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n setSession(key: string, value: any) {\r\n if (this.platform.isBrowser) {\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n }\r\n }\r\n\r\n removeLocal(key: string) {\r\n if (this.platform.isBrowser) {\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n\r\n removeSession(key: string) {\r\n if (this.platform.isBrowser) {\r\n sessionStorage.removeItem(key);\r\n }\r\n }\r\n\r\n guid() {\r\n let S4 = () => {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n };\r\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\r\n }\r\n}\r\n","import { XHttpService } from './http.service';\r\nimport { Observable } from 'rxjs';\r\nimport type { XId, XQuery, XResultList } from '../interfaces';\r\n\r\nexport interface XRepositoryInput {\r\n api?: string;\r\n controller: XController;\r\n}\r\n\r\nexport interface XController {\r\n name: string;\r\n}\r\n\r\nexport abstract class XRepositoryAbstract {\r\n abstract getList(index?: number, size?: number, query?: XQuery): Observable<XResultList<any>>;\r\n abstract get(id: number | string): Observable<any>;\r\n abstract post(entity: any): Observable<any>;\r\n abstract put(entity: any): Observable<any>;\r\n abstract delete(id: number | string): Observable<boolean>;\r\n}\r\n\r\nexport class XRepositoryService<Entity extends XId> extends XRepositoryAbstract {\r\n api = '';\r\n constructor(\r\n public http: XHttpService,\r\n public input: XRepositoryInput\r\n ) {\r\n super();\r\n this.api = typeof input.api !== 'undefined' ? input.api : '';\r\n }\r\n\r\n getList(index?: number, size?: number, query?: XQuery): Observable<XResultList<Entity>> {\r\n index = index ? index : 1;\r\n size = size ? size : 10;\r\n return this.http.post(`${this.api}${this.input.controller.name}/${size}/${index}`, query);\r\n }\r\n\r\n get(id: number | string): Observable<Entity> {\r\n return this.http.get(`${this.api}${this.input.controller.name}/${id}`);\r\n }\r\n\r\n post(entity: Entity): Observable<Entity> {\r\n return this.http.post(`${this.api}${this.input.controller.name}`, entity);\r\n }\r\n\r\n put(entity: Entity): Observable<Entity> {\r\n return this.http.put(`${this.api}${this.input.controller.name}`, entity);\r\n }\r\n\r\n delete(id: number | string): Observable<boolean> {\r\n return this.http.delete(`${this.api}${this.input.controller.name}/${id}`);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: `[x-inner-html], x-inner-html`,\r\n template: '<div class=\"x-inner-html\" [innerHTML]=\"innerHtml()\" [style]=\"style()\"></div>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XInnerHTMLComponent {\r\n html = input.required<string>();\r\n style = input();\r\n innerHtml = computed(() => this.domSanitizer.bypassSecurityTrustHtml(this.html()));\r\n private domSanitizer = inject(DomSanitizer);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["XDURATION_BASE_EASE_IN","XDURATION_BASE_EASE_OUT","i1"],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-core.mjs","sources":["../../../../lib/ng-nest/ui/core/util/option.ts","../../../../lib/ng-nest/ui/core/util/host.ts","../../../../lib/ng-nest/ui/core/util/log.ts","../../../../lib/ng-nest/ui/core/util/computed-style.ts","../../../../lib/ng-nest/ui/core/util/animation.ts","../../../../lib/ng-nest/ui/core/util/html.ts","../../../../lib/ng-nest/ui/core/util/check.ts","../../../../lib/ng-nest/ui/core/util/camel-to-kebab.ts","../../../../lib/ng-nest/ui/core/util/kebab-to-camel.ts","../../../../lib/ng-nest/ui/core/util/sleep.ts","../../../../lib/ng-nest/ui/core/animation/consts.ts","../../../../lib/ng-nest/ui/core/animation/fade.ts","../../../../lib/ng-nest/ui/core/animation/slide.ts","../../../../lib/ng-nest/ui/core/animation/drop.ts","../../../../lib/ng-nest/ui/core/animation/move.ts","../../../../lib/ng-nest/ui/core/animation/connect.ts","../../../../lib/ng-nest/ui/core/animation/badge.ts","../../../../lib/ng-nest/ui/core/animation/opacity.ts","../../../../lib/ng-nest/ui/core/interfaces/data.type.ts","../../../../lib/ng-nest/ui/core/interfaces/identify.type.ts","../../../../lib/ng-nest/ui/core/functions/convert.ts","../../../../lib/ng-nest/ui/core/functions/date.ts","../../../../lib/ng-nest/ui/core/functions/flex.ts","../../../../lib/ng-nest/ui/core/functions/drop.ts","../../../../lib/ng-nest/ui/core/functions/remove.ts","../../../../lib/ng-nest/ui/core/functions/order-by.ts","../../../../lib/ng-nest/ui/core/functions/clone-deep.ts","../../../../lib/ng-nest/ui/core/functions/has-in.ts","../../../../lib/ng-nest/ui/core/functions/chunk.ts","../../../../lib/ng-nest/ui/core/functions/guid.ts","../../../../lib/ng-nest/ui/core/functions/group-by.ts","../../../../lib/ng-nest/ui/core/functions/resize.ts","../../../../lib/ng-nest/ui/core/functions/parent-path.ts","../../../../lib/ng-nest/ui/core/config/config.ts","../../../../lib/ng-nest/ui/core/theme/theme.ts","../../../../lib/ng-nest/ui/core/theme/theme.service.ts","../../../../lib/ng-nest/ui/core/config/config.service.ts","../../../../lib/ng-nest/ui/core/functions/property.ts","../../../../lib/ng-nest/ui/core/functions/csspx.ts","../../../../lib/ng-nest/ui/core/functions/cssrem.ts","../../../../lib/ng-nest/ui/core/services/reuse-strategy.service.ts","../../../../lib/ng-nest/ui/core/services/preloading-strategy.service.ts","../../../../lib/ng-nest/ui/core/services/http.service.ts","../../../../lib/ng-nest/ui/core/services/storage.service.ts","../../../../lib/ng-nest/ui/core/services/repository.service.ts","../../../../lib/ng-nest/ui/core/components/inner-html.component.ts","../../../../lib/ng-nest/ui/core/ng-nest-ui-core.ts"],"sourcesContent":["/**\r\n * @zh_CN 填充默认值\r\n * @en_US Fill default values\r\n */\r\nexport function XFillDefault(option: { [property: string]: any }, def: { [property: string]: any }) {\r\n if (option && def) {\r\n for (const key in def) {\r\n if (typeof option[key] === 'undefined') {\r\n option[key] = def[key];\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * @zh_CN 删除当前标签,保留内容\r\n * @en_US Delete the current label and keep the content\r\n */\r\nexport function XRemoveNgTag(nativeElement: HTMLElement): void {\r\n const parentElement = nativeElement.parentElement;\r\n if (!parentElement || !parentElement.insertBefore) return;\r\n while (nativeElement.firstChild) {\r\n parentElement.insertBefore(nativeElement.firstChild, nativeElement);\r\n }\r\n parentElement.removeChild(nativeElement);\r\n}\r\n","/**\r\n * @zh_CN svg 标签不存在的警告信息\r\n * @en_US Warning information that does not exist in SVG tags\r\n */\r\nexport function XWarnSVGTagNotFound() {\r\n console.warn(`<svg> tag not found.`);\r\n}\r\n\r\n/**\r\n * @zh_CN icon 不存在的警告信息\r\n * @en_US Warning information that does not exist in icon\r\n */\r\nexport function XWarnIconTypeNotFound() {\r\n console.warn(`icon type not found.`);\r\n}\r\n","/**\r\n * @zh_CN 获取元素的指定样式的计算值\r\n * @en_US The calculation value of the specified style of the element\r\n */\r\nexport function XComputedStyle(element: HTMLElement, style: string): string {\r\n let computed = XComputed(element);\r\n let value = computed[style as any];\r\n return value.replace(/px/g, '');\r\n}\r\n\r\n/**\r\n * @zh_CN 获取元素的计算样式\r\n * @en_US Calculation style of obtaining elements\r\n */\r\nexport function XComputed(element: HTMLElement): CSSStyleDeclaration {\r\n if (typeof getComputedStyle === 'function') {\r\n return getComputedStyle(element);\r\n }\r\n return element.style;\r\n}\r\n","// tslint:disable:no-any typedef no-invalid-this\r\nconst availablePrefixes = ['moz', 'ms', 'webkit'];\r\n\r\nfunction requestAnimationFramePolyfill(): typeof requestAnimationFrame {\r\n let lastTime = 0;\r\n return function (callback: FrameRequestCallback): any {\r\n const currTime = new Date().getTime();\r\n const timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n const id = setTimeout(() => {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n}\r\n\r\nfunction getRequestAnimationFrame(): typeof requestAnimationFrame {\r\n if (typeof window === 'undefined') {\r\n return () => 0;\r\n }\r\n if (window.requestAnimationFrame) {\r\n return window.requestAnimationFrame.bind(window);\r\n }\r\n\r\n const prefix = availablePrefixes.filter((key) => `${key}RequestAnimationFrame` in window)[0];\r\n\r\n return prefix ? (window as any)[`${prefix}RequestAnimationFrame`] : requestAnimationFramePolyfill();\r\n}\r\n\r\nexport const XRequestAnimationFrame = getRequestAnimationFrame();\r\n","/**\r\n * @zh_CN 去除 HTML 标签\r\n * @en_US Remove the html tag\r\n */\r\nexport function XStripTags(text: string, ...usefulTags: any[]): string {\r\n if (!text || typeof text !== 'string') return text;\r\n return usefulTags.length > 0\r\n ? text.replace(new RegExp(`<(?!\\/?(${usefulTags.join('|')})\\s*\\/?)[^>]+>`, 'g'), '')\r\n : text.replace(/<(?:.|\\s)*?>/g, '');\r\n}\r\n","/**\r\n * @zh_CN 判断值不为 null 或 undefined\r\n * @en_US The judgment value is not null or undefined\r\n */\r\nexport function XIsNotNil<T>(value: T): value is NonNullable<T> {\r\n return typeof value !== 'undefined' && value !== null;\r\n}\r\n\r\n/**\r\n * @zh_CN 判断值为 null 或 undefined\r\n * @en_US The judgment value is null or undefined\r\n */\r\nexport function XIsNil(value: unknown): value is null | undefined {\r\n return typeof value === 'undefined' || value === null;\r\n}\r\n","/**\r\n * @zh_CN 该函数将字符串中的驼峰命名法转换为减号命名法\r\n * - 采用正则表达式匹配字符串中每个连续的大小写字母边界\r\n * - 将其替换为小写字母和连字符的组合\r\n * - 最后将整个字符串转换为小写\r\n * - 例如,`XCamelToKebab('helloWorld')` 将返回 `hello-world`\r\n * @en_US This function converts string of hump nomenclature kebab nomenclature\r\n * - Use regular expression match each successive lowercase letters in the string boundary\r\n * - Replace it with a lower case letters and hyphens\r\n * - Finally the whole string converted to lowercase\r\n * - For example, `XCamelToKebab('helloWorld')` returns the `hello-world`\r\n */\r\nexport function XCamelToKebab(str: string) {\r\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n","/**\r\n * @zh_CN 该函数将字符串中的减号命名法转换为驼峰命名法\r\n * - 使用正则表达式匹配所有连字符后的字母 ( `(\\w)` )\r\n * - 用 `toUpperCase()` 将这些字母转换为大写\r\n * - 替换原字符串中的连字符和小写字母为大写字母\r\n * - 例如,`XKebabToCamel('hello-world')` 将返回 `helloWorld`\r\n * @en_US This function converts string minus nomenclature of hump nomenclature\r\n * - Use a regular expression match all the letter after a hyphen ( `(\\w)` )\r\n * - Use `toUpperCase()` converts these letters to uppercase\r\n * - Replace the original string the hyphen and lowercase letters to uppercase\r\n * - For example, `XKebabToCamel('hello-world')` returns `helloWorld`\r\n */\r\nexport function XKebabToCamel(str: string) {\r\n return str.replace(/-(\\w)/g, (_, char) => char.toUpperCase());\r\n}\r\n","/**\r\n * @zh_CN 延迟时间\r\n * @en_US Delayed sleep\r\n */\r\nexport function XSleep(time: number) {\r\n return new Promise((resolve) => setTimeout(resolve, time));\r\n}\r\n","/**\r\n * @zh_CN 动画执行时间\r\n * @en_US Animation execution time\r\n */\r\nexport enum XDuration {\r\n Slow = '0.3s',\r\n Base = '0.2s',\r\n Fast = '0.1s'\r\n}\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 进场动画\r\n * @en_US Enter an animation\r\n */\r\nconst XDURATION_BASE_EASE_IN = `${XDuration.Fast} ease-in`;\r\n\r\n/**\r\n * @zh_CN 移除动画\r\n * @en_US Remove animation\r\n */\r\nconst XDURATION_BASE_EASE_OUT = `${XDuration.Fast} ease-out`;\r\n\r\n/**\r\n * @zh_CN 淡入淡出动画\r\n * @en_US Fade into the animation\r\n */\r\nexport const XFadeAnimation: AnimationTriggerMetadata = trigger('x-fade-animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scale(0.8)' }),\r\n animate(`${XDURATION_BASE_EASE_IN}`, style({ opacity: 1, transform: 'scale(1)' }))\r\n ]),\r\n transition(':leave', [animate(`${XDURATION_BASE_EASE_OUT}`, style({ opacity: 0 }))])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 抽屉动画\r\n * @en_US Drawer animation\r\n */\r\nexport const XSlideAnimation: AnimationTriggerMetadata = trigger('x-slide-animation', [\r\n transition('void => right', [style({ transform: 'translate(100%,0)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('right => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(100%,0)' }))]),\r\n transition('void => left', [style({ transform: 'translate(-100%,0)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('left => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(-100%,0)' }))]),\r\n transition('void => top', [style({ transform: 'translate(0,-100%)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('top => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(0,-100%)' }))]),\r\n transition('void => bottom', [style({ transform: 'translate(0,100%)' }), animate(`${XDuration.Base} ease-in`)]),\r\n transition('bottom => void', [animate(`${XDuration.Base} ease-out`, style({ transform: 'translate(0,100%)' }))])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, state, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 放置动画\r\n * @en_US Drop animation\r\n */\r\nexport const XDropAnimation: AnimationTriggerMetadata = trigger('x-drop-animation', [\r\n state('*', style({ opacity: 0, height: 0, border: 0, padding: 0, visibility: 'hidden' })),\r\n state('false', style({ opacity: 0, height: 0, border: 0, padding: 0, visibility: 'hidden' })),\r\n state('true', style({ opacity: 1, height: '*', border: '*', padding: '*', visibility: 'inherit' })),\r\n transition('* => *', animate(`${XDuration.Base} ease-out`))\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 移入移出动画\r\n * @en_US Move in the animation\r\n */\r\nexport const XMoveAnimation: AnimationTriggerMetadata = trigger('x-move-animation', [\r\n transition('void => top-start, void => top, void => top-end, void => center', [\r\n style({\r\n transform: 'translateY(-200%)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('top-start => void, top => void, top-end => void, center => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1,\r\n height: '*'\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(-200%)',\r\n opacity: 0,\r\n height: 0\r\n })\r\n )\r\n ]),\r\n transition('void => left', [\r\n style({\r\n transform: 'translateX(-30%)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('left => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1,\r\n height: '*'\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(-30%)',\r\n opacity: 0,\r\n height: 0\r\n })\r\n )\r\n ]),\r\n transition('void => right', [\r\n style({\r\n transform: 'translateX(30%)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('right => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1,\r\n height: '*'\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(30%)',\r\n opacity: 0,\r\n height: 0\r\n })\r\n )\r\n ]),\r\n transition('void => bottom-start, void => bottom, void => bottom-end', [\r\n style({\r\n transform: 'translateY(200%)',\r\n opacity: 0,\r\n height: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1,\r\n height: '*'\r\n })\r\n )\r\n ]),\r\n transition('bottom-start => void, bottom => void, bottom-end => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(200%)',\r\n opacity: 0\r\n })\r\n )\r\n ])\r\n]);\r\n\r\nexport const XMoveBoxAnimation: AnimationTriggerMetadata = trigger('x-move-box-animation', [\r\n transition('void => top-start, void => top, void => top-end, void => center', [\r\n style({\r\n transform: 'translateY(-2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('top-start => void, top => void, top-end => void, center => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(-2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ]),\r\n transition('void => left', [\r\n style({\r\n transform: 'translateX(-2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('left => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(-2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ]),\r\n transition('void => right', [\r\n style({\r\n transform: 'translateX(2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('right => void', [\r\n style({\r\n transform: 'translateX(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateX(2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ]),\r\n transition('void => bottom-start, void => bottom, void => bottom-end', [\r\n style({\r\n transform: 'translateY(2rem)',\r\n opacity: 0\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n })\r\n )\r\n ]),\r\n transition('bottom-start => void, bottom => void, bottom-end => void', [\r\n style({\r\n transform: 'translateY(0%)',\r\n opacity: 1\r\n }),\r\n animate(\r\n `${XDuration.Base}`,\r\n style({\r\n transform: 'translateY(2rem)',\r\n opacity: 0\r\n })\r\n )\r\n ])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 进场动画\r\n * @en_US Enter an animation\r\n */\r\nconst XDURATION_BASE_EASE_IN = `${XDuration.Base} ease-in`;\r\nconst XDURATION_FAST_EASE_IN = `${XDuration.Fast} ease-in`;\r\n\r\n/**\r\n * @zh_CN 移除动画\r\n * @en_US Remove animation\r\n */\r\nconst XDURATION_BASE_EASE_OUT = `${XDuration.Base} ease-out`;\r\nconst XDURATION_FAST_EASE_OUT = `${XDuration.Fast} ease-out`;\r\n\r\n/**\r\n * @zh_CN 弹框连接时的动画,只处理 Y 轴\r\n * @en_US The animation when the bomb frame is connected, only the y-axis\r\n */\r\nexport const XConnectBaseAnimation: AnimationTriggerMetadata = trigger('x-connect-base-animation', [\r\n transition(':enter', [style({ opacity: 0, transform: 'scaleY(0.8)' }), animate(XDURATION_FAST_EASE_IN)]),\r\n transition(':leave', [animate(XDURATION_FAST_EASE_OUT, style({ opacity: 0 }))])\r\n]);\r\n\r\n/**\r\n * @zh_CN 弹框连接时的动画,缩放\r\n * @en_US The animation when the bomb frame is connected, zoomed in\r\n */\r\nexport const XBaseAnimation: AnimationTriggerMetadata = trigger('x-base-animation', [\r\n transition(':enter', [style({ opacity: 0, transform: 'scale(0.2)' }), animate(XDURATION_BASE_EASE_IN)]),\r\n transition(':leave', [animate(XDURATION_BASE_EASE_OUT, style({ opacity: 0, transform: 'scale(0.2)' }))])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 进场动画\r\n * @en_US Enter an animation\r\n */\r\nconst XDURATION_SLOW_EASE_IN = `${XDuration.Slow} ease-in`;\r\n\r\n/**\r\n * @zh_CN 移除动画\r\n * @en_US Remove animation\r\n */\r\nconst XDURATION_SLOW_EASE_OUT = `${XDuration.Slow} ease-out`;\r\n\r\n/**\r\n * @zh_CN Badge 动画\r\n * @en_US Badge animation\r\n */\r\nexport const XBadgeAnimation: AnimationTriggerMetadata = trigger('x-badge-animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scale(0) translate(50%, -50%)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_IN,\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1) translate(50%, -50%)'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1, transform: 'scale(1) translate(50%, -50%)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_OUT,\r\n style({\r\n opacity: 0,\r\n transform: 'scale(0) translate(50%, -50%)'\r\n })\r\n )\r\n ])\r\n]);\r\n\r\n/**\r\n * @zh_CN Badge 独立存在时的动画\r\n * @en_US The animation when Badge exists independently\r\n */\r\nexport const XBadgeStandaloneAnimation: AnimationTriggerMetadata = trigger('x-badge-standalone-animation', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'scale(0)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_IN,\r\n style({\r\n opacity: 1,\r\n transform: 'scale(1)'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n animate(\r\n XDURATION_SLOW_EASE_OUT,\r\n style({\r\n opacity: 0,\r\n transform: 'scale(0)'\r\n })\r\n )\r\n ])\r\n]);\r\n","import { AnimationTriggerMetadata, trigger, state, style, animate, transition } from '@angular/animations';\r\nimport { XDuration } from './consts';\r\n\r\n/**\r\n * @zh_CN 透明度淡入淡出动画\r\n * @en_US The transparency fades into the animation\r\n */\r\nexport const XOpacityAnimation: AnimationTriggerMetadata = trigger('x-opacity-animation', [\r\n state('*', style({ opacity: 0 })),\r\n state('false', style({ opacity: 0 })),\r\n state('true', style({ opacity: 1 })),\r\n transition('* => *', animate(`${XDuration.Slow} cubic-bezier(0.25, 0.8, 0.25, 1)`))\r\n]);\r\n","import { Observable, isObservable } from 'rxjs';\r\nimport { TemplateRef, SimpleChange } from '@angular/core';\r\nimport type { InputSignal } from '@angular/core';\r\n\r\n/**\r\n * @zh_CN data 数据类型\r\n * 通用的泛型数据类型,一般是指数组、可订阅对象并且流数据为数组类型、函数等\r\n * @en_US Data data type\r\n * General generic data types, generally is index set,\r\n * can subscribe to the object and flow data for the array, function, etc\r\n */\r\nexport type XData<T> = T[] | Observable<T[] | any[]> | any[] | Function;\r\n\r\n/**\r\n * @zh_CN data 数据类型\r\n * 通用的泛型数据类型,一般是指数组\r\n * @en_US Data data type\r\n * General generic data types, generally is index set\r\n */\r\nexport type XDataArray<T> = string | number | (T | string | number)[];\r\n\r\n/**\r\n * @zh_CN boolean 数据类型\r\n * 此类型作为组件的输入参数,一般会使用 `XToBoolean` 转换函数,转换成 true 或 false\r\n * @en_US Boolean data type\r\n * This type as a component of the input parameters,\r\n * usually with `XToBoolean` decorator to process parameters,\r\n * directly into true or false\r\n * @example\r\n *\r\n * ```html\r\n * // true\r\n * <my-component disabled></my-component>\r\n * <my-component disabled=\"true\"></my-component>\r\n * <my-component [disabled]=\"true\"></my-component>\r\n *\r\n * // false\r\n * <my-component disabled=\"false\"></my-component>\r\n * <my-component [disabled]=\"false\"></my-component>\r\n * ```\r\n *\r\n */\r\nexport type XBoolean = boolean | string;\r\n\r\n/**\r\n * @zh_CN number 数据类型\r\n * 此类型作为组件的输入参数,一般会使用 `XToNumber` 转换函数,转换成数字类型\r\n * 如果是宽高尺寸,会通过 `XToCssPixelValue` 转换函数,转换成字符串尺寸\r\n * @en_US Number data type\r\n * This type as the input parameters of the component, generally use `XToNumber` conversion function, converted to digital type\r\n * If the width of the high is through `XToCssPixelValue` conversion function, convert the string size\r\n * @example\r\n *\r\n * ```html\r\n * // XToNumber => num = 10\r\n * <my-component max=\"10\"></my-component>\r\n * <my-component [max]=\"10\"></my-component>\r\n * <my-component [max]=\"'10'\"></my-component>\r\n *\r\n * // XToCssPixelValue\r\n * // width = '200px'\r\n * <my-component width=\"200\"></my-component>\r\n * <my-component width=\"200px\"></my-component>\r\n * <my-component [width]=\"200\"></my-component>\r\n * <my-component [width]=\"'200'\"></my-component>\r\n * <my-component [width]=\"'200px'\"></my-component>\r\n * // width = '20rem'\r\n * <my-component width=\"20rem\"></my-component>\r\n * <my-component [width]=\"'20rem'\"></my-component>\r\n * // width = '50%'\r\n * <my-component width=\"50%\"></my-component>\r\n * <my-component [width]=\"'50%'\"></my-component>\r\n * ```\r\n *\r\n */\r\nexport type XNumber = number | string;\r\n\r\n/**\r\n * @zh_CN 模板类型\r\n * 一般会配合 `outlet` 指令来指定一个参数即可为基本数据类型,也可为模板\r\n * @en_US Template type\r\n * Usually cooperate `outlet` instructions to specify a parameter can be as the basic data types, can also be used as a template\r\n * @example\r\n *\r\n * ```html\r\n * // label = \"string\"\r\n * <ng-container *xOutlet=\"label\">{{ label }}</ng-container>\r\n *\r\n * <ng-container *xOutlet=\"labelTpl\">{{ labelTpl }}</ng-container>\r\n * <ng-template #labelTpl>this is a label template</ng-template>\r\n * ```\r\n *\r\n */\r\nexport type XTemplate = string | number | Date | TemplateRef<any>;\r\n\r\n/**\r\n * @zh_CN 函数返回类型\r\n * @en_US Function return type\r\n */\r\nexport type XTypeFunc = (object: any) => boolean;\r\n\r\n/**\r\n * @zh_CN 类型判断\r\n * @en_US Type judgment\r\n */\r\nexport function XIsType(type: string): XTypeFunc {\r\n return (object: any) => Object.prototype.toString.call(object) === `[object ${type}]`;\r\n}\r\n\r\n/**\r\n * @zh_CN 值改变判断\r\n * @en_US Value change judgment\r\n */\r\nexport function XIsChange(...changes: SimpleChange[]): boolean {\r\n for (let change of changes) {\r\n if (change?.currentValue !== change?.previousValue) return true;\r\n }\r\n return false;\r\n}\r\n\r\nconst IsString = XIsType('String');\r\nconst IsArray = XIsType('Array');\r\nconst IsNumber = XIsType('Number');\r\nconst IsBoolean = XIsType('Boolean');\r\nconst IsObject = XIsType('Object');\r\nconst IsNull = (value: null) => value === null;\r\nconst IsFunction = XIsType('Function');\r\nconst IsDate = XIsType('Date');\r\nconst IsRegExp = XIsType('RegExp');\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为字符串类型\r\n * @en_US Determine whether the given value is a string type\r\n */\r\nexport function XIsString(value: any): value is string {\r\n return IsString(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为数组类型\r\n * @en_US Determine whether the given value is a array type\r\n */\r\nexport function XIsArray<T>(value: any): value is Array<T> {\r\n return IsArray(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为数字类型\r\n * @en_US Determine whether the given value is a number type\r\n */\r\nexport function XIsNumber(value: any): value is number {\r\n return IsNumber(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为布尔类型\r\n * @en_US Determine whether the given value is a boolean type\r\n */\r\nexport function XIsBoolean(value: any): value is boolean {\r\n return IsBoolean(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为对象类型\r\n * @en_US Determine whether the given value is a object type\r\n */\r\nexport function XIsObject<T>(value: any): value is T {\r\n return IsObject(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为 null 类型\r\n * @en_US Determine whether the given value is a null type\r\n */\r\nexport function XIsNull(value: any): value is null {\r\n return IsNull(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为函数类型\r\n * @en_US Determine whether the given value is a function type\r\n */\r\nexport function XIsFunction(value: any): value is Function {\r\n return IsFunction(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为日期类型\r\n * @en_US Determine whether the given value is a date type\r\n */\r\nexport function XIsDate(value: any): value is Date {\r\n return IsDate(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为正则表达式\r\n * @en_US Determine whether the given value is a regular expression\r\n */\r\nexport function XIsRegExp(value: any): value is RegExp {\r\n return IsRegExp(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为 undefined\r\n * @en_US Determine whether the given value is undefined\r\n */\r\nexport function XIsUndefined(value: any): value is undefined {\r\n return typeof value === 'undefined';\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的值是否为字符串、数字、布尔值或日期\r\n * @en_US Determine whether the given value is a string, number, Boolean value or date\r\n */\r\nexport function XIsValue<T>(object: any): object is T {\r\n return XIsString(object) || XIsNumber(object) || XIsBoolean(object) || XIsDate(object);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断一个对象是否为空\r\n * @en_US Determine whether an object is empty\r\n */\r\nexport function XIsEmpty(object: any) {\r\n try {\r\n return XIsUndefined(object) || XIsNull(object) || object === '' || object.length === 0;\r\n } catch (e) {\r\n console.error(object, e);\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为非空数组\r\n * @en_US Determine whether the given object is a non -empty array\r\n */\r\nexport function XIsValueArray<T>(object: any): object is T {\r\n return XIsArray(object) && object.length > 0 && !XIsObject(object[0]);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为非空对象数组\r\n * @en_US Determine whether the given object is a non -empty object array\r\n */\r\nexport function XIsObjectArray<T>(object: any): object is T {\r\n return XIsArray(object) && object.length > 0 && XIsObject(object[0]);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 Observable\r\n * @en_US Determine whether the given object is observable\r\n */\r\nexport function XIsObservable<T>(object: any): object is Observable<T> {\r\n return isObservable(object);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 TemplateRef\r\n * @en_US Determine whether the given object is TemplateRef\r\n */\r\nexport function XIsTemplateRef<T>(object: any): object is TemplateRef<T> {\r\n if (!XIsEmpty(object) && object.elementRef) return true;\r\n else return false;\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 XTemplateRef\r\n * @en_US Determine whether the given object is XTemplateRef\r\n */\r\nexport function XIsXTemplate(object: any): object is XTemplate {\r\n return XIsString(object) || XIsNumber(object) || XIsDate(object) || XIsTemplateRef(object);\r\n}\r\n\r\n/**\r\n * @zh_CN 判断给定的对象是否为 InputSignal\r\n * @en_US Determine whether a given object for InputSignal\r\n */\r\nexport function XIsInputSignal(object: any): object is InputSignal<any> {\r\n return XIsFunction(object) && object.name === 'inputValueFn';\r\n}\r\n","/**\r\n * @zh_CN 标识对象\r\n * @en_US Identify object\r\n */\r\nexport interface XIdentityProperty {\r\n /**\r\n * @zh_CN 编码\r\n * @en_US Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 父节点标识对象\r\n * @en_US Father node identification object\r\n */\r\nexport interface XParentIdentityProperty<T> extends XIdentityProperty {\r\n /**\r\n * @zh_CN 父节点编码\r\n * @en_US Parent Id\r\n */\r\n pid?: any;\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n level?: number;\r\n /**\r\n * @zh_CN 叶子节点\r\n * @en_US Leaf node\r\n */\r\n leaf?: boolean;\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Children node\r\n */\r\n children?: T[];\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Sub node has been loaded\r\n */\r\n childrenLoaded?: boolean;\r\n /**\r\n * @zh_CN 选中\r\n * @en_US Selected\r\n */\r\n selected?: boolean;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 展开\r\n * @en_US open\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 排序\r\n * @en_US sort\r\n */\r\n sort?: number;\r\n}\r\n\r\n/**\r\n * @zh_CN 标识对象\r\n * @en_US Identify object\r\n */\r\nexport class XIdentity {\r\n /**\r\n * @zh_CN 编码\r\n * @en_US Id\r\n */\r\n id?: any;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: any;\r\n}\r\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\r\nimport {\r\n XIsNull,\r\n XIsUndefined,\r\n XIsArray,\r\n XIsValue,\r\n XIsObject,\r\n XIsObservable,\r\n XIsFunction,\r\n XIsNumber\r\n} from '../interfaces';\r\nimport { Observable, Subject, Observer } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { WritableSignal, booleanAttribute, numberAttribute } from '@angular/core';\r\nimport type { XData, XParentIdentityProperty, XBoolean, XClassMap, XNumber, XDataArray } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 转换 value 为 boolean 值\r\n * @en_US Convert the value to boolean value\r\n */\r\nexport function XToBoolean(value: XBoolean): boolean {\r\n return booleanAttribute(value);\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为像素值\r\n * @en_US Convert the value to pixels\r\n */\r\nexport function XToCssPixelValue(value: XNumber): string {\r\n if (!XIsNumber(value) && /^\\d+(\\.\\d+)?$/.test(value)) {\r\n return coerceCssPixelValue(Number(value));\r\n } else {\r\n return coerceCssPixelValue(value);\r\n }\r\n}\r\n\r\nexport function XToString(value: XNumber): string {\r\n return `${value}`;\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为 number 值\r\n * @en_US Convert the value to Number value\r\n */\r\nexport function XToNumber(value: XNumber): number;\r\nexport function XToNumber<D>(value: XNumber, fallback: D): number | D;\r\nexport function XToNumber(value: XNumber, fallbackValue?: number): number {\r\n return numberAttribute(value, fallbackValue);\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为指定的 list 数据 [{ label: any; id: any }, ....]\r\n * @en_US Convert value as the specified list data [{ label: any; id: any }, ....]\r\n */\r\nexport function XToDataConvert<T>(value: XData<T>): XData<T> {\r\n if (XIsArray(value)) {\r\n return (value as []).map((x: any) => {\r\n if (XIsValue(x)) {\r\n return { label: x, id: x };\r\n } else if (XIsObject<{ label: any; id: any }>(x)) {\r\n x.label = XIsUndefined(x.label) || XIsNull(x.label) ? x.id : x.label;\r\n x.id = XIsUndefined(x.id) || XIsNull(x.id) ? x.label : x.id;\r\n return x;\r\n }\r\n return x;\r\n });\r\n }\r\n return value;\r\n}\r\n\r\n/**\r\n * @zh_CN 转换 value 为指定的 list 数据 [{ label: any; id: any }, ....]\r\n * @en_US Convert value as the specified list data [{ label: any; id: any }, ....]\r\n */\r\nexport function XToDataArray<T>(value: XDataArray<T>): T[] {\r\n if (XIsArray(value)) {\r\n return value.map((x: any) => {\r\n if (XIsValue(x)) {\r\n return { label: x, id: x };\r\n } else if (XIsObject<{ label: any; id: any }>(x)) {\r\n x.label = XIsUndefined(x.label) || XIsNull(x.label) ? x.id : x.label;\r\n x.id = XIsUndefined(x.id) || XIsNull(x.id) ? x.label : x.id;\r\n return x;\r\n }\r\n return x;\r\n });\r\n }\r\n return [{ label: value, id: value } as T];\r\n}\r\n\r\n/**\r\n * @zh_CN 根据 data 的类型获取实际的数据\r\n * @en_US Obtain actual data based on the type of data\r\n */\r\nexport function XSetData<T>(\r\n data: XData<T>,\r\n unSubject: Subject<void>,\r\n toConvert = true,\r\n funcParam: any = null\r\n): Observable<T[]> {\r\n return new Observable((x: Observer<T[]>) => {\r\n const result = (res: T[]) => {\r\n x.next(res);\r\n x.complete();\r\n };\r\n if (typeof data === 'undefined') {\r\n result([]);\r\n } else {\r\n if (XIsObservable(data)) {\r\n (data as Observable<T[]>)\r\n .pipe(\r\n map((y) => (toConvert ? XToDataConvert(y) : y)),\r\n takeUntil(unSubject)\r\n )\r\n .subscribe((y) => {\r\n result(y as T[]);\r\n });\r\n } else if (XIsFunction(data)) {\r\n (data as (param: any) => Observable<T[]>)(funcParam)\r\n .pipe(\r\n map((y) => (toConvert ? XToDataConvert(y) : y)),\r\n takeUntil(unSubject)\r\n )\r\n .subscribe((y) => {\r\n result(y as T[]);\r\n });\r\n } else {\r\n result((toConvert ? XToDataConvert(data) : data) as T[]);\r\n }\r\n }\r\n }).pipe(takeUntil(unSubject));\r\n}\r\n\r\n/**\r\n * @zh_CN 根据 id、pid 获取子节点\r\n * @en_US Obtain sub-nodes based on ID and PID\r\n */\r\nexport function XGetChildren<T extends XParentIdentityProperty<T>>(nodes: T[], node: T, level: number): T {\r\n node.level = level;\r\n node.children = nodes.filter((y) => y.pid === node.id);\r\n node.leaf = node.children?.length > 0;\r\n if (node.leaf) node.children.map((y) => XGetChildren(nodes, y, level + 1));\r\n return node;\r\n}\r\n\r\n/**\r\n * @zh_CN 递归检查并设置节点是否具有子节点\r\n * @en_US Recursively checks and sets whether nodes have children\r\n */\r\nexport function XHasChildren<T extends XParentIdentityProperty<T>>(nodes: T[], level: number): T[] {\r\n for (let node of nodes) {\r\n node.level = level;\r\n node.leaf = node.children && node.children.length > 0;\r\n if (node.leaf) {\r\n XHasChildren(node.children!, level + 1);\r\n }\r\n }\r\n\r\n return nodes;\r\n}\r\n\r\n/**\r\n * @zh_CN 将对象键值对反转\r\n * @en_US Reversal the key value of the object\r\n */\r\nexport function XInvertKeyValues(obj: any): Map<any, any> {\r\n return Object.keys(obj).reduce((nw, key) => {\r\n nw.set(obj[key], key);\r\n return nw;\r\n }, new Map());\r\n}\r\n\r\n/**\r\n * @zh_CN 设置样式名称为 false\r\n * @en_US Set style name is false\r\n */\r\nexport function XClearClass(...classMaps: XClassMap[]): void {\r\n classMaps.forEach((classMap) => {\r\n for (const key in classMap) {\r\n classMap[key] = false;\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * @zh_CN 设置样式名称为 false\r\n * @en_US Set style name is false\r\n */\r\nexport function XClearClassSignal(...classMaps: WritableSignal<XClassMap>[]): void {\r\n classMaps.forEach((classMap) => {\r\n const value = classMap();\r\n for (const key in value) {\r\n value[key] = false;\r\n }\r\n classMap.set(value);\r\n });\r\n}\r\n\r\n/**\r\n * @zh_CN 属性装饰器返回类型\r\n * @en_US Attribute decorator return type\r\n */\r\nexport type XPropDecorator = (target: any, propName: string) => void;\r\n\r\n/**\r\n * @zh_CN 创建属性装饰器的工厂函数\r\n * @en_US Factory functions that create attribute decorators\r\n */\r\nfunction propDecoratorFactory<T, D>(name: string, fallback: (v: T) => D): XPropDecorator {\r\n function propDecorator(target: any, propName: string, originalDescriptor?: TypedPropertyDescriptor<any>): any {\r\n const privatePropName = `$$__${propName}`;\r\n\r\n if (Object.prototype.hasOwnProperty.call(target, privatePropName)) {\r\n console.warn(`The prop \"${privatePropName}\" is already exist, it will be overrided by ${name} decorator.`);\r\n }\r\n\r\n Object.defineProperty(target, privatePropName, {\r\n configurable: true,\r\n writable: true\r\n });\r\n\r\n return {\r\n get(): string {\r\n return originalDescriptor && originalDescriptor.get\r\n ? originalDescriptor.get.bind(this)()\r\n : this[privatePropName];\r\n },\r\n set(value: T): void {\r\n if (originalDescriptor && originalDescriptor.set) {\r\n originalDescriptor.set.bind(this)(fallback(value));\r\n }\r\n this[privatePropName] = fallback(value);\r\n }\r\n };\r\n }\r\n\r\n return propDecorator;\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XInputBoolean 属性装饰器\r\n * @en_US Create XInputBoolean Properties\r\n */\r\nexport function XInputBoolean(): XPropDecorator {\r\n return propDecoratorFactory('XInputBoolean', XToBoolean);\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XInputNumber 属性装饰器\r\n * @en_US Create XInputNumber Properties\r\n */\r\nexport function XInputNumber(): XPropDecorator {\r\n return propDecoratorFactory('XInputNumber', XToNumber);\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XInputNumber 属性装饰器\r\n * @en_US Create XInputNumber Properties\r\n */\r\nexport function XInputCssPixelValue(): XPropDecorator {\r\n return propDecoratorFactory('XInputCssPixelValue', XToCssPixelValue);\r\n}\r\n\r\n/**\r\n * @zh_CN 创建 XDataConvert 属性装饰器\r\n * @en_US Create XDataConvert Properties\r\n */\r\nexport function XDataConvert(): XPropDecorator {\r\n return propDecoratorFactory('XDataConvert', XToDataConvert);\r\n}\r\n\r\n/**\r\n * @zh_CN 限制给定数值 value 的范围\r\n * @en_US Limit the range of the given value value\r\n */\r\nexport function XClamp(value: number, min: number, max: number): number {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n","import { XIsDate, XIsNumber } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 日期类型\r\n * @en_US Date type\r\n */\r\nexport type XDate = string | Date | number;\r\n\r\n/**\r\n * @zh_CN 转换 Date\r\n * @en_US Convert to date\r\n */\r\nexport function XToDate(date: XDate): Date {\r\n if (XIsDate(date) || XIsNumber(date)) {\r\n return new Date(date);\r\n } else {\r\n return new Date(Date.parse(date as string));\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加毫秒数,负数为减少\r\n * @en_US Add milliseconds to the date, the negative number is reduced\r\n */\r\nexport function XAddMilliseconds(date: XDate, amount: number): Date {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf()) && amount) {\r\n return new Date(dt.getTime() + amount);\r\n } else {\r\n return date as Date;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加秒数,负数为减少\r\n * @en_US Date adds seconds, the negative number is reduced\r\n */\r\nexport function XAddSeconds(date: XDate, amount: number): Date {\r\n return XAddMilliseconds(date, amount * 1000);\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加分钟数,负数为减少\r\n * @en_US Date adds minutes, the negative number is reduced\r\n */\r\nexport function XAddMinutes(date: XDate, amount: number): Date {\r\n return XAddMilliseconds(date, amount * 60000);\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加小时数,负数为减少\r\n * @en_US Date adds hours, the negative number is reduced\r\n */\r\nexport function XAddHours(date: XDate, amount: number): Date {\r\n return XAddMilliseconds(date, amount * 3600000);\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加天数,负数为减少\r\n * @en_US Date adds days, the negative number is reduced\r\n */\r\nexport function XAddDays(date: XDate, amount: number): Date {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf()) && amount) {\r\n dt.setDate(dt.getDate() + amount);\r\n return dt;\r\n } else {\r\n return date as Date;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加月数,负数为减少\r\n * @en_US Date adds monthly number, negative number is reduced\r\n */\r\nexport function XAddMonths(date: XDate, amount: number): Date {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf()) && amount) {\r\n const day = dt.getDate();\r\n const month = dt.getMonth();\r\n const endMonth = new Date(dt);\r\n endMonth.setMonth(month + amount + 1, 0);\r\n const endDay = endMonth.getDate();\r\n if (day >= endDay) {\r\n return endMonth;\r\n } else {\r\n dt.setFullYear(endMonth.getFullYear(), endMonth.getMonth(), day);\r\n }\r\n return dt;\r\n } else {\r\n return date as Date;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 日期添加年数,负数为减少\r\n * @en_US The number of years of date, the negative number is reduced\r\n */\r\nexport function XAddYears(date: XDate, amount: number): Date {\r\n return XAddMonths(date, amount * 12);\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期的 ISO 周数\r\n * @en_US Get the number of ISO weeks of the given date\r\n */\r\nexport function XDateWeek(date: XDate): number | undefined {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return getISOWeek(dt);\r\n }\r\n return;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期的 ISO 周年份\r\n * @en_US Get the ISO anniversary of the specified date\r\n */\r\nexport function XDateWeekYear(date: XDate): number | undefined {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return getISOWeekYear(dt);\r\n }\r\n return;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期的年份和周数\r\n * @en_US Get the year and week of the specified date\r\n */\r\nexport function XDateYearWeek(date: XDate): string {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return `${getISOWeekYear(dt)}-${getISOWeek(dt)}`;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期的年份和季度\r\n * @en_US Get the year and quarter of the specified date\r\n */\r\nexport function XDateYearQuarter(date: XDate): string {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return `${dt.getFullYear()}-${XDateQuarter(dt)}`;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @zh_CN 获取指定日期所属的季度\r\n * @en_US Get the season when the specified date belongs\r\n */\r\nexport function XDateQuarter(date: XDate): string {\r\n let dt = XToDate(date);\r\n if (!isNaN(dt.valueOf())) {\r\n return `Q${Math.ceil((dt.getMonth() + 1) / 3)}`;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期的 ISO 周数\r\n * @en_US Get the number of ISO weeks of the given date\r\n */\r\nfunction getISOWeek(date: Date): number {\r\n const diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime();\r\n return Math.round(diff / 604800000) + 1;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期所在 ISO 周的开始日期\r\n * @en_US The start date of the ISO week where the given date is located\r\n */\r\nfunction startOfISOWeek(date: Date) {\r\n return startOfWeek(date, { weekStartsOn: 1 });\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期所在周的开始日期\r\n * @en_US The start date of the ISO week where the given date is located\r\n */\r\nfunction startOfWeek(date: Date, options?: { weekStartsOn: number }) {\r\n const weekStartsOn = options?.weekStartsOn || 0;\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期所在 ISO 周年的起始日期\r\n * @en_US The start date of the ISO anniversary where the given date is located\r\n */\r\nfunction startOfISOWeekYear(date: Date) {\r\n const year = getISOWeekYear(date);\r\n const fourthOfJanuary = constructFrom(date, 0);\r\n fourthOfJanuary.setFullYear(year, 0, 4);\r\n fourthOfJanuary.setHours(0, 0, 0, 0);\r\n const result = startOfISOWeek(fourthOfJanuary);\r\n return result;\r\n}\r\n\r\n/**\r\n * @zh_CN 返回一个与传入的 date 参数类型相同的对象\r\n * @en_US Return to an object of the same type of Date parameter.\r\n */\r\nfunction constructFrom<T extends Date>(date: T | number, value: Date | number): T {\r\n if (date instanceof Date) {\r\n return new (date.constructor as any)(value);\r\n } else {\r\n return new Date(value) as T;\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN 获取给定日期的 ISO 周年份\r\n * @en_US Obtain the ISO anniversary of the given date\r\n */\r\nfunction getISOWeekYear(date: Date): number {\r\n const year = date.getFullYear();\r\n\r\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\r\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\r\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\r\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\r\n\r\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\r\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\r\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\r\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\r\n\r\n if (date.getTime() >= startOfNextYear.getTime()) {\r\n return year + 1;\r\n } else if (date.getTime() >= startOfThisYear.getTime()) {\r\n return year;\r\n } else {\r\n return year - 1;\r\n }\r\n}\r\n","import { Renderer2 } from '@angular/core';\r\nimport { XAlign, XDirection, XIsEmpty, XJustify } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 用于设置元素的 flex 样式\r\n * @en_US Flex style for setting elements\r\n */\r\nexport function XSetFlex(\r\n ele: Element,\r\n renderer: Renderer2,\r\n justify?: XJustify,\r\n align?: XAlign,\r\n direction?: XDirection\r\n): string[] {\r\n let result: string[] = [];\r\n if (!XIsEmpty(justify)) {\r\n const justifyStr = `x-justify-${justify}`;\r\n result.push(justifyStr);\r\n renderer.addClass(ele, justifyStr);\r\n }\r\n if (!XIsEmpty(align)) {\r\n const alignStr = `x-align-${align}`;\r\n result.push(alignStr);\r\n renderer.addClass(ele, alignStr);\r\n }\r\n if (!XIsEmpty(direction)) {\r\n const directionStr = `x-direction-${direction}`;\r\n result.push(directionStr);\r\n renderer.addClass(ele, directionStr);\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 通过参数 n 来截取数组\r\n * 如果 n 未定义或为 0,则返回与原数组相同的数组\r\n * 如果原数组长度小于 1 或小于等于 n 的绝对值,则返回一个空数组\r\n * 如果 n 大于 0,则截取从第 n 个元素开始到数组末尾的子数组\r\n * 如果 n 小于等于 0,则截取从第 0 个元素到倒数第 n 个元素\r\n * @en_US Send the array by parameter n\r\n * If n is not defined or 0, returns the same array as the original array\r\n * If the original array length is less than 1 or less than equal to N, return a empty array\r\n * If n is greater than 0, cut off the sub-array starting from the nn element to the end of the array\r\n * If n is less than or equal to 0, cut off from the 0th element to the countless nary element\r\n */\r\nexport function XDrop<T>(array: Array<T>, n?: number): Array<T> {\r\n if (!n) return [...array];\r\n if (array.length < 1 || array.length <= Math.abs(n)) return [];\r\n return array.slice(n > 0 ? n : 0, n > 0 ? array.length : n);\r\n}\r\n","/**\r\n * @zh_CN 从数组中移除满足条件的元素,并返回被移除的元素组成的数组\r\n * @en_US Remove elements that meet the conditions from the array and return the array of the removal element\r\n */\r\nexport function XRemove<T>(array: Array<T>, predicate?: (value: T) => boolean): Array<T> {\r\n if (typeof predicate === 'undefined') return [];\r\n let result: T[] = [];\r\n for (let i = 0; i < array.length; i++) {\r\n if (predicate(array[i])) {\r\n result.push(array[i]);\r\n }\r\n }\r\n for (let item of result) {\r\n array.splice(array.indexOf(item), 1);\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 根据指定元素来排序\r\n * @en_US Sort by specified elements\r\n */\r\nexport function XOrderBy<T>(collection: Array<T>, iteratees: Array<string>, orders?: Array<'asc' | 'desc'>): Array<T> {\r\n if (!iteratees) return collection;\r\n if (!orders) orders = [];\r\n\r\n function compare(a: any, b: any, prop: any, order: 'asc' | 'desc' | undefined, idex: number): number {\r\n if (a[prop] == b[prop]) {\r\n ++idex;\r\n if (iteratees.length > idex) {\r\n const odr = orders && orders.length > idex ? orders[idex] : 'asc';\r\n return compare(a, b, iteratees[idex], odr, idex);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n let isNumber = !isNaN(a[prop]);\r\n if (order === 'desc') {\r\n if (isNumber) {\r\n return (b[prop] - a[prop]) as number;\r\n } else {\r\n if (b[prop] > a[prop]) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n } else {\r\n if (isNumber) {\r\n return (a[prop] - b[prop]) as number;\r\n } else {\r\n if (a[prop] > b[prop]) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const iterate = iteratees.shift();\r\n const order = orders.shift() || 'asc';\r\n\r\n if (!iterate) return collection;\r\n\r\n collection.sort((a: any, b: any) => compare(a, b, iterate, order, -1));\r\n\r\n return collection;\r\n}\r\n","/**\r\n * @zh_CN 该函数是一个深拷贝函数,用于克隆一个对象或数组\r\n * 它会递归地复制对象的所有属性,包括嵌套对象和数组,生成一个全新的独立副本。\r\n * 对于非对象和非数组类型的值,直接返回该值。\r\n * 函数接受一个参数 value,表示需要进行深拷贝的值。\r\n * 首先创建一个空的结果对象 result,如果 value 是数组,则 result 也是一个空数组。\r\n * 遍历 value 的所有属性,如果属性是对象,则递归调用 XCloneDeep 函数进行深拷贝,并将结果赋值给 result 对应的属性。\r\n * 最后返回 result,即深拷贝后的对象或数组。\r\n * @en_US This function is a deep copy function that is used for a cloning object or array\r\n * It will recover all the attributes of the object, including nested objects and array, and generate a new independent copy.\r\n * For non object and non -array type values, return that value directly.\r\n * The function accepts a parameter Value, indicating that the value of deep copy needs to be performed.\r\n * First create a empty result object Result. If Value is an array, Result is also an empty array.\r\n * It traverses all the attributes of Value. If the attribute is an object, the recursively calls the XCLONEDEEP function for deep copy, and assign the result to the corresponding attributes corresponding to Result.\r\n * Finally return to Result, that is, the object or array after the deep copy.\r\n */\r\nexport function XCloneDeep(value: any): any {\r\n let result: any = Array.isArray(value) ? [] : {};\r\n if (value && typeof value === 'object') {\r\n for (let key in value) {\r\n if ((value as Object).hasOwnProperty(key)) {\r\n result[key] = value && typeof value[key] === 'object' ? XCloneDeep(value[key]) : value[key];\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 判断一个对象是否包含指定的属性\r\n * @en_US Determine whether an object contains the specified attribute\r\n */\r\nexport function XHasIn(object: Object, key: string): boolean {\r\n return object != null && key in Object(object);\r\n}\r\n","/**\r\n * @zh_CN 该函数用于将给定的数组拆分成多个小数组\r\n * 每个小数组的长度由函数的第二个参数指定,默认为 1。\r\n * 如果给定的数组为空或者小数组长度小于等于 0,则函数返回一个空数组。\r\n * 函数通过循环遍历给定的数组,并使用 slice 方法将数组拆分成小数组,然后将小数组添加到结果数组中,最后返回结果数组。\r\n * @en_US This function is used to split the given array into multiple decimal arrays\r\n * The length of each decimal array is specified by the second parameter of the function, and the default is 1.\r\n * If the given array is empty or the length of the decimal array is less than equal to 0, the function returns a empty array.\r\n * The function traverses the given array by circulating, and uses the Slice method to split the array into a decimal array,\r\n * then add the decimal array to the result array, and finally return the result array.\r\n */\r\nexport function XChunk<T>(array: Array<T>, size = 1): Array<Array<T>> {\r\n const len = array == null ? 0 : array.length;\r\n if (!len || size < 1) {\r\n return [];\r\n }\r\n let index = 0;\r\n let resIndex = 0;\r\n const result = new Array(Math.ceil(len / size));\r\n\r\n while (index < len) {\r\n result[resIndex++] = array.slice(index, (index += size));\r\n }\r\n return result;\r\n}\r\n","/**\r\n * @zh_CN 生成 GUID\r\n * @en_US GUID\r\n */\r\nexport function XGuid(): string {\r\n let S4 = () => {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n };\r\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\r\n}\r\n","/**\r\n * @zh_CN 根据属性 name 或迭代函数来对数组分组\r\n * @en_US Groups the elements of an array based on a property name or iteratee function\r\n * @param array 需要分组的数组\r\n * @param key 属性名或迭代函数\r\n * @returns 分组后的对象,键为分组依据的值,值为属于该组的元素数组\r\n */\r\nexport function XGroupBy<T>(array: T[], key: string | ((item: T) => string | number)): Record<string, T[]> {\r\n const groups: Record<string, T[]> = {};\r\n\r\n array.forEach((item) => {\r\n const groupKey = typeof key === 'function' ? String(key(item)) : String((item as any)[key]);\r\n\r\n if (!groups[groupKey]) {\r\n groups[groupKey] = [];\r\n }\r\n\r\n groups[groupKey].push(item);\r\n });\r\n\r\n return groups;\r\n}\r\n","import { Observable, Subscriber } from 'rxjs';\r\n\r\n/**\r\n * @zh_CN 监听元素大小边界尺寸的变化\r\n * @en_US Monitoring elements of the size of the boundary size\r\n */\r\nexport type XResizeObserver = ResizeObserver | null;\r\n\r\n/**\r\n * @zh_CN ResizeObserver 回调函数参数的对象\r\n * @en_US Object of ResizeobServer's callback function parameter\r\n */\r\nexport type XResizeObserverEntry = ResizeObserverEntry | null;\r\n\r\n/**\r\n * @zh_CN 这个函数的功能是创建一个Observable,用于监听多个元素的尺寸变化\r\n * @en_US The function of this function is to create an Observable to monitor the size changes of multiple elements.\r\n */\r\nexport function XResize(\r\n ...element: Element[]\r\n): Observable<{ entry: XResizeObserverEntry; resizeObserver: XResizeObserver }> {\r\n return new Observable(\r\n (\r\n x: Subscriber<{\r\n entry: XResizeObserverEntry;\r\n resizeObserver: XResizeObserver;\r\n }>\r\n ) => {\r\n if (typeof ResizeObserver !== 'function') {\r\n return;\r\n }\r\n const resizeObserver = new ResizeObserver((entries: XResizeObserverEntry[]) => {\r\n for (const entry of entries) {\r\n x.next({ entry: entry, resizeObserver: resizeObserver });\r\n }\r\n });\r\n for (let ele of element) {\r\n if (ele) resizeObserver.observe(ele);\r\n }\r\n }\r\n );\r\n}\r\n","/**\r\n * @zh_CN 获取元素的父节点路径\r\n * @en_US The parent node of the element\r\n */\r\nexport function XParentPath(ele: HTMLElement): string[] {\r\n let path: string[] = [];\r\n let nowEle = ele;\r\n while (nowEle.parentNode != null) {\r\n path.push(nowEle.localName);\r\n nowEle = nowEle.parentNode as HTMLElement;\r\n }\r\n return path;\r\n}\r\n\r\n/**\r\n * @zh_CN 获取元素的父元素路径\r\n * @en_US The parent element path of obtaining elements\r\n */\r\nexport function XParents(ele: HTMLElement): HTMLElement[] {\r\n let res: HTMLElement[] = [];\r\n let nowEle = ele;\r\n while (nowEle.parentElement != null) {\r\n res.push(nowEle.parentElement!);\r\n nowEle = nowEle.parentNode as HTMLElement;\r\n }\r\n return res;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { XTheme } from '../theme';\r\nimport type {\r\n XSize,\r\n XType,\r\n XEffect,\r\n XNumber,\r\n XPositionLeftRight,\r\n XJustify,\r\n XShape,\r\n XFit,\r\n XShadow,\r\n XTrigger,\r\n XDisplayDirection,\r\n XCorner,\r\n XDirection,\r\n XPlace,\r\n XPosition,\r\n XPlacement,\r\n XPositionTopBottom,\r\n XStatus,\r\n XAlign,\r\n XVariant,\r\n XTemplate,\r\n XStyleMap,\r\n XFloatLabel\r\n} from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 组件和主题全局配置信息\r\n * @en_US Component and theme global configuration information\r\n */\r\nexport interface XConfig {\r\n /**\r\n * @zh_CN 组件配置信息\r\n * @en_US Component configuration information\r\n */\r\n components?: XComponentConfig;\r\n /**\r\n * @zh_CN 主题全配置信息\r\n * @en_US theme configuration information\r\n */\r\n theme?: XTheme;\r\n}\r\n\r\nexport type XConfigKey = keyof XConfig;\r\nexport type XComponentConfigKey = keyof XComponentConfig;\r\nexport const X_CONFIG = new InjectionToken<XConfig>('x-config');\r\n\r\n/**\r\n * @zh_CN 组件全局配置\r\n * @en_US Global configuration of the component\r\n */\r\nexport interface XComponentConfig {\r\n affix?: XAffixConfig;\r\n alert?: XAlertConfig;\r\n anchor?: XAnchorConfig;\r\n avatar?: XAvatarConfig;\r\n autoComplete?: XAutoCompleteConfig;\r\n backTop?: XBackTopConfig;\r\n badge?: XBadgeConfgig;\r\n button?: XButtonConfig;\r\n buttons?: XButtonsConfig;\r\n bubble?: XBubbleConfig;\r\n bubbles?: XBubblesConfig;\r\n calendar?: XCalendarConfig;\r\n card?: XCardConfig;\r\n carousel?: XCarouselConfig;\r\n cascade?: XCascadeConfig;\r\n checkbox?: XCheckboxConfig;\r\n collapse?: XCollapseConfig;\r\n color?: XColorConfig;\r\n colorPicker?: XColorPickerConfig;\r\n comment?: XCommentConfig;\r\n container?: XContainerConfig;\r\n coversations?: XCoversationsConfig;\r\n header?: XHeaderConfig;\r\n aside?: XAsideConfig;\r\n footer?: XFooterConfig;\r\n crumb?: XCrumbComfig;\r\n datePicker?: XDatePickerConfig;\r\n dateRange?: XDateRangeConfig;\r\n dialog?: XDialogConfig;\r\n drawer?: XDrawerConfig;\r\n dropdown?: XDropdownConfig;\r\n description?: XDescriptionConfig;\r\n empty?: XEmptyConfig;\r\n find?: XFindConfig;\r\n form?: XFormConfig;\r\n highlight?: XHighlightConfig;\r\n icon?: XIconConfig;\r\n inner?: XInnerConfig;\r\n input?: XInputConfig;\r\n inputGroup?: XInputGroupConfig;\r\n inputNumber?: XInputNumberConfig;\r\n image?: XImageConfig;\r\n col?: XColConfig;\r\n row?: XRowConfig;\r\n ripple?: XRippleConfig;\r\n link?: XLinkConfig;\r\n list?: XListConfig;\r\n listOption?: XListOptionConfig;\r\n loading?: XLoadingConfig;\r\n menu?: XMenuConfig;\r\n message?: XMessageConfig;\r\n messageBox?: XMessageBoxConfig;\r\n notification?: XNotificationConfig;\r\n outlet?: XOutletConfig;\r\n pageHeader?: XPageHeaderConfig;\r\n pagination?: XPaginationConfig;\r\n pattern?: XPatternConfig;\r\n popconfirm?: XPopconfirmConfig;\r\n popover?: XPopoverConfig;\r\n portal?: XPortalConfig;\r\n progress?: XProgressConfing;\r\n prompts?: XPromptsConfig;\r\n radio?: XRadioConfig;\r\n rate?: XRateConfig;\r\n result?: XResultConfig;\r\n select?: XSelectConfig;\r\n sender?: XSenderConfig;\r\n skeleton?: XSkeletonConfig;\r\n slider?: XSliderConfig;\r\n sliderSelect?: XSliderSelectConfig;\r\n statistic?: XStatisticConfig;\r\n countdown?: XCountdownConfig;\r\n steps?: XStepsConfig;\r\n switch?: XSwitchConfig;\r\n table?: XTableConfig;\r\n tableView?: XTableViewConfig;\r\n tabs?: XTabsConfig;\r\n tag?: XTagConfig;\r\n textRetract?: XTextRetractConfig;\r\n theme?: XThemeConfig;\r\n timeAgo?: XTimeAgoConfig;\r\n timePicker?: XTimePickerConfig;\r\n timeRange?: XTimeRangeConfig;\r\n timeline?: XTimelineConfig;\r\n tooltip?: XTooltipConfig;\r\n transfer?: XTransferConfig;\r\n tree?: XTreeConfig;\r\n treeFile?: XTreeFileConfig;\r\n treeSelect?: XTreeSelectConfig;\r\n textarea?: XTextareaConfig;\r\n upload?: XUploadConfig;\r\n keyword?: XKeywordConfig;\r\n welcome?: XWelcomeConfig;\r\n}\r\n\r\nexport interface XAffixConfig {\r\n top?: string;\r\n left?: string;\r\n}\r\n\r\nexport interface XAlertConfig {\r\n effect?: XEffect;\r\n hideClose?: boolean;\r\n variant?: 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n showIcon?: boolean;\r\n disabledAnimation?: boolean;\r\n draggable?: boolean;\r\n resizable?: boolean;\r\n dragHandleTitle?: boolean;\r\n duration?: number;\r\n minWidth?: string;\r\n minHeight?: string;\r\n}\r\n\r\nexport interface XAnchorConfig {\r\n affixTop?: string;\r\n affixBottom?: string;\r\n affixWidth?: string;\r\n layout?: XPositionLeftRight;\r\n justify?: XJustify;\r\n}\r\n\r\nexport interface XAvatarConfig {\r\n size?: XSize;\r\n shape?: XShape;\r\n fit?: XFit;\r\n gap?: string;\r\n backgroundColor?: string;\r\n color?: string;\r\n}\r\n\r\nexport interface XAutoCompleteConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XPositionTopBottom;\r\n debounceTime?: number;\r\n size?: XSize;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n caseSensitive?: boolean;\r\n onlySelect?: boolean;\r\n}\r\n\r\nexport interface XBackTopConfig {\r\n right?: string;\r\n bottom?: string;\r\n visibilityHeight?: number;\r\n}\r\n\r\nexport interface XBadgeConfgig {\r\n type?: XType;\r\n}\r\n\r\nexport interface XButtonConfig {\r\n size?: XSize;\r\n type?: XType;\r\n plain?: boolean;\r\n round?: boolean;\r\n circle?: boolean;\r\n flat?: boolean;\r\n text?: boolean;\r\n attrType?: 'submit' | 'button' | 'reset';\r\n}\r\n\r\nexport interface XButtonsConfig {\r\n space?: string;\r\n hiddenBorder?: boolean;\r\n boxShadow?: boolean;\r\n round?: boolean;\r\n}\r\n\r\nexport interface XBubbleConfig {\r\n variant?: 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n size?: XSize;\r\n}\r\n\r\nexport interface XBubblesConfig {\r\n variant?: 'outlined' | 'filled' | 'shadow' | 'borderless';\r\n size?: XSize;\r\n}\r\n\r\nexport interface XCalendarConfig {}\r\n\r\nexport interface XCardConfig {\r\n shadow?: XShadow;\r\n}\r\n\r\nexport interface XCarouselConfig {\r\n height?: string;\r\n trigger?: XTrigger;\r\n arrow?: XShadow;\r\n direction?: XDisplayDirection;\r\n}\r\n\r\nexport interface XCascadeConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XCorner;\r\n size?: XSize;\r\n clearable?: boolean;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n nodeTrigger?: XTrigger;\r\n nodeHoverDelay?: number;\r\n separator?: string;\r\n}\r\n\r\nexport interface XCheckboxConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XCollapseConfig {\r\n showIcon?: boolean;\r\n ghost?: boolean;\r\n iconPosition?: 'left' | 'right';\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XColorConfig {\r\n merge?: string;\r\n amounts?: number[];\r\n}\r\n\r\nexport interface XColorPickerConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XCommentConfig {\r\n contentMax?: number;\r\n maxlength?: number;\r\n}\r\n\r\nexport interface XContainerConfig {\r\n direction?: XDirection;\r\n}\r\n\r\nexport interface XCoversationsConfig {\r\n size?: XSize;\r\n loadMoreText?: string;\r\n loadingMoreText?: string;\r\n}\r\n\r\nexport interface XHeaderConfig {\r\n height?: string;\r\n}\r\n\r\nexport interface XAsideConfig {\r\n width?: string;\r\n}\r\n\r\nexport interface XFooterConfig {\r\n height?: string;\r\n}\r\n\r\nexport interface XCrumbComfig {\r\n separator?: string;\r\n}\r\n\r\nexport interface XDatePickerConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n format?: string;\r\n clearable?: boolean;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XDateRangeConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n format?: string;\r\n clearable?: boolean;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n}\r\n\r\nexport interface XDialogConfig {\r\n placement?: XPlace;\r\n offset?: string;\r\n width?: string;\r\n minWidth?: string;\r\n minHeight?: string;\r\n maxWidth?: string;\r\n maxHeight?: string;\r\n effect?: XEffect;\r\n showCancel?: boolean;\r\n cancelText?: string;\r\n showConfirm?: boolean;\r\n confirmText?: string;\r\n backdropClose?: boolean;\r\n draggable?: boolean;\r\n resizable?: boolean;\r\n maximize?: boolean;\r\n hasBackdrop?: boolean;\r\n className?: string;\r\n buttonsCenter?: boolean;\r\n}\r\n\r\nexport interface XDrawerConfig {\r\n placement?: XPosition;\r\n size?: string;\r\n backdropClose?: boolean;\r\n hasBackdrop?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport interface XDropdownConfig {\r\n trigger?: XTrigger;\r\n placement?: XPlacement;\r\n size?: XSize;\r\n}\r\n\r\nexport interface XDescriptionConfig {\r\n bordered?: boolean;\r\n size?: XSize;\r\n}\r\n\r\nexport interface XEmptyConfig {\r\n img?: XTemplate;\r\n content?: XTemplate;\r\n}\r\n\r\nexport interface XFindConfig {\r\n size?: XSize;\r\n bordered?: boolean;\r\n columnLabel?: string;\r\n dialogTitle?: string;\r\n dialogCheckboxLabel?: string;\r\n dialogCheckboxWidth?: string;\r\n dialogEmptyContent?: string;\r\n dialogButtonsCenter?: boolean;\r\n tableIndex?: number;\r\n tableSize?: number;\r\n tableLoading?: boolean;\r\n tableVirtualScroll?: boolean;\r\n tableRowHeight?: number;\r\n treeExpandedLevel?: number;\r\n}\r\n\r\nexport interface XFormConfig {\r\n space?: string;\r\n labelSuffix?: string;\r\n width?: string;\r\n}\r\n\r\nexport interface XHighlightConfig {}\r\n\r\nexport interface XIconConfig {\r\n href?: string;\r\n}\r\n\r\nexport interface XInnerConfig {\r\n padding?: string;\r\n}\r\n\r\nexport interface XInputConfig {\r\n floatFixed?: boolean;\r\n floatLabel?: XFloatLabel;\r\n variant?: XVariant;\r\n clearable?: boolean;\r\n iconLayout?: XPositionLeftRight;\r\n size?: XSize;\r\n bordered?: boolean;\r\n inputPadding?: string;\r\n inputIconPadding?: XNumber;\r\n}\r\n\r\nexport interface XInputGroupConfig {\r\n size?: XSize;\r\n bordered?: boolean;\r\n compact?: boolean;\r\n}\r\n\r\nexport interface XInputNumberConfig {\r\n variant?: XVariant;\r\n size?: XSize;\r\n bordered?: boolean;\r\n hiddenButton?: boolean;\r\n}\r\n\r\nexport interface XImageConfig {\r\n previewText?: string;\r\n}\r\n\r\nexport interface XColConfig {}\r\n\r\nexport interface XRowConfig {}\r\n\r\nexport interface XRippleConfig {\r\n type?: XType;\r\n}\r\n\r\nexport interface XLinkConfig {\r\n underline?: boolean;\r\n iconRight?: boolean;\r\n preventDefault?: boolean;\r\n}\r\n\r\nexport interface XListConfig {\r\n selectAllText?: string;\r\n loadMoreText?: string;\r\n loadingMoreText?: string;\r\n caseSensitive?: boolean;\r\n virtualScroll?: boolean;\r\n scrollHeight?: number;\r\n size?: XSize;\r\n}\r\n\r\nexport interface XListOptionConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XLoadingConfig {\r\n type?: any;\r\n size?: XSize | number;\r\n text?: string;\r\n icon?: string;\r\n color?: string;\r\n background?: string;\r\n zIndex?: number;\r\n}\r\n\r\nexport interface XMenuConfig {\r\n size?: XSize;\r\n width?: string;\r\n trigger?: XTrigger;\r\n}\r\n\r\nexport interface XMessageConfig {\r\n type?: XStatus;\r\n width?: string;\r\n placement?: XPlace;\r\n displayType?: string;\r\n offset?: string | string[];\r\n duration?: number;\r\n hideClose?: boolean;\r\n showIcon?: boolean;\r\n}\r\n\r\nexport interface XMessageBoxConfig {}\r\n\r\nexport interface XNotificationConfig {}\r\n\r\nexport interface XOutletConfig {}\r\n\r\nexport interface XPageHeaderConfig {\r\n backIcon?: string;\r\n backText?: string;\r\n}\r\n\r\nexport interface XPaginationConfig {\r\n index?: number;\r\n size?: number;\r\n space?: string;\r\n pageLinkSize?: number;\r\n hiddenBorder?: boolean;\r\n showEllipsis?: boolean;\r\n showTotal?: boolean;\r\n showSize?: boolean;\r\n showBackground?: boolean;\r\n sizeWidth?: string;\r\n sizeData?: number[];\r\n showInputSize?: boolean;\r\n showInputSizeTooltipText?: boolean;\r\n inputSizeTooltipText?: string;\r\n inputSizeWidth?: number;\r\n showJump?: boolean;\r\n jumpWidth?: string;\r\n showJumpTooltipText?: boolean;\r\n jumpTooltipText?: string;\r\n simple?: boolean;\r\n simpleIndexWidth?: string;\r\n inputIndexSizeSureType?: 'enter' | 'blur' | 'both';\r\n}\r\n\r\nexport interface XPatternConfig {}\r\n\r\nexport interface XPopconfirmConfig {\r\n placement?: XPlacement;\r\n trigger?: XTrigger;\r\n icon?: string;\r\n iconColor?: string;\r\n cancelText?: string;\r\n confirmText?: string;\r\n width?: string;\r\n maxWidth?: string;\r\n minWidth?: string;\r\n}\r\n\r\nexport interface XPopoverConfig {\r\n placement?: XPlacement;\r\n trigger?: XTrigger;\r\n width?: string;\r\n minWidth?: string;\r\n maxWidth?: string;\r\n}\r\n\r\nexport interface XPortalConfig {}\r\n\r\nexport interface XProgressConfing {\r\n height?: string;\r\n stepWidth?: string;\r\n}\r\n\r\nexport interface XPromptsConfig {\r\n vertical?: boolean;\r\n}\r\n\r\nexport interface XRadioConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XRateConfig {\r\n color?: string | { [color: string]: (rate: number) => boolean };\r\n}\r\n\r\nexport interface XResultConfig {}\r\n\r\nexport interface XSelectConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XPositionTopBottom;\r\n clearable?: boolean;\r\n size?: XSize;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n selectAllText?: string;\r\n search?: boolean;\r\n caseSensitive?: boolean;\r\n debounceTime?: number;\r\n maxTagCount?: number;\r\n maxTagContent?: XTemplate;\r\n virtualScroll?: boolean;\r\n}\r\n\r\nexport interface XSenderConfig {\r\n submitType?: 'enter' | 'shiftEnter';\r\n}\r\n\r\nexport interface XSkeletonConfig {}\r\n\r\nexport interface XSliderConfig {\r\n animated?: boolean;\r\n size?: XSize;\r\n showExpand?: boolean;\r\n autoShowArrow?: boolean;\r\n trigger?: XTrigger;\r\n expandMaxHeight?: string;\r\n}\r\n\r\nexport interface XSliderSelectConfig {}\r\n\r\nexport interface XStatisticConfig {}\r\n\r\nexport interface XCountdownConfig {\r\n format?: string;\r\n}\r\n\r\nexport interface XStepsConfig {}\r\n\r\nexport interface XSwitchConfig {\r\n size?: XSize;\r\n}\r\n\r\nexport interface XTableConfig {\r\n index?: number;\r\n size?: number;\r\n loading?: boolean;\r\n showHeader?: boolean;\r\n headerPosition?: 'top' | 'bottom' | 'top-bottom';\r\n bodyInnerHTML?: boolean;\r\n virtualScroll?: boolean;\r\n rowHeight?: number;\r\n itemSize?: number;\r\n bordered?: boolean;\r\n allowSelectRow?: boolean;\r\n allowCheckRow?: boolean;\r\n rowSize?: XSize;\r\n showPagination?: boolean;\r\n treeTable?: boolean;\r\n expandedAll?: boolean;\r\n expandedLevel?: number;\r\n hiddenPaginationBorder?: boolean;\r\n hiddenWrapBorder?: boolean;\r\n showEmpty?: boolean;\r\n emptyImg?: XTemplate;\r\n emptyContent?: XTemplate;\r\n\r\n space?: string;\r\n pageLinkSize?: number;\r\n hiddenBorder?: boolean;\r\n showEllipsis?: boolean;\r\n showTotal?: boolean;\r\n showSize?: boolean;\r\n showBackground?: boolean;\r\n sizeWidth?: string;\r\n sizeData?: number[];\r\n showInputSize?: boolean;\r\n showInputSizeTooltipText?: boolean;\r\n inputSizeTooltipText?: string;\r\n inputSizeWidth?: number;\r\n showJump?: boolean;\r\n jumpWidth?: string;\r\n showJumpTooltipText?: boolean;\r\n jumpTooltipText?: string;\r\n simple?: boolean;\r\n simpleIndexWidth?: string;\r\n inputIndexSizeSureType?: 'enter' | 'blur' | 'both';\r\n}\r\n\r\nexport interface XTableViewConfig {}\r\n\r\nexport interface XTabsConfig {\r\n size?: XSize;\r\n trigger?: XTrigger;\r\n expandMaxHeight?: string;\r\n}\r\n\r\nexport interface XTagConfig {\r\n size?: XSize;\r\n bordered?: boolean;\r\n closable?: boolean;\r\n dark?: boolean;\r\n}\r\n\r\nexport interface XTextRetractConfig {\r\n max?: number;\r\n}\r\n\r\nexport interface XThemeConfig {\r\n amounts?: number[];\r\n}\r\n\r\nexport interface XTimeAgoConfig {}\r\n\r\nexport interface XTimePickerConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n format?: string;\r\n placement?: XCorner;\r\n size?: XSize;\r\n bordered?: boolean;\r\n use12Hours?: boolean;\r\n defaultNow?: boolean;\r\n hourStep?: number;\r\n minuteStep?: number;\r\n secondStep?: number;\r\n}\r\n\r\nexport interface XTimeRangeConfig {}\r\n\r\nexport interface XTimelineConfig {\r\n size?: XSize;\r\n mode?: 'left' | 'right' | 'alternate';\r\n}\r\n\r\nexport interface XTooltipConfig {\r\n placement?: XPlacement;\r\n}\r\n\r\nexport interface XTransferConfig {\r\n titles?: string[];\r\n drag?: boolean;\r\n virtualScroll?: boolean;\r\n type?: 'list' | 'table' | 'tree';\r\n listStyle: XStyleMap | XStyleMap[];\r\n}\r\n\r\nexport interface XTreeConfig {\r\n spacing?: string;\r\n nodeHeight?: string;\r\n nodeAlignItems?: XAlign;\r\n virtualScroll?: boolean;\r\n onlyLeaf?: boolean;\r\n showLine?: boolean;\r\n virtualScrollHeight?: string;\r\n itemSize?: number;\r\n caseSensitive?: boolean;\r\n order?: {\r\n property: string;\r\n order: 'asc' | 'desc';\r\n }[];\r\n includeChildren?: boolean;\r\n}\r\n\r\nexport interface XTextareaConfig {\r\n variant?: XVariant;\r\n clearable?: boolean;\r\n iconLayout?: XPositionLeftRight;\r\n}\r\n\r\nexport interface XTreeFileConfig {\r\n maxHeight?: string;\r\n spacing?: string;\r\n}\r\n\r\nexport interface XTreeSelectConfig {\r\n floatLabel?: XFloatLabel;\r\n floatFixed?: boolean;\r\n variant?: XVariant;\r\n placement?: XPositionTopBottom;\r\n clearable?: boolean;\r\n size?: XSize;\r\n bordered?: boolean;\r\n portalMaxHeight?: string;\r\n selectAllText?: string;\r\n search?: boolean;\r\n caseSensitive?: boolean;\r\n debounceTime?: number;\r\n maxTagCount?: number;\r\n maxTagContent?: XTemplate;\r\n virtualScroll?: boolean;\r\n showPath?: boolean;\r\n separator?: string;\r\n onlyLeaf?: boolean;\r\n order?: {\r\n property: string;\r\n order: 'asc' | 'desc';\r\n }[];\r\n includeChildren?: boolean;\r\n}\r\n\r\nexport interface XUploadConfig {\r\n download?: boolean;\r\n multipleModel?: 'cover' | 'add';\r\n}\r\n\r\nexport interface XKeywordConfig {\r\n type?: XType;\r\n color?: string;\r\n caseSensitive?: boolean;\r\n}\r\n\r\nexport interface XWelcomeConfig {\r\n variant?: 'outlined' | 'filled' | 'borderless';\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface XTheme {\r\n colors?: XColorsTheme;\r\n vars?: XVarsTheme;\r\n dark?: boolean;\r\n}\r\n\r\nexport interface XColorsTheme {\r\n primary?: string;\r\n success?: string;\r\n warning?: string;\r\n danger?: string;\r\n info?: string;\r\n text?: string;\r\n border?: string;\r\n background?: string;\r\n [property: string]: any;\r\n}\r\n\r\nexport interface XVarsTheme {\r\n black?: string;\r\n white?: string;\r\n fontSize?: string;\r\n fontSizeMini?: string;\r\n fontSizeSmall?: string;\r\n fontSizeMedium?: string;\r\n fontSizeLarge?: string;\r\n fontSizeBig?: string;\r\n fontVariant?: string;\r\n fontFamily?: string;\r\n fontCodeFamily?: string;\r\n lineHeight?: string;\r\n heightBig?: string;\r\n heightLarge?: string;\r\n heightMedium?: string;\r\n heightSmall?: string;\r\n heightMini?: string;\r\n paddingBig?: string;\r\n paddingLarge?: string;\r\n paddingMedium?: string;\r\n paddingSmall?: string;\r\n paddingMini?: string;\r\n borderStyle?: string;\r\n borderRadius?: string;\r\n borderSmallRadius?: string;\r\n borderWidth?: string;\r\n borderDeepWidth?: string;\r\n boxShadow?: string;\r\n boxShadowHover?: string;\r\n boxShadowTop?: string;\r\n boxShadowRight?: string;\r\n boxShadowBottom?: string;\r\n boxShadowLeft?: string;\r\n animationDurationSlow?: string;\r\n animationDurationBase?: string;\r\n animationDurationFast?: string;\r\n [property: string]: any;\r\n}\r\n\r\nexport type XThemeKey = keyof XTheme;\r\n\r\nexport type XColors = 'primary' | 'success' | 'warning' | 'danger' | 'info';\r\n\r\nexport const X_THEME = new InjectionToken<XTheme>('xTheme');\r\n\r\nexport const X_THEME_PREFIX = '--x-';\r\n\r\nexport const X_THEME_MERGE = '#ffffff';\r\n\r\nexport const X_THEME_BLACK_MERGE = '#cccccc';\r\n\r\nexport const X_THEME_AMOUNTS = [\r\n 0, -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0.8, -0.9, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9\r\n];\r\n\r\nexport const X_THEME_BACKGROUNDS = [-0.2, -0.3, -0.4];\r\n\r\nexport const X_THEME_TEXTS = [\r\n [-0.5, 0],\r\n [-0.6, 0.2],\r\n [-0.7, 0.4]\r\n];\r\n\r\nexport const X_THEME_BORDERS = [\r\n [-0.8, 0],\r\n [-0.9, 0.2]\r\n];\r\n\r\nexport const X_THEME_EXCHANGES = [\r\n [-0.1, -0.1],\r\n [0.1, -0.1],\r\n [0.2, 0.2],\r\n [0.3, 0],\r\n [0.4, -0.4],\r\n [0.5, -0.2],\r\n [0.6, 0],\r\n [0.7, -0.4],\r\n [0.8, -0.4],\r\n [0.9, -0.2]\r\n];\r\n\r\nexport const X_THEME_LIGHT_COLORS: XColorsTheme = {\r\n text: '#333333',\r\n border: '#efefef',\r\n background: '#ffffff'\r\n};\r\n\r\nexport const X_THEME_DARK_COLORS: XColorsTheme = {\r\n text: '#dddddd',\r\n border: '#252022',\r\n background: '#0f0f11'\r\n};\r\n\r\nexport const X_THEME_COLORS: XColorsTheme = {\r\n primary: '#3B82F6',\r\n success: '#67c23a',\r\n warning: '#e6a23c',\r\n danger: '#f56c6c',\r\n info: '#909399',\r\n ...X_THEME_LIGHT_COLORS\r\n};\r\n\r\nexport const X_THEME_VARS: XVarsTheme = {\r\n black: '#000000',\r\n white: '#ffffff',\r\n fontSize: '0.875rem',\r\n fontSizeMini: '0.75rem',\r\n fontSizeSmall: '0.875rem',\r\n fontSizeMedium: '1rem',\r\n fontSizeLarge: '1.25rem',\r\n fontSizeBig: '1.5rem',\r\n fontVariant: 'tabular-nums',\r\n fontFamily:\r\n '-appleSystem, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sansSerif',\r\n fontCodeFamily: 'SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace',\r\n lineHeight: '1.75rem',\r\n heightBig: '2.75rem',\r\n heightLarge: '2.5rem',\r\n heightMedium: '2.25rem',\r\n heightSmall: '2rem',\r\n heightMini: '1.75rem',\r\n paddingBig: '1.5rem',\r\n paddingLarge: '1.25rem',\r\n paddingMedium: '1rem',\r\n paddingSmall: '0.75rem',\r\n paddingMini: '0.5rem',\r\n borderStyle: 'solid',\r\n borderRadius: '0.75rem',\r\n borderSmallRadius: '0.5rem',\r\n borderWidth: '0.0625rem',\r\n borderDeepWidth: '0.125rem',\r\n boxShadow: '0 0.0625rem 0.25rem 0.0625rem rgba(0, 0, 0, 0.15)',\r\n boxShadowHover: '0 0.0625rem 0.25rem 0.0625rem rgba(0, 0, 0, 0.3)',\r\n boxShadowTop: '0 -0.0625rem 0.25rem rgba(0, 0, 0, 0.15)',\r\n boxShadowRight: '0.0625rem 0 0.25rem rgba(0, 0, 0, 0.15)',\r\n boxShadowBottom: '0 0.0625rem 0.25rem rgba(0, 0, 0, 0.15)',\r\n boxShadowLeft: '-0.0625rem 0 0.25rem rgba(0, 0, 0, 0.15)',\r\n animationDurationSlow: '0.3s',\r\n animationDurationBase: '0.2s',\r\n animationDurationFast: '0.1s'\r\n};\r\n\r\nexport const X_THEME_COLOR_KEYS = Object.keys(X_THEME_COLORS);\r\nexport const X_THEME_VARS_KEYS = Object.keys(X_THEME_VARS);\r\n","import { Injectable, RendererFactory2, Renderer2, inject } from '@angular/core';\r\nimport {\r\n XTheme,\r\n XColorsTheme,\r\n X_THEME_COLORS,\r\n X_THEME_COLOR_KEYS,\r\n X_THEME_PREFIX,\r\n X_THEME_AMOUNTS,\r\n X_THEME_MERGE,\r\n X_THEME_BLACK_MERGE,\r\n X_THEME_EXCHANGES,\r\n X_THEME_BACKGROUNDS,\r\n X_THEME_TEXTS,\r\n X_THEME_BORDERS,\r\n X_THEME_VARS,\r\n XVarsTheme,\r\n X_THEME_DARK_COLORS,\r\n X_THEME_LIGHT_COLORS\r\n} from './theme';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XCamelToKebab, XComputed, XKebabToCamel } from '../util';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XThemeService {\r\n private colorsProp: XColorsTheme = {};\r\n private varsProp: XVarsTheme = {};\r\n private colorsStyleEle!: HTMLStyleElement;\r\n private varsStyleEle!: HTMLStyleElement;\r\n private renderer2: Renderer2;\r\n private declaration: CSSStyleDeclaration;\r\n private doc: Document = inject(DOCUMENT);\r\n changed = new BehaviorSubject<'light' | 'dark'>('light');\r\n\r\n constructor(private factory: RendererFactory2) {\r\n this.renderer2 = this.factory.createRenderer(null, null);\r\n this.declaration = XComputed(this.doc.documentElement);\r\n }\r\n\r\n setInitialTheme(theme?: XTheme) {\r\n this.setVars(theme?.vars);\r\n if (theme?.vars) Object.assign(X_THEME_VARS, theme.vars);\r\n this.setColors(theme?.colors);\r\n if (theme?.colors) Object.assign(X_THEME_COLORS, theme.colors);\r\n if (theme?.dark) {\r\n this.setDark(true);\r\n }\r\n }\r\n\r\n setTheme(theme?: XTheme) {\r\n this.setColors(theme?.colors);\r\n this.setVars(theme?.vars);\r\n this.setDark(theme?.dark);\r\n }\r\n\r\n getTheme(includesAll = false): XTheme {\r\n return {\r\n colors: this.getColors(includesAll),\r\n vars: this.getVars()\r\n };\r\n }\r\n\r\n setColors(colors?: XColorsTheme) {\r\n colors = this.getColorsTheme(colors);\r\n for (let key in colors) {\r\n Object.assign(this.colorsProp, this.setColorRoot(key, colors[key]));\r\n }\r\n this.createColorsStyle();\r\n }\r\n\r\n setDark(dark?: boolean) {\r\n const colors = this.getColors();\r\n if (dark === true) {\r\n Object.assign(colors, X_THEME_DARK_COLORS);\r\n this.setDarkColors(colors);\r\n this.changed.next('dark');\r\n } else if (dark === false) {\r\n Object.assign(colors, X_THEME_LIGHT_COLORS);\r\n this.setColors(colors);\r\n this.changed.next('light');\r\n }\r\n\r\n return colors;\r\n }\r\n\r\n setDarkColors(colors?: XColorsTheme) {\r\n this.colorsProp = this.getDefineColors(colors, X_THEME_PREFIX, true);\r\n this.createColorsStyle();\r\n }\r\n\r\n getColors(includes = false, prefix = X_THEME_PREFIX): XColorsTheme {\r\n let result: XColorsTheme = {};\r\n const keys = includes ? Object.keys(this.colorsProp) : X_THEME_COLOR_KEYS.map((x) => `${prefix}${x}`);\r\n keys.forEach((x) => {\r\n result[x.replace(prefix, '')] = this.declaration.getPropertyValue(`${x}`).trim();\r\n });\r\n\r\n return result;\r\n }\r\n\r\n getVars(prefix = X_THEME_PREFIX): XVarsTheme {\r\n let result: XVarsTheme = {};\r\n const keys = Object.keys(this.varsProp);\r\n keys.forEach((x) => {\r\n result[XKebabToCamel(x.replace(prefix, ''))] = this.declaration.getPropertyValue(`${x}`).trim();\r\n });\r\n return result;\r\n }\r\n\r\n getColorsInProperty(colors?: XColorsTheme, prefix = X_THEME_PREFIX): XColorsTheme {\r\n let result: XColorsTheme = {};\r\n Object.keys(colors as XColorsTheme).forEach((x) => {\r\n result[x] = this.declaration.getPropertyValue(`${prefix}${x}`).trim();\r\n });\r\n return result;\r\n }\r\n\r\n getColorsTheme(colors?: XColorsTheme) {\r\n if (typeof colors === 'undefined') colors = X_THEME_COLORS;\r\n else colors = Object.assign({}, X_THEME_COLORS, colors);\r\n return colors;\r\n }\r\n\r\n setColorRoot(color: string, value: string, prefix = X_THEME_PREFIX) {\r\n let result: XColorsTheme = {};\r\n if (X_THEME_COLOR_KEYS.includes(color)) {\r\n for (let amount of X_THEME_AMOUNTS) {\r\n if (amount === 0) {\r\n result[`${prefix}${color}`] = value;\r\n } else {\r\n result[`${prefix}${color}${this.getSuffix(amount)}`] = XToHex(\r\n XMixColors(amount > 0 ? X_THEME_MERGE : X_THEME_BLACK_MERGE, value, Math.abs(amount))\r\n );\r\n }\r\n }\r\n } else {\r\n result[`${prefix}${color}`] = value;\r\n }\r\n return result;\r\n }\r\n\r\n setDarkColorRoot(color: string, value: string, prefix = X_THEME_PREFIX) {\r\n let result: XColorsTheme = {};\r\n let allColors = this.setColorRoot(color, value, '');\r\n if (X_THEME_COLOR_KEYS.includes(color)) {\r\n allColors = this.setColorRoot(color, value, prefix);\r\n X_THEME_EXCHANGES.forEach((x) => {\r\n if (x[1] >= -0.1) {\r\n const curr = this.getSuffix(x[0]);\r\n const next = this.getSuffix(x[1]);\r\n result[`${prefix}${color}${curr}`] = allColors[`${prefix}${color}${next}`];\r\n }\r\n });\r\n } else if (['background'].includes(color)) {\r\n result = this.getDefineColors(Object.assign({}, this.getColorsInProperty(X_THEME_COLORS), allColors), '', true);\r\n }\r\n return result;\r\n }\r\n\r\n getDefineColors(colors?: XColorsTheme, prefix = X_THEME_PREFIX, darken = false): XColorsTheme {\r\n let result: XColorsTheme = {};\r\n colors = this.getColorsTheme(colors);\r\n for (let key in colors) {\r\n Object.assign(result, this.setColorRoot(key, colors[key], prefix));\r\n }\r\n if (darken) {\r\n const colorsFunc = (nums: number[] | number[][], callback: Function) => {\r\n for (let num of nums) {\r\n for (let color in colors) {\r\n if (X_THEME_COLOR_KEYS.includes(color) && !['background'].includes(color)) {\r\n callback(num, color);\r\n }\r\n }\r\n }\r\n };\r\n colorsFunc(X_THEME_BACKGROUNDS, (background: number, color: string) => {\r\n const theme = this.getSuffix(background);\r\n result[`${prefix}${color}${theme}`] = result[`${prefix}background${theme.replace('a', '')}`];\r\n });\r\n colorsFunc(X_THEME_TEXTS, (text: number[], color: string) => {\r\n const curr = this.getSuffix(text[0]);\r\n const next = this.getSuffix(text[1]);\r\n result[`${prefix}${color}${curr}`] = result[`${prefix}text${next}`];\r\n });\r\n colorsFunc(X_THEME_BORDERS, (border: number[], color: string) => {\r\n const curr = this.getSuffix(border[0]);\r\n const next = this.getSuffix(border[1]);\r\n result[`${prefix}${color}${curr}`] = result[`${prefix}border${next}`];\r\n });\r\n colorsFunc(X_THEME_EXCHANGES, (exchange: number[], color: string) => {\r\n const curr = this.getSuffix(exchange[0]);\r\n const next = this.getSuffix(exchange[1]);\r\n result[`${prefix}${color}${curr}`] = result[`${prefix}${color}${next}`];\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n getSuffix(num: number): string {\r\n if (num > 0) {\r\n return `-${Math.abs(num * 1000)}`;\r\n } else if (num < 0) {\r\n return `-a${Math.abs(num * 1000)}`;\r\n }\r\n return '';\r\n }\r\n\r\n setVarRoot(va: string, value: string, prefix = X_THEME_PREFIX) {\r\n let result: XVarsTheme = {};\r\n result[`${prefix}${XCamelToKebab(va)}`] = value;\r\n return result;\r\n }\r\n\r\n setVars(vars?: XVarsTheme) {\r\n if (typeof vars === 'undefined') vars = X_THEME_VARS;\r\n else vars = Object.assign({}, X_THEME_VARS, vars);\r\n for (let key in vars) {\r\n Object.assign(this.varsProp, this.setVarRoot(key, vars[key]));\r\n }\r\n this.createVarsStyle();\r\n }\r\n\r\n createColorsStyle() {\r\n if (this.colorsStyleEle) this.renderer2.removeChild(this.colorsStyleEle.parentNode, this.colorsStyleEle);\r\n const styles = Object.entries(this.colorsProp)\r\n .map((x) => `${x[0]}: ${x[1]};`)\r\n .join('');\r\n this.colorsStyleEle = this.renderer2.createElement('style');\r\n this.colorsStyleEle.innerHTML = `.x-theme-colors{${styles}}`;\r\n this.renderer2.addClass(this.doc.documentElement, 'x-theme-colors');\r\n this.doc.documentElement.getElementsByTagName('head')[0].appendChild(this.colorsStyleEle);\r\n }\r\n\r\n createVarsStyle() {\r\n if (this.varsStyleEle) this.renderer2.removeChild(this.varsStyleEle.parentNode, this.varsStyleEle);\r\n const styles = Object.entries(this.varsProp)\r\n .map((x) => `${x[0]}: ${x[1]};`)\r\n .join('');\r\n this.varsStyleEle = this.renderer2.createElement('style');\r\n this.varsStyleEle.innerHTML = `:root{${styles}}`;\r\n this.doc.documentElement.getElementsByTagName('head')[0].appendChild(this.varsStyleEle);\r\n }\r\n}\r\n\r\n/**\r\n * @zh_CN RGB 颜色值\r\n * @en_US RGB color value\r\n */\r\nexport interface XRGBColor {\r\n /**\r\n * @zh_CN 红\r\n * @en_US Red\r\n */\r\n r: number;\r\n /**\r\n * @zh_CN 绿\r\n * @en_US Green\r\n */\r\n g: number;\r\n /**\r\n * @zh_CN 蓝\r\n * @en_US Blue\r\n */\r\n b: number;\r\n}\r\n\r\n/**\r\n * @zh_CN 根据权重混合2种颜色\r\n * @en_US Mix 2 colors according to heavy weights\r\n */\r\nexport function XMixColors(color1: string, color2: string, weight: number): XRGBColor {\r\n let rgb1 = XToRgb(color1);\r\n let rgb2 = XToRgb(color2);\r\n let weight1 = weight;\r\n let weight2 = 1 - weight;\r\n let result: { r: number; g: number; b: number };\r\n\r\n const inRange = (num: number) => {\r\n return num > 255 ? 255 : num < 0 ? 0 : num;\r\n };\r\n\r\n result = {\r\n r: inRange(Math.round(rgb1.r * weight1 + rgb2.r * weight2)),\r\n g: inRange(Math.round(rgb1.g * weight1 + rgb2.g * weight2)),\r\n b: inRange(Math.round(rgb1.b * weight1 + rgb2.b * weight2))\r\n };\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * @zh_CN RGB 颜色转换为 Hex\r\n * @en_US RGB color converts to hex\r\n */\r\nexport function XToHex(rgb: { r: number; g: number; b: number }): string {\r\n return '#' + ((1 << 24) + (rgb.r << 16) + (rgb.g << 8) + rgb.b).toString(16).slice(1);\r\n}\r\n\r\n/**\r\n * @zh_CN Hex 颜色转换为 RGB\r\n * @en_US Hex color converts to RGB\r\n */\r\nexport function XToRgb(hex: string): XRGBColor {\r\n if (hex.indexOf('#') == 0) hex = hex.slice(1);\r\n let num = parseInt(hex, 16);\r\n let r = num >> 16;\r\n if (r > 255) r = 255;\r\n else if (r < 0) r = 0;\r\n let g = (num >> 8) & 0x00ff;\r\n if (g > 255) g = 255;\r\n else if (g < 0) g = 0;\r\n let b = num & 0x0000ff;\r\n if (b > 255) b = 255;\r\n else if (b < 0) b = 0;\r\n\r\n return { r: r, g: g, b: b };\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { X_CONFIG } from './config';\r\nimport { XThemeService } from '../theme';\r\nimport type { XTheme } from '../theme';\r\nimport type { XConfig, XComponentConfigKey, XComponentConfig } from './config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XConfigService {\r\n private componentConfigUpdated$ = new Subject<keyof XComponentConfig>();\r\n private config: XConfig;\r\n private defaultConfig = inject(X_CONFIG, { optional: true })!;\r\n public themeService = inject(XThemeService, { optional: true })!;\r\n\r\n constructor() {\r\n this.config = this.defaultConfig || {};\r\n this.setInitialTheme(this.config.theme);\r\n }\r\n\r\n getConfigForComponent<T extends XComponentConfigKey>(componentName: T): XComponentConfig[T] {\r\n return this.config?.components ? this.config.components[componentName] : undefined;\r\n }\r\n\r\n getConfigChangeEventForComponent(componentName: XComponentConfigKey): Observable<void> {\r\n return this.componentConfigUpdated$.pipe(\r\n filter((n) => n === componentName),\r\n map(() => undefined)\r\n );\r\n }\r\n\r\n set<T extends XComponentConfigKey>(componentName: T, value: XComponentConfig[T]): void {\r\n if (this.config?.components) {\r\n this.config.components[componentName] = {\r\n ...this.config.components[componentName],\r\n ...value\r\n };\r\n this.componentConfigUpdated$.next(componentName);\r\n }\r\n }\r\n\r\n setDarkTheme() {\r\n return this.themeService.setDark(true);\r\n }\r\n\r\n setLightTheme() {\r\n return this.themeService.setDark(false);\r\n }\r\n\r\n setTheme(theme?: XTheme) {\r\n this.themeService.setTheme(theme);\r\n }\r\n\r\n setInitialTheme(theme?: XTheme) {\r\n this.themeService.setInitialTheme(theme);\r\n }\r\n\r\n getTheme(includesAll = false): XTheme {\r\n return this.themeService.getTheme(includesAll);\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { XComponentConfigKey, XConfigService } from '../config';\r\n\r\n/**\r\n * @zh_CN 组件公共属性\r\n * @en_US Component of public properties\r\n */\r\nexport class XProperty {}\r\n\r\n/**\r\n * @zh_CN 组件公共属性,通过函数返回,注入全局配置\r\n * @en_US Component of public properties, through the function returns, into the global configuration\r\n */\r\nexport function XPropertyFunction<T extends XComponentConfigKey>(configName: T) {\r\n return class XPropertyFun {\r\n config = inject(XConfigService).getConfigForComponent(configName);\r\n };\r\n}\r\n","import { XIsNumber } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 转换 csspx 为像素宽度\r\n * @en_US Convert CSS PX to pixel width\r\n */\r\nexport function XToCssPx(csspx: string, fontSize: number) {\r\n if (csspx === '0') return 0;\r\n if (XIsNumber(csspx)) return Number(csspx);\r\n else if (csspx.endsWith('rem')) return Number(csspx.replace(/rem/g, '')) * fontSize;\r\n else if (csspx.endsWith('px')) return Number(csspx.replace(/px/g, ''));\r\n return 0;\r\n}\r\n\r\n","import { XIsNumber } from '../interfaces';\r\n\r\n/**\r\n * @zh_CN 转换 css 为 rem 宽度\r\n * @en_US Convert CSS to pixel width\r\n */\r\nexport function XToCssRem(css: string, fontSize: number) {\r\n if (css === '0') return 0;\r\n if (XIsNumber(css)) return Number(css);\r\n else if (css.endsWith('rem')) return Number(css.replace(/rem/g, ''));\r\n else if (css.endsWith('px')) return Number(css.replace(/px/g, '')) / fontSize;\r\n return 0;\r\n}\r\n","import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n\r\nexport interface XRouteReuseStorage {\r\n id: string;\r\n handle: DetachedRouteHandle;\r\n}\r\n\r\nexport class XReuseStrategyService implements RouteReuseStrategy {\r\n public static storages: XRouteReuseStorage[] = [];\r\n private static waitDelete: string | null;\r\n\r\n public shouldDetach(_route: ActivatedRouteSnapshot): boolean {\r\n return true;\r\n }\r\n\r\n public store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n if (handle == null) return;\r\n if (XReuseStrategyService.waitDelete && this.getRouteUrl(route).indexOf(XReuseStrategyService.waitDelete) == 0) {\r\n XReuseStrategyService.waitDelete = null;\r\n return;\r\n }\r\n this.add(this.getRouteUrl(route), handle);\r\n }\r\n\r\n public shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return !!XReuseStrategyService.storages.find((x) => x.id == this.getRouteUrl(route));\r\n }\r\n\r\n public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n if (!route.routeConfig) {\r\n return {};\r\n }\r\n let stroage = XReuseStrategyService.storages.find((x) => x.id == this.getRouteUrl(route));\r\n return stroage ? stroage.handle : {};\r\n }\r\n\r\n public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return future.routeConfig === curr.routeConfig && JSON.stringify(future.params) == JSON.stringify(curr.params);\r\n }\r\n\r\n private getRouteUrl(route: ActivatedRouteSnapshot) {\r\n let url = route.url.map((x) => x.path).join('_');\r\n return url;\r\n }\r\n\r\n public static deleteRouteSnapshot(name?: string): void {\r\n if (name) {\r\n let id = name.replace(/\\//g, '_');\r\n XReuseStrategyService.storages.splice(\r\n XReuseStrategyService.storages.findIndex((x) => x.id.indexOf(id) === 0),\r\n 1\r\n );\r\n XReuseStrategyService.waitDelete = id;\r\n } else {\r\n XReuseStrategyService.storages = [];\r\n }\r\n }\r\n\r\n private add(id: string, handle: DetachedRouteHandle) {\r\n XReuseStrategyService.storages.splice(\r\n XReuseStrategyService.storages.findIndex((x) => x.id == id),\r\n 1\r\n );\r\n XReuseStrategyService.storages = [...XReuseStrategyService.storages, { id: id, handle: handle }];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PreloadingStrategy, Route } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XPreloadingStrategyService implements PreloadingStrategy {\r\n preloadedModules: string[] = [];\r\n\r\n preload(route: Route, load: () => Observable<any>): Observable<any> {\r\n if (route.data && route.data['preload']) {\r\n this.preloadedModules.push(route.path as string);\r\n return load();\r\n } else {\r\n return of(null);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XHttpService {\r\n api: string = '';\r\n constructor(public http: HttpClient) {}\r\n\r\n get(url: string, params?: { [property: string]: any }) {\r\n return this.request('GET', url, params);\r\n }\r\n\r\n post(url: string, params?: { [property: string]: any }): Observable<any> {\r\n return this.request('POST', url, params);\r\n }\r\n\r\n put(url: string, params?: { [property: string]: any }): Observable<any> {\r\n return this.request('PUT', url, params);\r\n }\r\n\r\n delete(url: string, params?: { [property: string]: any }): Observable<any> {\r\n return this.request('DELETE', url, params);\r\n }\r\n\r\n request(\r\n method: string,\r\n url: string,\r\n params?: { [property: string]: any },\r\n option?: { [property: string]: any }\r\n ): Observable<any> {\r\n if (!option) option = {};\r\n let opt = {};\r\n url = `${this.api}${url}`;\r\n method = method.toUpperCase();\r\n if (['POST', 'PUT', 'DELETE'].indexOf(method) > -1) {\r\n opt = { body: params, observe: 'body', responseType: 'json' };\r\n } else if (['GET'].indexOf(method) > -1) {\r\n opt = { params: params };\r\n }\r\n Object.assign(opt, option);\r\n return new Observable((x) => {\r\n this.http.request(method, url, opt).subscribe(\r\n (y: any) => {\r\n x.next(y);\r\n x.complete();\r\n },\r\n (y) => {\r\n x.error(y);\r\n x.complete();\r\n this.handleError(y);\r\n }\r\n );\r\n });\r\n }\r\n\r\n handleError(error: HttpErrorResponse) {\r\n if (error.error) {\r\n }\r\n return throwError(error.error);\r\n }\r\n}\r\n","import { Platform } from '@angular/cdk/platform';\r\nimport { Injectable } from '@angular/core';\r\nimport { XIsString } from '../interfaces';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class XStorageService {\r\n constructor(private platform: Platform) {}\r\n\r\n getLocal(key: string) {\r\n if (this.platform.isBrowser) {\r\n let str = localStorage.getItem(key);\r\n try {\r\n return JSON.parse(localStorage.getItem(key) || 'null') || null;\r\n } catch (_e) {\r\n return str;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n setLocal(key: string, value: any) {\r\n if (this.platform.isBrowser) {\r\n if (XIsString(value)) {\r\n localStorage.setItem(key, value);\r\n } else {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n }\r\n }\r\n\r\n getSession(key: string) {\r\n if (this.platform.isBrowser) {\r\n let str = localStorage.getItem(key);\r\n try {\r\n return JSON.parse(sessionStorage.getItem(key) || 'null') || null;\r\n } catch (_e) {\r\n return str;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n setSession(key: string, value: any) {\r\n if (this.platform.isBrowser) {\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n }\r\n }\r\n\r\n removeLocal(key: string) {\r\n if (this.platform.isBrowser) {\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n\r\n removeSession(key: string) {\r\n if (this.platform.isBrowser) {\r\n sessionStorage.removeItem(key);\r\n }\r\n }\r\n\r\n guid() {\r\n let S4 = () => {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n };\r\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\r\n }\r\n}\r\n","import { XHttpService } from './http.service';\r\nimport { Observable } from 'rxjs';\r\nimport type { XId, XQuery, XResultList } from '../interfaces';\r\n\r\nexport interface XRepositoryInput {\r\n api?: string;\r\n controller: XController;\r\n}\r\n\r\nexport interface XController {\r\n name: string;\r\n}\r\n\r\nexport abstract class XRepositoryAbstract {\r\n abstract getList(index?: number, size?: number, query?: XQuery): Observable<XResultList<any>>;\r\n abstract get(id: number | string): Observable<any>;\r\n abstract post(entity: any): Observable<any>;\r\n abstract put(entity: any): Observable<any>;\r\n abstract delete(id: number | string): Observable<boolean>;\r\n}\r\n\r\nexport class XRepositoryService<Entity extends XId> extends XRepositoryAbstract {\r\n api = '';\r\n constructor(\r\n public http: XHttpService,\r\n public input: XRepositoryInput\r\n ) {\r\n super();\r\n this.api = typeof input.api !== 'undefined' ? input.api : '';\r\n }\r\n\r\n getList(index?: number, size?: number, query?: XQuery): Observable<XResultList<Entity>> {\r\n index = index ? index : 1;\r\n size = size ? size : 10;\r\n return this.http.post(`${this.api}${this.input.controller.name}/${size}/${index}`, query);\r\n }\r\n\r\n get(id: number | string): Observable<Entity> {\r\n return this.http.get(`${this.api}${this.input.controller.name}/${id}`);\r\n }\r\n\r\n post(entity: Entity): Observable<Entity> {\r\n return this.http.post(`${this.api}${this.input.controller.name}`, entity);\r\n }\r\n\r\n put(entity: Entity): Observable<Entity> {\r\n return this.http.put(`${this.api}${this.input.controller.name}`, entity);\r\n }\r\n\r\n delete(id: number | string): Observable<boolean> {\r\n return this.http.delete(`${this.api}${this.input.controller.name}/${id}`);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: `[x-inner-html], x-inner-html`,\r\n template: '<div class=\"x-inner-html\" [innerHTML]=\"innerHtml()\" [style]=\"style()\"></div>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XInnerHTMLComponent {\r\n html = input.required<string>();\r\n style = input();\r\n innerHtml = computed(() => this.domSanitizer.bypassSecurityTrustHtml(this.html()));\r\n private domSanitizer = inject(DomSanitizer);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["XDURATION_BASE_EASE_IN","XDURATION_BASE_EASE_OUT","i1"],"mappings":"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"}